{"version":3,"sources":["webpack:///scripts/presubmit-check--14351b1944d23b669998.js","webpack:///./client/src/core/modules/presubmit-check/presubmit-check.js","webpack:///./client/src/core/modules/recaptcha-presubmit/recaptcha-presubmit.js","webpack:///./client/src/core/modules/windcave-presubmit/windcave-presubmit.js"],"names":["webpackJsonp","/opt/atlassian/pipelines/agent/build/node_modules/babel-loader/lib/index.js??ref--23-0!/opt/atlassian/pipelines/agent/build/node_modules/eslint-loader/index.js!/opt/atlassian/pipelines/agent/build/client/src/core/modules/presubmit-check/presubmit-check.js","module","exports","__webpack_require__","_interopRequireDefault","obj","__esModule","default","_classCallCheck","instance","Constructor","TypeError","Object","defineProperty","value","_createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","key","protoProps","staticProps","prototype","_vanillaPlugin2","_vanillaPlugin","_windcavePresubmit2","_windcavePresubmit","_recaptchaPresubmit2","_recaptchaPresubmit","_debug2","_debug","log","PresubmitCheck","element","options","this","init","recaptchaPresubmit","RecaptchaPresubmit","isWatching","windcavePresubmit","WindcavePresubmit","addEventListener","onSubmit","bind","event","preventDefault","Promise","all","requestValidation","then","submit","catch","error","dispatchEvent","CustomEvent","bubbles","cancelable","form","removeEventListener","DEFAULTS","/opt/atlassian/pipelines/agent/build/node_modules/babel-loader/lib/index.js??ref--23-0!/opt/atlassian/pipelines/agent/build/node_modules/eslint-loader/index.js!/opt/atlassian/pipelines/agent/build/client/src/core/modules/recaptcha-presubmit/recaptcha-presubmit.js","recaptchaSiteKey","recaptchaValidationUrl","responseInput","querySelector","responseInputSelector","responseErrorElement","responseErrorSelector","prefix","sitePrefix","addRecaptchaScript","watch","onFormSubmit","hidden","window","grecaptcha","ready","onRecaptchaReady","execute","action","onRecaptchaResponse","displayValidationError","message","reject","onRecaptchaScriptLoaded","recaptchaScriptEl","document","createElement","src","onload","body","appendChild","resolve","token","url","URL","location","origin","searchParams","set","fetch","response","ok","json","onRecaptchaRequestSuccess","onRecaptchaRequestError","data","Success","Result","errorMessage","onErrorEvent","/opt/atlassian/pipelines/agent/build/node_modules/babel-loader/lib/index.js??ref--23-0!/opt/atlassian/pipelines/agent/build/node_modules/eslint-loader/index.js!/opt/atlassian/pipelines/agent/build/client/src/core/modules/windcave-presubmit/windcave-presubmit.js","validationUrl","sessionId","method","headers","onRequestSuccess","onRequestError","displayRequestError","Error"],"mappings":"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","file":"scripts/presubmit-check--14351b1944d23b669998.js","sourcesContent":["webpackJsonp([\"presubmit-check\"],{\n\n/***/ \"/opt/atlassian/pipelines/agent/build/node_modules/babel-loader/lib/index.js??ref--23-0!/opt/atlassian/pipelines/agent/build/node_modules/eslint-loader/index.js!/opt/atlassian/pipelines/agent/build/client/src/core/modules/presubmit-check/presubmit-check.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _vanillaPlugin = __webpack_require__(\"/opt/atlassian/pipelines/agent/build/node_modules/babel-loader/lib/index.js??ref--23-0!/opt/atlassian/pipelines/agent/build/node_modules/eslint-loader/index.js!/opt/atlassian/pipelines/agent/build/client/src/core/lib/vanilla-plugin.js\");\n\nvar _vanillaPlugin2 = _interopRequireDefault(_vanillaPlugin);\n\nvar _windcavePresubmit = __webpack_require__(\"/opt/atlassian/pipelines/agent/build/node_modules/babel-loader/lib/index.js??ref--23-0!/opt/atlassian/pipelines/agent/build/node_modules/eslint-loader/index.js!/opt/atlassian/pipelines/agent/build/client/src/core/modules/windcave-presubmit/windcave-presubmit.js\");\n\nvar _windcavePresubmit2 = _interopRequireDefault(_windcavePresubmit);\n\nvar _recaptchaPresubmit = __webpack_require__(\"/opt/atlassian/pipelines/agent/build/node_modules/babel-loader/lib/index.js??ref--23-0!/opt/atlassian/pipelines/agent/build/node_modules/eslint-loader/index.js!/opt/atlassian/pipelines/agent/build/client/src/core/modules/recaptcha-presubmit/recaptcha-presubmit.js\");\n\nvar _recaptchaPresubmit2 = _interopRequireDefault(_recaptchaPresubmit);\n\nvar _debug = __webpack_require__(\"/opt/atlassian/pipelines/agent/build/node_modules/babel-loader/lib/index.js??ref--23-0!/opt/atlassian/pipelines/agent/build/node_modules/eslint-loader/index.js!/opt/atlassian/pipelines/agent/build/node_modules/debug/src/browser.js\");\n\nvar _debug2 = _interopRequireDefault(_debug);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar log = (0, _debug2.default)('presubmit-check');\n\nvar PresubmitCheck = function () {\n\tfunction PresubmitCheck(element) {\n\t\tvar options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\t_classCallCheck(this, PresubmitCheck);\n\n\t\tthis.element = element;\n\t\tthis.options = options;\n\t\tthis.init();\n\t}\n\n\t_createClass(PresubmitCheck, [{\n\t\tkey: 'init',\n\t\tvalue: function init() {\n\t\t\tlog(this.element, this.options);\n\n\t\t\tthis.recaptchaPresubmit = (0, _vanillaPlugin2.default)('recaptchaPresubmit', _recaptchaPresubmit2.default, [this.element])({ isWatching: false });\n\n\t\t\tthis.windcavePresubmit = (0, _vanillaPlugin2.default)('windcavePresubmit', _windcavePresubmit2.default, [this.element])({ isWatching: false });\n\n\t\t\tthis.element.addEventListener('submit', this.onSubmit.bind(this));\n\t\t}\n\t}, {\n\t\tkey: 'onSubmit',\n\t\tvalue: function onSubmit(event) {\n\t\t\tvar _this = this;\n\n\t\t\tevent.preventDefault();\n\n\t\t\tPromise.all([this.recaptchaPresubmit[0].requestValidation(), this.windcavePresubmit[0].requestValidation()]).then(function () {\n\t\t\t\t_this.element.submit();\n\t\t\t\tlog('Form submitted');\n\t\t\t}).catch(function (error) {\n\t\t\t\tlog('Error', error);\n\n\t\t\t\t_this.element.dispatchEvent(new CustomEvent('enableSubmit', {\n\t\t\t\t\tbubbles: false,\n\t\t\t\t\tcancelable: true\n\t\t\t\t}));\n\t\t\t});\n\t\t}\n\t}, {\n\t\tkey: 'destroy',\n\t\tvalue: function destroy() {\n\t\t\tthis.element.form.removeEventListener('submit', this.onSubmit);\n\t\t}\n\t}]);\n\n\treturn PresubmitCheck;\n}();\n\nPresubmitCheck.DEFAULTS = {};\n\nexports.default = PresubmitCheck;\n\n/***/ }),\n\n/***/ \"/opt/atlassian/pipelines/agent/build/node_modules/babel-loader/lib/index.js??ref--23-0!/opt/atlassian/pipelines/agent/build/node_modules/eslint-loader/index.js!/opt/atlassian/pipelines/agent/build/client/src/core/modules/recaptcha-presubmit/recaptcha-presubmit.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _debug = __webpack_require__(\"/opt/atlassian/pipelines/agent/build/node_modules/babel-loader/lib/index.js??ref--23-0!/opt/atlassian/pipelines/agent/build/node_modules/eslint-loader/index.js!/opt/atlassian/pipelines/agent/build/node_modules/debug/src/browser.js\");\n\nvar _debug2 = _interopRequireDefault(_debug);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar log = (0, _debug2.default)('recaptcha-presubmit');\n\nvar RecaptchaPresubmit = function () {\n\tfunction RecaptchaPresubmit(element, options) {\n\t\t_classCallCheck(this, RecaptchaPresubmit);\n\n\t\tlog('element', element);\n\t\tlog('options', options);\n\n\t\tthis.options = options;\n\t\tthis.form = element;\n\n\t\tthis.recaptchaSiteKey = this.options.recaptchaSiteKey;\n\t\tthis.recaptchaValidationUrl = this.options.recaptchaValidationUrl;\n\t\tthis.responseInput = this.form.querySelector(this.options.responseInputSelector);\n\t\tthis.responseErrorElement = this.form.querySelector(this.options.responseErrorSelector);\n\t\tthis.prefix = this.options.sitePrefix;\n\n\t\tthis.init(options.isWatching);\n\t}\n\n\t_createClass(RecaptchaPresubmit, [{\n\t\tkey: 'init',\n\t\tvalue: function init(isWatching) {\n\t\t\tthis.addRecaptchaScript();\n\n\t\t\tif (isWatching) {\n\t\t\t\tthis.watch();\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'watch',\n\t\tvalue: function watch() {\n\t\t\tthis.form.addEventListener('submit', this.onFormSubmit.bind(this));\n\t\t}\n\n\t\t// Only called if isWatching is not false\n\n\t}, {\n\t\tkey: 'onFormSubmit',\n\t\tvalue: function onFormSubmit(event) {\n\t\t\tlog('onFormSubmit', event);\n\t\t\tevent.preventDefault();\n\t\t\tthis.responseErrorElement.hidden = true;\n\t\t\twindow.grecaptcha.ready(this.onRecaptchaReady.bind(this));\n\t\t}\n\t}, {\n\t\tkey: 'onRecaptchaReady',\n\t\tvalue: function onRecaptchaReady() {\n\t\t\ttry {\n\t\t\t\treturn window.grecaptcha.execute(this.recaptchaSiteKey, { action: 'submit' }).then(this.onRecaptchaResponse.bind(this));\n\t\t\t} catch (error) {\n\t\t\t\tthis.displayValidationError(error.message);\n\t\t\t\treturn Promise.reject(error);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'addRecaptchaScript',\n\t\tvalue: function addRecaptchaScript() {\n\t\t\tif (!window.grecaptcha) {\n\t\t\t\tvar recaptchaScriptEl = document.createElement('script');\n\t\t\t\trecaptchaScriptEl.src = 'https://www.google.com/recaptcha/api.js?render=' + this.recaptchaSiteKey;\n\t\t\t\trecaptchaScriptEl.onload = this.onRecaptchaScriptLoaded.bind(this);\n\t\t\t\tdocument.body.appendChild(recaptchaScriptEl);\n\t\t\t} else {\n\t\t\t\tthis.onRecaptchaScriptLoaded();\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'onRecaptchaScriptLoaded',\n\t\tvalue: function onRecaptchaScriptLoaded() {\n\t\t\tlog('onRecaptchaScriptLoaded');\n\t\t}\n\t}, {\n\t\tkey: 'requestValidation',\n\t\tvalue: function requestValidation() {\n\t\t\tvar _this = this;\n\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\t_this.responseErrorElement.hidden = true;\n\t\t\t\twindow.grecaptcha.ready(function () {\n\t\t\t\t\twindow.grecaptcha.execute(_this.recaptchaSiteKey, { action: 'submit' }).then(function (token) {\n\t\t\t\t\t\tresolve(_this.onRecaptchaResponse(token));\n\t\t\t\t\t}).catch(function (error) {\n\t\t\t\t\t\t_this.displayValidationError(error.message);\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}, {\n\t\tkey: 'onRecaptchaResponse',\n\t\tvalue: function onRecaptchaResponse(token) {\n\t\t\tvar url = new URL(this.recaptchaValidationUrl, window.location.origin);\n\t\t\turl.searchParams.set('token', token);\n\t\t\turl.searchParams.set('prefix', this.prefix);\n\t\t\tlog('onRecaptchaResponse', token);\n\n\t\t\treturn fetch(url).then(function (response) {\n\t\t\t\tif (response.ok) {\n\t\t\t\t\treturn response.json();\n\t\t\t\t}\n\t\t\t\treturn Promise.reject(response);\n\t\t\t}).then(this.onRecaptchaRequestSuccess.bind(this)).catch(this.onRecaptchaRequestError.bind(this));\n\t\t}\n\t}, {\n\t\tkey: 'onRecaptchaRequestSuccess',\n\t\tvalue: function onRecaptchaRequestSuccess(data) {\n\t\t\tlog('onRecaptchaValidationSuccess', data);\n\n\t\t\tif (data.Success === true) {\n\t\t\t\t// add data.Result to SessionId field in the form and submit form\n\t\t\t\tthis.responseInput.value = data.Result;\n\t\t\t} else {\n\t\t\t\t// data.Result contains the error message\n\t\t\t\tthis.displayValidationError(data.Result);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'onRecaptchaRequestError',\n\t\tvalue: function onRecaptchaRequestError() {\n\t\t\tlog('onRecaptchaValidationError');\n\t\t\t// This happens is the API call fails\n\t\t\tthis.displayValidationError('Something went wrong. Please reload the page and try again.');\n\t\t}\n\t}, {\n\t\tkey: 'displayValidationError',\n\t\tvalue: function displayValidationError(errorMessage) {\n\t\t\tlog('displayValidationError', errorMessage);\n\t\t\tthis.responseErrorElement.hidden = false;\n\n\t\t\tif (this.options.onErrorEvent) {\n\t\t\t\tthis.form.dispatchEvent(new CustomEvent(this.options.onErrorEvent, {\n\t\t\t\t\tbubbles: false,\n\t\t\t\t\tcancelable: true\n\t\t\t\t}));\n\t\t\t}\n\t\t}\n\t}]);\n\n\treturn RecaptchaPresubmit;\n}();\n\nRecaptchaPresubmit.DEFAULTS = {\n\tresponseInputSelector: '[data-presubmit-response]',\n\tresponseErrorSelector: '[data-presubmit-error]',\n\trecaptchaValidationUrl: '/api/recaptcha',\n\tonErrorEvent: false\n};\n\nexports.default = RecaptchaPresubmit;\n\n/***/ }),\n\n/***/ \"/opt/atlassian/pipelines/agent/build/node_modules/babel-loader/lib/index.js??ref--23-0!/opt/atlassian/pipelines/agent/build/node_modules/eslint-loader/index.js!/opt/atlassian/pipelines/agent/build/client/src/core/modules/windcave-presubmit/windcave-presubmit.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _debug = __webpack_require__(\"/opt/atlassian/pipelines/agent/build/node_modules/babel-loader/lib/index.js??ref--23-0!/opt/atlassian/pipelines/agent/build/node_modules/eslint-loader/index.js!/opt/atlassian/pipelines/agent/build/node_modules/debug/src/browser.js\");\n\nvar _debug2 = _interopRequireDefault(_debug);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar log = (0, _debug2.default)('windcave-presubmit');\n\nvar WindcavePresubmit = function () {\n\tfunction WindcavePresubmit(element, options) {\n\t\t_classCallCheck(this, WindcavePresubmit);\n\n\t\tlog('element', element);\n\t\tlog('options', options);\n\n\t\tthis.options = options;\n\t\tthis.element = element;\n\n\t\tthis.validationUrl = this.options.validationUrl;\n\n\t\tthis.responseErrorElement = this.element.querySelector(this.options.responseErrorSelector);\n\t\tthis.prefix = this.options.sitePrefix;\n\t\tthis.sessionId = this.options.sessionId;\n\n\t\tthis.init(options.isWatching);\n\t}\n\n\t_createClass(WindcavePresubmit, [{\n\t\tkey: 'init',\n\t\tvalue: function init(isWatching) {\n\t\t\tif (!this.validationUrl) {\n\t\t\t\tlog('No validation URL provided: data-windcave-presubmit-validation-url=\"\". Aborting...');\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (!this.responseErrorElement) {\n\t\t\t\tlog('No response error element found matching: \"' + this.options.responseErrorSelector + '\". Aborting...');\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (!this.sessionId) {\n\t\t\t\tlog('No session ID provided: data-windcave-presubmit-session-id=\"\". Aborting...');\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (isWatching) {\n\t\t\t\tthis.watch();\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'watch',\n\t\tvalue: function watch() {\n\t\t\tthis.element.addEventListener('submit', this.onFormSubmit.bind(this));\n\t\t}\n\n\t\t// Only called if isWatching is not false\n\n\t}, {\n\t\tkey: 'onFormSubmit',\n\t\tvalue: function onFormSubmit(event) {\n\t\t\tlog('onFormSubmit', event);\n\t\t\tevent.preventDefault();\n\t\t\tthis.responseErrorElement.hidden = true;\n\t\t\tthis.requestValidation();\n\t\t}\n\t}, {\n\t\tkey: 'requestValidation',\n\t\tvalue: function requestValidation() {\n\t\t\tvar url = new URL(this.validationUrl, window.location.origin);\n\t\t\turl.searchParams.set('windcavesessionid', this.sessionId);\n\t\t\turl.searchParams.set('prefix', this.prefix);\n\n\t\t\treturn fetch(url, {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json'\n\t\t\t\t}\n\t\t\t}).then(function (response) {\n\t\t\t\tif (response.ok) {\n\t\t\t\t\treturn response.json();\n\t\t\t\t}\n\t\t\t\treturn Promise.reject(response);\n\t\t\t}).then(this.onRequestSuccess.bind(this)).catch(this.onRequestError.bind(this));\n\t\t}\n\t}, {\n\t\tkey: 'onRequestSuccess',\n\t\tvalue: function onRequestSuccess(data) {\n\t\t\tlog('onValidationSuccess', data);\n\n\t\t\t// data may contain an error message\n\t\t\tif (data !== true) {\n\t\t\t\tthis.displayRequestError(data);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'onRequestError',\n\t\tvalue: function onRequestError(error) {\n\t\t\tlog('onValidationError');\n\n\t\t\t// This happens if the API call fails\n\t\t\tthis.displayRequestError(error);\n\t\t}\n\t}, {\n\t\tkey: 'displayRequestError',\n\t\tvalue: function displayRequestError(errorMessage) {\n\t\t\tlog('displayValidationError', errorMessage);\n\n\t\t\tthis.responseErrorElement.hidden = false;\n\n\t\t\tif (this.options.onErrorEvent) {\n\t\t\t\tthis.element.dispatchEvent(new CustomEvent(this.options.onErrorEvent, {\n\t\t\t\t\tbubbles: false,\n\t\t\t\t\tcancelable: true\n\t\t\t\t}));\n\t\t\t}\n\n\t\t\tthrow new Error(errorMessage);\n\t\t}\n\t}]);\n\n\treturn WindcavePresubmit;\n}();\n\nWindcavePresubmit.DEFAULTS = {\n\tresponseErrorSelector: '[data-windcave-error]',\n\tonErrorEvent: false\n};\n\nexports.default = WindcavePresubmit;\n\n/***/ })\n\n});\n\n\n// WEBPACK FOOTER //\n// scripts/presubmit-check--14351b1944d23b669998.js","import plugin from '../../lib/vanilla-plugin';\nimport WindcavePresubmit from '@core/modules/windcave-presubmit/windcave-presubmit';\nimport RecaptchaPresubmit from '@core/modules/recaptcha-presubmit/recaptcha-presubmit';\nimport debug from 'debug';\nconst log = debug('presubmit-check');\n\nclass PresubmitCheck {\n\tconstructor(element, options = {}) {\n\t\tthis.element = element;\n\t\tthis.options = options;\n\t\tthis.init();\n\t}\n\n\tinit() {\n\t\tlog(this.element, this.options);\n\n\t\tthis.recaptchaPresubmit = plugin(\n\t\t\t'recaptchaPresubmit',\n\t\t\tRecaptchaPresubmit,\n\t\t\t[this.element]\n\t\t)({ isWatching: false });\n\n\t\tthis.windcavePresubmit = plugin(\n\t\t\t'windcavePresubmit',\n\t\t\tWindcavePresubmit,\n\t\t\t[this.element]\n\t\t)({ isWatching: false });\n\n\t\tthis.element.addEventListener('submit', this.onSubmit.bind(this));\n\t}\n\n\tonSubmit(event) {\n\t\tevent.preventDefault();\n\n\t\tPromise.all([\n\t\t\tthis.recaptchaPresubmit[0].requestValidation(),\n\t\t\tthis.windcavePresubmit[0].requestValidation(),\n\t\t]).then(() => {\n\t\t\tthis.element.submit();\n\t\t\tlog('Form submitted');\n\t\t})\n\t\t.catch((error) => {\n\t\t\tlog('Error', error);\n\n\t\t\tthis.element.dispatchEvent(\n\t\t\t\tnew CustomEvent('enableSubmit', {\n\t\t\t\t\tbubbles: false,\n\t\t\t\t\tcancelable: true,\n\t\t\t\t})\n\t\t\t);\n\t\t});\n\t}\n\n\tdestroy() {\n\t\tthis.element.form.removeEventListener('submit', this.onSubmit);\n\t}\n}\n\nPresubmitCheck.DEFAULTS = {};\n\nexport default PresubmitCheck;\n\n\n\n// WEBPACK FOOTER //\n// ./client/src/core/modules/presubmit-check/presubmit-check.js","import debug from 'debug';\nconst log = debug('recaptcha-presubmit');\n\nclass RecaptchaPresubmit {\n\tconstructor(element, options) {\n\t\tlog('element', element);\n\t\tlog('options', options);\n\n\t\tthis.options = options;\n\t\tthis.form = element;\n\n\t\tthis.recaptchaSiteKey = this.options.recaptchaSiteKey;\n\t\tthis.recaptchaValidationUrl = this.options.recaptchaValidationUrl;\n\t\tthis.responseInput = this.form.querySelector(\n\t\t\tthis.options.responseInputSelector\n\t\t);\n\t\tthis.responseErrorElement = this.form.querySelector(\n\t\t\tthis.options.responseErrorSelector\n\t\t);\n\t\tthis.prefix = this.options.sitePrefix;\n\n\t\tthis.init(options.isWatching);\n\t}\n\n\tinit(isWatching) {\n\t\tthis.addRecaptchaScript();\n\n\t\tif (isWatching) {\n\t\t\tthis.watch();\n\t\t}\n\t}\n\n\twatch() {\n\t\tthis.form.addEventListener('submit', this.onFormSubmit.bind(this));\n\t}\n\n\t// Only called if isWatching is not false\n\tonFormSubmit(event) {\n\t\tlog('onFormSubmit', event);\n\t\tevent.preventDefault();\n\t\tthis.responseErrorElement.hidden = true;\n\t\twindow.grecaptcha.ready(this.onRecaptchaReady.bind(this));\n\t}\n\n\tonRecaptchaReady() {\n\t\ttry {\n\t\t\treturn window.grecaptcha\n\t\t\t\t.execute(this.recaptchaSiteKey, { action: 'submit' })\n\t\t\t\t.then(this.onRecaptchaResponse.bind(this));\n\t\t} catch (error) {\n\t\t\tthis.displayValidationError(error.message);\n\t\t\treturn Promise.reject(error);\n\t\t}\n\t}\n\n\taddRecaptchaScript() {\n\t\tif (!window.grecaptcha) {\n\t\t\tconst recaptchaScriptEl = document.createElement('script');\n\t\t\trecaptchaScriptEl.src =\n\t\t\t\t'https://www.google.com/recaptcha/api.js?render=' +\n\t\t\t\tthis.recaptchaSiteKey;\n\t\t\trecaptchaScriptEl.onload = this.onRecaptchaScriptLoaded.bind(this);\n\t\t\tdocument.body.appendChild(recaptchaScriptEl);\n\t\t} else {\n\t\t\tthis.onRecaptchaScriptLoaded();\n\t\t}\n\t}\n\n\tonRecaptchaScriptLoaded() {\n\t\tlog('onRecaptchaScriptLoaded');\n\t}\n\n\trequestValidation() {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.responseErrorElement.hidden = true;\n\t\t\twindow.grecaptcha.ready(() => {\n\t\t\t\twindow.grecaptcha\n\t\t\t\t\t.execute(this.recaptchaSiteKey, { action: 'submit' })\n\t\t\t\t\t.then((token) => {\n\t\t\t\t\t\tresolve(this.onRecaptchaResponse(token));\n\t\t\t\t\t})\n\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\tthis.displayValidationError(error.message);\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\tonRecaptchaResponse(token) {\n\t\tconst url = new URL(this.recaptchaValidationUrl, window.location.origin);\n\t\turl.searchParams.set('token', token);\n\t\turl.searchParams.set('prefix', this.prefix);\n\t\tlog('onRecaptchaResponse', token);\n\n\t\treturn fetch(url)\n\t\t\t.then((response) => {\n\t\t\t\tif (response.ok) {\n\t\t\t\t\treturn response.json();\n\t\t\t\t}\n\t\t\t\treturn Promise.reject(response);\n\t\t\t})\n\t\t\t.then(this.onRecaptchaRequestSuccess.bind(this))\n\t\t\t.catch(this.onRecaptchaRequestError.bind(this));\n\t}\n\n\tonRecaptchaRequestSuccess(data) {\n\t\tlog('onRecaptchaValidationSuccess', data);\n\n\t\tif (data.Success === true) {\n\t\t\t// add data.Result to SessionId field in the form and submit form\n\t\t\tthis.responseInput.value = data.Result;\n\t\t} else {\n\t\t\t// data.Result contains the error message\n\t\t\tthis.displayValidationError(data.Result);\n\t\t}\n\t}\n\n\tonRecaptchaRequestError() {\n\t\tlog('onRecaptchaValidationError');\n\t\t// This happens is the API call fails\n\t\tthis.displayValidationError(\n\t\t\t'Something went wrong. Please reload the page and try again.'\n\t\t);\n\t}\n\n\tdisplayValidationError(errorMessage) {\n\t\tlog('displayValidationError', errorMessage);\n\t\tthis.responseErrorElement.hidden = false;\n\n\t\tif(this.options.onErrorEvent) {\n\t\t\tthis.form.dispatchEvent(\n\t\t\t\tnew CustomEvent(this.options.onErrorEvent, {\n\t\t\t\t\tbubbles: false,\n\t\t\t\t\tcancelable: true,\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t}\n}\n\nRecaptchaPresubmit.DEFAULTS = {\n\tresponseInputSelector: '[data-presubmit-response]',\n\tresponseErrorSelector: '[data-presubmit-error]',\n\trecaptchaValidationUrl: '/api/recaptcha',\n\tonErrorEvent: false,\n};\n\nexport default RecaptchaPresubmit;\n\n\n\n// WEBPACK FOOTER //\n// ./client/src/core/modules/recaptcha-presubmit/recaptcha-presubmit.js","import debug from 'debug';\nconst log = debug('windcave-presubmit');\n\nclass WindcavePresubmit {\n\tconstructor(element, options) {\n\t\tlog('element', element);\n\t\tlog('options', options);\n\n\t\tthis.options = options;\n\t\tthis.element = element;\n\n\t\tthis.validationUrl = this.options.validationUrl;\n\n\t\tthis.responseErrorElement = this.element.querySelector(\n\t\t\tthis.options.responseErrorSelector\n\t\t);\n\t\tthis.prefix = this.options.sitePrefix;\n\t\tthis.sessionId = this.options.sessionId;\n\n\t\tthis.init(options.isWatching);\n\t}\n\n\tinit(isWatching) {\n\t\tif (!this.validationUrl) {\n\t\t\tlog(\n\t\t\t\t`No validation URL provided: data-windcave-presubmit-validation-url=\"\". Aborting...`\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!this.responseErrorElement) {\n\t\t\tlog(\n\t\t\t\t`No response error element found matching: \"${this.options.responseErrorSelector}\". Aborting...`\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!this.sessionId) {\n\t\t\tlog(\n\t\t\t\t`No session ID provided: data-windcave-presubmit-session-id=\"\". Aborting...`\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\tif (isWatching) {\n\t\t\tthis.watch();\n\t\t}\n\t}\n\n\twatch() {\n\t\tthis.element.addEventListener('submit', this.onFormSubmit.bind(this));\n\t}\n\n\t// Only called if isWatching is not false\n\tonFormSubmit(event) {\n\t\tlog('onFormSubmit', event);\n\t\tevent.preventDefault();\n\t\tthis.responseErrorElement.hidden = true;\n\t\tthis.requestValidation();\n\t}\n\n\trequestValidation() {\n\t\tconst url = new URL(this.validationUrl, window.location.origin);\n\t\turl.searchParams.set('windcavesessionid', this.sessionId);\n\t\turl.searchParams.set('prefix', this.prefix);\n\n\t\treturn fetch(url, {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t},\n\t\t})\n\t\t\t.then((response) => {\n\t\t\t\tif (response.ok) {\n\t\t\t\t\treturn response.json();\n\t\t\t\t}\n\t\t\t\treturn Promise.reject(response);\n\t\t\t})\n\t\t\t.then(this.onRequestSuccess.bind(this))\n\t\t\t.catch(this.onRequestError.bind(this));\n\t}\n\n\tonRequestSuccess(data) {\n\t\tlog('onValidationSuccess', data);\n\n\t\t// data may contain an error message\n\t\tif (data !== true) {\n\t\t\tthis.displayRequestError(data);\n\t\t}\n\t}\n\n\tonRequestError(error) {\n\t\tlog('onValidationError');\n\n\t\t// This happens if the API call fails\n\t\tthis.displayRequestError(error);\n\t}\n\n\tdisplayRequestError(errorMessage) {\n\t\tlog('displayValidationError', errorMessage);\n\n\t\tthis.responseErrorElement.hidden = false;\n\n\t\tif (this.options.onErrorEvent) {\n\t\t\tthis.element.dispatchEvent(\n\t\t\t\tnew CustomEvent(this.options.onErrorEvent, {\n\t\t\t\t\tbubbles: false,\n\t\t\t\t\tcancelable: true,\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\n\t\tthrow new Error(errorMessage);\n\t}\n}\n\nWindcavePresubmit.DEFAULTS = {\n\tresponseErrorSelector: '[data-windcave-error]',\n\tonErrorEvent: false,\n};\n\nexport default WindcavePresubmit;\n\n\n\n// WEBPACK FOOTER //\n// ./client/src/core/modules/windcave-presubmit/windcave-presubmit.js"],"sourceRoot":""}