{"version":3,"file":"virtual_main.js","sources":["theme-3/virtual:init-settings","theme-3/virtual:theme","theme-3/discourse/components/category-list.gjs","theme-3/discourse/components/category-topics.gjs","theme-3/discourse/components/custom-html-rsb.gjs","theme-3/discourse/components/popular-tags.gjs","theme-3/discourse/components/recent-replies.gjs","theme-3/discourse/components/right-sidebar-blocks.gjs","theme-3/discourse/components/subcategory-list.gjs","theme-3/discourse/components/tag-topics.gjs","theme-3/discourse/components/top-contributors.gjs","theme-3/discourse/components/top-topics.gjs","theme-3/discourse/connectors/before-list-area/tc-right-sidebar.gjs","theme-3/virtual:main"],"sourcesContent":["import { registerSettings } from \"discourse/lib/theme-settings-store\";\n\nregisterSettings(3, {\n  \"blocks\": \"[{\\\"name\\\":\\\"custom-html\\\",\\\"params\\\":[{\\\"name\\\":\\\"content\\\",\\\"value\\\":\\\"<div class=\\\\\\\"forum-sidebar-ads ads-small-default\\\\\\\"></div>\\\"}]},{\\\"name\\\":\\\"upcoming-events-list\\\",\\\"params\\\":[{\\\"name\\\":\\\"dateFormat\\\",\\\"value\\\":\\\"MMMM Do YYYY\\\"}]},{\\\"name\\\":\\\"custom-html\\\",\\\"params\\\":[{\\\"name\\\":\\\"content\\\",\\\"value\\\":\\\"<iframe class=\\\\\\\"st-polls\\\\\\\" src=\\\\\\\"https://slowtwitch.com/polls/\\\\\\\" style=\\\\\\\"border:none; opacity:0; transition: opacity 0.2s;\\\\\\\" width=\\\\\\\"300\\\\\\\" height=\\\\\\\"400\\\\\\\"></iframe>\\\"}]}]\",\n  \"show_in_routes\": \"\"\n});\n","import { getObjectForTheme } from \"discourse/lib/theme-settings-store\";\n\nexport const settings = getObjectForTheme(3);\n\nexport function themePrefix(key) {\n  return `theme_translations.3.${key}`;\n}\n","import Component from \"@glimmer/component\";\nimport categoryLink from \"discourse/helpers/category-link\";\nimport Category from \"discourse/models/category\";\nimport { i18n } from \"discourse-i18n\";\n\nexport default class CategoryList extends Component {\n  constructor() {\n    super(...arguments);\n    this.blockTitle =\n      this.args.title || i18n(themePrefix(\"category_list.heading\"));\n\n    this.categoryList = this.args.id.split(\",\");\n    if (!this.categoryList) {\n      return;\n    }\n    this.categoryList.forEach(function (id, i, arr) {\n      arr[i] = Category.findById(id);\n    });\n  }\n\n  <template>\n    <h3 class=\"category-list__heading\">\n      {{this.blockTitle}}\n    </h3>\n\n    <div class=\"category-list__container\">\n      {{#each this.categoryList as |category|}}\n        <div class=\"category-list__category\">\n          {{categoryLink category}}\n        </div>\n      {{/each}}\n    </div>\n  </template>\n}\n","import Component from \"@glimmer/component\";\nimport { tracked } from \"@glimmer/tracking\";\nimport { service } from \"@ember/service\";\nimport TopicLink from \"discourse/components/topic-list/topic-link\";\nimport categoryLink from \"discourse/helpers/category-link\";\nimport Category from \"discourse/models/category\";\n\nexport default class CategoryTopics extends Component {\n  @service store;\n\n  @tracked topics = null;\n  @tracked category = null;\n\n  constructor() {\n    super(...arguments);\n    const count = this.args.count || 10;\n    const categoryId = this.args.id;\n\n    if (!categoryId) {\n      return;\n    }\n\n    const filter = \"c/\" + categoryId;\n    this.category = Category.findById(categoryId);\n\n    this.store.findFiltered(\"topicList\", { filter }).then((result) => {\n      this.topics = result.topics.slice(0, count);\n    });\n  }\n\n  willDestroy() {\n    super.willDestroy(...arguments);\n    this.topics = null;\n  }\n\n  <template>\n    {{categoryLink this.category}}\n\n    <div class=\"category-topics--content\">\n      {{#each this.topics as |topic|}}\n        <TopicLink @topic={{topic}} class=\"category-topics--topic\">\n          <span class=\"category-topics--posts-count\">\n            ({{topic.posts_count}})\n          </span>\n        </TopicLink>\n      {{/each}}\n    </div>\n  </template>\n}\n","import { htmlSafe } from \"@ember/template\";\n\nconst CustomHtmlRsb = <template>{{htmlSafe @content}}</template>;\n\nexport default CustomHtmlRsb;\n","import Component from \"@glimmer/component\";\nimport { tracked } from \"@glimmer/tracking\";\nimport { service } from \"@ember/service\";\nimport { i18n } from \"discourse-i18n\";\n\nexport default class PopularTags extends Component {\n  @service site;\n  @service router;\n\n  @tracked topTags = null;\n\n  willDestroy() {\n    super.willDestroy(...arguments);\n    this.topTags = null;\n  }\n\n  get shouldShowBlock() {\n    const currentRoute = this.router.currentRoute;\n    const count = this.args.count || 10;\n    const excludedTags = this.args.excludedTags || [];\n    const scopeToCategory = this.args.scopeToCategory || false;\n    const tags =\n      (scopeToCategory ? this.site.category_top_tags : this.site.top_tags) ||\n      [];\n    const category = currentRoute.attributes?.category;\n\n    // TODO(https://github.com/discourse/discourse/pull/36678): The string check can be\n    // removed using .discourse-compatibility once the PR is merged.\n    const normalizedTags = tags.map((tag) =>\n      typeof tag === \"string\" ? tag : tag.name\n    );\n    if (excludedTags.length !== 0) {\n      this.topTags = normalizedTags\n        .filter((tag) => {\n          return excludedTags.indexOf(tag) === -1;\n        })\n        .slice(0, count);\n    } else {\n      this.topTags = normalizedTags.slice(0, count);\n    }\n\n    if (this.topTags.length === 0) {\n      return false;\n    } else if (!this.shouldDisplay(category?.id)) {\n      return false;\n    } else {\n      return true;\n    }\n  }\n\n  get viewAllUrl() {\n    return `/tags`;\n  }\n\n  shouldDisplay(categoryId) {\n    const displayInSpecificCategories = this.args.displayInSpecificCategories\n      ?.split(\",\")\n      .map(Number);\n\n    return (\n      displayInSpecificCategories === undefined ||\n      displayInSpecificCategories.includes(categoryId)\n    );\n  }\n\n  <template>\n    {{#if this.shouldShowBlock}}\n      <h3 class=\"popular-tags-heading\">\n        {{i18n (themePrefix \"popular_tags.heading\")}}\n      </h3>\n\n      <div class=\"popular-tags__container\">\n        {{#each this.topTags as |t|}}\n          <a href=\"/tag/{{t}}\" class=\"popular-tags__tag\">\n            {{t}}\n          </a>\n        {{/each}}\n      </div>\n\n      <a class=\"popular-tags__view-all\" href={{this.viewAllUrl}}>\n        {{i18n (themePrefix \"popular_tags.view_all\")}}\n      </a>\n    {{/if}}\n  </template>\n}\n","import Component from \"@glimmer/component\";\nimport { tracked } from \"@glimmer/tracking\";\nimport { concat } from \"@ember/helper\";\nimport { htmlSafe } from \"@ember/template\";\nimport avatar from \"discourse/helpers/avatar\";\nimport formatDate from \"discourse/helpers/format-date\";\nimport replaceEmoji from \"discourse/helpers/replace-emoji\";\nimport { ajax } from \"discourse/lib/ajax\";\nimport { i18n } from \"discourse-i18n\";\n\nfunction stripHtml(html) {\n  let doc = new DOMParser().parseFromString(html, \"text/html\");\n  return doc.body.textContent || \"\";\n}\n\nexport default class RecentReplies extends Component {\n  @tracked replies = null;\n\n  constructor() {\n    super(...arguments);\n    const excerptLimit = this.args.excerptLimit || 150;\n    const count = this.args.count || 5;\n\n    ajax(`/posts.json`).then((data) => {\n      let results = [];\n      // TODO: would be good to add these params to the endpoint in core\n      // post_type and exclude_ops\n\n      // limit to regular posts\n      results = data.latest_posts.filter((post) => post.post_type === 1);\n      // exclude OPs\n      results = results.filter((post) => post.post_number !== 1);\n\n      results.forEach((reply) => {\n        reply.excerpt = stripHtml(reply.cooked);\n\n        if (reply.excerpt.length > excerptLimit) {\n          reply.excerpt =\n            reply.excerpt.substring(0, excerptLimit).trim(this) + \"...\";\n        }\n      });\n      this.replies = results.slice(0, count);\n    });\n  }\n\n  willDestroy() {\n    super.willDestroy(...arguments);\n    this.replies = null;\n  }\n\n  <template>\n    <h3 class=\"recent-replies--heading\">\n      {{i18n (themePrefix \"recent_replies.heading\")}}\n    </h3>\n\n    <div class=\"recent-replies--container\">\n      {{#each this.replies as |reply|}}\n        <div class=\"recent-replies--reply\">\n          <div class=\"recent-replies--col\">\n            {{avatar reply imageSize=\"small\"}}\n          </div>\n          <div class=\"recent-replies--col\">\n            <div class=\"recent-replies--excerpt\">\n              {{reply.excerpt}}\n            </div>\n            <div class=\"recent-replies--topic-title\">\n              <a\n                class=\"recent-replies--topic-link\"\n                href={{concat\n                  \"/t/\"\n                  reply.topic_slug\n                  \"/\"\n                  reply.topic_id\n                  \"/\"\n                  reply.post_number\n                }}\n              >\n                {{htmlSafe (replaceEmoji reply.topic_title)}}\n              </a>\n            </div>\n          </div>\n          <div class=\"recent-replies--col\">\n            <span class=\"recent-replies--date\">\n              {{formatDate reply.created_at format=\"tiny\"}}\n            </span>\n          </div>\n        </div>\n      {{/each}}\n    </div>\n  </template>\n}\n","import Component from \"@glimmer/component\";\nimport { tracked } from \"@glimmer/tracking\";\nimport { getOwner } from \"@ember/owner\";\nimport curryComponent from \"ember-curry-component\";\nimport PluginOutlet from \"discourse/components/plugin-outlet\";\nimport lazyHash from \"discourse/helpers/lazy-hash\";\nimport CustomHtmlRsb from \"./custom-html-rsb\";\n\nexport default class RightSidebarBlocks extends Component {\n  @tracked blocks = [];\n\n  constructor() {\n    super(...arguments);\n\n    const blocksArray = [];\n\n    JSON.parse(settings.blocks).forEach((block) => {\n      if (block.name === \"custom-html\") {\n        block.component = CustomHtmlRsb;\n      } else {\n        block.component = getOwner(this).resolveRegistration(\n          `component:${block.name}`\n        );\n      }\n\n      if (block.component) {\n        block.classNames = `rs-component rs-${block.name}`;\n\n        const parsedParams = {};\n        if (block.params) {\n          block.params.forEach((p) => {\n            parsedParams[p.name] = p.value;\n          });\n        }\n\n        // `params` key is for backwards compatibility.\n        // New components can use the top level curried arguments\n        block.parsedParams = { params: parsedParams, ...parsedParams };\n\n        blocksArray.push(block);\n      } else {\n        // eslint-disable-next-line no-console\n        console.warn(\n          `The component \"${block.name}\" was not found, please update the configuration for discourse-right-sidebar-blocks.`\n        );\n      }\n    });\n\n    this.blocks = blocksArray;\n  }\n\n  <template>\n    <PluginOutlet @name=\"above-right-sidebar-blocks\" />\n\n    {{#each this.blocks as |block|}}\n      <div class={{block.classNames}}>\n        {{#let\n          (curryComponent block.component block.parsedParams)\n          as |CurriedComponent|\n        }}\n          <CurriedComponent />\n        {{/let}}\n      </div>\n\n      <PluginOutlet\n        @name=\"below-right-sidebar-block\"\n        @outletArgs={{lazyHash block=block}}\n      />\n    {{/each}}\n\n    <PluginOutlet @name=\"below-right-sidebar-blocks\" />\n  </template>\n}\n","import Component from \"@glimmer/component\";\nimport { tracked } from \"@glimmer/tracking\";\nimport { service } from \"@ember/service\";\nimport SubCategoryItem from \"discourse/components/sub-category-item\";\nimport { i18n } from \"discourse-i18n\";\n\nexport default class SubcategoryList extends Component {\n  @service router;\n\n  @tracked parentCategory = null;\n\n  willDestroy() {\n    super.willDestroy(...arguments);\n    this.parentCategory = null;\n  }\n\n  get shouldShowBlock() {\n    const currentRoute = this.router.currentRoute;\n\n    if (!currentRoute.attributes?.category) {\n      return false;\n    }\n\n    const category = currentRoute.attributes.category;\n    this.parentCategory = category;\n\n    if (category.subcategories && this.shouldDisplay(category.id)) {\n      return true;\n    }\n\n    return false;\n  }\n\n  shouldDisplay(parentCategoryId) {\n    const displayInCategories = this.args.displayInCategories\n      ?.split(\",\")\n      .map(Number);\n\n    return (\n      displayInCategories === undefined ||\n      displayInCategories.includes(parentCategoryId)\n    );\n  }\n\n  <template>\n    {{#if this.shouldShowBlock}}\n      <h3 class=\"subcategory-list--heading\">\n        {{i18n (themePrefix \"subcategory_list.heading\")}}\n      </h3>\n\n      <div class=\"subcategory-list--items\">\n        {{#each this.parentCategory.subcategories as |subcat|}}\n          <div class=\"subcategory-list--item\">\n            <SubCategoryItem @category={{subcat}} />\n          </div>\n        {{/each}}\n      </div>\n    {{/if}}\n  </template>\n}\n","import Component from \"@glimmer/component\";\nimport { tracked } from \"@glimmer/tracking\";\nimport { concat } from \"@ember/helper\";\nimport { htmlSafe } from \"@ember/template\";\nimport categoryLink from \"discourse/helpers/category-link\";\nimport formatDate from \"discourse/helpers/format-date\";\nimport replaceEmoji from \"discourse/helpers/replace-emoji\";\nimport { ajax } from \"discourse/lib/ajax\";\nimport Category from \"discourse/models/category\";\n\nexport default class TagTopics extends Component {\n  @tracked tagTopics = null;\n\n  constructor() {\n    super(...arguments);\n    const count = this.args.count || 5;\n    const tagTopicsUrl = `/tag/${this.args.tag}.json`;\n\n    this.blockTitle = this.args.title || \"#\" + this.args.tag;\n\n    ajax(tagTopicsUrl).then((data) => {\n      let results = [];\n      results = data.topic_list.topics;\n      this.tagTopics = results.slice(0, count);\n      this.tagTopics.forEach((topic) => {\n        topic[\"category\"] = Category.findById(topic.category_id);\n      });\n    });\n  }\n\n  willDestroy() {\n    super.willDestroy(...arguments);\n    this.tagTopics = null;\n  }\n\n  <template>\n    <h3 class=\"tag-topics__heading\">\n      {{this.blockTitle}}\n    </h3>\n\n    <div class=\"tag-topics__container\">\n      {{#each this.tagTopics as |topic|}}\n        <div class=\"tag-topics__topic\">\n          <div class=\"tag-topics__col\">\n            <div class=\"tag-topics__topic-title\">\n              <a\n                class=\"tag-topics__topic-link\"\n                href={{concat \"/t/\" topic.slug \"/\" topic.id}}\n              >\n                {{htmlSafe (replaceEmoji topic.title)}}\n              </a>\n            </div>\n          </div>\n          <div class=\"tag-topics__col\">\n            <span class=\"tag-topics__date\">\n              {{formatDate topic.last_posted_at format=\"tiny\"}}\n            </span>\n          </div>\n\n          <div class=\"top-topics__category\">\n            {{categoryLink topic.category}}\n          </div>\n        </div>\n      {{/each}}\n    </div>\n  </template>\n}\n","import Component from \"@glimmer/component\";\nimport { tracked } from \"@glimmer/tracking\";\nimport { concat } from \"@ember/helper\";\nimport { eq } from \"truth-helpers\";\nimport avatar from \"discourse/helpers/avatar\";\nimport icon from \"discourse/helpers/d-icon\";\nimport number from \"discourse/helpers/number\";\nimport { ajax } from \"discourse/lib/ajax\";\nimport { i18n } from \"discourse-i18n\";\n\nexport default class TopContributors extends Component {\n  @tracked topContributors = null;\n  order = this.args.order || \"likes_received\";\n  period = this.args.period || \"yearly\";\n  count = this.args.count || 5;\n  excludedGroupNames = this.args.excludedGroupNames || \"\";\n\n  constructor() {\n    super(...arguments);\n    this.blockTitle =\n      this.args.title || i18n(themePrefix(\"top_contributors.heading\"));\n\n    ajax(this.requestURL).then((data) => {\n      this.topContributors = data.directory_items?.slice(0, this.count);\n    });\n  }\n\n  willDestroy() {\n    super.willDestroy(...arguments);\n    this.topContributors = null;\n  }\n\n  get requestURL() {\n    return `/directory_items.json?period=${this.period}&order=${this.order}&exclude_groups=${this.excludedGroupNames}&limit=${this.count}`;\n  }\n\n  get viewAllUrl() {\n    return `/u?order=${this.order}&period=${this.period}&exclude_groups=${this.excludedGroupNames}`;\n  }\n\n  <template>\n    <h3 class=\"top-contributors-heading\">\n      {{this.blockTitle}}\n    </h3>\n\n    <div class=\"top-contributors--container\">\n      {{#each this.topContributors as |item|}}\n        <div class=\"top-contributors--user\">\n          <span\n            data-user-card={{item.user.username}}\n            class=\"top-contributors--user-badge\"\n          >\n            {{avatar item.user imageSize=\"small\"}}\n            {{#if this.siteSettings.prioritize_username_in_ux}}\n              {{item.user.username}}\n            {{else if item.user.name}}\n              {{item.user.name}}\n            {{else}}\n              {{item.user.username}}\n            {{/if}}\n          </span>\n          <span\n            class={{concat \"top-contributors--user-likes order--\" this.order}}\n          >\n            {{#if (eq this.order \"likes_received\")}}\n              {{number item.likes_received}}\n              {{icon \"heart\"}}\n            {{else}}\n              {{number item.likes_given}}\n              {{icon \"heart\"}}\n            {{/if}}\n          </span>\n        </div>\n      {{/each}}\n    </div>\n\n    <a class=\"top-contributors--view-all\" href={{this.viewAllUrl}}>\n      {{i18n (themePrefix \"top_contributors.view_all\")}}\n    </a>\n  </template>\n}\n","import Component from \"@glimmer/component\";\nimport { tracked } from \"@glimmer/tracking\";\nimport { concat } from \"@ember/helper\";\nimport { htmlSafe } from \"@ember/template\";\nimport categoryLink from \"discourse/helpers/category-link\";\nimport formatDate from \"discourse/helpers/format-date\";\nimport replaceEmoji from \"discourse/helpers/replace-emoji\";\nimport { ajax } from \"discourse/lib/ajax\";\nimport Category from \"discourse/models/category\";\nimport { i18n } from \"discourse-i18n\";\n\nexport default class TopTopics extends Component {\n  @tracked topTopics = null;\n\n  constructor() {\n    super(...arguments);\n    const count = this.args.count || 5;\n    const period = this.args.period || \"weekly\";\n    const topTopicsUrl = \"/top.json?period=\" + period.toString();\n\n    ajax(topTopicsUrl).then((data) => {\n      let results = [];\n      results = data.topic_list.topics;\n      this.topTopics = results.slice(0, count);\n      this.topTopics.forEach((topic) => {\n        topic[\"category\"] = Category.findById(topic.category_id);\n      });\n    });\n  }\n\n  willDestroy() {\n    super.willDestroy(...arguments);\n    this.topTopics = null;\n  }\n\n  <template>\n    <h3 class=\"top-topics__heading\">\n      {{i18n (themePrefix \"top_topics.heading\")}}\n    </h3>\n\n    <div class=\"top-topics__container\">\n      {{#each this.topTopics as |topic|}}\n        <div class=\"top-topics__topic\">\n          <div class=\"top-topics__col\">\n            <div class=\"top-topics__topic-title\">\n              <a\n                class=\"top-topics__topic-link\"\n                href={{concat \"/t/\" topic.slug \"/\" topic.id}}\n              >\n                {{htmlSafe (replaceEmoji topic.title)}}\n              </a>\n            </div>\n          </div>\n          <div class=\"top-topics__col\">\n            <span class=\"top-topics__date\">\n              {{formatDate topic.last_posted_at format=\"tiny\"}}\n            </span>\n          </div>\n\n          <div class=\"top-topics__category\">\n            {{categoryLink topic.category}}\n          </div>\n        </div>\n\n      {{/each}}\n    </div>\n  </template>\n}\n","import Component from \"@ember/component\";\nimport { service } from \"@ember/service\";\nimport { tagName } from \"@ember-decorators/component\";\nimport discourseComputed from \"discourse/lib/decorators\";\nimport RightSidebarBlocks from \"../../components/right-sidebar-blocks\";\n\n@tagName(\"\")\nexport default class TcRightSidebar extends Component {\n  @service router;\n  @service site;\n\n  @discourseComputed(\n    \"router.currentRouteName\",\n    \"router.currentRoute.attributes.category\",\n    \"router.currentRoute.attributes.category.slug\",\n    \"router.currentRoute.attributes.tag.name\"\n  )\n  showSidebar(currentRouteName, category, categorySlug, routeTagName) {\n    if (this.site.mobileView) {\n      return false;\n    }\n\n    if (settings.show_in_routes !== \"\") {\n      const selectedRoutes = settings.show_in_routes.split(\"|\");\n      let subcategory = null;\n      let parentCategory = null;\n\n      // check if current page is subcategory\n      const categoryArg = this.outletArgs.category;\n      if (\n        categoryArg &&\n        !categoryArg.has_children &&\n        categoryArg.parent_category_id\n      ) {\n        subcategory = categorySlug;\n        parentCategory = category.ancestors[0].slug;\n      }\n\n      return (\n        selectedRoutes.includes(currentRouteName) ||\n        selectedRoutes.includes(`c/${categorySlug}`) ||\n        selectedRoutes.includes(`c/${parentCategory}/${subcategory}`) ||\n        selectedRoutes.includes(`tag/${routeTagName}`)\n      );\n    }\n\n    // if theme setting is empty, show everywhere except /categories\n    return currentRouteName !== \"discovery.categories\";\n  }\n\n  <template>\n    {{#if this.showSidebar}}\n      <div class=\"tc-right-sidebar\">\n        <RightSidebarBlocks />\n      </div>\n    {{/if}}\n  </template>\n}\n","import \"virtual:init-settings\";\n\nconst themeCompatModules = {};\nimport * as Mod1 from \"./discourse/components/category-list\";\nthemeCompatModules[\"discourse/components/category-list\"] = Mod1;\n\nimport * as Mod2 from \"./discourse/components/category-topics\";\nthemeCompatModules[\"discourse/components/category-topics\"] = Mod2;\n\nimport * as Mod3 from \"./discourse/components/custom-html-rsb\";\nthemeCompatModules[\"discourse/components/custom-html-rsb\"] = Mod3;\n\nimport * as Mod4 from \"./discourse/components/popular-tags\";\nthemeCompatModules[\"discourse/components/popular-tags\"] = Mod4;\n\nimport * as Mod5 from \"./discourse/components/recent-replies\";\nthemeCompatModules[\"discourse/components/recent-replies\"] = Mod5;\n\nimport * as Mod6 from \"./discourse/components/right-sidebar-blocks\";\nthemeCompatModules[\"discourse/components/right-sidebar-blocks\"] = Mod6;\n\nimport * as Mod7 from \"./discourse/components/subcategory-list\";\nthemeCompatModules[\"discourse/components/subcategory-list\"] = Mod7;\n\nimport * as Mod8 from \"./discourse/components/tag-topics\";\nthemeCompatModules[\"discourse/components/tag-topics\"] = Mod8;\n\nimport * as Mod9 from \"./discourse/components/top-contributors\";\nthemeCompatModules[\"discourse/components/top-contributors\"] = Mod9;\n\nimport * as Mod10 from \"./discourse/components/top-topics\";\nthemeCompatModules[\"discourse/components/top-topics\"] = Mod10;\n\nimport * as Mod11 from \"./discourse/connectors/before-list-area/tc-right-sidebar.gjs\";\nthemeCompatModules[\"discourse/connectors/before-list-area/tc-right-sidebar\"] = Mod11;\n\nexport default themeCompatModules;\n"],"names":["registerSettings","blocks","show_in_routes","settings","getObjectForTheme","themePrefix","key","CategoryList","Component","constructor","super","arguments","this","blockTitle","args","title","i18n","categoryList","id","split","forEach","i","arr","Category","findById","setComponentTemplate","createTemplateFactory","block","moduleName","scope","categoryLink","isStrictMode","CategoryTopics","dt7948","g","prototype","service","store","tracked","topics","category","count","categoryId","filter","findFiltered","then","result","slice","willDestroy","TopicLink","CustomHtmlRsb","htmlSafe","templateOnly","PopularTags","site","router","topTags","shouldShowBlock","currentRoute","excludedTags","tags","scopeToCategory","category_top_tags","top_tags","attributes","normalizedTags","map","tag","name","length","indexOf","shouldDisplay","viewAllUrl","displayInSpecificCategories","Number","undefined","includes","RecentReplies","replies","excerptLimit","ajax","data","results","latest_posts","post","post_type","post_number","reply","html","excerpt","cooked","DOMParser","parseFromString","body","textContent","substring","trim","avatar","concat","replaceEmoji","formatDate","RightSidebarBlocks","blocksArray","JSON","parse","component","getOwner","resolveRegistration","classNames","parsedParams","params","p","value","push","console","warn","PluginOutlet","curryComponent","lazyHash","SubcategoryList","parentCategory","subcategories","parentCategoryId","displayInCategories","SubCategoryItem","TagTopics","tagTopics","tagTopicsUrl","topic_list","topic","category_id","TopContributors","topContributors","order","period","excludedGroupNames","requestURL","directory_items","eq","number","icon","TopTopics","topTopics","topTopicsUrl","toString","TcRightSidebar","c","showSidebar","currentRouteName","categorySlug","routeTagName","mobileView","selectedRoutes","subcategory","categoryArg","outletArgs","has_children","parent_category_id","ancestors","slug","n","discourseComputed","tagName","themeCompatModules","Mod1","Mod2","Mod3","Mod4","Mod5","Mod6","Mod7","Mod8","Mod9","Mod10","Mod11"],"mappings":"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"}