{"version":3,"file":"chunks/fa4dfdd8178f9d.js","mappings":"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","sources":["webpack:///./resources/js/components/generic/exact-target-formV2.ts"],"sourcesContent":["import * as $ from \"jquery\";\nimport { ConsentHelper } from '../../common/ConsentHubV2';\nimport Environment from \"../../common/environment\";\nimport imkt from '../../imkt';\nimport 'jquery-validation';\nimport '@types/jquery.validation';\n\ntype RulesType = {\n [key: string]: {\n required: boolean;\n email: boolean;\n }\n};\n\ntype MessagesType = {\n [key: string]: {\n required: string;\n email: string;\n }\n};\n\nexport default class ExactTargetFormV2 {\n domRoot: JQuery;\n params: {\n consentYes: any;\n isEAP: any;\n useGdpr: boolean;\n subscriptionKey: any;\n useSubmissionBlock: string;\n postSubmissionBlockId: any;\n requiredError: string;\n invalidEmailError: string;\n redirectUrl: any;\n submitError: string;\n exactTargetId: any;\n name: string;\n useSocs: boolean;\n };\n form: JQuery;\n emailInput: JQuery;\n message: JQuery;\n honeypot: JQuery;\n useSocs: boolean;\n consentHubPromise?: Promise;\n consentYes: any;\n useConsentHub: any;\n useSubmissionBlock: boolean;\n postSubmissionBlock: any;\n\n constructor(domRoot: HTMLElement, params: any) {\n this.domRoot = $(domRoot);\n this.params = { ...params };\n\n //Component elements\n this.form = $('.exact-target-form', this.domRoot);\n this.emailInput = $('.exact-target-form__email-input input', this.domRoot);\n this.message = $('.exact-target-form__message', this.domRoot);\n this.honeypot = $('.exact-target-form__hp-field input', this.domRoot);\n this.useSocs = params.useSocs;\n this.consentYes = this.params.consentYes;\n this.useConsentHub = this.consentYes.match('generalMarketingOptIn|allowPartnerShare') || this.params.isEAP || (this.params.useGdpr && this.params.subscriptionKey.trim() !== '');\n this.useSubmissionBlock = this.params.useSubmissionBlock === 'true';\n this.postSubmissionBlock = this.useSubmissionBlock && document.querySelectorAll(`#${this.params.postSubmissionBlockId}, .${this.params.postSubmissionBlockId}`);\n\n if (this.useConsentHub) {\n this.init();\n } else {\n this.bindFormValidation();\n }\n }\n\n init() {\n this.consentHubPromise = (new ConsentHelper(this.params, this.form)).configPromise;\n this.bindFormValidation();\n }\n\n bindFormValidation() {\n\n // Bind validation rules to our form using jQuery Validate functions\n const rules: RulesType = {};\n const messages: MessagesType = {};\n rules[this.params.name] = {\n required: true,\n email: true\n };\n messages[this.params.name] = {\n required: this.params.requiredError,\n email: this.params.invalidEmailError\n };\n this.form.validate({\n rules: rules,\n messages: messages,\n submitHandler: () => {\n if (this.honeypot.val() === \"\") {\n if (this.useConsentHub) {\n this.consentHubPromise.then((consentHub: ConsentHelper) => {\n consentHub.submitForm(this.submitSuccess.bind(this), this.submitError.bind(this));\n }).catch((error: unknown) => {\n console.error(error);\n this.submitError();\n });\n } else {\n this.submitDirectlyToExactTarget();\n }\n }\n }\n });\n }\n\n submitSuccess() {\n this.setSocsCookie();\n if (this.useSubmissionBlock) {\n // hide Form\n this.form.css('display', 'none');\n // show post submission content block\n if (this.postSubmissionBlock) {\n const postSubmissionBlocks = Array.from(document.querySelectorAll(`#${this.params.postSubmissionBlockId}, .${this.params.postSubmissionBlockId}`));\n postSubmissionBlocks.forEach(psb => {\n (psb as HTMLElement).style.display = 'block';\n })\n }\n } else {\n this.params.redirectUrl ? this.redirect() : this.showMessage();\n }\n }\n\n submitError() {\n if ($('.error--server', this.domRoot).length === 0) {\n this.form.after('
' + this.params.submitError + '
');\n }\n }\n\n setSocsCookie() {\n if (this.useSocs) {\n imkt.utils?.storage.setCookie(\"atl_soc2_nda_signed\", 1, false, \"Strict\", \"atlassian.com\");\n }\n }\n\n submitDirectlyToExactTarget() {\n const self = this;\n const emailAddress = this.emailInput.val();\n const endpointDomain = Environment.isProduction() ? 'www' : 'wac.stg.internal';\n const postUrl = `https://${endpointDomain}.atlassian.com/apis/exact-target/${emailAddress}/subscribe?mailingListId=${this.params.exactTargetId}`;\n $.ajax({\n url: postUrl,\n method: \"POST\",\n dataType: \"text\",\n complete(jqXHR, textStatus) {\n if (textStatus === 'success') {\n self.setSocsCookie();\n self.params.redirectUrl ? self.redirect() : self.showMessage();\n } else {\n // did not submit successfully, if there is not an error then show one\n if ($('.error--server', self.domRoot).length === 0) {\n self.form.append('
' + self.params.submitError + '
');\n }\n }\n }\n });\n }\n\n redirect() {\n window.location.href = this.params.redirectUrl;\n }\n\n showMessage() {\n this.form.hide();\n this.message.removeClass('hide-all');\n\n // TODO: Is this behavior in use, can this be removed or scoped to a type?\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (typeof dataLayer !== \"undefined\") {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n dataLayer.push({ 'event': 'emailSubmissionSuccess' });\n }\n }\n}\n"],"names":["ExactTargetFormV2","domRoot","params","this","$","form","emailInput","message","honeypot","useSocs","consentYes","useConsentHub","match","isEAP","useGdpr","subscriptionKey","trim","useSubmissionBlock","postSubmissionBlock","document","querySelectorAll","postSubmissionBlockId","init","bindFormValidation","consentHubPromise","ConsentHelper","configPromise","rules","messages","name","required","email","requiredError","invalidEmailError","validate","submitHandler","val","then","consentHub","submitForm","submitSuccess","bind","submitError","error","console","submitDirectlyToExactTarget","setSocsCookie","css","Array","from","forEach","psb","style","display","redirectUrl","redirect","showMessage","length","after","imkt","storage","setCookie","self","emailAddress","endpointDomain","Environment","postUrl","exactTargetId","url","method","dataType","complete","jqXHR","textStatus","append","window","location","href","hide","removeClass","dataLayer","push"],"sourceRoot":""}