{"version":3,"file":"OneClickUpgrade.f3e464fc.js","sources":["../../../resources/js/components/OneClickSubscription.vue","../../../resources/js/mixins/OneClickUpgrade.js"],"sourcesContent":["\n\n\n\n\n","import { mapGetters, mapState } from 'vuex'\nimport { dangerToast } from '../helpers/toasts'\nimport UserEvent from '../objects/UserEvent'\n\nexport default {\n computed: {\n ...mapGetters({\n isLoggedIn: 'user/isLoggedIn',\n hasSubscription: 'subscription/hasSubscription',\n hasPlans: 'subscription/hasPlans',\n publishing: 'document/onpublishing',\n }),\n ...mapState({\n user: 'user',\n subscription: 'subscription',\n document: 'document',\n }),\n current_plan() {\n return this.getPlan(this.subscription.one_click_content.plan_category) ?? {}\n },\n sisterSite() {\n return !this.subscription.has_other_site_subscription\n ? ''\n : this.subscription.has_other_site_subscription == 'CH'\n ? `My Crossword Maker`\n : `My Word Search`\n },\n sisterSiteUrl() {\n return !this.subscription.has_other_site_subscription\n ? ''\n : this.subscription.has_other_site_subscription == 'CH'\n ? window.crossword_url\n : window.wordsearch_url\n },\n },\n data() {\n return {\n frequency_change_success: false,\n subscription_status_loading: false,\n one_click_upgrade: {\n plan: null,\n subscriptionCycle: 'yearly',\n success_feedback:\n 'Your plan has been updated and will begin automatically when your current subscription ends. You can continue to use all features, but won’t be charged until your next scheduled billing date.',\n renewal_msg: '',\n },\n }\n },\n methods: {\n getPriceDifferential(plan) {\n const new_plan = this.getPlan(plan)\n\n if (Object.keys(this.current_plan).length === 0)\n return `$${this.subscriptionAmount(new_plan.amount_in_cents / 100)}`\n\n if (new_plan?.name?.toLowerCase() === this.current_plan?.name?.toLowerCase())\n return `$${this.subscriptionAmount(new_plan.amount_in_cents / 100)}`\n\n const diff = this.current_plan.amount_in_cents - new_plan.amount_in_cents\n\n return diff > 0\n ? `$${this.subscriptionAmount(Math.abs(diff) / 100)} less`\n : `$${this.subscriptionAmount(Math.abs(diff) / 100)} extra`\n },\n getPlan(plan) {\n if (!plan) return null\n\n if (this.subscription_status_loading) return {}\n\n let brand = this.brand\n if (this.brand?.toLowerCase() == 'flashcard') brand = 'flashcards'\n if (this.brand?.toLowerCase() == 'account') brand = 'worksheet'\n\n if (['basic', 'standard'].includes(plan.toLowerCase()))\n return this.subscription.plans[plan][brand][this.subscription.one_click_content.plan_frequency]\n if (plan.toLowerCase() == 'premium')\n return this.subscription.plans[plan][this.subscription.one_click_content.plan_frequency]\n\n return this.subscription.plans[plan]\n },\n setUpgradeOption(option) {\n if (this.subscription_status_loading) return {}\n\n const plan = this.getPlan(option.type)\n return {\n ...option,\n ...{\n description: option.description\n .replaceAll('[price]', this.getPriceDifferential(option.type))\n .replaceAll(\n '[frequency]',\n this.subscription.one_click_content.plan_frequency == 'yearly' ? 'year' : 'month',\n ),\n },\n id: plan.id,\n }\n },\n setPlanDetails(description) {\n if (this.subscription_status_loading) return ''\n\n if (Object.keys(this.current_plan).length === 0) return description.replaceAll('[site_name]', this.sisterSite)\n\n return description\n .replaceAll('[price]', `$${this.subscriptionAmount(this.current_plan.amount_in_cents / 100)}`)\n .replaceAll('[frequency]', this.subscription.one_click_content.plan_frequency == 'yearly' ? 'year' : 'month')\n .replaceAll('[date]', this.subscription.current_period_end)\n .replaceAll('[site_name]', this.sisterSite)\n },\n swapPlan(payload) {\n this.subscription_status_loading = true\n this.$store\n .dispatch('subscription/changeFrequency', payload)\n .then((response) => {\n this.one_click_upgrade.success_feedback = this.setPlanDetails(payload.desc)\n this.$store.dispatch('subscription/setOneClickUpgrade', this.one_click_upgrade)\n this.$store.dispatch('user/getPayments').then(() => {\n this.showSuccess()\n })\n this.subscription_status_loading = false\n })\n .catch((err) => {\n this.subscription_status_loading = false\n if (!this.document.is_published) return\n this.$bvToast.toast('There was an error updating your subscription.', dangerToast)\n })\n },\n async handleExploreMoreOptionsClick() {\n await this.resetOneClickUpgrade()\n await this.$logTrackingEvent(UserEvent.EXPLORE_MORE_OPTIONS_CLICKED)\n await this.goPremium()\n },\n async changePlan(payload) {\n this.one_click_upgrade.plan = this.getPlan(payload.plan)\n this.one_click_upgrade.subscriptionCycle = this.subscription.one_click_content.plan_frequency\n\n if (payload.plan == 'lifetime') this.one_click_upgrade.subscriptionCycle = payload.plan\n\n await this.$store.dispatch('subscription/setOneClickUpgrade', this.one_click_upgrade).then(async () => {\n if (this.hasSubscription && payload.plan != 'lifetime') {\n return this.swapPlan({\n plan: this.one_click_upgrade.plan.id,\n downgrade: payload.downgrade,\n desc: payload.desc,\n })\n }\n\n await this.goPremium()\n })\n },\n showSuccess(action = 'change-plan') {\n if (action === 'change-plan') {\n if (this.publishing) this.$bvModal.hide('printable-modal')\n this.$bvModal.hide('paywall-modal')\n }\n this.$bvModal.show('success-modal')\n },\n async resetOneClickUpgrade() {\n this.one_click_upgrade = {\n plan: null,\n subscriptionCycle: this.subscription.one_click_content.plan_frequency,\n success_feedback:\n 'Your plan has been updated and will begin automatically when your current subscription ends. You can continue to use all features, but won’t be charged until your next scheduled billing date.',\n renewal_msg: '',\n }\n\n await this.$store.dispatch('subscription/setOneClickUpgrade', this.one_click_upgrade)\n },\n purchase() {\n this.one_click_upgrade.plan = this.getPlan('single')\n this.one_click_upgrade.subscriptionCycle = this.subscription.one_click_content.plan_frequency\n this.$store.dispatch('subscription/setOneClickUpgrade', this.one_click_upgrade).then(() => {\n this.showCheckoutModal(true)\n this.$bvModal.hide('printable-modal')\n })\n },\n async resumePlan() {\n await this.$store.dispatch('subscription/resumeSubscription')\n },\n async cancelSubscription() {\n try {\n const cancellationReason = this.subscription.cancellation_reason ?? ''\n this.$bvModal.hide('cancel-subscription')\n await this.$store.dispatch('subscription/cancelSubscription')\n this.showSuccess('cancel-plan')\n await this.$logTrackingEvent(UserEvent.SUBSCRIPTION_CANCELLED, cancellationReason)\n } catch (error) {\n console.error(error)\n this.$bvToast.toast(`We were unable to cancel your subscription`, dangerToast)\n }\n },\n },\n}\n"],"names":["defineComponent","props","plan","type","Object","default","computed","mapGetters","plan_category","methods","handleClick","this","resumePlan","changePlan","$emit","downgrade","desc","downgrade_desc","OneClickUpgrade","isLoggedIn","hasSubscription","hasPlans","publishing","mapState","user","subscription","document","current_plan","_a","getPlan","one_click_content","sisterSite","has_other_site_subscription","sisterSiteUrl","window","crossword_url","wordsearch_url","data","frequency_change_success","subscription_status_loading","one_click_upgrade","subscriptionCycle","success_feedback","renewal_msg","getPriceDifferential","new_plan","keys","length","subscriptionAmount","amount_in_cents","name","toLowerCase","_c","_b","diff","Math","abs","brand","includes","plans","plan_frequency","setUpgradeOption","option","description","replaceAll","id","setPlanDetails","current_period_end","swapPlan","payload","$store","dispatch","then","response","showSuccess","catch","err","is_published","$bvToast","toast","dangerToast","handleExploreMoreOptionsClick","resetOneClickUpgrade","$logTrackingEvent","UserEvent","EXPLORE_MORE_OPTIONS_CLICKED","goPremium","async","action","$bvModal","hide","show","purchase","showCheckoutModal","cancelSubscription","cancellationReason","cancellation_reason","SUBSCRIPTION_CANCELLED","error","console"],"mappings":"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"}