{"version":3,"file":"discourse-hcaptcha.js","names":["define","_exports","_component","_component2","_tracking","_runloop","_service","_loadScript","_I18n","_templateFactory","Object","defineProperty","value","default","__COLOCATED_TEMPLATE__","createTemplateFactory","id","block","moduleName","isStrictMode","HCaptcha","static","dt7948","g","this","prototype","service","hCaptchaService","i","tracked","widgetId","invalid","hCaptchaConfigError","hCaptcha","constructor","super","arguments","initializeHCaptcha","args","siteKey","willDestroy","isHCaptchaLoaded","reset","next","document","getElementById","renderHCaptcha","loadHCaptchaScript","window","hcaptcha","render","sitekey","callback","response","token","registerWidget","t","setComponentTemplate","_object","_implicitInjections","c","submitted","submitFailed","inputValidation","create","failed","reason","disableImplicitInjections","_rsvp","_ajax","_pluginApi","_getOwner","name","before","initialize","container","withPluginApi","api","lookup","discourse_hcaptcha_enabled","modifyClassStatic","pluginId","createAccount","getOwnerWithFallback","Promise","reject","data","originalAccountCreation","_super","ajax","type","then","catch","finally"],"sources":["discourse/plugins/discourse-hcaptcha/discourse/components/h-captcha.js","discourse/plugins/discourse-hcaptcha/discourse/services/h-captcha-service.js","discourse/plugins/discourse-hcaptcha/discourse/templates/connectors/create-account-after-user-fields/hcaptcha-fields-connector.js","discourse/plugins/discourse-hcaptcha/pre-initializers/h-captcha.js"],"sourcesContent":["define(\"discourse/plugins/discourse-hcaptcha/discourse/components/h-captcha\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/runloop\", \"@ember/service\", \"discourse/lib/load-script\", \"I18n\", \"@ember/template-factory\"], function (_exports, _component, _component2, _tracking, _runloop, _service, _loadScript, _I18n, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div id=\"h-captcha-field\" class=\"h-captcha\" data-sitekey={{@sitekey}}></div>\n  \n  {{#if this.hCaptchaConfigError}}\n    <div class=\"alert alert-error\">\n      {{this.hCaptchaConfigError}}\n    </div>\n  {{/if}}\n  \n  {{#if this.hCaptchaService.submitFailed}}\n    <InputTip @validation={{this.hCaptchaService.inputValidation}} />\n  {{/if}}\n  */\n  {\n    \"id\": \"zEBd69Ep\",\n    \"block\": \"[[[10,0],[14,1,\\\"h-captcha-field\\\"],[14,0,\\\"h-captcha\\\"],[15,\\\"data-sitekey\\\",[30,1]],[12],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"hCaptchaConfigError\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"alert alert-error\\\"],[12],[1,\\\"\\\\n    \\\"],[1,[30,0,[\\\"hCaptchaConfigError\\\"]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"hCaptchaService\\\",\\\"submitFailed\\\"]],[[[1,\\\"  \\\"],[8,[39,2],null,[[\\\"@validation\\\"],[[30,0,[\\\"hCaptchaService\\\",\\\"inputValidation\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@sitekey\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"input-tip\\\"]]\",\n    \"moduleName\": \"discourse/plugins/discourse-hcaptcha/discourse/components/h-captcha.hbs\",\n    \"isStrictMode\": false\n  });\n  const HCAPTCHA_SCRIPT_URL = \"https://hcaptcha.com/1/api.js?render=explicit\";\n  class HCaptcha extends _component2.default {\n    static #_ = (() => dt7948.g(this.prototype, \"hCaptchaService\", [_service.service]))();\n    #hCaptchaService = (() => (dt7948.i(this, \"hCaptchaService\"), void 0))();\n    static #_2 = (() => dt7948.g(this.prototype, \"widgetId\", [_tracking.tracked]))();\n    #widgetId = (() => (dt7948.i(this, \"widgetId\"), void 0))();\n    static #_3 = (() => dt7948.g(this.prototype, \"invalid\", [_tracking.tracked], function () {\n      return true;\n    }))();\n    #invalid = (() => (dt7948.i(this, \"invalid\"), void 0))();\n    static #_4 = (() => dt7948.g(this.prototype, \"hCaptchaConfigError\", [_tracking.tracked], function () {\n      return \"\";\n    }))();\n    #hCaptchaConfigError = (() => (dt7948.i(this, \"hCaptchaConfigError\"), void 0))();\n    hCaptcha;\n    constructor() {\n      super(...arguments);\n      this.initializeHCaptcha(this.args.siteKey);\n    }\n    willDestroy() {\n      super.willDestroy(...arguments);\n      if (this.isHCaptchaLoaded()) {\n        this.hCaptcha.reset(this.widgetId);\n      }\n    }\n    initializeHCaptcha(siteKey) {\n      if (this.isHCaptchaLoaded()) {\n        (0, _runloop.next)(() => {\n          if (document.getElementById(\"h-captcha-field\")) {\n            this.renderHCaptcha(siteKey);\n          }\n        });\n        return;\n      }\n      this.loadHCaptchaScript(siteKey);\n    }\n    isHCaptchaLoaded() {\n      return typeof this.hCaptcha !== \"undefined\";\n    }\n    async loadHCaptchaScript(siteKey) {\n      await (0, _loadScript.default)(HCAPTCHA_SCRIPT_URL);\n      this.hCaptcha = window.hcaptcha;\n      this.renderHCaptcha(siteKey);\n    }\n    renderHCaptcha(siteKey) {\n      if (!this.isHCaptchaLoaded() || !this.args.siteKey) {\n        this.hCaptchaConfigError = _I18n.default.t(\"discourse_hCaptcha.contact_system_administrator\");\n        return;\n      }\n      this.widgetId = this.hCaptcha.render(\"h-captcha-field\", {\n        sitekey: siteKey,\n        callback: response => {\n          this.hCaptchaService.token = response;\n          this.hCaptchaService.invalid = !response;\n        },\n        \"expired-callback\": () => {\n          this.hCaptchaService.invalid = true;\n        }\n      });\n      this.hCaptchaService.registerWidget(this.hCaptcha, this.widgetId);\n    }\n  }\n  _exports.default = HCaptcha;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, HCaptcha);\n});","define(\"discourse/plugins/discourse-hcaptcha/discourse/services/h-captcha-service\", [\"exports\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/service\", \"discourse/lib/implicit-injections\", \"I18n\"], function (_exports, _tracking, _object, _service, _implicitInjections, _I18n) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const hCaptchaService = dt7948.c(class hCaptchaService extends _service.default {\n    static #_ = (() => dt7948.g(this.prototype, \"invalid\", [_tracking.tracked], function () {\n      return true;\n    }))();\n    #invalid = (() => (dt7948.i(this, \"invalid\"), void 0))();\n    static #_2 = (() => dt7948.g(this.prototype, \"submitted\", [_tracking.tracked], function () {\n      return false;\n    }))();\n    #submitted = (() => (dt7948.i(this, \"submitted\"), void 0))();\n    static #_3 = (() => dt7948.g(this.prototype, \"token\", [_tracking.tracked], function () {\n      return null;\n    }))();\n    #token = (() => (dt7948.i(this, \"token\"), void 0))();\n    widgetId = null;\n    hCaptcha = null;\n    get submitFailed() {\n      return this.submitted && this.invalid;\n    }\n    get inputValidation() {\n      return _object.default.create({\n        failed: this.invalid,\n        reason: _I18n.default.t(\"discourse_hCaptcha.missing_token\")\n      });\n    }\n    registerWidget(hCaptcha, id) {\n      this.hCaptcha = hCaptcha;\n      this.widgetId = id;\n    }\n    reset() {\n      this.invalid = true;\n      this.submitted = false;\n      this.token = null;\n      this.hCaptcha.reset(this.widgetId);\n    }\n  }, [_implicitInjections.disableImplicitInjections]);\n  var _default = _exports.default = hCaptchaService;\n});","define(\"discourse/plugins/discourse-hcaptcha/discourse/templates/connectors/create-account-after-user-fields/hcaptcha-fields-connector\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"input-group\">\n    <HCaptcha @siteKey={{this.siteSettings.hcaptcha_site_key}} />\n  </div>\n  */\n  {\n    \"id\": \"ThpqpeSJ\",\n    \"block\": \"[[[10,0],[14,0,\\\"input-group\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[39,1],null,[[\\\"@siteKey\\\"],[[30,0,[\\\"siteSettings\\\",\\\"hcaptcha_site_key\\\"]]]],null],[1,\\\"\\\\n\\\"],[13]],[],false,[\\\"div\\\",\\\"h-captcha\\\"]]\",\n    \"moduleName\": \"discourse/plugins/discourse-hcaptcha/discourse/templates/connectors/create-account-after-user-fields/hcaptcha-fields-connector.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"discourse/plugins/discourse-hcaptcha/pre-initializers/h-captcha\", [\"exports\", \"rsvp\", \"discourse/lib/ajax\", \"discourse/lib/plugin-api\", \"discourse-common/lib/get-owner\"], function (_exports, _rsvp, _ajax, _pluginApi, _getOwner) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const PLUGIN_ID = \"discourse-hCaptcha\";\n  function initializeHCaptcha(api, container) {\n    const siteSettings = container.lookup(\"service:site-settings\");\n    if (!siteSettings.discourse_hcaptcha_enabled) {\n      return;\n    }\n    api.modifyClassStatic(\"model:user\", {\n      pluginId: PLUGIN_ID,\n      createAccount() {\n        const hCaptchaService = (0, _getOwner.getOwnerWithFallback)(this).lookup(\"service:h-captcha-service\");\n        hCaptchaService.submitted = true;\n        if (hCaptchaService.invalid) {\n          return _rsvp.Promise.reject();\n        }\n        const data = {\n          token: hCaptchaService.token\n        };\n        const originalAccountCreation = this._super;\n        return (0, _ajax.ajax)(\"/hcaptcha/create.json\", {\n          data,\n          type: \"POST\"\n        }).then(() => {\n          return originalAccountCreation(...arguments);\n        }).catch(() => {\n          hCaptchaService.failed = true;\n          return _rsvp.Promise.reject();\n        }).finally(() => {\n          hCaptchaService.reset();\n        });\n      }\n    });\n  }\n  var _default = _exports.default = {\n    name: \"hcaptcha-initializer\",\n    before: \"inject-discourse-objects\",\n    initialize(container) {\n      (0, _pluginApi.withPluginApi)(\"1.9.0\", api => initializeHCaptcha(api, container));\n    }\n  };\n});"],"mappings":"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"}