{"version":3,"file":"main.CDyj4u.js","sources":["theme-34/virtual:theme","theme-34/discourse/api-initializers/hide-featured-tags.js","theme-34/discourse/components/featured-homepage-topics.gjs","theme-34/discourse/connectors/above-main-container/homepage-featured-topics.gjs","theme-34/discourse/connectors/below-discovery-categories/homepage-featured-topics.gjs","theme-34/discourse/connectors/discovery-list-controls-above/homepage-featured-topics.gjs","theme-34/virtual:entrypoint:main"],"sourcesContent":["import { getObjectForTheme } from \"discourse/lib/theme-settings-store\";\n\nexport const settings = getObjectForTheme(34);\n\nexport function themePrefix(key) {\n  return `theme_translations.34.${key}`;\n}\n","import { settings } from \"virtual:theme\";\nimport { apiInitializer } from \"discourse/lib/api\";\n\nexport default apiInitializer((api) => {\n  if (!settings.hide_featured_tag) {\n    return;\n  }\n\n  if (api.getCurrentUser()?.staff) {\n    return;\n  }\n\n  const tags = settings.featured_tag\n    .split(\"|\")\n    .map((tag) => tag.trim())\n    .filter(Boolean);\n\n  if (tags.length === 0) {\n    return;\n  }\n\n  const selectors = tags\n    .flatMap((tag) => [\n      `.tag-drop li[data-name=\"${tag}\"]`,\n      `[data-tag-name=\"${tag}\"]`,\n    ])\n    .join(\", \");\n\n  const style = document.createElement(\"style\");\n  style.textContent = `${selectors} { display: none !important; }`;\n  document.head.appendChild(style);\n});\n","import Component from \"@glimmer/component\";\nimport { tracked } from \"@glimmer/tracking\";\nimport { fn } from \"@ember/helper\";\nimport { on } from \"@ember/modifier\";\nimport { action } from \"@ember/object\";\nimport didInsert from \"@ember/render-modifiers/modifiers/did-insert\";\nimport { cancel } from \"@ember/runloop\";\nimport { service } from \"@ember/service\";\nimport { htmlSafe } from \"@ember/template\";\nimport DButton from \"discourse/components/d-button\";\nimport concatClass from \"discourse/helpers/concat-class\";\nimport icon from \"discourse/helpers/d-icon\";\nimport discourseDebounce from \"discourse/lib/debounce\";\nimport getURL from \"discourse/lib/get-url\";\nimport { emojiUnescape } from \"discourse/lib/text\";\nimport { defaultHomepage } from \"discourse/lib/utilities\";\nimport { and, not } from \"discourse/truth-helpers\";\nimport { i18n } from \"discourse-i18n\";\n\nconst FEATURED_CLASS = \"featured-homepage-topics\";\n\nexport default class FeaturedHomepageTopics extends Component {\n  @service router;\n  @service store;\n  @service siteSettings;\n  @service currentUser;\n  @service keyValueStore;\n\n  @tracked featuredTagTopics = null;\n  @tracked\n  toggleTopics =\n    this.keyValueStore.getItem(\"toggleTopicsState\") === \"true\" || false;\n\n  @tracked currentPageIndex = 0;\n  @tracked featuredTopicsAvailable = 0;\n  @tracked actualTopicsDisplayed = 0;\n  filteredTopics = [];\n\n  constructor() {\n    super(...arguments);\n    this.router.on(\"routeDidChange\", this.checkShowHere);\n    window.addEventListener(\"resize\", this.onResize);\n  }\n\n  willDestroy() {\n    super.willDestroy(...arguments);\n    this.router.off(\"routeDidChange\", this.checkShowHere);\n    window.removeEventListener(\"resize\", this.onResize);\n    cancel(this._resizeHandler);\n  }\n\n  @action\n  toggle() {\n    this.toggleTopics = !this.toggleTopics;\n    this.keyValueStore.setItem(\"toggleTopicsState\", this.toggleTopics);\n  }\n\n  @action\n  checkShowHere() {\n    document.body.classList.toggle(FEATURED_CLASS, this.showHere);\n  }\n\n  get showHere() {\n    const { currentRoute, currentRouteName } = this.router;\n\n    if (currentRoute) {\n      switch (settings.show_on) {\n        case \"homepage\":\n          return currentRouteName === `discovery.${defaultHomepage()}`;\n        case \"top_menu\":\n          const topMenuRoutes = this.siteSettings.top_menu\n            .split(\"|\")\n            .filter(Boolean);\n          return topMenuRoutes.includes(currentRoute.localName);\n        case \"all\":\n          return !/editCategory|admin|full-page-search/.test(currentRouteName);\n        default:\n          return false;\n      }\n    }\n\n    return false;\n  }\n\n  get featuredTitle() {\n    // falls back to setting for backwards compatibility\n    return i18n(themePrefix(\"featured_topic_title\")) || settings.title_text;\n  }\n\n  get showFor() {\n    if (\n      settings.show_for === \"everyone\" ||\n      (settings.show_for === \"logged_out\" && !this.currentUser) ||\n      (settings.show_for === \"logged_in\" && this.currentUser)\n    ) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  get mobileStyle() {\n    if (\n      settings.show_all_always &&\n      settings.mobile_style === \"stacked_on_smaller_screens\"\n    ) {\n      return \"-mobile-stacked\";\n    } else if (settings.show_all_always) {\n      return \"-mobile-horizontal\";\n    } else {\n      return;\n    }\n  }\n\n  emojiTitle(t) {\n    return emojiUnescape(t);\n  }\n\n  topicSrcset(t) {\n    // thumbnails are only serialized when a theme modifier or plugin\n    // has registered extra sizes; otherwise fall back to src alone\n    if (!t.thumbnails?.length) {\n      return null;\n    }\n\n    return t.thumbnails\n      .filter((thumb) => thumb.url && thumb.width)\n      .map((thumb) => `${thumb.url} ${thumb.width}w`)\n      .join(\", \");\n  }\n\n  topicHref(t) {\n    const postNumber = settings.always_link_to_first_post\n      ? null\n      : t.last_read_post_number;\n\n    const suffix = postNumber ? `/${postNumber}` : \"\";\n    return getURL(`/t/${t.slug}/${t.id}${suffix}`);\n  }\n\n  get featuredTags() {\n    return settings.featured_tag\n      .split(\"|\")\n      .map((tag) => tag.trim())\n      .filter(Boolean);\n  }\n\n  @action\n  async getBannerTopics() {\n    if (this.featuredTags.length === 0) {\n      return;\n    }\n\n    const sortOrder = settings.sort_by_created ? \"created\" : \"activity\";\n    const topicList = await this.store.findFiltered(\"topicList\", {\n      filter: \"latest\",\n      params: {\n        tags: this.featuredTags,\n        order: sortOrder,\n      },\n    });\n\n    this.filteredTopics = topicList.topics\n      .filter(\n        (topic) =>\n          topic.image_url && (!settings.hide_closed_topics || !topic.closed)\n      )\n      .slice(\n        0,\n        Math.max(settings.number_of_topics, settings.max_number_of_topics)\n      );\n\n    this.featuredTopicsAvailable = this.filteredTopics.length;\n    this.updateDisplayedTopics();\n  }\n\n  updateDisplayedTopics() {\n    this.actualTopicsDisplayed = settings.number_of_topics;\n    if (!settings.show_all_always) {\n      // Sizes here are based on the existing resize boundaries in the CSS\n      if (window.innerWidth <= 450) {\n        this.actualTopicsDisplayed = Math.min(this.actualTopicsDisplayed, 1);\n      } else if (window.innerWidth <= 600) {\n        this.actualTopicsDisplayed = Math.min(this.actualTopicsDisplayed, 2);\n      } else if (window.innerWidth <= 800) {\n        this.actualTopicsDisplayed = Math.min(this.actualTopicsDisplayed, 3);\n      } else if (window.innerWidth <= 999) {\n        this.actualTopicsDisplayed = Math.min(this.actualTopicsDisplayed, 4);\n      }\n    }\n\n    const firstFeaturedTopicIndex =\n      this.currentPageIndex * this.actualTopicsDisplayed;\n    const lastFeaturedTopicIndex =\n      firstFeaturedTopicIndex + this.actualTopicsDisplayed;\n\n    this.featuredTagTopics = this.filteredTopics.slice(\n      firstFeaturedTopicIndex,\n      lastFeaturedTopicIndex\n    );\n  }\n\n  @action\n  onResize() {\n    this._resizeHandler = discourseDebounce(\n      this,\n      this.updateDisplayedTopics,\n      100\n    );\n  }\n\n  get paginationEnabled() {\n    return (\n      settings.max_number_of_topics > settings.number_of_topics &&\n      this.featuredTopicsAvailable > settings.number_of_topics\n    );\n  }\n\n  get numberOfPages() {\n    return Math.ceil(this.featuredTopicsAvailable / this.actualTopicsDisplayed);\n  }\n\n  get currentPageNumber() {\n    return this.currentPageIndex + 1;\n  }\n\n  get showLeftArrow() {\n    return settings.pages_loop || this.currentPageIndex > 0;\n  }\n\n  get showRightArrow() {\n    return (\n      settings.pages_loop || this.currentPageIndex < this.numberOfPages - 1\n    );\n  }\n\n  @action\n  pageLeft() {\n    if (this.currentPageIndex === 0) {\n      if (settings.pages_loop) {\n        this.currentPageIndex = this.numberOfPages - 1;\n      }\n    } else {\n      this.currentPageIndex -= 1;\n    }\n\n    this.updateDisplayedTopics();\n  }\n\n  @action\n  pageRight() {\n    if (this.currentPageIndex === this.numberOfPages - 1) {\n      if (settings.pages_loop) {\n        this.currentPageIndex = 0;\n      }\n    } else {\n      this.currentPageIndex += 1;\n    }\n\n    this.updateDisplayedTopics();\n  }\n\n  get pageProgressArray() {\n    let pageProgressArray = [];\n    for (let i = 0; i < this.numberOfPages; ++i) {\n      if (i === this.currentPageIndex) {\n        pageProgressArray.push({ pageIndex: i, markerClass: \"--current-page\" });\n      } else if (i < this.currentPageIndex) {\n        pageProgressArray.push({\n          pageIndex: i,\n          markerClass: \"--previous-page\",\n        });\n      } else {\n        pageProgressArray.push({ pageIndex: i, markerClass: \"\" });\n      }\n    }\n    return pageProgressArray;\n  }\n\n  @action\n  setPageIndex(pageIndex, event) {\n    this.currentPageIndex = pageIndex;\n    event?.preventDefault();\n    this.updateDisplayedTopics();\n  }\n\n  pageNumberTitle(pageIndex) {\n    return i18n(themePrefix(\"page_number\"), { pageNumber: pageIndex + 1 });\n  }\n\n  <template>\n    {{#if (and this.showFor this.showHere)}}\n      <div\n        class=\"custom-homepage-wrapper\"\n        {{didInsert this.getBannerTopics}}\n        {{didInsert this.checkShowHere}}\n      >\n        {{#if this.featuredTagTopics}}\n          <div class=\"custom-homepage\">\n            {{#if settings.make_collapsible}}\n              <DButton\n                class={{concatClass\n                  \"featured-topic-toggle\"\n                  (if this.toggleTopics \"is-open\")\n                }}\n                @action={{this.toggle}}\n                @translatedLabel={{this.featuredTitle}}\n              >\n                {{#if this.toggleTopics}}\n                  {{icon \"angle-right\"}}\n                {{else}}\n                  {{icon \"angle-down\"}}\n                {{/if}}\n              </DButton>\n            {{/if}}\n\n            <div\n              class={{concatClass\n                \"featured-topic-wrapper\"\n                this.mobileStyle\n                (if (and this.toggleTopics settings.make_collapsible) \"hidden\")\n              }}\n            >\n              {{#if (and settings.show_title (not settings.make_collapsible))}}\n                <h2>\n                  {{this.featuredTitle}}\n                </h2>\n              {{/if}}\n\n              <div class=\"featured-topics-controls\">\n                {{#if this.paginationEnabled}}\n                  <div class=\"page-button-container\">\n                    {{#if this.showLeftArrow}}\n                      <DButton\n                        class=\"page-button left-page-button\"\n                        @action={{this.pageLeft}}\n                        @icon=\"angle-left\"\n                      />\n                    {{/if}}\n                  </div>\n                {{/if}}\n                <div class=\"featured-topics\">\n                  {{#each this.featuredTagTopics as |t|}}\n                    <div class=\"featured-topic\">\n                      <a\n                        class=\"featured-topic-image\"\n                        href={{this.topicHref t}}\n                        aria-hidden=\"true\"\n                        tabindex=\"-1\"\n                      >\n                        <img\n                          src={{t.image_url}}\n                          srcset={{this.topicSrcset t}}\n                          sizes=\"(max-width: 450px) 100vw, (max-width: 600px)\n                            50vw, (max-width: 800px) 33vw, (max-width: 999px)\n                            25vw, 450px\"\n                          alt=\"\"\n                        />\n                      </a>\n                      <h3>\n                        <a href={{this.topicHref t}} data-topic-id={{t.id}}>\n                          {{htmlSafe (this.emojiTitle t.fancy_title)}}\n                        </a>\n                      </h3>\n                    </div>\n                  {{/each}}\n                </div>\n                {{#if this.paginationEnabled}}\n                  <div class=\"page-button-container\">\n                    {{#if this.showRightArrow}}\n                      <DButton\n                        class=\"page-button right-page-button\"\n                        @action={{this.pageRight}}\n                        @icon=\"angle-right\"\n                      />\n                    {{/if}}\n                  </div>\n                {{/if}}\n              </div>\n\n              {{#if this.paginationEnabled}}\n                <div class=\"page-progress-container\">\n                  {{#each this.pageProgressArray as |pageProgressItem|}}\n                    <a\n                      href\n                      class=\"page-progress-marker-link\"\n                      title={{this.pageNumberTitle pageProgressItem.pageIndex}}\n                      {{on\n                        \"click\"\n                        (fn this.setPageIndex pageProgressItem.pageIndex)\n                      }}\n                    >\n                      <div\n                        class=\"page-progress-marker\n                          {{pageProgressItem.markerClass}}\"\n                      />\n                    </a>\n                  {{/each}}\n                </div>\n              {{/if}}\n            </div>\n          </div>\n        {{/if}}\n      </div>\n\n    {{/if}}\n  </template>\n}\n","/* eslint-disable ember/no-classic-components, ember/require-tagless-components */\nimport Component from \"@ember/component\";\nimport { classNames } from \"@ember-decorators/component\";\nimport FeaturedHomepageTopics from \"../../components/featured-homepage-topics\";\n\n@classNames(\"above-main-container-outlet\", \"homepage-featured-topics\")\nexport default class HomepageFeaturedTopics extends Component {\n  init() {\n    super.init(...arguments);\n    this.set(\n      \"switchOutletToAboveMainContainer\",\n      settings.featured_content_position === \"above_main_container\" ||\n        settings.show_on === \"all\"\n    );\n  }\n\n  <template>\n    {{#if this.switchOutletToAboveMainContainer}}\n      <FeaturedHomepageTopics />\n    {{/if}}\n  </template>\n}\n","/* eslint-disable ember/no-classic-components, ember/require-tagless-components */\nimport Component from \"@ember/component\";\nimport { classNames } from \"@ember-decorators/component\";\nimport FeaturedHomepageTopics from \"../../components/featured-homepage-topics\";\n\n@classNames(\"below-discovery-categories-outlet\", \"homepage-featured-topics\")\nexport default class HomepageFeaturedTopics extends Component {\n  init() {\n    super.init(...arguments);\n    this.set(\n      \"switchOutletToBelowDiscoveryCategories\",\n      settings.featured_content_position === \"below_discovery_categories\"\n    );\n  }\n\n  <template>\n    {{#if this.switchOutletToBelowDiscoveryCategories}}\n      <FeaturedHomepageTopics />\n    {{/if}}\n  </template>\n}\n","/* eslint-disable ember/no-classic-components, ember/require-tagless-components */\nimport Component from \"@ember/component\";\nimport { classNames } from \"@ember-decorators/component\";\nimport FeaturedHomepageTopics from \"../../components/featured-homepage-topics\";\n\n@classNames(\"discovery-list-controls-above-outlet\", \"homepage-featured-topics\")\nexport default class HomepageFeaturedTopics extends Component {\n  init() {\n    super.init(...arguments);\n    this.set(\n      \"switchOutlet\",\n      settings.featured_content_position === \"above_main_container\" ||\n        settings.featured_content_position === \"below_discovery_categories\" ||\n        settings.show_on === \"all\"\n    );\n  }\n\n  <template>\n    {{#unless this.switchOutlet}}\n      <FeaturedHomepageTopics />\n    {{/unless}}\n  </template>\n}\n","import * as Mod1 from \"./discourse/api-initializers/hide-featured-tags\";\nimport * as Mod2 from \"./discourse/components/featured-homepage-topics\";\nimport * as Mod3 from \"./discourse/connectors/above-main-container/homepage-featured-topics.gjs\";\nimport * as Mod4 from \"./discourse/connectors/below-discovery-categories/homepage-featured-topics.gjs\";\nimport * as Mod5 from \"./discourse/connectors/discovery-list-controls-above/homepage-featured-topics.gjs\";\nconst compatModules = {\n  \"discourse/api-initializers/hide-featured-tags\": Mod1,\n  \"discourse/components/featured-homepage-topics\": Mod2,\n  \"discourse/connectors/above-main-container/homepage-featured-topics\": Mod3,\n  \"discourse/connectors/below-discovery-categories/homepage-featured-topics\": Mod4,\n  \"discourse/connectors/discovery-list-controls-above/homepage-featured-topics\": Mod5,\n};\nexport { compatModules };\nexport default compatModules;\n"],"names":["settings","getObjectForTheme","themePrefix","key","hideFeaturedTags","apiInitializer","api","hide_featured_tag","getCurrentUser","staff","tags","featured_tag","split","map","tag","trim","filter","Boolean","length","selectors","flatMap","join","style","document","createElement","textContent","head","appendChild","FeaturedHomepageTopics","Component","dt7948","g","this","prototype","service","router","i","store","siteSettings","currentUser","keyValueStore","tracked","featuredTagTopics","getItem","toggleTopics","currentPageIndex","featuredTopicsAvailable","actualTopicsDisplayed","filteredTopics","constructor","super","arguments","on","checkShowHere","window","addEventListener","onResize","willDestroy","off","removeEventListener","cancel","_resizeHandler","toggle","setItem","n","action","body","classList","showHere","currentRoute","currentRouteName","show_on","defaultHomepage","top_menu","includes","localName","test","featuredTitle","i18n","title_text","showFor","show_for","mobileStyle","show_all_always","mobile_style","emojiTitle","t","emojiUnescape","topicSrcset","thumbnails","thumb","url","width","topicHref","postNumber","always_link_to_first_post","last_read_post_number","suffix","getURL","slug","id","featuredTags","getBannerTopics","sortOrder","sort_by_created","topicList","findFiltered","params","order","topics","topic","image_url","hide_closed_topics","closed","slice","Math","max","number_of_topics","max_number_of_topics","updateDisplayedTopics","innerWidth","min","firstFeaturedTopicIndex","lastFeaturedTopicIndex","discourseDebounce","paginationEnabled","numberOfPages","ceil","currentPageNumber","showLeftArrow","pages_loop","showRightArrow","pageLeft","pageRight","pageProgressArray","push","pageIndex","markerClass","setPageIndex","event","preventDefault","pageNumberTitle","pageNumber","setComponentTemplate","createTemplateFactory","block","moduleName","scope","and","didInsert","DButton","concatClass","icon","not","htmlSafe","fn","isStrictMode","HomepageFeaturedTopics","c","init","set","featured_content_position","classNames","compatModules","Mod1","Mod2","Mod3","Mod4"],"mappings":"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"}