{"version":3,"file":"main.BRW0CM.js","sources":["theme-31/virtual:theme","theme-31/discourse/components/category-box-expand-button.gjs","theme-31/discourse/components/subcategories-heading.gjs","theme-31/discourse/api-initializers/category-boxes-init.gjs","theme-31/discourse/components/category-custom-heading.gjs","theme-31/discourse/api-initializers/category-custom-heading-init.gjs","theme-31/discourse/components/category-setting-checkbox.gjs","theme-31/discourse/components/custom-category-settings.gjs","theme-31/discourse/api-initializers/category-settings-init.gjs","theme-31/discourse/components/custom-login-signup.gjs","theme-31/discourse/api-initializers/custom-login-signup-init.js","theme-31/discourse/components/community-site-logo.gjs","theme-31/discourse/api-initializers/header-init.js","theme-31/discourse/api-initializers/hide-content.js","theme-31/discourse/api-initializers/material-design-icons.js","theme-31/discourse/api-initializers/tag-separator.js","theme-31/discourse/components/topic-creator-column.gjs","theme-31/discourse/api-initializers/topic-list-init.gjs","theme-31/discourse/components/extra-group-fields.gjs","theme-31/discourse/components/sign-up-left-content.gjs","theme-31/discourse/services/page.js","theme-31/virtual:entrypoint:main"],"sourcesContent":["import { getObjectForTheme } from \"discourse/lib/theme-settings-store\";\n\nexport const settings = getObjectForTheme(31);\n\nexport function themePrefix(key) {\n  return `theme_translations.31.${key}`;\n}\n","import Component from \"@glimmer/component\";\nimport { tracked } from \"@glimmer/tracking\";\nimport { on } from \"@ember/modifier\";\nimport { action } from \"@ember/object\";\nimport dIcon from \"discourse/helpers/d-icon\";\n\nexport default class CategoryBoxExpandButton extends Component {\n  @tracked expanded = false;\n\n  get shouldShowButton() {\n    if (this.expanded) {\n      return false;\n    }\n    const subcategories = this.args.outletArgs.category.subcategories;\n    return subcategories && subcategories.length > 4;\n  }\n\n  @action\n  toggleExpanded() {\n    this.expanded = !this.expanded;\n\n    const categoryElement = document.querySelector(\n      `[data-category-id=\"${this.args.outletArgs.category.id}\"] .subcategories`\n    );\n\n    if (categoryElement) {\n      categoryElement.classList.toggle(\"expanded\", this.expanded);\n    }\n  }\n\n  <template>\n    {{#if this.shouldShowButton}}\n      <button\n        type=\"button\"\n        class=\"btn btn-icon subcategory-expand-btn\"\n        {{on \"click\" this.toggleExpanded}}\n      >\n        {{dIcon \"chevron-down\"}}\n      </button>\n    {{/if}}\n  </template>\n}\n","import { i18n } from \"discourse-i18n\";\n\nconst SubcategoriesHeading = <template>\n  <h2 class=\"subcategories-heading\">{{i18n \"search.categories\"}}</h2>\n</template>;\n\nexport default SubcategoriesHeading;\n","import { apiInitializer } from \"discourse/lib/api\";\nimport CategoryBoxExpandButton from \"../components/category-box-expand-button\";\nimport SubcategoriesHeading from \"../components/subcategories-heading\";\n\nexport default apiInitializer((api) => {\n  api.renderInOutlet(\n    \"category-box-below-each-category\",\n    CategoryBoxExpandButton\n  );\n  api.renderInOutlet(\"category-boxes-after-boxes\", SubcategoriesHeading);\n});\n","import Component from \"@glimmer/component\";\nimport { tracked } from \"@glimmer/tracking\";\nimport { on } from \"@ember/modifier\";\nimport { action } from \"@ember/object\";\nimport { service } from \"@ember/service\";\nimport { trustHTML } from \"@ember/template\";\nimport bodyClass from \"discourse/helpers/body-class\";\nimport dIcon from \"discourse/helpers/d-icon\";\nimport { ajax } from \"discourse/lib/ajax\";\n\n/**\n * Module-scoped to outlive the component: core re-creates this outlet on\n * every filter switch within the same category.\n */\nconst descriptionCache = new Map();\n\nexport default class CategoryCustomHeading extends Component {\n  @service site;\n  @service page;\n\n  @tracked isCollapsed = false;\n  @tracked description = null;\n\n  #categoryId;\n\n  constructor() {\n    super(...arguments);\n\n    this.isCollapsed =\n      localStorage.getItem(\"category-heading-collapsed\") === \"true\";\n\n    this.loadDescription();\n\n    this.page.on(\"didChange\", this, this.loadDescription);\n  }\n\n  willDestroy() {\n    super.willDestroy(...arguments);\n    this.page.off(\"didChange\", this, this.loadDescription);\n  }\n\n  async loadDescription() {\n    const categoryId = this.page.currentCategoryId;\n    if (categoryId === this.#categoryId) {\n      return;\n    }\n\n    this.#categoryId = categoryId;\n    this.description = descriptionCache.get(categoryId) ?? null;\n    if (this.description) {\n      return;\n    }\n\n    try {\n      const category = this.site.categories?.find((c) => c.id === categoryId);\n\n      if (!category?.topic_url) {\n        return;\n      }\n\n      const topic = await ajax(`${category.topic_url}.json`);\n      const description =\n        topic.post_stream?.posts[0]?.cooked || \"No description available.\";\n      descriptionCache.set(categoryId, description);\n\n      if (categoryId === this.#categoryId) {\n        this.description = description;\n      }\n    } catch (e) {\n      // eslint-disable-next-line no-console\n      console.error(\"Error loading category description:\", e);\n    }\n  }\n\n  @action\n  toggleCollapsed() {\n    this.isCollapsed = !this.isCollapsed;\n    if (this.isCollapsed) {\n      localStorage.setItem(\"category-heading-collapsed\", \"true\");\n    } else {\n      localStorage.removeItem(\"category-heading-collapsed\");\n    }\n  }\n\n  get icon() {\n    return this.isCollapsed ? \"chevron-up\" : \"chevron-down\";\n  }\n\n  get hideCategoryLogo() {\n    return this.page.categoryHasSettingEnabled(\n      this.page.currentCategoryId,\n      \"wide_logo_category_ids\"\n    );\n  }\n\n  <template>\n    {{#if this.isCollapsed}}\n      {{bodyClass \"category-heading-collapsed\"}}\n    {{/if}}\n\n    {{#if this.hideCategoryLogo}}\n      {{bodyClass \"hide-category-logo\"}}\n    {{/if}}\n\n    <div class=\"category-heading-top-line\">\n      <h1 class=\"category-heading-top-line__title\">\n        {{@outletArgs.category.name}}\n      </h1>\n\n      <button\n        class=\"btn btn-icon\"\n        type=\"button\"\n        aria-label=\"Collapse this section\"\n        {{on \"click\" this.toggleCollapsed}}\n      >\n        {{dIcon this.icon}}\n      </button>\n    </div>\n\n    <div class=\"rich-description cooked\">\n      {{trustHTML this.description}}\n    </div>\n  </template>\n}\n","import { apiInitializer } from \"discourse/lib/api\";\nimport CategoryCustomHeading from \"../components/category-custom-heading\";\n\nexport default apiInitializer((api) => {\n  api.renderInOutlet(\"category-heading\", CategoryCustomHeading);\n});\n","import Component from \"@glimmer/component\";\nimport { tracked } from \"@glimmer/tracking\";\nimport { on } from \"@ember/modifier\";\nimport { action } from \"@ember/object\";\nimport DButton from \"discourse/components/d-button\";\nimport { ajax } from \"discourse/lib/ajax\";\nimport { popupAjaxError } from \"discourse/lib/ajax-error\";\nimport { currentThemeId } from \"discourse/lib/theme-selector\";\n\nexport default class CategorySettingCheckbox extends Component {\n  @tracked isModified = false;\n  @tracked isSaving = false;\n  @tracked originalValue = null;\n  @tracked currentValue = null;\n\n  constructor() {\n    super(...arguments);\n    this.loadCurrentValue();\n  }\n\n  loadCurrentValue() {\n    const settingValue = settings[this.args.settingName] || \"\";\n    const categoryIds = settingValue\n      .split(\",\")\n      .filter(Boolean)\n      .map((id) => parseInt(id.trim(), 10));\n\n    this.originalValue = categoryIds.includes(this.args.category.id);\n    this.currentValue = this.originalValue;\n  }\n\n  get hasChanges() {\n    return this.currentValue !== this.originalValue;\n  }\n\n  @action\n  toggleValue() {\n    this.currentValue = !this.currentValue;\n    this.isModified = this.hasChanges;\n  }\n\n  @action\n  async save() {\n    if (!this.hasChanges) {\n      return;\n    }\n\n    this.isSaving = true;\n\n    try {\n      const currentValue = settings[this.args.settingName] || \"\";\n      let categoryIds = currentValue\n        .split(\",\")\n        .filter(Boolean)\n        .map((id) => parseInt(id.trim(), 10));\n\n      if (this.currentValue) {\n        if (!categoryIds.includes(this.args.category.id)) {\n          categoryIds.push(this.args.category.id);\n        }\n      } else {\n        categoryIds = categoryIds.filter((id) => id !== this.args.category.id);\n      }\n\n      const newValue = categoryIds.join(\",\");\n\n      await ajax(`/admin/themes/${currentThemeId()}/setting`, {\n        type: \"PUT\",\n        data: {\n          name: this.args.settingName,\n          value: newValue,\n        },\n      });\n\n      this.originalValue = this.currentValue;\n      this.isModified = false;\n    } catch (error) {\n      popupAjaxError(error);\n      this.currentValue = this.originalValue;\n    } finally {\n      this.isSaving = false;\n    }\n  }\n\n  @action\n  cancel() {\n    this.currentValue = this.originalValue;\n    this.isModified = false;\n  }\n\n  <template>\n    <div class=\"theme-category-setting\">\n      <label class=\"theme-category-setting__label\">\n        <input\n          type=\"checkbox\"\n          checked={{this.currentValue}}\n          {{on \"change\" this.toggleValue}}\n          disabled={{this.isSaving}}\n        />\n        <span>{{@label}}</span>\n      </label>\n\n      {{#if this.hasChanges}}\n        <div class=\"theme-category-setting__controls\">\n          <DButton\n            @action={{this.save}}\n            @icon=\"check\"\n            @isLoading={{this.isSaving}}\n            @ariaLabel=\"Save\"\n            class=\"ok theme-category-setting__ok btn-small\"\n          />\n          <DButton\n            @action={{this.cancel}}\n            @icon=\"xmark\"\n            @isLoading={{this.isSaving}}\n            @ariaLabel=\"Cancel\"\n            class=\"cancel theme-category-setting__cancel btn-small\"\n          />\n        </div>\n      {{/if}}\n    </div>\n  </template>\n}\n","import Component from \"@glimmer/component\";\nimport CategorySettingCheckbox from \"./category-setting-checkbox\";\n\nexport default class CategorySettings extends Component {\n  get category() {\n    return this.args.outletArgs.category;\n  }\n\n  <template>\n    <h3>Custom Category Settings</h3>\n    <CategorySettingCheckbox\n      @category={{this.category}}\n      @settingName=\"community_picker_category_ids\"\n      @label=\"Show in community picker\"\n    />\n    <CategorySettingCheckbox\n      @category={{this.category}}\n      @settingName=\"homepage_hide_category_ids\"\n      @label=\"Hide card on homepage\"\n    />\n    <CategorySettingCheckbox\n      @category={{this.category}}\n      @settingName=\"split_layout_category_ids\"\n      @label=\"Use two-column layout\"\n    />\n  </template>\n}\n","import { apiInitializer } from \"discourse/lib/api\";\nimport CustomCategorySettings from \"../components/custom-category-settings\";\n\nexport default apiInitializer((api) => {\n  api.renderInOutlet(\"category-custom-settings\", CustomCategorySettings);\n});\n","import Component from \"@glimmer/component\";\nimport { tracked } from \"@glimmer/tracking\";\nimport { on } from \"@ember/modifier\";\nimport { action } from \"@ember/object\";\nimport { service } from \"@ember/service\";\nimport { trustHTML } from \"@ember/template\";\nimport bodyClass from \"discourse/helpers/body-class\";\nimport dIcon from \"discourse/helpers/d-icon\";\nimport { i18n } from \"discourse-i18n\";\n\nexport default class CustomLoginSignup extends Component {\n  @service router;\n\n  @tracked local = null;\n  currentAction = null;\n\n  constructor() {\n    super(...arguments);\n    this.local = this.router.currentRoute?.queryParams?.local === \"true\";\n    this.currentAction = this.router.currentRoute?.name;\n  }\n\n  get localLinkText() {\n    return this.currentAction === \"login\"\n      ? themePrefix(\"signup_v2.local.login_link_text\")\n      : themePrefix(\"signup_v2.local.signup_link_text\");\n  }\n\n  @action\n  showLocal() {\n    this.local = true;\n  }\n\n  <template>\n    {{bodyClass \"custom-sign-up-content\"}}\n    {{#if this.local}}\n      {{bodyClass \"local\"}}\n    {{/if}}\n\n    <div class=\"custom-sign-in-content\">\n\n      <div class=\"custom-sign-in-content__top-line\">\n        <h2 class=\"custom-sign-in-content__headline\">\n          {{i18n (themePrefix \"signup_v2.headline\")}}\n        </h2>\n\n        <p class=\"custom-sign-in-content__tagline\">\n          {{i18n (themePrefix \"signup_v2.tagline\")}}\n        </p>\n\n      </div>\n\n      <ul class=\"custom-sign-in-content__steps\">\n        <h3 class=\"custom-sign-in-content__how-to\">\n          {{i18n (themePrefix \"signup_v2.how_to\")}}\n        </h3>\n        <li class=\"custom-sign-in-content__step\">\n          <span class=\"custom-sign-in-content__step-icon\">{{dIcon\n              \"user\"\n            }}</span>\n          <div class=\"custom-sign-in-content__step-copy\">\n            <h3>{{i18n (themePrefix \"signup_v2.steps.0.title\")}}</h3>\n            <p>{{i18n (themePrefix \"signup_v2.steps.0.body\")}}</p>\n          </div>\n        </li>\n\n        <li class=\"custom-sign-in-content__step\">\n          <span class=\"custom-sign-in-content__step-icon\">{{dIcon\n              \"gear\"\n            }}</span>\n          <div class=\"custom-sign-in-content__step-copy\">\n            <h3>{{i18n (themePrefix \"signup_v2.steps.1.title\")}}</h3>\n            <p>{{i18n (themePrefix \"signup_v2.steps.1.body\")}}</p>\n          </div>\n        </li>\n\n        <li class=\"custom-sign-in-content__step\">\n          <span class=\"custom-sign-in-content__step-icon\">{{dIcon\n              \"pencil\"\n            }}</span>\n          <div class=\"custom-sign-in-content__step-copy\">\n            <h3>{{i18n (themePrefix \"signup_v2.steps.2.title\")}}</h3>\n            <p>{{i18n (themePrefix \"signup_v2.steps.2.body\")}}</p>\n          </div>\n        </li>\n      </ul>\n\n      <footer class=\"custom-sign-in-content__footer\">\n\n        <p class=\"custom-sign-in-content__note\">\n          {{trustHTML (i18n (themePrefix \"signup_v2.note_html\"))}}\n        </p>\n\n        <p class=\"custom-sign-in-content__local-link\">\n          {{i18n (themePrefix \"signup_v2.local.instruction_text\")}}\n          <a\n            href=\"#\"\n            {{on \"click\" this.showLocal}}\n            class=\"custom-sign-in-content__local-link-text\"\n          >\n            {{i18n this.localLinkText}}\n          </a>\n        </p>\n      </footer>\n    </div>\n  </template>\n}\n","import { apiInitializer } from \"discourse/lib/api\";\nimport CustomLoginSignup from \"../components/custom-login-signup\";\n\nexport default apiInitializer((api) => {\n  api.renderInOutlet(\"after-login-buttons\", CustomLoginSignup);\n});\n","import Component from \"@glimmer/component\";\nimport { fn } from \"@ember/helper\";\nimport { action } from \"@ember/object\";\nimport { service } from \"@ember/service\";\nimport DButton from \"discourse/components/d-button\";\nimport DropdownMenu from \"discourse/components/dropdown-menu\";\nimport DMenu from \"discourse/float-kit/components/d-menu\";\nimport dIcon from \"discourse/helpers/d-icon\";\nimport { eq, gt } from \"discourse/truth-helpers\";\nimport { i18n } from \"discourse-i18n\";\n\nexport default class CommunitySiteLogo extends Component {\n  @service site;\n  @service siteSettings;\n  @service header;\n  @service page;\n\n  lastCommunityInfo = null;\n\n  get categoryIds() {\n    const setting = settings.community_picker_category_ids;\n    if (!setting) {\n      return [];\n    }\n\n    try {\n      return setting\n        .split(\",\")\n        .map((id) => parseInt(id.trim(), 10))\n        .filter((id) => !isNaN(id) && id > 0);\n    } catch (e) {\n      // eslint-disable-next-line no-console\n      console.warn(\"[Community Site Logo] Couldn't parse settings:\", e);\n      return [];\n    }\n  }\n\n  get availableCategories() {\n    if (!this.site?.categories || this.categoryIds.length === 0) {\n      return [];\n    }\n\n    try {\n      return this.site.categories.filter(\n        (c) => c && this.categoryIds.includes(c.id)\n      );\n    } catch (e) {\n      // eslint-disable-next-line no-console\n      console.warn(\n        \"[Community Site Logo] Failed to filter available categories:\",\n        e\n      );\n      return [];\n    }\n  }\n\n  @action\n  categoryHasWideLogo(categoryId) {\n    return this.page.categoryHasSettingEnabled(\n      categoryId,\n      \"wide_logo_category_ids\"\n    );\n  }\n\n  get currentCategoryId() {\n    const routeInfo = this.page.routeInfo;\n    if (this.page.isCategoryRoute) {\n      return routeInfo?.categoryId;\n    }\n    if (this.page.isTopicRoute) {\n      return routeInfo?.topicCategoryId;\n    }\n    return null;\n  }\n\n  get communityInfo() {\n    const routeInfo = this.page.routeInfo;\n\n    let info = null;\n\n    try {\n      if (this.page.isSiteRoute) {\n        info = {\n          label: this.siteShortTitle,\n          logo: this.siteSmallLogoUrl,\n          wideLogo: false,\n          url: \"/\",\n          route: \"categories\",\n        };\n      } else if (this.page.isCategoryRoute) {\n        const category = this.lookupCategoryById(routeInfo?.categoryId);\n        if (category) {\n          info = {\n            label: category.name,\n            logo: category.uploaded_logo?.url,\n            wideLogo: this.categoryHasWideLogo(category.id),\n            url: category.url,\n            route: \"category\",\n          };\n        }\n      } else if (this.page.isTopicRoute) {\n        const category = this.lookupCategoryById(routeInfo?.topicCategoryId);\n        if (category) {\n          info = {\n            label: category.name,\n            logo: category.uploaded_logo?.url,\n            wideLogo: this.categoryHasWideLogo(category.id),\n            url: category.url,\n            route: \"category\",\n          };\n        }\n      }\n    } catch (e) {\n      // eslint-disable-next-line no-console\n      console.error(\n        \"[Community Site Logo] Error while computing community info:\",\n        e\n      );\n    }\n\n    // ───── remember the last valid result ─────\n    if (info) {\n      // We are caching, not actually a side effect.\n      // eslint-disable-next-line ember/no-side-effects\n      this.lastCommunityInfo = info;\n      return info;\n    }\n\n    // if we didn't match a route, we'll keep the last valid community info\n    return (\n      this.lastCommunityInfo ?? {\n        label: this.siteShortTitle,\n        logo: this.siteSmallLogoUrl,\n        url: \"/\",\n        route: \"categories\",\n      }\n    );\n  }\n\n  lookupCategoryById(id) {\n    if (!id) {\n      return null;\n    }\n\n    const exactMatch = this.availableCategories.find((c) => c.id === id);\n    if (exactMatch) {\n      return exactMatch;\n    }\n\n    const category = this.site.categories?.find((c) => c.id === id);\n    if (!category || !category.predecessors) {\n      return null;\n    }\n\n    // walk up two ancestors max\n    for (let i = 0; i < Math.min(category.predecessors.length, 2); i++) {\n      const ancestor = category.predecessors[i];\n      const availableAncestor = this.availableCategories.find(\n        (c) => c.id === ancestor.id\n      );\n      if (availableAncestor) {\n        return availableAncestor;\n      }\n    }\n\n    return null;\n  }\n\n  get siteSmallLogoUrl() {\n    return this.siteSettings.site_logo_small_url;\n  }\n\n  get siteShortTitle() {\n    return i18n(themePrefix(\"site.all_communities\"));\n  }\n\n  get isDefaultCommunity() {\n    return this.communityInfo.route === \"categories\";\n  }\n\n  @action\n  onRegisterApi(api) {\n    this.dMenu = api;\n  }\n\n  @action\n  selectCommunity(category) {\n    // navigation is now delegated to the theme service\n    this.page.transitionToCategory(category);\n    this.dMenu.close();\n  }\n\n  <template>\n    {{#if this.availableCategories.length}}\n      <a\n        href={{this.communityInfo.url}}\n        class=\"community-site-logo__logo-container\"\n      >\n        {{#if this.isDefaultCommunity}}\n          {{#if this.siteSmallLogoUrl}}\n            <img\n              src={{this.siteSmallLogoUrl}}\n              alt=\"Small Logo\"\n              class=\"community-site-logo__logo --site\"\n            />\n          {{else}}\n            {{dIcon \"mdiHomeOutline\" class=\"community-site-logo__logo --icon\"}}\n          {{/if}}\n        {{else if this.communityInfo.logo}}\n          <img\n            src={{this.communityInfo.logo}}\n            alt=\"Community Logo\"\n            class=\"community-site-logo__logo --category\"\n          />\n        {{/if}}\n        {{#unless this.header.topicInfoVisible}}\n          {{#unless this.isDefaultCommunity}}\n            <span\n              class=\"community-site-logo__label\n                {{if (gt this.communityInfo.label.length 16) '--wide'}}\"\n            >\n              {{this.communityInfo.label}}\n            </span>\n          {{/unless}}\n        {{/unless}}\n      </a>\n\n      <DMenu\n        @placement={{if this.isDefaultCommunity \"bottom-start\" \"bottom-end\"}}\n        @content={{this.availableCategories}}\n        @class=\"community-picker-menu\"\n        @triggerType=\"button\"\n        @triggerIcon=\"caret-down\"\n        @triggerIconPlacement=\"right\"\n        @onRegisterApi={{this.onRegisterApi}}\n      >\n        <:trigger>\n          <div class=\"community-picker-menu__trigger\">\n            {{dIcon \"caret-down\" class=\"community-picker-menu__icon\"}}\n          </div>\n        </:trigger>\n\n        <:content>\n          <DropdownMenu as |dropdown|>\n            {{#each this.availableCategories as |category|}}\n              <dropdown.item>\n                <DButton\n                  @action={{fn this.selectCommunity category}}\n                  @translatedLabel={{category.name}}\n                  class=\"btn-flat btn-text community-picker-menu__item\n                    {{if\n                      (eq category.id this.currentCategoryId)\n                      'community-picker-menu__item--active'\n                    }}\"\n                >\n                  {{#if category.uploaded_logo}}\n                    <img\n                      src={{category.uploaded_logo.url}}\n                      alt=\"Community Logo\"\n                      class=\"community-picker-menu__logo\n                        {{if (this.categoryHasWideLogo category.id) ' --wide'}}\"\n                    />\n                  {{else}}\n                    <div class=\"community-picker-menu__logo-placeholder\"></div>\n                  {{/if}}\n                </DButton>\n              </dropdown.item>\n            {{/each}}\n\n            <dropdown.item>\n              <DButton\n                @action={{fn this.selectCommunity null}}\n                @translatedLabel={{this.siteShortTitle}}\n                class=\"btn-flat btn-text community-picker-menu__item\n                  {{if\n                    (eq null this.currentCategoryId)\n                    'community-picker-menu__item--active'\n                  }}\n                  \"\n              >\n                {{dIcon \"mdiEarth\" class=\"community-picker-menu__logo --icon\"}}\n              </DButton>\n            </dropdown.item>\n          </DropdownMenu>\n        </:content>\n      </DMenu>\n    {{/if}}\n  </template>\n}\n","import { apiInitializer } from \"discourse/lib/api\";\nimport CommunitySiteLogo from \"../components/community-site-logo\";\n\nexport default apiInitializer((api) => {\n  const siteSettings = api.container.lookup(\"service:site-settings\");\n  if (siteSettings.show_community_site_logo_in_plugin) {\n    return;\n  }\n\n  api.renderInOutlet(\"before-header-panel\", CommunitySiteLogo);\n});\n","import { apiInitializer } from \"discourse/lib/api\";\n\nexport default apiInitializer(() => {\n  const homepageHideCategoriesIds = settings.homepage_hide_category_ids;\n\n  if (homepageHideCategoriesIds && homepageHideCategoriesIds.trim()) {\n    const ids = homepageHideCategoriesIds\n      .split(\",\")\n      .map((id) => id.trim())\n      .filter((id) => id);\n\n    if (ids.length > 0) {\n      const cssRules = ids\n        .map(\n          (id) =>\n            `.category-boxes .category-box[data-category-id=\"${id}\"] { display: none; }`\n        )\n        .join(\"\\n\");\n\n      const styleElement = document.createElement(\"style\");\n      styleElement.textContent = cssRules;\n      document.head.appendChild(styleElement);\n    }\n  }\n});\n","import { apiInitializer } from \"discourse/lib/api\";\n\nconst FA_TO_MDI_ICON_MAP = {\n  \"address-book\": \"mdiBookAccount\",\n  \"align-left\": \"mdiFormatAlignLeft\",\n  anchor: \"mdiAnchor\",\n  \"angle-down\": \"mdiChevronDown\",\n  \"angle-left\": \"mdiChevronLeft\",\n  \"angle-right\": \"mdiChevronRight\",\n  \"angle-up\": \"mdiChevronUp\",\n  \"angles-down\": \"mdiChevronDoubleDown\",\n  \"angles-left\": \"mdiChevronDoubleLeft\",\n  \"angles-right\": \"mdiChevronDoubleRight\",\n  \"angles-up\": \"mdiChevronDoubleUp\",\n  \"arrow-down\": \"mdiArrowDown\",\n  \"arrow-left\": \"mdiArrowLeft\",\n  \"arrow-right\": \"mdiArrowRight\",\n  \"arrow-rotate-left\": \"mdiRotateLeft\",\n  \"arrow-rotate-right\": \"mdiRotateRight\",\n  \"arrow-up\": \"mdiArrowUp\",\n  \"arrows-rotate\": \"mdiRefresh\",\n  asterisk: \"mdiAsterisk\",\n  at: \"mdiAt\",\n  backward: \"mdiRewind\",\n  \"backward-fast\": \"mdiRewind\",\n  \"backward-step\": \"mdiSkipPrevious\",\n  ban: \"mdiBlockHelper\",\n  bars: \"mdiMenu\",\n  \"bars-staggered\": \"mdiViewHeadline\",\n  bed: \"mdiBed\",\n  bell: \"mdiBell\",\n  \"category.restricted\": \"mdiShieldLockOutline\",\n  \"bell-slash\": \"mdiBellOff\",\n  bold: \"mdiFormatBold\",\n  book: \"mdiBook\",\n  \"book-open-reader\": \"mdiBookOpenPageVariant\",\n  bookmark: \"mdiBookmark\",\n  \"bookmark-delete\": \"mdiBookmarkRemove\",\n  \"box-archive\": \"mdiArchive\",\n  briefcase: \"mdiBriefcase\",\n  bullseye: \"mdiBullseye\",\n  \"calendar-days\": \"mdiCalendarMonth\",\n  \"caret-down\": \"mdiChevronDown\",\n  \"caret-left\": \"mdiChevronLeft\",\n  \"caret-right\": \"mdiChevronRight\",\n  \"caret-up\": \"mdiChevronUp\",\n  certificate: \"mdiCertificate\",\n  \"chart-bar\": \"mdiChartBar\",\n  \"chart-pie\": \"mdiChartPie\",\n  check: \"mdiCheck\",\n  \"chevron-down\": \"mdiChevronDown\",\n  \"chevron-left\": \"mdiChevronLeft\",\n  \"chevron-right\": \"mdiChevronRight\",\n  \"chevron-up\": \"mdiChevronUp\",\n  circle: \"mdiCircle\",\n  \"circle-check\": \"mdiCheckCircle\",\n  \"circle-chevron-down\": \"mdiChevronDownCircle\",\n  \"circle-exclamation\": \"mdiAlertCircle\",\n  \"circle-half-stroke\": \"mdiCircleHalfFull\",\n  \"circle-info\": \"mdiInformation\",\n  \"circle-minus\": \"mdiMinusCircle\",\n  \"circle-plus\": \"mdiPlusCircle\",\n  \"circle-question\": \"mdiHelpCircle\",\n  \"circle-user\": \"mdiAccountCircle\",\n  \"circle-xmark\": \"mdiCloseCircle\",\n  clock: \"mdiClockOutline\",\n  \"clock-rotate-left\": \"mdiHistory\",\n  \"cloud-arrow-down\": \"mdiCloudDownload\",\n  \"cloud-arrow-up\": \"mdiCloudUpload\",\n  code: \"mdiCodeTags\",\n  comment: \"mdiComment\",\n  compress: \"mdiArrowCollapse\",\n  copy: \"mdiContentCopy\",\n  crosshairs: \"mdiCrosshairs\",\n  cube: \"mdiCube\",\n  desktop: \"mdiMonitor\",\n  \"diagram-project\": \"mdiDiagramProject\",\n  \"discourse-amazon\": \"mdiAmazon\",\n  \"discourse-bell-exclamation\": \"mdiBellAlert\",\n  \"discourse-bell-one\": \"mdiBellBadgeOutline\",\n  \"discourse-bell-slash\": \"mdiBellOff\",\n  \"discourse-bookmark-clock\": \"mdiBookmarkClock\",\n  \"discourse-chevron-collapse\": \"mdiChevronDoubleUp\",\n  \"discourse-chevron-expand\": \"mdiChevronDoubleDown\",\n  \"discourse-compress\": \"mdiArrowCollapseVertical\",\n  \"discourse-dnd\": null,\n  \"discourse-emojis\": \"mdiEmoticon\",\n  \"discourse-expand\": \"mdiArrowExpandVertical\",\n  \"discourse-other-tab\": \"mdiOpenInNew\",\n  \"discourse-sidebar\": \"mdiViewSidebar\",\n  \"discourse-sparkles\": \"mdiSparkles\",\n  \"discourse-table\": \"mdiTable\",\n  \"discourse-text\": \"mdiFormatText\",\n  \"discourse-threads\": \"mdiForumOutline\",\n  \"discourse-add-translation\": \"mdiTranslate\",\n  download: \"mdiDownload\",\n  \"earth-americas\": \"mdiEarth\",\n  ellipsis: \"mdiDotsHorizontal\",\n  \"ellipsis-vertical\": \"mdiDotsVertical\",\n  envelope: \"mdiEmail\",\n  eye: \"mdiEye\",\n  \"fab-android\": \"mdiAndroid\",\n  \"fab-apple\": \"mdiApple\",\n  \"fab-chrome\": \"mdiGoogleChrome\",\n  \"fab-discord\": \"mdiDiscord\",\n  \"fab-discourse\": \"mdiForum\",\n  \"fab-facebook\": \"mdiFacebook\",\n  \"fab-facebook-square\": \"mdiFacebookBox\",\n  \"fab-github\": \"mdiGithub\",\n  \"fab-instagram\": \"mdiInstagram\",\n  \"fab-linkedin-in\": \"mdiLinkedin\",\n  \"fab-linux\": \"mdiLinux\",\n  \"fab-markdown\": \"mdiLanguageMarkdown\",\n  \"fab-threads\": null,\n  \"fab-threads-square\": null,\n  \"fab-twitter\": \"mdiTwitter\",\n  \"fab-twitter-square\": \"mdiTwitterBox\",\n  \"fab-x-twitter\": \"mdiTwitter\",\n  \"fab-wikipedia-w\": \"mdiWikipedia\",\n  \"fab-windows\": \"mdiMicrosoftWindows\",\n  \"far-bell\": \"mdiBellOutline\",\n  \"far-bell-slash\": \"mdiBellOffOutline\",\n  \"far-calendar-plus\": \"mdiCalendarPlus\",\n  \"far-chart-bar\": \"mdiChartBar\",\n  \"far-circle\": \"mdiCircleOutline\",\n  \"far-circle-dot\": \"mdiCircleSmall\",\n  \"far-clipboard\": \"mdiClipboardOutline\",\n  \"far-clock\": \"mdiClockOutline\",\n  \"far-comment\": \"mdiCommentOutline\",\n  \"far-comments\": \"mdiCommentMultipleOutline\",\n  \"far-copyright\": \"mdiCopyright\",\n  \"far-envelope\": \"mdiEmailOutline\",\n  \"far-eye\": \"mdiEyeOutline\",\n  \"far-eye-slash\": \"mdiEyeOffOutline\",\n  \"far-face-frown\": \"mdiEmoticonSadOutline\",\n  \"far-face-meh\": \"mdiEmoticonNeutralOutline\",\n  \"far-face-smile\": \"mdiEmoticonHappyOutline\",\n  \"far-file-lines\": \"mdiFileDocumentOutline\",\n  \"far-heart\": \"mdiHeartOutline\",\n  \"far-image\": \"mdiImageOutline\",\n  \"far-moon\": \"mdiMoonWaningCrescent\",\n  \"far-pen-to-square\": \"mdiSquareEditOutline\",\n  \"far-rectangle-list\": \"mdiViewHeadline\",\n  \"far-square\": \"mdiSquareOutline\",\n  \"far-square-check\": \"mdiCheck\",\n  \"far-star\": \"mdiStarOutline\",\n  \"far-sun\": \"mdiWeatherSunnyOutline\",\n  \"far-thumbs-down\": \"mdiThumbDownOutline\",\n  \"far-thumbs-up\": \"mdiThumbUpOutline\",\n  \"far-trash-can\": \"mdiTrashCanOutline\",\n  file: \"mdiFile\",\n  \"file-lines\": \"mdiFileDocument\",\n  filter: \"mdiFilter\",\n  flag: \"mdiFlag\",\n  flask: \"mdiFlaskOutline\",\n  folder: \"mdiFolder\",\n  \"folder-open\": \"mdiFolderOpen\",\n  font: \"mdiFormatFont\",\n  forward: \"mdiFastForward\",\n  \"forward-fast\": \"mdiFastForward\",\n  \"forward-step\": \"mdiSkipNext\",\n  gavel: \"mdiGavel\",\n  gear: \"mdiCog\",\n  gift: \"mdiGift\",\n  globe: \"mdiEarth\",\n  \"grip-lines\": \"mdiReorderVertical\",\n  \"hand-point-right\": \"mdiHandPointingRight\",\n  \"handshake-angle\": \"mdiHandshake\",\n  hashtag: \"mdiPound\",\n  heart: \"mdiHeart\",\n  \"hourglass-start\": \"mdiHourglass\",\n  house: \"mdiHome\",\n  \"id-card\": \"mdiCardAccountDetails\",\n  image: \"mdiImage\",\n  images: \"mdiImageMultiple\",\n  inbox: \"mdiInboxArrowDown\",\n  italic: \"mdiFormatItalic\",\n  key: \"mdiKey\",\n  keyboard: \"mdiKeyboard\",\n  language: \"mdiTranslate\",\n  \"layer-group\": \"mdiLayers\",\n  \"left-right\": \"mdiSwapHorizontal\",\n  link: \"mdiLink\",\n  \"link-slash\": \"mdiLinkOff\",\n  list: \"mdiFormatListBulleted\",\n  \"list-check\": \"mdiFormatListCheckbox\",\n  \"list-ol\": \"mdiFormatListNumbered\",\n  \"list-ul\": \"mdiFormatListBulleted\",\n  \"location-dot\": \"mdiMapMarker\",\n  lock: \"mdiLockOutline\",\n  \"magnifying-glass\": \"mdiMagnify\",\n  \"magnifying-glass-minus\": \"mdiMagnifyMinus\",\n  \"magnifying-glass-plus\": \"mdiMagnifyPlus\",\n  \"microphone-slash\": \"mdiMicrophoneOff\",\n  minus: \"mdiMinus\",\n  \"mobile-screen-button\": \"mdiCellphone\",\n  moon: \"mdiMoonWaningCrescent\",\n  paintbrush: \"mdiPaintbrush\",\n  palette: \"mdiPalette\",\n  \"paper-plane\": \"mdiSend\",\n  pause: \"mdiPause\",\n  pencil: \"mdiPencil\",\n  play: \"mdiPlay\",\n  plug: \"mdiPowerPlug\",\n  plus: \"mdiPlus\",\n  \"power-off\": \"mdiPower\",\n  \"puzzle-piece\": \"mdiPuzzle\",\n  question: \"mdiHelp\",\n  \"quote-left\": \"mdiFormatQuoteOpen\",\n  \"quote-right\": \"mdiFormatQuoteClose\",\n  reply: \"mdiReply\",\n  \"right-from-bracket\": \"mdiLogout\",\n  \"right-left\": \"mdiSwapHorizontalBold\",\n  \"right-to-bracket\": \"mdiLogin\",\n  robot: \"mdiRobot\",\n  rocket: \"mdiRocket\",\n  rotate: \"mdiRotateRight\",\n  \"screwdriver-wrench\": \"mdiTools\",\n  scroll: \"mdiScroll\",\n  share: \"mdiShare\",\n  \"shield-halved\": \"mdiShieldHalfFull\",\n  shuffle: \"mdiShuffle\",\n  signal: \"mdiSignal\",\n  sliders: \"mdiTune\",\n  spinner: \"mdiLoading\",\n  \"square-check\": \"mdiCheckCircle\",\n  \"square-envelope\": \"mdiEmailBox\",\n  \"square-full\": \"mdiSquare\",\n  \"square-plus\": \"mdiSquarePlus\",\n  star: \"mdiStar\",\n  sun: \"mdiWeatherSunny\",\n  table: \"mdiTable\",\n  \"table-cells\": \"mdiTableCell\",\n  \"table-columns\": \"mdiTableColumn\",\n  tag: \"mdiTag\",\n  tags: \"mdiTagMultiple\",\n  \"temperature-three-quarters\": \"mdiThermometerHigh\",\n  \"thumbs-down\": \"mdiThumbDown\",\n  \"thumbs-up\": \"mdiThumbUp\",\n  thumbtack: \"mdiKeep\",\n  \"tippy-rounded-arrow\": \"mdiTooltipOutline\",\n  \"toggle-off\": \"mdiToggleSwitchOff\",\n  \"toggle-on\": \"mdiToggleSwitch\",\n  \"trash-can\": \"mdiTrashCan\",\n  \"triangle-exclamation\": \"mdiAlert\",\n  \"truck-medical\": \"mdiAmbulance\",\n  unlock: \"mdiLockOpen\",\n  \"unlock-keyhole\": \"mdiLockOpenVariant\",\n  \"up-down\": \"mdiSwapVertical\",\n  \"up-right-from-square\": \"mdiOpenInNew\",\n  upload: \"mdiUpload\",\n  user: \"mdiAccount\",\n  \"user-check\": \"mdiAccountCheck\",\n  \"user-gear\": \"mdiAccountCog\",\n  \"user-group\": \"mdiAccountGroup\",\n  \"user-pen\": \"mdiAccountEdit\",\n  \"user-plus\": \"mdiAccountPlus\",\n  \"user-secret\": \"mdiIncognito\",\n  \"user-shield\": \"mdiAccountShield\",\n  \"user-xmark\": \"mdiAccountRemove\",\n  users: \"mdiAccountMultiple\",\n  \"wand-magic\": \"mdiMagicStaff\",\n  wrench: \"mdiWrench\",\n  xmark: \"mdiClose\",\n};\nconst CUSTOM_ICON_PATHS = {\n  mdiDynamicFeed: {\n    path: \"M160-120q-33 0-56.5-23.5T80-200v-280h80v280h360v80H160Zm160-160q-33 0-56.5-23.5T240-360v-280h80v280h360v80H320Zm160-160q-33 0-56.5-23.5T400-520v-240q0-33 23.5-56.5T480-840h320q33 0 56.5 23.5T880-760v240q0 33-23.5 56.5T800-440H480Zm0-80h320v-160H480v160Z\",\n    viewBox: \"0 -960 960 960\",\n  },\n  mdiBookmarks: {\n    path: \"M160-80v-560q0-33 23.5-56.5T240-720h320q33 0 56.5 23.5T640-640v560L400-200 160-80Zm80-121 160-86 160 86v-439H240v439Zm480-39v-560H280v-80h440q33 0 56.5 23.5T800-800v560h-80ZM240-640h320-320Z\",\n    viewBox: \"0 -960 960 960\",\n  },\n  mdiDiscoverTune: {\n    path: \"M520-600v-80h120v-160h80v160h120v80H520Zm120 480v-400h80v400h-80Zm-400 0v-160H120v-80h320v80H320v160h-80Zm0-320v-400h80v400h-80Z\",\n    viewBox: \"0 -960 960 960\",\n  },\n  mdiHowToReg: {\n    path: \"M80-160v-112q0-33 17-62t47-44q51-26 115-44t141-18q30 0 58.5 3t55.5 9l-70 70q-11-2-21.5-2H400q-71 0-127.5 17T180-306q-9 5-14.5 14t-5.5 20v32h250l80 80H80Zm542 16L484-282l56-56 82 82 202-202 56 56-258 258ZM400-480q-66 0-113-47t-47-113q0-66 47-113t113-47q66 0 113 47t47 113q0 66-47 113t-113 47Zm10 240Zm-10-320q33 0 56.5-23.5T480-640q0-33-23.5-56.5T400-720q-33 0-56.5 23.5T320-640q0 33 23.5 56.5T400-560Zm0-80Z\",\n    viewBox: \"0 -960 960 960\",\n  },\n  mdiFactCheck: {\n    path: \"M160-120q-33 0-56.5-23.5T80-200v-560q0-33 23.5-56.5T160-840h640q33 0 56.5 23.5T880-760v560q0 33-23.5 56.5T800-120H160Zm0-80h640v-560H160v560Zm40-80h200v-80H200v80Zm382-80 198-198-57-57-141 142-57-57-56 57 113 113Zm-382-80h200v-80H200v80Zm0-160h200v-80H200v80Zm-40 400v-560 560Z\",\n    viewBox: \"0 -960 960 960\",\n  },\n};\n\nexport default apiInitializer((api) => {\n  api.registerIconRenderer({\n    name: \"mdi-icons\",\n\n    string(idObject, params = {}) {\n      if (!window.mdi) {\n        // eslint-disable-next-line no-console\n        console.warn(\"MDI not available for icon rendering\");\n        return null;\n      }\n\n      const { id } = idObject;\n      const mdiPathData = resolveMdiPath(id);\n      if (!mdiPathData) {\n        // fall back to default if we don't find a mapping\n        return null;\n      }\n\n      const classes = [\"d-icon\", \"svg-icon\", `d-icon-${id}`];\n      if (params.class) {\n        classes.push(params.class);\n      }\n\n      const escapeHtml = (str) => {\n        return String(str)\n          .replace(/&/g, \"&amp;\")\n          .replace(/</g, \"&lt;\")\n          .replace(/>/g, \"&gt;\")\n          .replace(/\"/g, \"&quot;\")\n          .replace(/'/g, \"&#39;\");\n      };\n\n      // Handle custom icons with different viewBoxes\n      let viewBox = \"0 0 24 24\";\n      let pathData = mdiPathData;\n\n      if (typeof mdiPathData === \"object\" && mdiPathData.path) {\n        viewBox = mdiPathData.viewBox || \"0 0 24 24\";\n        pathData = mdiPathData.path;\n      }\n\n      return `<svg class=\"${classes.join(\" \")}\"\n                   xmlns=\"http://www.w3.org/2000/svg\"\n                   viewBox=\"${viewBox}\"\n                   width=\"1.5em\"\n                   height=\"1.5em\"\n                   fill=\"currentColor\"\n                   aria-hidden=\"true\">\n                <path d=\"${escapeHtml(pathData)}\"></path>\n              </svg>`;\n    },\n  });\n\n  /** helper */\n  function resolveMdiPath(faId) {\n    if (!faId || typeof faId !== \"string\") {\n      return null;\n    }\n\n    // Check custom icons first - these can be objects with viewBox\n    if (CUSTOM_ICON_PATHS[faId]) {\n      return CUSTOM_ICON_PATHS[faId];\n    }\n\n    // Check if it's a direct mdi icon - these are strings\n    if (faId.startsWith(\"mdi\") && window.mdi && window.mdi[faId]) {\n      return window.mdi[faId];\n    }\n\n    // Check FontAwesome to MDI mapping - these resolve to strings\n    const mdiKey = FA_TO_MDI_ICON_MAP[faId];\n    if (mdiKey) {\n      const result = window.mdi && window.mdi[mdiKey];\n      return result;\n    }\n\n    return null;\n  }\n});\n","import { apiInitializer } from \"discourse/lib/api\";\n\nexport default apiInitializer((api) => {\n  api.registerValueTransformer(\"tag-separator\", () => \"\");\n});\n","import Component from \"@glimmer/component\";\nimport UserAvatar from \"discourse/components/user-avatar\";\nimport UserAvatarFlair from \"discourse/components/user-avatar-flair\";\n\nexport default class TopicCreatorColumn extends Component {\n  get topicCreator() {\n    return {\n      user: this.args.outletArgs.topic?.creator,\n      class: \"topic-creator-avatar\",\n    };\n  }\n\n  get user() {\n    return this.args.outletArgs.topic?.creator;\n  }\n\n  <template>\n    <div class=\"topic-creator-avatar topic-avatar {{this.topicCreator.class}}\">\n      <div class=\"post-avatar\">\n        <UserAvatar\n          tabindex=\"-1\"\n          @hideTitle={{true}}\n          @lazy={{true}}\n          @avatarClasses=\"main-avatar\"\n          @size=\"large\"\n          @user={{this.user}}\n        />\n        <UserAvatarFlair @user={{this.user}} />\n      </div>\n    </div>\n  </template>\n}\n","import { apiInitializer } from \"discourse/lib/api\";\nimport TopicCreatorColumn from \"../components/topic-creator-column\";\n\nclass MobileTopicCreatorColumn extends TopicCreatorColumn {\n  static shouldRender(args, context) {\n    return context.site.mobileView;\n  }\n}\n\nclass DesktopTopicCreatorColumn extends TopicCreatorColumn {\n  static shouldRender(args, context) {\n    return context.site.desktopView;\n  }\n}\n\nexport default apiInitializer((api) => {\n  const siteSettings = api.container.lookup(\"service:site-settings\");\n  if (siteSettings.render_topic_avatar_column_with_plugin) {\n    return;\n  }\n\n  api.renderInOutlet(\"topic-list-item-mobile-avatar\", MobileTopicCreatorColumn);\n  api.renderInOutlet(\"topic-list-main-link-bottom\", DesktopTopicCreatorColumn);\n});\n","import Component from \"@glimmer/component\";\nimport { hash } from \"@ember/helper\";\nimport { action, computed } from \"@ember/object\";\nimport ListSetting from \"discourse/select-kit/components/list-setting\";\nimport { i18n } from \"discourse-i18n\";\n\nexport default class ExtraGroupFields extends Component {\n  tokenSeparator = \"|\";\n\n  get model() {\n    return this.args.model;\n  }\n\n  @computed(\"model.automatic_membership_associated_badges\")\n  get badges() {\n    return (\n      this.model.automatic_membership_associated_badges\n        ?.split(this.tokenSeparator)\n        .filter(Boolean) || []\n    );\n  }\n\n  @computed(\"model.automatic_membership_associated_interests\")\n  get interests() {\n    return (\n      this.model.automatic_membership_associated_interests\n        ?.split(this.tokenSeparator)\n        .filter(Boolean) || []\n    );\n  }\n\n  @action\n  onChangeAssociatedBadges(value) {\n    this.model.set(\n      \"automatic_membership_associated_badges\",\n      value.join(this.tokenSeparator)\n    );\n  }\n\n  @action\n  onChangeAssociatedInterests(value) {\n    this.model.set(\n      \"automatic_membership_associated_interests\",\n      value.join(this.tokenSeparator)\n    );\n  }\n\n  <template>\n    <div class=\"control-group\">\n      <label for=\"automatic_membership_associated_badges\">\n        {{i18n\n          \"admin.groups.manage.membership.automatic_membership_associated_badges\"\n        }}\n      </label>\n\n      <ListSetting\n        @name=\"automatic_membership_associated_badges\"\n        @value={{this.badges}}\n        @choices={{this.badges}}\n        @settingName=\"name\"\n        @nameProperty={{null}}\n        @valueProperty={{null}}\n        @onChange={{this.onChangeAssociatedBadges}}\n        @options={{hash allowAny=true}}\n        class=\"group-form-automatic-membership-automatic\"\n      />\n\n      <label for=\"automatic_membership_associated_interests\">\n        {{i18n\n          \"admin.groups.manage.membership.automatic_membership_associated_interests\"\n        }}\n      </label>\n\n      <ListSetting\n        @name=\"automatic_membership_associated_interests\"\n        @value={{this.interests}}\n        @choices={{this.interests}}\n        @settingName=\"name\"\n        @nameProperty={{null}}\n        @valueProperty={{null}}\n        @onChange={{this.onChangeAssociatedInterests}}\n        @options={{hash allowAny=true}}\n        class=\"group-form-automatic-membership-automatic\"\n      />\n\n    </div>\n  </template>\n}\n","import Component from \"@glimmer/component\";\nimport { trustHTML } from \"@ember/template\";\nimport { i18n } from \"discourse-i18n\";\n\nexport default class SignUpLeftSideContent extends Component {\n  get gdpLogo() {\n    return settings.theme_uploads[\"gdp-logo\"];\n  }\n\n  get signUpGraphic() {\n    return settings.theme_uploads[\"sign-up-graphic\"];\n  }\n\n  get arrowSvg() {\n    return trustHTML(settings.theme_uploads[\"arrow\"] || \"\");\n  }\n\n  get bracketSvg() {\n    return trustHTML(settings.theme_uploads[\"bracket\"] || \"\");\n  }\n\n  <template>\n    <div class=\"sign-up-left-content\">\n      {{#if this.gdpLogo}}\n        <div class=\"sign-up-left-content__logo\">\n          <img src={{this.gdpLogo}} alt=\"Google Developers Program Logo\" />\n          <span>{{i18n (themePrefix \"site.display_title\")}}</span>\n        </div>\n      {{/if}}\n      <div class=\"sign-up-left-content__hero\">\n        <span class=\"sign-up-left-content__hero-headline start\">{{i18n\n            (themePrefix \"signup.headline_start\")\n          }}</span>\n        <div class=\"sign-up-left-content__hero-arrow\">\n          <img src={{this.arrowSvg}} alt=\"Arrow Graphic\" />\n        </div>\n\n        {{#if this.signUpGraphic}}\n          <div class=\"sign-up-left-content__hero-graphic\">\n            <div class=\"sign-up-left-content__hero-bracket\">\n              <img src={{this.bracketSvg}} alt=\"Bracket Graphic\" />\n            </div>\n            <img src={{this.signUpGraphic}} alt=\"Sign-up graphic\" />\n            <div class=\"sign-up-left-content__hero-bracket reversed\">\n              <img src={{this.bracketSvg}} alt=\"Bracket Graphic\" />\n            </div>\n          </div>\n        {{/if}}\n\n        <span class=\"sign-up-left-content__hero-headline end\">{{i18n\n            (themePrefix \"signup.headline_end\")\n          }}</span>\n      </div>\n    </div>\n  </template>\n}\n","import { tracked } from \"@glimmer/tracking\";\nimport Evented from \"@ember/object/evented\";\nimport Service, { service } from \"@ember/service\";\n\nconst SITE_ROUTES = [\n  \"discovery.categories\",\n  \"login\",\n  \"signup\",\n  \"forgot-password\",\n  \"email-login\",\n  \"second-factor-auth\",\n  \"associate-account\",\n  \"login-preferences\",\n  \"about\",\n  \"faq\",\n  \"guidelines\",\n  \"conduct\",\n  \"rules\",\n  \"tos\",\n  \"privacy\",\n  \"full-page-search\",\n  \"newCategory\",\n  \"users\",\n];\n\nfunction extractCategoryId(route) {\n  const attributesCategoryId = route.attributes?.category?.id;\n  if (attributesCategoryId) {\n    return attributesCategoryId;\n  }\n\n  const categorySlugPath = route.params?.category_slug_path_with_id;\n  if (categorySlugPath && categorySlugPath.includes(\"/\")) {\n    const parsed = parseInt(categorySlugPath.split(\"/\")[1], 10);\n    return !isNaN(parsed) ? parsed : null;\n  }\n\n  return null;\n}\n\nfunction extractCategoryLevel(route) {\n  const level = route.attributes?.category?.level;\n  return level !== undefined ? level : null;\n}\n\nexport default class PageService extends Service.extend(Evented) {\n  @service router;\n\n  @tracked currentRouteInfo = null;\n\n  constructor() {\n    super(...arguments);\n    this.onRouteDidChange();\n    this.router.on(\"routeDidChange\", this, this.onRouteDidChange);\n  }\n\n  willDestroy() {\n    super.willDestroy(...arguments);\n    this.router.off(\"routeDidChange\", this, this.onRouteDidChange);\n  }\n\n  transitionTo(...args) {\n    return this.router.transitionTo(...args);\n  }\n\n  categoryHasSettingEnabled(categoryId, settingName) {\n    const setting = settings[settingName];\n    if (!setting) {\n      return [];\n    }\n\n    try {\n      const settingCategoryIds = setting\n        .split(\",\")\n        .map((id) => parseInt(id.trim(), 10))\n        .filter((id) => !isNaN(id) && id > 0);\n      return settingCategoryIds.includes(categoryId);\n    } catch (e) {\n      // eslint-disable-next-line no-console\n      console.warn(\"[Page Service] Couldn't parse settings:\", e);\n      return [];\n    }\n  }\n\n  transitionToCategory(category) {\n    if (category) {\n      return this.transitionTo(\"discovery.category\", category.slug);\n    }\n    return this.transitionTo(\"discovery.categories\");\n  }\n\n  onRouteDidChange() {\n    this.updateRouteInfo();\n    this.updateBodyClasses();\n    this.trigger(\"didChange\", this.currentRouteInfo);\n  }\n\n  updateRouteInfo() {\n    try {\n      const routeName = this.router.currentRouteName;\n      const route = this.router.currentRoute;\n\n      this.currentRouteInfo = {\n        name: routeName,\n        isSiteRoute: SITE_ROUTES.includes(routeName),\n        isCategoryRoute:\n          /^(discovery|tags)\\..*category.*/i.test(routeName) ||\n          routeName === \"discovery.categories\",\n        isCategoriesRoute: routeName === \"discovery.categories\",\n        isTopicRoute: routeName.includes(\"topic\"),\n        categoryId: extractCategoryId(route),\n        categoryLevel: extractCategoryLevel(route),\n        topicCategoryId: route.parent?.attributes?.category_id,\n      };\n    } catch (e) {\n      // eslint-disable-next-line no-console\n      console.error(\"[Theme Service] Error while updating route info:\", e);\n      this.currentRouteInfo = null;\n    }\n  }\n\n  updateBodyClasses() {\n    if (this.routeInfo?.isCategoryRoute && this.currentCategoryId) {\n      const splitLayoutIds =\n        settings.split_layout_category_ids\n          ?.split(\",\")\n          .map((id) => parseInt(id.trim(), 10))\n          .filter(Boolean) || [];\n\n      if (splitLayoutIds.includes(this.currentCategoryId)) {\n        this.addBodyClass(\"split-layout\");\n      } else {\n        this.removeBodyClass(\"split-layout\");\n      }\n\n      if (this.currentRouteInfo.categoryLevel === 0) {\n        this.addBodyClass(\"top-level-category\");\n      } else {\n        this.removeBodyClass(\"top-level-category\");\n      }\n\n      const communityPickerIds = (settings.community_picker_category_ids || \"\")\n        .split(\",\")\n        .map((id) => parseInt(id.trim(), 10))\n        .filter((id) => !isNaN(id) && id > 0);\n\n      const categoryInCommunityPicker =\n        this.currentCategoryId &&\n        communityPickerIds.includes(this.currentCategoryId);\n\n      if (categoryInCommunityPicker) {\n        this.addBodyClass(\"community-picker-category\");\n      } else {\n        this.removeBodyClass(\"community-picker-category\");\n      }\n    } else {\n      this.removeBodyClass(\"split-layout\");\n      this.removeBodyClass(\"top-level-category\");\n    }\n\n    const groupStatus = this.community?.getGroupForCategory(\n      this.currentCategoryId\n    );\n\n    if (groupStatus) {\n      if (groupStatus.isMember) {\n        this.addBodyClass(\"community-member\");\n      } else {\n        this.removeBodyClass(\"community-member\");\n      }\n    }\n  }\n\n  get routeInfo() {\n    return this.currentRouteInfo;\n  }\n\n  get currentCategoryId() {\n    if (this.currentRouteInfo?.isCategoryRoute) {\n      return this.currentRouteInfo.categoryId;\n    }\n    if (this.currentRouteInfo?.isTopicRoute) {\n      return this.currentRouteInfo.topicCategoryId;\n    }\n    return null;\n  }\n\n  get isSiteRoute() {\n    return this.currentRouteInfo?.isSiteRoute || false;\n  }\n\n  get isCategoryRoute() {\n    return this.currentRouteInfo?.isCategoryRoute || false;\n  }\n\n  get isCategoriesRoute() {\n    return this.currentRouteInfo?.isCategoriesRoute || false;\n  }\n\n  get isTopicRoute() {\n    return this.currentRouteInfo?.isTopicRoute || false;\n  }\n\n  addBodyClass(className) {\n    if (className && typeof className === \"string\") {\n      document.body.classList.add(className);\n    }\n  }\n\n  removeBodyClass(className) {\n    if (className && typeof className === \"string\") {\n      document.body.classList.remove(className);\n    }\n  }\n}\n","import * as Mod1 from \"./discourse/api-initializers/category-boxes-init\";\nimport * as Mod2 from \"./discourse/api-initializers/category-custom-heading-init\";\nimport * as Mod3 from \"./discourse/api-initializers/category-settings-init\";\nimport * as Mod4 from \"./discourse/api-initializers/custom-login-signup-init\";\nimport * as Mod5 from \"./discourse/api-initializers/header-init\";\nimport * as Mod6 from \"./discourse/api-initializers/hide-content\";\nimport * as Mod7 from \"./discourse/api-initializers/material-design-icons\";\nimport * as Mod8 from \"./discourse/api-initializers/tag-separator\";\nimport * as Mod9 from \"./discourse/api-initializers/topic-list-init\";\nimport * as Mod10 from \"./discourse/components/category-box-expand-button\";\nimport * as Mod11 from \"./discourse/components/category-custom-heading\";\nimport * as Mod12 from \"./discourse/components/category-setting-checkbox\";\nimport * as Mod13 from \"./discourse/components/community-site-logo\";\nimport * as Mod14 from \"./discourse/components/custom-category-settings\";\nimport * as Mod15 from \"./discourse/components/custom-login-signup\";\nimport * as Mod16 from \"./discourse/components/extra-group-fields\";\nimport * as Mod17 from \"./discourse/components/sign-up-left-content\";\nimport * as Mod18 from \"./discourse/components/subcategories-heading\";\nimport * as Mod19 from \"./discourse/components/topic-creator-column\";\nimport * as Mod20 from \"./discourse/services/page\";\nconst compatModules = {\n  \"discourse/api-initializers/category-boxes-init\": Mod1,\n  \"discourse/api-initializers/category-custom-heading-init\": Mod2,\n  \"discourse/api-initializers/category-settings-init\": Mod3,\n  \"discourse/api-initializers/custom-login-signup-init\": Mod4,\n  \"discourse/api-initializers/header-init\": Mod5,\n  \"discourse/api-initializers/hide-content\": Mod6,\n  \"discourse/api-initializers/material-design-icons\": Mod7,\n  \"discourse/api-initializers/tag-separator\": Mod8,\n  \"discourse/api-initializers/topic-list-init\": Mod9,\n  \"discourse/components/category-box-expand-button\": Mod10,\n  \"discourse/components/category-custom-heading\": Mod11,\n  \"discourse/components/category-setting-checkbox\": Mod12,\n  \"discourse/components/community-site-logo\": Mod13,\n  \"discourse/components/custom-category-settings\": Mod14,\n  \"discourse/components/custom-login-signup\": Mod15,\n  \"discourse/components/extra-group-fields\": Mod16,\n  \"discourse/components/sign-up-left-content\": Mod17,\n  \"discourse/components/subcategories-heading\": Mod18,\n  \"discourse/components/topic-creator-column\": Mod19,\n  \"discourse/services/page\": Mod20,\n};\nexport { compatModules };\nexport default compatModules;\n"],"names":["settings","getObjectForTheme","themePrefix","key","CategoryBoxExpandButton","Component","dt7948","g","this","prototype","tracked","expanded","i","shouldShowButton","subcategories","args","outletArgs","category","length","toggleExpanded","categoryElement","document","querySelector","id","classList","toggle","n","action","setComponentTemplate","createTemplateFactory","block","moduleName","scope","on","dIcon","isStrictMode","SubcategoriesHeading","i18n","templateOnly","categoryBoxesInit","apiInitializer","api","renderInOutlet","descriptionCache","Map","CategoryCustomHeading","service","site","page","isCollapsed","description","categoryId","constructor","super","arguments","localStorage","getItem","loadDescription","willDestroy","off","currentCategoryId","get","categories","find","c","topic_url","topic","ajax","post_stream","posts","cooked","set","e","console","error","toggleCollapsed","setItem","removeItem","icon","hideCategoryLogo","categoryHasSettingEnabled","bodyClass","trustHTML","categoryCustomHeadingInit","CategorySettingCheckbox","isModified","isSaving","originalValue","currentValue","loadCurrentValue","categoryIds","settingName","split","filter","Boolean","map","parseInt","trim","includes","hasChanges","toggleValue","save","push","newValue","join","currentThemeId","type","data","name","value","popupAjaxError","cancel","DButton","CategorySettings","categorySettingsInit","CustomCategorySettings","CustomLoginSignup","router","local","currentAction","currentRoute","queryParams","localLinkText","showLocal","customLoginSignupInit","CommunitySiteLogo","siteSettings","header","lastCommunityInfo","setting","community_picker_category_ids","isNaN","warn","availableCategories","categoryHasWideLogo","routeInfo","isCategoryRoute","isTopicRoute","topicCategoryId","communityInfo","info","isSiteRoute","label","siteShortTitle","logo","siteSmallLogoUrl","wideLogo","url","route","lookupCategoryById","uploaded_logo","exactMatch","predecessors","Math","min","ancestor","availableAncestor","site_logo_small_url","isDefaultCommunity","onRegisterApi","dMenu","selectCommunity","transitionToCategory","close","gt","DMenu","DropdownMenu","eq","fn","headerInit","container","lookup","show_community_site_logo_in_plugin","hideContent","homepageHideCategoriesIds","homepage_hide_category_ids","ids","cssRules","styleElement","createElement","textContent","head","appendChild","FA_TO_MDI_ICON_MAP","anchor","asterisk","at","backward","ban","bars","bed","bell","bold","book","bookmark","briefcase","bullseye","certificate","check","circle","clock","code","comment","compress","copy","crosshairs","cube","desktop","download","ellipsis","envelope","eye","file","flag","flask","folder","font","forward","gavel","gear","gift","globe","hashtag","heart","house","image","images","inbox","italic","keyboard","language","link","list","lock","minus","moon","paintbrush","palette","pause","pencil","play","plug","plus","question","reply","robot","rocket","rotate","scroll","share","shuffle","signal","sliders","spinner","star","sun","table","tag","tags","thumbtack","unlock","upload","user","users","wrench","xmark","CUSTOM_ICON_PATHS","mdiDynamicFeed","path","viewBox","mdiBookmarks","mdiDiscoverTune","mdiHowToReg","mdiFactCheck","materialDesignIcons","registerIconRenderer","string","idObject","params","window","mdi","mdiPathData","faId","startsWith","mdiKey","resolveMdiPath","classes","class","pathData","str","String","replace","tagSeparator","registerValueTransformer","TopicCreatorColumn","topicCreator","creator","UserAvatar","UserAvatarFlair","MobileTopicCreatorColumn","shouldRender","context","mobileView","DesktopTopicCreatorColumn","desktopView","topicListInit","render_topic_avatar_column_with_plugin","ExtraGroupFields","tokenSeparator","model","badges","automatic_membership_associated_badges","computed","interests","automatic_membership_associated_interests","onChangeAssociatedBadges","onChangeAssociatedInterests","ListSetting","hash","SignUpLeftSideContent","gdpLogo","theme_uploads","signUpGraphic","arrowSvg","bracketSvg","SITE_ROUTES","extractCategoryId","attributesCategoryId","attributes","categorySlugPath","category_slug_path_with_id","parsed","extractCategoryLevel","level","undefined","PageService","Service","extend","Evented","currentRouteInfo","onRouteDidChange","transitionTo","slug","updateRouteInfo","updateBodyClasses","trigger","routeName","currentRouteName","test","isCategoriesRoute","categoryLevel","parent","category_id","split_layout_category_ids","addBodyClass","removeBodyClass","communityPickerIds","groupStatus","community","getGroupForCategory","isMember","className","body","add","remove","compatModules","Mod1","Mod2","Mod3","Mod4","Mod5","Mod6","Mod7","Mod8","Mod9","Mod10","Mod11","Mod12","Mod13","Mod14","Mod15","Mod16","Mod17","Mod18","Mod19"],"mappings":"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"}