{"version":3,"file":"discourse-translator.js","names":["define","_exports","_component","_helper","_object","_service","_dButton","_dropdownMenu","_cookie","_dMenu","_component2","_templateFactory","Object","defineProperty","value","default","LanguageSwitcher","static","dt7948","g","this","prototype","service","site","i","siteSettings","router","localeOptions","targetLanguages","automatic_translation_target_languages","split","locales","available_locales","Array","isArray","JSON","parse","filter","_ref","includes","map","_ref2","name","label","changeLocale","locale","path","dMenu","close","window","location","reload","n","action","onRegisterApi","api","setComponentTemplate","createTemplateFactory","id","block","moduleName","scope","fn","isStrictMode","_concatClass","_ajaxError","ToggleTranslationButton","shouldRender","args","post","can_translate","modal","translator","isTranslating","isTranslated","showButton","title","hideTranslation","clearPostTranslation","toggleTranslation","translate","translatePost","error","popupAjaxError","_tracking","SHOW_ORIGINAL_COOKIE","sendEvent","user","baseUrl","hostname","url","URL","searchParams","append","Date","toISOString","href","replace","now","Math","random","toString","substr","stringify","user_id","innerWidth","innerHeight","img","Image","src","ShowOriginalContent","topic","show_translation_toggle","currentUser","tracked","showingOriginal","constructor","super","arguments","showOriginal","removeCookie","expires","console","warn","refresh","_discourseI18n","_dTooltip","TranslatedPostIndicator","tooltip","data","i18n","language","detected_language","_template","_conditionalLoadingSpinner","TranslatedPost","loading","outletArgs","translatedText","translatedTitle","showTranslation","experimental_inline_translation","htmlSafe","_pluginApi","_languageSwitcher","_toggleTranslationButton","_showOriginalContent","_translatedPost","_translatedPostIndicator","initializeTranslation","container","lookup","translator_enabled","getCurrentUser","experimental_anon_language_switcher","headerIcons","add","before","renderInOutlet","registerCustomPostMessageCallback","topicController","URLSearchParams","search","get","triggerChangedPost","updated_at","then","appEvents","trigger","addTrackedPostProperties","registerValueTransformer","metadata","context","metaDataInfoKeys","is_translated","DATE","RenderGlimmer","require","includePostAttributes","decorateWidget","dec","attrs","widget","dag","firstButtonKey","renderBeforeWrapperOutlet","customizePostMenu","initialize","withPluginApi","_ajax","TranslatorService","documentTitle","response","ajax","type","post_id","detectedLang","detected_lang","translation","title_translation","post_number","set","setTitle"],"sources":["discourse/plugins/discourse-translator/discourse/components/language-switcher.js","discourse/plugins/discourse-translator/discourse/components/post-menu/toggle-translation-button.js","discourse/plugins/discourse-translator/discourse/components/show-original-content.js","discourse/plugins/discourse-translator/discourse/components/translated-post-indicator.js","discourse/plugins/discourse-translator/discourse/components/translated-post.js","discourse/plugins/discourse-translator/discourse/initializers/extend-for-translate-button.js","discourse/plugins/discourse-translator/discourse/services/translator.js"],"sourcesContent":["define(\"discourse/plugins/discourse-translator/discourse/components/language-switcher\", [\"exports\", \"@glimmer/component\", \"@ember/helper\", \"@ember/object\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/components/dropdown-menu\", \"discourse/lib/cookie\", \"float-kit/components/d-menu\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _helper, _object, _service, _dButton, _dropdownMenu, _cookie, _dMenu, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class LanguageSwitcher extends _component.default {\n    static #_ = (() => dt7948.g(this.prototype, \"site\", [_service.service]))();\n    #site = (() => (dt7948.i(this, \"site\"), void 0))();\n    static #_2 = (() => dt7948.g(this.prototype, \"siteSettings\", [_service.service]))();\n    #siteSettings = (() => (dt7948.i(this, \"siteSettings\"), void 0))();\n    static #_3 = (() => dt7948.g(this.prototype, \"router\", [_service.service]))();\n    #router = (() => (dt7948.i(this, \"router\"), void 0))();\n    get localeOptions() {\n      const targetLanguages = (this.siteSettings.automatic_translation_target_languages || \"\").split(\"|\");\n      const locales = this.siteSettings.available_locales;\n      return (Array.isArray(locales) ? locales : JSON.parse(locales)).filter(_ref => {\n        let {\n          value\n        } = _ref;\n        return targetLanguages.includes(value);\n      }).map(_ref2 => {\n        let {\n          name,\n          value\n        } = _ref2;\n        return {\n          label: name,\n          value\n        };\n      });\n    }\n    async changeLocale(locale) {\n      (0, _cookie.default)(\"locale\", locale, {\n        path: \"/\"\n      });\n      this.dMenu.close();\n      // we need a hard refresh here for the locale to take effect\n      window.location.reload();\n    }\n    static #_4 = (() => dt7948.n(this.prototype, \"changeLocale\", [_object.action]))();\n    onRegisterApi(api) {\n      this.dMenu = api;\n    }\n    static #_5 = (() => dt7948.n(this.prototype, \"onRegisterApi\", [_object.action]))();\n    static #_6 = (() => (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n    /*\n      \n        <DMenu\n          @identifier=\"discourse-translator_language-switcher\"\n          title=\"Language switcher\"\n          @icon=\"language\"\n          class=\"btn-flat btn-icon icon\"\n          @onRegisterApi={{this.onRegisterApi}}\n        >\n          <:content>\n            <DropdownMenu as |dropdown|>\n              {{#each this.localeOptions as |option|}}\n                <dropdown.item\n                  class=\"discourse-translator_locale-option\"\n                  data-menu-option-id={{option.value}}\n                >\n                  <DButton\n                    @translatedLabel={{option.label}}\n                    @action={{fn this.changeLocale option.value}}\n                  />\n                </dropdown.item>\n              {{/each}}\n            </DropdownMenu>\n          </:content>\n        </DMenu>\n      \n    */\n    {\n      \"id\": \"uXv74Oe7\",\n      \"block\": \"[[[1,\\\"\\\\n    \\\"],[8,[32,0],[[24,\\\"title\\\",\\\"Language switcher\\\"],[24,0,\\\"btn-flat btn-icon icon\\\"]],[[\\\"@identifier\\\",\\\"@icon\\\",\\\"@onRegisterApi\\\"],[\\\"discourse-translator_language-switcher\\\",\\\"language\\\",[30,0,[\\\"onRegisterApi\\\"]]]],[[\\\"content\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[32,1],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[31,1],[[28,[31,1],[[30,0,[\\\"localeOptions\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[8,[30,1,[\\\"item\\\"]],[[24,0,\\\"discourse-translator_locale-option\\\"],[16,\\\"data-menu-option-id\\\",[30,2,[\\\"value\\\"]]]],null,[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[32,2],null,[[\\\"@translatedLabel\\\",\\\"@action\\\"],[[30,2,[\\\"label\\\"]],[28,[32,3],[[30,0,[\\\"changeLocale\\\"]],[30,2,[\\\"value\\\"]]],null]]],null],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"        \\\"]],[1]]]]],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n  \\\"]],[\\\"dropdown\\\",\\\"option\\\"],false,[\\\"each\\\",\\\"-track-array\\\"]]\",\n      \"moduleName\": \"/app/app/assets/javascripts/discourse/discourse/plugins/discourse-translator/discourse/components/language-switcher.js\",\n      \"scope\": () => [_dMenu.default, _dropdownMenu.default, _dButton.default, _helper.fn],\n      \"isStrictMode\": true\n    }), this))();\n  }\n  _exports.default = LanguageSwitcher;\n});","define(\"discourse/plugins/discourse-translator/discourse/components/post-menu/toggle-translation-button\", [\"exports\", \"@glimmer/component\", \"@ember/object\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/helpers/concat-class\", \"discourse/lib/ajax-error\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _service, _dButton, _concatClass, _ajaxError, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class ToggleTranslationButton extends _component.default {\n    static shouldRender(args) {\n      return args.post.can_translate;\n    }\n    static #_ = (() => dt7948.g(this.prototype, \"modal\", [_service.service]))();\n    #modal = (() => (dt7948.i(this, \"modal\"), void 0))();\n    static #_2 = (() => dt7948.g(this.prototype, \"translator\", [_service.service]))();\n    #translator = (() => (dt7948.i(this, \"translator\"), void 0))();\n    get isTranslating() {\n      return this.args.post.isTranslating;\n    }\n    get isTranslated() {\n      return this.args.post.isTranslated;\n    }\n    get showButton() {\n      return this.args.post.can_translate;\n    }\n    get title() {\n      if (this.isTranslating) {\n        return \"translator.translating\";\n      }\n      return this.isTranslated ? \"translator.hide_translation\" : \"translator.view_translation\";\n    }\n    hideTranslation() {\n      this.args.post.isTranslated = false;\n      this.args.post.isTranslating = false;\n      this.translator.clearPostTranslation(this.args.post);\n    }\n    static #_3 = (() => dt7948.n(this.prototype, \"hideTranslation\", [_object.action]))();\n    toggleTranslation() {\n      return this.args.post.isTranslated ? this.hideTranslation() : this.translate();\n    }\n    static #_4 = (() => dt7948.n(this.prototype, \"toggleTranslation\", [_object.action]))();\n    async translate() {\n      const post = this.args.post;\n      post.isTranslating = true;\n      try {\n        await this.translator.translatePost(post);\n        post.isTranslated = true;\n      } catch (error) {\n        this.translator.clearPostTranslation(this.args.post);\n        post.isTranslated = false;\n        (0, _ajaxError.popupAjaxError)(error);\n      } finally {\n        post.isTranslating = false;\n      }\n    }\n    static #_5 = (() => dt7948.n(this.prototype, \"translate\", [_object.action]))();\n    static #_6 = (() => (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n    /*\n      \n        {{#if this.showButton}}\n          <DButton\n            class={{concatClass\n              \"post-action-menu__translate\"\n              (if this.isTranslated \"translated\")\n            }}\n            ...attributes\n            @action={{this.toggleTranslation}}\n            @disabled={{this.isTranslating}}\n            @icon=\"globe\"\n            @label={{if @showLabel this.title}}\n            @title={{this.title}}\n          />\n        {{/if}}\n      \n    */\n    {\n      \"id\": \"QrQ5nCw1\",\n      \"block\": \"[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showButton\\\"]],[[[1,\\\"      \\\"],[8,[32,0],[[16,0,[28,[32,1],[\\\"post-action-menu__translate\\\",[52,[30,0,[\\\"isTranslated\\\"]],\\\"translated\\\"]],null]],[17,1]],[[\\\"@action\\\",\\\"@disabled\\\",\\\"@icon\\\",\\\"@label\\\",\\\"@title\\\"],[[30,0,[\\\"toggleTranslation\\\"]],[30,0,[\\\"isTranslating\\\"]],\\\"globe\\\",[52,[30,2],[30,0,[\\\"title\\\"]]],[30,0,[\\\"title\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"]],[\\\"&attrs\\\",\\\"@showLabel\\\"],false,[\\\"if\\\"]]\",\n      \"moduleName\": \"/app/app/assets/javascripts/discourse/discourse/plugins/discourse-translator/discourse/components/post-menu/toggle-translation-button.js\",\n      \"scope\": () => [_dButton.default, _concatClass.default],\n      \"isStrictMode\": true\n    }), this))();\n  }\n  _exports.default = ToggleTranslationButton;\n});","define(\"discourse/plugins/discourse-translator/discourse/components/show-original-content\", [\"exports\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/service\", \"discourse/components/d-button\", \"discourse/helpers/concat-class\", \"discourse/lib/cookie\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _object, _service, _dButton, _concatClass, _cookie, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const SHOW_ORIGINAL_COOKIE = \"discourse-translator-show-original\";\n  const SHOW_ORIGINAL_COOKIE_EXPIRY = 30;\n  // Dynamic URL logic for different environments\n  const getEventBaseUrl = () => {\n    if (window.location.hostname === 'devforum.roblox.com') {\n      return 'https://ecsv2.roblox.com/CreatorWeb';\n    }\n    if (window.location.hostname.includes('sitetest1')) {\n      return 'https://ecsv2.sitetest1.robloxlabs.com/CreatorWeb';\n    }\n    return 'https://ecsv2.sitetest3.robloxlabs.com/CreatorWeb';\n  };\n  // Event tracking function using tracking pixel\n  function sendEvent(user, action) {\n    const baseUrl = getEventBaseUrl();\n    const url = new URL(`${baseUrl}/e.png`);\n    // Add required parameters\n    url.searchParams.append('t', 'CreatorWeb');\n    url.searchParams.append('evt', 'CreatorWeb');\n    url.searchParams.append('ctx', 'click');\n    url.searchParams.append('lt', new Date().toISOString());\n    url.searchParams.append('url', window.location.href.replace(/#.*$/, ''));\n    url.searchParams.append('sid', 'session_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9));\n    // Add additional properties\n    url.searchParams.append('product', 'DevForum');\n    url.searchParams.append('eventType', 'click');\n    url.searchParams.append('eventName', 'userToggleTranslation');\n    url.searchParams.append('parameters', JSON.stringify({\n      user_id: user?.id?.toString() || 'anonymous',\n      action: action\n    }));\n    url.searchParams.append('viewportWidth', window.innerWidth.toString());\n    url.searchParams.append('viewportHeight', window.innerHeight.toString());\n    const img = new Image();\n    img.src = url.href;\n    return img;\n  }\n  class ShowOriginalContent extends _component.default {\n    static shouldRender(args) {\n      return args.topic.show_translation_toggle;\n    }\n    static #_ = (() => dt7948.g(this.prototype, \"router\", [_service.service]))();\n    #router = (() => (dt7948.i(this, \"router\"), void 0))();\n    static #_2 = (() => dt7948.g(this.prototype, \"currentUser\", [_service.service]))();\n    #currentUser = (() => (dt7948.i(this, \"currentUser\"), void 0))();\n    static #_3 = (() => dt7948.g(this.prototype, \"showingOriginal\", [_tracking.tracked], function () {\n      return false;\n    }))();\n    #showingOriginal = (() => (dt7948.i(this, \"showingOriginal\"), void 0))();\n    constructor() {\n      super(...arguments);\n      this.showingOriginal = (0, _cookie.default)(SHOW_ORIGINAL_COOKIE);\n    }\n    async showOriginal() {\n      const wasShowingOriginal = this.showingOriginal;\n      const action = wasShowingOriginal ? 'opt_in' : 'opt_out';\n      if (this.showingOriginal) {\n        (0, _cookie.removeCookie)(SHOW_ORIGINAL_COOKIE, {\n          path: \"/\"\n        });\n      } else {\n        (0, _cookie.default)(SHOW_ORIGINAL_COOKIE, true, {\n          path: \"/\",\n          expires: SHOW_ORIGINAL_COOKIE_EXPIRY\n        });\n      }\n      // Log the preference change using tracking pixel\n      try {\n        const user = this.currentUser;\n        sendEvent(user, action);\n      } catch (error) {\n        // Silently fail - logging is not critical for functionality\n        console.warn(\"Failed to log translation preference:\", error);\n      }\n      this.router.refresh();\n    }\n    static #_4 = (() => dt7948.n(this.prototype, \"showOriginal\", [_object.action]))();\n    get title() {\n      return this.showingOriginal ? \"translator.content_not_translated\" : \"translator.content_translated\";\n    }\n    static #_5 = (() => (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n    /*\n      \n        <div class=\"discourse-translator_toggle-original\">\n          <DButton\n            @icon=\"language\"\n            @title={{this.title}}\n            class={{concatClass\n              \"btn btn-default\"\n              (unless this.showingOriginal \"active\")\n            }}\n            @action={{this.showOriginal}}\n          />\n        </div>\n      \n    */\n    {\n      \"id\": \"ENQVi3s9\",\n      \"block\": \"[[[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"discourse-translator_toggle-original\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[32,0],[[16,0,[28,[32,1],[\\\"btn btn-default\\\",[52,[51,[30,0,[\\\"showingOriginal\\\"]]],\\\"active\\\"]],null]]],[[\\\"@icon\\\",\\\"@title\\\",\\\"@action\\\"],[\\\"language\\\",[30,0,[\\\"title\\\"]],[30,0,[\\\"showOriginal\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[],false,[\\\"unless\\\"]]\",\n      \"moduleName\": \"/app/app/assets/javascripts/discourse/discourse/plugins/discourse-translator/discourse/components/show-original-content.js\",\n      \"scope\": () => [_dButton.default, _concatClass.default],\n      \"isStrictMode\": true\n    }), this))();\n  }\n  _exports.default = ShowOriginalContent;\n});","define(\"discourse/plugins/discourse-translator/discourse/components/translated-post-indicator\", [\"exports\", \"@glimmer/component\", \"discourse-i18n\", \"float-kit/components/d-tooltip\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _discourseI18n, _dTooltip, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class TranslatedPostIndicator extends _component.default {\n    get tooltip() {\n      const post = this.args.post ?? this.args.data;\n      return (0, _discourseI18n.i18n)(\"translator.originally_written_in\", {\n        language: post.detected_language\n      });\n    }\n    static #_ = (() => (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n    /*\n      \n        <div class=\"post-info post-translated-indicator\">\n          <DTooltip\n            @identifier=\"discourse-translator_translated-post-indicator\"\n            @icon=\"language\"\n            @content={{this.tooltip}}\n          />\n        </div>\n      \n    */\n    {\n      \"id\": \"CJPxYnk3\",\n      \"block\": \"[[[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"post-info post-translated-indicator\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[32,0],null,[[\\\"@identifier\\\",\\\"@icon\\\",\\\"@content\\\"],[\\\"discourse-translator_translated-post-indicator\\\",\\\"language\\\",[30,0,[\\\"tooltip\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[],false,[]]\",\n      \"moduleName\": \"/app/app/assets/javascripts/discourse/discourse/plugins/discourse-translator/discourse/components/translated-post-indicator.js\",\n      \"scope\": () => [_dTooltip.default],\n      \"isStrictMode\": true\n    }), this))();\n  }\n  _exports.default = TranslatedPostIndicator;\n});","define(\"discourse/plugins/discourse-translator/discourse/components/translated-post\", [\"exports\", \"@glimmer/component\", \"@ember/service\", \"@ember/template\", \"discourse/components/conditional-loading-spinner\", \"discourse-i18n\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _template, _conditionalLoadingSpinner, _discourseI18n, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class TranslatedPost extends _component.default {\n    static shouldRender(args) {\n      return args.post.isTranslated || args.post.isTranslating;\n    }\n    static #_ = (() => dt7948.g(this.prototype, \"siteSettings\", [_service.service]))();\n    #siteSettings = (() => (dt7948.i(this, \"siteSettings\"), void 0))();\n    get loading() {\n      return this.post.isTranslating;\n    }\n    get isTranslated() {\n      return this.post.isTranslated;\n    }\n    get post() {\n      return this.args.outletArgs.post;\n    }\n    get translatedText() {\n      return this.post.translatedText;\n    }\n    get translatedTitle() {\n      return this.post.translatedTitle;\n    }\n    get showTranslation() {\n      return !this.siteSettings.experimental_inline_translation;\n    }\n    static #_2 = (() => (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n    /*\n      \n        <div class=\"post-translation\">\n          <ConditionalLoadingSpinner\n            class=\"post-translation\"\n            @condition={{this.loading}}\n            @size=\"small\"\n          >\n            {{#if this.showTranslation}}\n              <hr />\n              {{#if this.translatedTitle}}\n                <div class=\"topic-attribution\">\n                  {{this.translatedTitle}}\n                </div>\n              {{/if}}\n              <div class=\"post-attribution\">\n                {{i18n\n                  \"translator.translated_from\"\n                  language=this.post.detectedLang\n                  translator=this.siteSettings.translator_provider\n                }}\n              </div>\n              <div class=\"cooked\">\n                {{htmlSafe this.post.translatedText}}\n              </div>\n            {{/if}}\n          </ConditionalLoadingSpinner>\n        </div>\n      \n    */\n    {\n      \"id\": \"jTzAg1UK\",\n      \"block\": \"[[[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"post-translation\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[32,0],[[24,0,\\\"post-translation\\\"]],[[\\\"@condition\\\",\\\"@size\\\"],[[30,0,[\\\"loading\\\"]],\\\"small\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showTranslation\\\"]],[[[1,\\\"          \\\"],[10,\\\"hr\\\"],[12],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"translatedTitle\\\"]],[[[1,\\\"            \\\"],[10,0],[14,0,\\\"topic-attribution\\\"],[12],[1,\\\"\\\\n              \\\"],[1,[30,0,[\\\"translatedTitle\\\"]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[10,0],[14,0,\\\"post-attribution\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[28,[32,1],[\\\"translator.translated_from\\\"],[[\\\"language\\\",\\\"translator\\\"],[[30,0,[\\\"post\\\",\\\"detectedLang\\\"]],[30,0,[\\\"siteSettings\\\",\\\"translator_provider\\\"]]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"cooked\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[28,[32,2],[[30,0,[\\\"post\\\",\\\"translatedText\\\"]]],null]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[],false,[\\\"if\\\"]]\",\n      \"moduleName\": \"/app/app/assets/javascripts/discourse/discourse/plugins/discourse-translator/discourse/components/translated-post.js\",\n      \"scope\": () => [_conditionalLoadingSpinner.default, _discourseI18n.i18n, _template.htmlSafe],\n      \"isStrictMode\": true\n    }), this))();\n  }\n  _exports.default = TranslatedPost;\n});","define(\"discourse/plugins/discourse-translator/discourse/initializers/extend-for-translate-button\", [\"exports\", \"discourse/lib/plugin-api\", \"discourse/plugins/discourse-translator/discourse/components/language-switcher\", \"discourse/plugins/discourse-translator/discourse/components/post-menu/toggle-translation-button\", \"discourse/plugins/discourse-translator/discourse/components/show-original-content\", \"discourse/plugins/discourse-translator/discourse/components/translated-post\", \"discourse/plugins/discourse-translator/discourse/components/translated-post-indicator\"], function (_exports, _pluginApi, _languageSwitcher, _toggleTranslationButton, _showOriginalContent, _translatedPost, _translatedPostIndicator) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function initializeTranslation(api) {\n    const siteSettings = api.container.lookup(\"service:site-settings\");\n    if (!siteSettings.translator_enabled) {\n      return;\n    }\n    const currentUser = api.getCurrentUser();\n    if (!currentUser && siteSettings.experimental_anon_language_switcher && siteSettings.automatic_translation_target_languages) {\n      api.headerIcons.add(\"discourse-translator_language-switcher\", _languageSwitcher.default, {\n        before: [\"search\"]\n      });\n    }\n    if (siteSettings.experimental_inline_translation && (currentUser || siteSettings.experimental_anon_language_switcher)) {\n      api.renderInOutlet(\"topic-navigation\", _showOriginalContent.default);\n      api.registerCustomPostMessageCallback(\"translated_post\", (topicController, data) => {\n        if (new URLSearchParams(window.location.search).get(\"show\") === \"original\") {\n          return;\n        }\n        const postStream = topicController.get(\"model.postStream\");\n        postStream.triggerChangedPost(data.id, data.updated_at).then(() => {\n          topicController.appEvents.trigger(\"post-stream:refresh\", {\n            id: data.id\n          });\n        });\n      });\n      api.addTrackedPostProperties(\"is_translated\", \"detected_language\");\n      const registered = api.registerValueTransformer(\"post-meta-data-infos\", _ref => {\n        let {\n          value: metadata,\n          context: {\n            post,\n            metaDataInfoKeys\n          }\n        } = _ref;\n        if (post.is_translated && post.detected_language) {\n          metadata.add(\"translated-indicator\", _translatedPostIndicator.default, {\n            before: metaDataInfoKeys.DATE\n          });\n        }\n      });\n\n      // The pre-upgrade core (3.5.0.beta3, 2a26555a) has no post-meta-data-infos transformer and\n      // renders posts with widgets, so add the indicator to the post-date widget instead.\n      if (!registered) {\n        const RenderGlimmer = require(\"discourse/widgets/render-glimmer\").default;\n        api.includePostAttributes(\"is_translated\", \"detected_language\");\n        api.decorateWidget(\"post-date:before\", dec => {\n          if (dec.attrs.is_translated && dec.attrs.detected_language) {\n            return new RenderGlimmer(dec.widget, \"span\", _translatedPostIndicator.default, {\n              detected_language: dec.attrs.detected_language\n            });\n          }\n        });\n      }\n    }\n    customizePostMenu(api);\n  }\n  function customizePostMenu(api) {\n    api.registerValueTransformer(\"post-menu-buttons\", _ref2 => {\n      let {\n        value: dag,\n        context: {\n          firstButtonKey\n        }\n      } = _ref2;\n      dag.add(\"translate\", _toggleTranslationButton.default, {\n        before: firstButtonKey\n      });\n    });\n\n    // the plugin outlet is not updated when the post instance is modified unless we register the new properties as\n    // tracked\n    api.addTrackedPostProperties(\"can_translate\", \"detectedLang\", \"isTranslating\", \"isTranslated\", \"translatedText\", \"translatedTitle\");\n    api.renderBeforeWrapperOutlet(\"post-menu\", _translatedPost.default);\n  }\n  var _default = _exports.default = {\n    name: \"extend-for-translate-button\",\n    initialize() {\n      (0, _pluginApi.withPluginApi)(api => initializeTranslation(api));\n    }\n  };\n});","define(\"discourse/plugins/discourse-translator/discourse/services/translator\", [\"exports\", \"@ember/service\", \"discourse/lib/ajax\"], function (_exports, _service, _ajax) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class TranslatorService extends _service.default {\n    static #_ = (() => dt7948.g(this.prototype, \"siteSettings\", [_service.service]))();\n    #siteSettings = (() => (dt7948.i(this, \"siteSettings\"), void 0))();\n    static #_2 = (() => dt7948.g(this.prototype, \"appEvents\", [_service.service]))();\n    #appEvents = (() => (dt7948.i(this, \"appEvents\"), void 0))();\n    static #_3 = (() => dt7948.g(this.prototype, \"documentTitle\", [_service.service]))();\n    #documentTitle = (() => (dt7948.i(this, \"documentTitle\"), void 0))();\n    async translatePost(post) {\n      const response = await (0, _ajax.ajax)(\"/translator/translate\", {\n        type: \"POST\",\n        data: {\n          post_id: post.id\n        }\n      });\n      post.detectedLang = response.detected_lang;\n      post.translatedText = response.translation;\n      post.translatedTitle = response.title_translation;\n      if (this.siteSettings.experimental_inline_translation) {\n        if (post.post_number === 1) {\n          post.topic.set(\"fancy_title\", response.title_translation);\n          this.appEvents.trigger(\"header:update-topic\", post.topic);\n          this.documentTitle.setTitle(response.title_translation);\n        }\n        post.set(\"cooked\", response.translation);\n        post.set(\"can_translate\", false);\n        this.appEvents.trigger(\"post-stream:refresh\", {\n          id: post.id\n        });\n      }\n    }\n    clearPostTranslation(post) {\n      post.detectedLang = null;\n      post.translatedText = null;\n      post.translatedTitle = null;\n    }\n  }\n  _exports.default = TranslatorService;\n});"],"mappings":"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","ignoreList":[]}