{"version":3,"file":"main.DzukT0.js","sources":["theme-532/virtual:theme","theme-532/discourse/components/custom-icon.gjs","theme-532/discourse/components/custom-header-dropdown.gjs","theme-532/discourse/components/custom-header-link.gjs","theme-532/discourse/components/custom-header-links.gjs","theme-532/discourse/api-initializers/dropdown-header.gjs","theme-532/virtual:entrypoint:main"],"sourcesContent":["import { getObjectForTheme } from \"discourse/lib/theme-settings-store\";\n\nexport const settings = getObjectForTheme(532);\n\nexport function themePrefix(key) {\n  return `theme_translations.532.${key}`;\n}\n","import Component from \"@ember/component\";\nimport { equal } from \"@ember/object/computed\";\nimport { tagName } from \"@ember-decorators/component\";\nimport concatClass from \"discourse/helpers/concat-class\";\nimport dIcon from \"discourse-common/helpers/d-icon\";\n\n@tagName(\"\")\nexport default class CustomIcon extends Component {\n  @equal(\"sourceType\", \"image_url\") isImageUrl;\n  @equal(\"sourceType\", \"font_awesome\") isFontAwesome;\n\n  get sourceType() {\n    return settings.icon_source;\n  }\n\n  get source() {\n    return this.icon?.trim();\n  }\n\n  <template>\n    {{#if this.source}}\n      <span class={{concatClass \"custom-header-link-icon\" @class}}>\n        {{#if this.isImageUrl}}\n          <img src={{this.source}} />\n        {{else if this.isFontAwesome}}\n          {{dIcon this.source}}\n        {{/if}}\n      </span>\n    {{/if}}\n  </template>\n}\n","import Component from \"@ember/component\";\nimport { fn } from \"@ember/helper\";\nimport { on } from \"@ember/modifier\";\nimport { action } from \"@ember/object\";\nimport { service } from \"@ember/service\";\nimport DiscourseURL from \"discourse/lib/url\";\nimport CustomIcon from \"./custom-icon\";\n\nexport default class CustomHeaderDropdown extends Component {\n  @service site;\n  @service router;\n\n  @action\n  redirectToUrl(url, event) {\n    if (this.site.mobileView) {\n      this.toggleHeaderLinks();\n    }\n\n    const regex = new RegExp(`^${this.router.rootURL}`);\n    if (regex.test(url)) {\n      event.preventDefault();\n      DiscourseURL.routeTo(url);\n    }\n\n    event.stopPropagation();\n  }\n\n  <template>\n    <li\n      class=\"custom-header-dropdown-link\"\n      title={{@item.title}}\n      role=\"button\"\n      {{on \"click\" (fn this.redirectToUrl @item.url)}}\n    >\n      <CustomIcon @icon={{@item.icon}} />\n      {{#if @item.url}}\n        <a href={{@item.url}} class=\"custom-header-link-title\">{{@item.title}}</a>\n      {{else}}\n        <span class=\"custom-header-link-title\">{{@item.title}}</span>\n      {{/if}}\n      {{#if @item.description}}\n        <span class=\"custom-header-link-desc\">{{@item.description}}</span>\n      {{/if}}\n    </li>\n  </template>\n}\n","import Component from \"@ember/component\";\nimport { fn } from \"@ember/helper\";\nimport { on } from \"@ember/modifier\";\nimport { action } from \"@ember/object\";\nimport { notEmpty } from \"@ember/object/computed\";\nimport { service } from \"@ember/service\";\nimport concatClass from \"discourse/helpers/concat-class\";\nimport DiscourseURL from \"discourse/lib/url\";\nimport dIcon from \"discourse-common/helpers/d-icon\";\nimport CustomHeaderDropdown from \"./custom-header-dropdown\";\nimport CustomIcon from \"./custom-icon\";\n\nexport default class CustomHeaderLink extends Component {\n  @service siteSettings;\n  @service site;\n  @service currentUser;\n  @service router;\n\n  @notEmpty(\"dropdownLinks\") hasDropdown;\n\n  get shouldDisplay() {\n    if (!settings.security) {\n      return true;\n    }\n\n    const permissions = JSON.parse(settings.security);\n    const getPermissions = permissions\n      .filter((p) => p.headerLinkId === this.item.id)\n      .map((p) => p.title);\n\n    const currentUserGroups = this.currentUser?.groups.map((g) => g.name);\n\n    if (getPermissions?.length < 1) {\n      return true;\n    }\n\n    if (getPermissions.length < 0) {\n      return false;\n    }\n\n    if (!this.currentUser) {\n      return false;\n    }\n\n    if (currentUserGroups.includes(getPermissions[0])) {\n      return true;\n    }\n\n    return false;\n  }\n\n  get showCaret() {\n    return settings.show_caret_icons && this.hasDropdown;\n  }\n\n  get dropdownLinks() {\n    const allDropdownItems = settings.dropdown_links\n      ? JSON.parse(settings.dropdown_links)\n      : [];\n\n    const dropdownLinks = allDropdownItems.filter(\n      (d) => d.headerLinkId === this.item.id\n    );\n\n    return dropdownLinks;\n  }\n\n  @action\n  redirectToUrl(url, event) {\n    if (this.site.mobileView) {\n      this.toggleHeaderLinks();\n    }\n\n    const regex = new RegExp(`^${this.router.rootURL}`);\n    if (regex.test(url)) {\n      event.preventDefault();\n      DiscourseURL.routeTo(url);\n    }\n\n    event.stopPropagation();\n  }\n\n  <template>\n    {{#if this.shouldDisplay}}\n      <li\n        class={{concatClass\n          \"custom-header-link\"\n          (if @item.url \"with-url\")\n          (if this.hasDropdown \"has-dropdown\")\n        }}\n        title={{@item.title}}\n        {{(if\n          @item.url (modifier on \"click\" (fn this.redirectToUrl @item.url))\n        )}}\n      >\n        <CustomIcon @icon={{@item.icon}} />\n        {{#if @item.url}}\n          <a href={{@item.url}} class=\"custom-header-link-title\">{{@item.title}}</a>\n        {{else}}\n          <span class=\"custom-header-link-title\">{{@item.title}}</span>\n        {{/if}}\n\n        {{#if this.showCaret}}\n          <span class=\"custom-header-link-caret\">\n            {{dIcon \"caret-down\"}}\n          </span>\n        {{/if}}\n\n        {{#if this.hasDropdown}}\n          <ul class=\"custom-header-dropdown\">\n            {{#each this.dropdownLinks as |dropdownItem|}}\n              <CustomHeaderDropdown\n                @item={{dropdownItem}}\n                @toggleHeaderLinks={{this.toggleHeaderLinks}}\n              />\n            {{/each}}\n          </ul>\n        {{/if}}\n      </li>\n    {{/if}}\n  </template>\n}\n","import { tracked } from \"@glimmer/tracking\";\nimport Component from \"@ember/component\";\nimport { hash } from \"@ember/helper\";\nimport { action } from \"@ember/object\";\nimport { service } from \"@ember/service\";\nimport DButton from \"discourse/components/d-button\";\nimport concatClass from \"discourse/helpers/concat-class\";\nimport closeOnClickOutside from \"discourse/modifiers/close-on-click-outside\";\nimport i18n from \"discourse-common/helpers/i18n\";\nimport CustomHeaderLink from \"./custom-header-link\";\n\nexport default class CustomHeaderLinks extends Component {\n  @service siteSettings;\n  @service site;\n\n  @tracked showLinks = !this.site.mobileView;\n\n  @action\n  toggleHeaderLinks() {\n    this.showLinks = !this.showLinks;\n\n    if (this.showLinks) {\n      document.body.classList.add(\"dropdown-header-open\");\n    } else {\n      document.body.classList.remove(\"dropdown-header-open\");\n    }\n  }\n\n  get headerLinks() {\n    return JSON.parse(settings.header_links);\n  }\n\n  <template>\n    <nav\n      class={{concatClass\n        \"custom-header-links\"\n        (if @outletArgs.minimized \"scrolling\")\n      }}\n    >\n      {{#if this.site.mobileView}}\n        <span class=\"btn-custom-header-dropdown-mobile\">\n          <DButton\n            @icon=\"caret-square-down\"\n            @title={{i18n \"custom_header.discord\"}}\n            @action={{this.toggleHeaderLinks}}\n          />\n        </span>\n      {{/if}}\n\n      {{#if this.showLinks}}\n        <ul\n          class=\"top-level-links\"\n          {{(if\n            this.site.mobileView\n            (modifier\n              closeOnClickOutside\n              this.toggleHeaderLinks\n              (hash target=this.element)\n            )\n          )}}\n        >\n          {{#each this.headerLinks as |item|}}\n            <CustomHeaderLink\n              @item={{item}}\n              @toggleHeaderLinks={{this.toggleHeaderLinks}}\n            />\n          {{/each}}\n        </ul>\n      {{/if}}\n    </nav>\n  </template>\n}\n","import { apiInitializer } from \"discourse/lib/api\";\nimport CustomHeaderLinks from \"../components/custom-header-links\";\n\nexport default apiInitializer(\"1.29.0\", (api) => {\n  if (!settings.header_links) {\n    return;\n  }\n\n  if (settings.links_position === \"right\") {\n    api.headerButtons.add(\"dropdown-header\", CustomHeaderLinks, {\n      before: \"auth\",\n    });\n  } else {\n    api.renderAfterWrapperOutlet(\"home-logo\", CustomHeaderLinks);\n  }\n});\n","import * as Mod1 from \"./discourse/api-initializers/dropdown-header\";\nimport * as Mod2 from \"./discourse/components/custom-header-dropdown\";\nimport * as Mod3 from \"./discourse/components/custom-header-link\";\nimport * as Mod4 from \"./discourse/components/custom-header-links\";\nimport * as Mod5 from \"./discourse/components/custom-icon\";\nconst compatModules = {\n  \"discourse/api-initializers/dropdown-header\": Mod1,\n  \"discourse/components/custom-header-dropdown\": Mod2,\n  \"discourse/components/custom-header-link\": Mod3,\n  \"discourse/components/custom-header-links\": Mod4,\n  \"discourse/components/custom-icon\": Mod5,\n};\nexport { compatModules };\nexport default compatModules;\n"],"names":["settings","getObjectForTheme","CustomIcon","dt7948","c","Component","g","this","prototype","equal","isImageUrl","i","isFontAwesome","sourceType","icon_source","source","icon","trim","setComponentTemplate","createTemplateFactory","id","block","moduleName","scope","concatClass","dIcon","isStrictMode","tagName","CustomHeaderDropdown","service","site","router","redirectToUrl","url","event","mobileView","toggleHeaderLinks","RegExp","rootURL","test","preventDefault","DiscourseURL","routeTo","stopPropagation","n","action","on","fn","CustomHeaderLink","siteSettings","currentUser","notEmpty","hasDropdown","shouldDisplay","security","getPermissions","JSON","parse","filter","p","headerLinkId","item","map","title","currentUserGroups","groups","name","length","includes","showCaret","show_caret_icons","dropdownLinks","dropdown_links","d","CustomHeaderLinks","tracked","showLinks","document","body","classList","add","remove","headerLinks","header_links","DButton","i18n","closeOnClickOutside","hash","dropdownHeader","apiInitializer","api","links_position","headerButtons","before","renderAfterWrapperOutlet","compatModules","Mod2","Mod3","Mod4","Mod5"],"mappings":"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"}