{"version":3,"file":"main.js","sources":["theme-3/virtual:init-settings","theme-3/virtual:theme","theme-3/discourse/components/category-box.gjs","theme-3/discourse/components/category-boxes.gjs","theme-3/discourse/components/category-header.gjs","theme-3/discourse/components/custom-category-boxes.gjs","theme-3/discourse/initializers/initialize-category-boxes.js","theme-3/virtual:entrypoint:main"],"sourcesContent":["import { registerSettings } from \"discourse/lib/theme-settings-store\";\n\nregisterSettings(3, {\n  \"first_categories_header\": \"First Categories Header\",\n  \"first_categories\": \"\",\n  \"second_categories_header\": \"Second Categories Header\",\n  \"second_categories\": \"\",\n  \"third_categories_header\": \"Third Categories Header\",\n  \"third_categories\": \"\",\n  \"fourth_categories_header\": \"Fourth Categories Header\",\n  \"fourth_categories\": \"\",\n  \"fifth_categories_header\": \"Fifth Categories Header\",\n  \"fifth_categories\": \"\"\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 { htmlSafe } from \"@ember/template\";\nimport CategoryLogo from \"discourse/components/category-logo\";\nimport CategoryTitleBefore from \"discourse/components/category-title-before\";\nimport CategoryTitleLink from \"discourse/components/category-title-link\";\nimport PluginOutlet from \"discourse/components/plugin-outlet\";\nimport borderColor from \"discourse/helpers/border-color\";\nimport categoryLink from \"discourse/helpers/category-link\";\nimport icon from \"discourse/helpers/d-icon\";\nimport htmlSafe0 from \"discourse/helpers/html-safe\";\nimport lazyHash from \"discourse/helpers/lazy-hash\";\n\nexport default class extends Component {\n  get backgroundColor() {\n    return htmlSafe(`background-color: #${this.args.category.color}`);\n  }\n\n  get getAbbreviation() {\n    let abbr = this.args.category.name.replace(\" and\", \"\").split(\" \");\n\n    if (abbr.length > 1) {\n      abbr = abbr[0].charAt(0).toUpperCase() + abbr[1].charAt(0).toLowerCase();\n    } else {\n      abbr = abbr[0].charAt(0).toUpperCase() + abbr[0].charAt(1).toLowerCase();\n    }\n\n    return abbr;\n  }\n\n  <template>\n    {{! template-lint-disable no-nested-interactive }}\n\n    <a\n      href={{@category.url}}\n      data-category-id={{@category.id}}\n      data-notification-level={{@category.notificationLevelString}}\n      data-url={{@category.url}}\n      class=\"category category-box category-box-{{@category.slug}}\n        {{if @category.isMuted 'muted'}}\n        {{if this.noCategoryStyle 'no-category-boxes-style'}}\"\n    >\n      <div class=\"category-box-inner\">\n        <div\n          class=\"category-logo\n            {{if @category.uploaded_logo.url '' 'no-logo-present'}}\"\n          style={{this.backgroundColor}}\n        >\n          {{#if @category.uploaded_logo.url}}\n            <CategoryLogo @category={{@category}} />\n          {{else}}\n            <span class=\"category-abbreviation\">\n              {{this.getAbbreviation}}\n            </span>\n          {{/if}}\n        </div>\n\n        <div class=\"category-details\">\n          <div class=\"category-box-heading\">\n            <a class=\"parent-box-link\" href={{@category.url}}>\n              <h3>\n                <CategoryTitleBefore @category={{@category}} />\n                {{#if @category.read_restricted}}\n                  {{icon \"lock\"}}\n                {{/if}}\n                {{@category.name}}\n              </h3>\n            </a>\n          </div>\n\n          <div class=\"description\">\n            <p>{{htmlSafe0 @category.description_excerpt}}</p>\n          </div>\n\n          {{#if @category.isGrandParent}}\n            {{#each @category.subcategories as |subcategory|}}\n              <a\n                href={{subcategory.url}}\n                data-category-id={{subcategory.id}}\n                data-notification-level={{subcategory.notificationLevelString}}\n                style={{borderColor subcategory.color}}\n                class=\"subcategory with-subcategories\n                  {{if subcategory.uploaded_logo.url 'has-logo' 'no-logo'}}\"\n              >\n                <div class=\"subcategory-box-inner\">\n                  <CategoryTitleLink @tagName=\"h4\" @category={{subcategory}} />\n                  {{#if subcategory.subcategories}}\n                    <div class=\"subcategories\">\n                      {{#each subcategory.subcategories as |subsubcategory|}}\n                        {{#unless subsubcategory.isMuted}}\n                          <span class=\"subcategory\">\n                            <CategoryTitleBefore @category={{subsubcategory}} />\n                            {{categoryLink subsubcategory hideParent=\"true\"}}\n                          </span>\n                        {{/unless}}\n                      {{/each}}\n                    </div>\n                  {{/if}}\n                </div>\n              </a>\n            {{/each}}\n          {{else if @category.subcategories}}\n            <div class=\"subcategories\">\n              {{#each @category.subcategories as |sc|}}\n                <a class=\"subcategory\" href={{sc.url}}>\n                  <span class=\"subcategory-image-placeholder\">\n                    <CategoryLogo @category={{sc}} />\n                  </span>\n                  {{categoryLink sc hideParent=\"true\"}}\n                </a>\n              {{/each}}\n            </div>\n          {{/if}}\n        </div>\n\n        <PluginOutlet\n          @name=\"category-box-below-each-category\"\n          @connectorTagName=\"\"\n          @outletArgs={{lazyHash category=@category}}\n        />\n      </div>\n    </a>\n  </template>\n}\n","import CategoryBox from \"./category-box\";\n\nconst CategoryBoxes = <template>\n  <span class=\"custom-category-boxes\">\n    {{#each @categories as |category|}}\n      <CategoryBox @category={{category}} />\n    {{/each}}\n  </span>\n</template>;\n\nexport default CategoryBoxes;\n","import { gt } from \"discourse/truth-helpers\";\n\nconst CategoryHeader = <template>\n  {{#if (gt @header.length 0)}}\n    <h1 class=\"custom-category-header\">\n      {{@header}}\n    </h1>\n  {{/if}}\n</template>;\n\nexport default CategoryHeader;\n","import Component from \"@glimmer/component\";\nimport { service } from \"@ember/service\";\nimport CategoryBoxes from \"./category-boxes\";\nimport CategoryHeader from \"./category-header\";\n\nexport default class extends Component {\n  @service router;\n  @service site;\n\n  get classNames() {\n    const classNames = [\"custom-category-boxes-container\"];\n\n    if (this.noneSelected) {\n      classNames.push(\"none-selected\");\n    }\n\n    return classNames.join(\" \");\n  }\n\n  #allowedCategories(selectedCategories) {\n    // filters categories to only include selected categories for each section\n    let availableCategories = this.site.categories.filter((category) => {\n      if (selectedCategories.indexOf(category.id) !== -1) {\n        return true;\n      } else {\n        return false;\n      }\n    });\n\n    return availableCategories;\n  }\n\n  get shouldRenderHeadings() {\n    let isCategoryPage = this.router.currentRoute.name.includes(\"category\");\n    let hasCategoriesSet = false;\n\n    if (\n      settings.first_categories ||\n      settings.second_categories ||\n      settings.third_categories ||\n      settings.fourth_categories ||\n      settings.fifth_categories\n    ) {\n      hasCategoriesSet = true;\n    }\n\n    if (!isCategoryPage && hasCategoriesSet) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  get noneSelected() {\n    return this.router.currentRoute.name.includes(\"None\");\n  }\n\n  get firstCategories() {\n    return this.#allowedCategories(\n      settings.first_categories.split(\"|\").map((id) => Number(id))\n    );\n  }\n\n  get secondCategories() {\n    return this.#allowedCategories(\n      settings.second_categories.split(\"|\").map((id) => Number(id))\n    );\n  }\n\n  get thirdCategories() {\n    return this.#allowedCategories(\n      settings.third_categories.split(\"|\").map((id) => Number(id))\n    );\n  }\n\n  get fourthCategories() {\n    return this.#allowedCategories(\n      settings.fourth_categories.split(\"|\").map((id) => Number(id))\n    );\n  }\n\n  get fifthCategories() {\n    return this.#allowedCategories(\n      settings.fifth_categories.split(\"|\").map((id) => Number(id))\n    );\n  }\n\n  <template>\n    <div class={{this.classNames}}>\n      {{#if this.shouldRenderHeadings}}\n        {{#if this.firstCategories}}\n          <CategoryHeader @header={{settings.first_categories_header}} />\n          <CategoryBoxes @categories={{this.firstCategories}} />\n        {{/if}}\n\n        {{#if this.secondCategories}}\n          <CategoryHeader @header={{settings.second_categories_header}} />\n          <CategoryBoxes @categories={{this.secondCategories}} />\n        {{/if}}\n\n        {{#if this.thirdCategories}}\n          <CategoryHeader @header={{settings.third_categories_header}} />\n          <CategoryBoxes @categories={{this.thirdCategories}} />\n        {{/if}}\n\n        {{#if this.fourthCategories}}\n          <CategoryHeader @header={{settings.fourth_categories_header}} />\n          <CategoryBoxes @categories={{this.fourthCategories}} />\n        {{/if}}\n\n        {{#if this.fifthCategories}}\n          <CategoryHeader @header={{settings.fifth_categories_header}} />\n          <CategoryBoxes @categories={{this.fifthCategories}} />\n        {{/if}}\n      {{else}}\n        <CategoryBoxes @categories={{@outletArgs.categories}} />\n      {{/if}}\n    </div>\n  </template>\n}\n","import { apiInitializer } from \"discourse/lib/api\";\nimport CustomCategoryBoxes from \"../components/custom-category-boxes\";\n\nexport default apiInitializer((api) => {\n  api.renderInOutlet(\"above-discovery-categories\", CustomCategoryBoxes);\n});\n","const compatModules = {};import \"virtual:init-settings\";\nimport * as Mod1 from \"./discourse/components/category-boxes\";\ncompatModules[\"discourse/components/category-boxes\"] = Mod1;\n\nexport * as discourse$components$category__boxes$$__module from \"./discourse/components/category-boxes\";\nexport {\ndefault as discourse$components$category__boxes$$default\n} from \"./discourse/components/category-boxes\";\nimport * as Mod2 from \"./discourse/components/category-box\";\ncompatModules[\"discourse/components/category-box\"] = Mod2;\n\nexport * as discourse$components$category__box$$__module from \"./discourse/components/category-box\";\nexport {\ndefault as discourse$components$category__box$$default\n} from \"./discourse/components/category-box\";\nimport * as Mod3 from \"./discourse/components/category-header\";\ncompatModules[\"discourse/components/category-header\"] = Mod3;\n\nexport * as discourse$components$category__header$$__module from \"./discourse/components/category-header\";\nexport {\ndefault as discourse$components$category__header$$default\n} from \"./discourse/components/category-header\";\nimport * as Mod4 from \"./discourse/components/custom-category-boxes\";\ncompatModules[\"discourse/components/custom-category-boxes\"] = Mod4;\n\nexport * as discourse$components$custom__category__boxes$$__module from \"./discourse/components/custom-category-boxes\";\nexport {\ndefault as discourse$components$custom__category__boxes$$default\n} from \"./discourse/components/custom-category-boxes\";\nimport * as Mod5 from \"./discourse/initializers/initialize-category-boxes\";\ncompatModules[\"discourse/initializers/initialize-category-boxes\"] = Mod5;\n\nexport * as discourse$initializers$initialize__category__boxes$$__module from \"./discourse/initializers/initialize-category-boxes\";\nexport {\ndefault as discourse$initializers$initialize__category__boxes$$default\n} from \"./discourse/initializers/initialize-category-boxes\";\nexport default compatModules;\n"],"names":["registerSettings","first_categories_header","first_categories","second_categories_header","second_categories","third_categories_header","third_categories","fourth_categories_header","fourth_categories","fifth_categories_header","fifth_categories","settings","getObjectForTheme","CategoryBox","Component","backgroundColor","htmlSafe","this","args","category","color","getAbbreviation","abbr","name","replace","split","length","charAt","toUpperCase","toLowerCase","setComponentTemplate","createTemplateFactory","id","block","moduleName","scope","CategoryLogo","CategoryTitleBefore","icon","htmlSafe0","borderColor","CategoryTitleLink","categoryLink","PluginOutlet","lazyHash","isStrictMode","CategoryBoxes","templateOnly","CategoryHeader","gt","CustomCategoryBoxes","dt7948","g","prototype","service","router","i","site","classNames","noneSelected","push","join","allowedCategories","selectedCategories","categories","filter","indexOf","shouldRenderHeadings","isCategoryPage","currentRoute","includes","hasCategoriesSet","firstCategories","map","Number","secondCategories","thirdCategories","fourthCategories","fifthCategories","initializeCategoryBoxes","apiInitializer","api","renderInOutlet","compatModules","Mod1","Mod2","Mod3","Mod4","Mod5"],"mappings":"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"}