{"version":3,"file":"main.DBwbCC.js","sources":["theme-11/virtual:theme","theme-11/discourse/lib/isValidUrl.js","theme-11/discourse/components/custom-header-icon.gjs","theme-11/discourse/initializers/initialize-for-header-icon-links.gjs","theme-11/virtual:entrypoint:main"],"sourcesContent":["import { getObjectForTheme } from \"discourse/lib/theme-settings-store\";\n\nexport const settings = getObjectForTheme(11);\n\nexport function themePrefix(key) {\n  return `theme_translations.11.${key}`;\n}\n","export default function isValidUrl(string) {\n  try {\n    const url = new URL(string);\n\n    if (url) {\n      return true;\n    }\n  } catch {\n    return false;\n  }\n\n  return true;\n}\n","import Component from \"@glimmer/component\";\nimport { service } from \"@ember/service\";\nimport { htmlSafe } from \"@ember/template\";\nimport concatClass from \"discourse/helpers/concat-class\";\nimport icon from \"discourse/helpers/d-icon\";\nimport dasherize from \"discourse/helpers/dasherize\";\nimport { escapeExpression } from \"discourse/lib/utilities\";\nimport { eq } from \"discourse/truth-helpers\";\nimport isValidUrl from \"../lib/isValidUrl\";\n\nconst MOBILE_VIEWS = new Set([\"vmo\", \"vdm\"]);\nconst DESKTOP_VIEWS = new Set([\"vdo\", \"vdm\"]);\n\nfunction shouldRenderViewMode(view, isMobile) {\n  return isMobile ? MOBILE_VIEWS.has(view) : DESKTOP_VIEWS.has(view);\n}\n\nexport default class CustomHeaderIcon extends Component {\n  static shouldRender(args, context) {\n    return shouldRenderViewMode(args.link.view, context.site.mobileView);\n  }\n\n  @service site;\n\n  get iconClassName() {\n    return `header-icon-${dasherize(this.args.link.title)}`;\n  }\n\n  get isLastLink() {\n    return this.args.link === this.visibleLinks.at(-1);\n  }\n\n  get style() {\n    const numericWidth = Number(this.args.link.width);\n    // `!important` is needed to override the header icon width that core\n    // sets with `!important` when the \"modernize foundation theme\" upcoming\n    // change is enabled (`.uc-modernize-foundation-theme .d-header-icons\n    // .btn.icon { width: 2em !important }`).\n    return Number.isFinite(numericWidth)\n      ? htmlSafe(`width: ${escapeExpression(numericWidth)}px !important`)\n      : undefined;\n  }\n\n  get visibleLinks() {\n    return this.args.links.filter((link) =>\n      shouldRenderViewMode(link.view, this.site.mobileView)\n    );\n  }\n\n  <template>\n    <li\n      class={{concatClass\n        \"custom-header-icon-link\"\n        this.iconClassName\n        @link.view\n        (if this.isLastLink \"last-custom-icon\")\n      }}\n    >\n      <a\n        class=\"btn no-text icon btn-flat\"\n        href={{@link.url}}\n        title={{@link.title}}\n        target={{if (eq @link.target \"blank\") \"_blank\"}}\n        rel={{if @link.target \"noopener\"}}\n        style={{this.style}}\n      >\n        {{#if (isValidUrl @link.icon)}}\n          <img src={{@link.icon}} aria-hidden=\"true\" />\n          <span class=\"sr-only\">{{@link.title}}</span>\n        {{else}}\n          {{icon @link.icon label=@link.title}}\n        {{/if}}\n      </a>\n    </li>\n  </template>\n}\n","import curryComponent from \"ember-curry-component\";\nimport { getOwnerWithFallback } from \"discourse/lib/get-owner\";\nimport { withPluginApi } from \"discourse/lib/plugin-api\";\nimport CustomHeaderIcon from \"../components/custom-header-icon\";\n\nconst BEFORE_ICONS = [\"chat\", \"search\", \"hamburger\", \"user-menu\"];\n\nexport default {\n  name: \"header-icon-links\",\n  initialize() {\n    withPluginApi((api) => {\n      try {\n        const links = settings.header_links || [];\n\n        links.forEach((link) => {\n          api.headerIcons.add(\n            link.title,\n            curryComponent(\n              CustomHeaderIcon,\n              { link, links },\n              getOwnerWithFallback()\n            ),\n            {\n              before: BEFORE_ICONS,\n            }\n          );\n        });\n      } catch (error) {\n        // eslint-disable-next-line no-console\n        console.error(\n          error,\n          \"There's an issue in the header icon links component. Check if your settings are entered correctly\"\n        );\n      }\n    });\n  },\n};\n","import * as Mod1 from \"./discourse/components/custom-header-icon\";\nimport * as Mod2 from \"./discourse/initializers/initialize-for-header-icon-links\";\nimport * as Mod3 from \"./discourse/lib/isValidUrl\";\nconst compatModules = {\n  \"discourse/components/custom-header-icon\": Mod1,\n  \"discourse/initializers/initialize-for-header-icon-links\": Mod2,\n  \"discourse/lib/isValidUrl\": Mod3,\n};\nexport { compatModules };\nexport default compatModules;\n"],"names":["settings","getObjectForTheme","isValidUrl","string","URL","MOBILE_VIEWS","Set","DESKTOP_VIEWS","shouldRenderViewMode","view","isMobile","has","CustomHeaderIcon","Component","shouldRender","args","context","link","site","mobileView","dt7948","g","this","prototype","service","i","iconClassName","dasherize","title","isLastLink","visibleLinks","at","style","numericWidth","Number","width","isFinite","htmlSafe","escapeExpression","undefined","links","filter","setComponentTemplate","createTemplateFactory","id","block","moduleName","scope","concatClass","eq","icon","isStrictMode","BEFORE_ICONS","initializeForHeaderIconLinks","name","initialize","withPluginApi","api","header_links","forEach","headerIcons","add","curryComponent","getOwnerWithFallback","before","error","console","compatModules","Mod1","Mod3"],"mappings":"0oCAEaA,EAAWC,EAAkB;ACF3B,SAASC,EAAWC,GACjC,IAGE,GAFY,IAAIC,IAAID,GAGlB,OAAO,CAEX,CAAE,MACA,OAAO,CACT,CAEA,OAAO,CACT;ACFA,MAAME,EAAe,IAAIC,IAAI,CAAC,MAAO,QAC/BC,EAAgB,IAAID,IAAI,CAAC,MAAO;AAEtC,SAASE,EAAqBC,EAAMC,GAClC,OAAOA,EAAWL,EAAaM,IAAIF,GAAQF,EAAcI,IAAIF,EAC/D,CAEe,MAAMG,UAAyBC,EAC5C,mBAAOC,CAAaC,EAAMC,GACxB,OAAOR,EAAqBO,EAAKE,KAAKR,KAAMO,EAAQE,KAAKC,WAC3D,QAAAC,OAAAC,EAAAC,KAAAC,kBAECC,GAAA,CAAAN,QAAAE,OAAAK,EAAAH,KAAA;AAED,iBAAII,GACF,MAAO,eAAeC,EAAUL,KAAKP,KAAKE,KAAKW,QACjD,CAEA,cAAIC,GACF,OAAOP,KAAKP,KAAKE,OAASK,KAAKQ,aAAaC,MAC9C,CAEA,SAAIC,GACF,MAAMC,EAAeC,OAAOZ,KAAKP,KAAKE,KAAKkB;AAK3C,OAAOD,OAAOE,SAASH,GACnBI,EAAS,UAAUC,EAAiBL,wBACpCM,CACN,CAEA,gBAAIT,GACF,OAAOR,KAAKP,KAAKyB,MAAMC,OAAQxB,GAC7BT,EAAqBS,EAAKR,KAAMa,KAAKJ,KAAKC,YAE9C,QAEAuB,EAAAC,EAAA,CAAAC,GAAA,KAAAC,MAAA,2wBAAAC,WAAA,4BAAAC,MAAAA,KAAAA,CAAAC,cAAAC,KAAA/C,aAAAgD,SAAAC,cAAA,IAyBA7B,KAAU;;;ACrEZ,MAAM8B,EAAe,CAAC,OAAQ,SAAU,YAAa;AAErD,IAAAC,EAAe,CACbC,KAAM,oBACNC,UAAAA;8BACEC,CAAeC,IACb,IACE,MAAMjB,EAAQxC,EAAS0D,cAAgB;AAEvClB,EAAMmB,QAAS1C,IACbwC,EAAIG,YAAYC,IACd5C,EAAKW,MACLkC,EACElD,EACA,CAAEK,OAAMuB,SACRuB,KAEF,CACEC,OAAQZ,KAIhB,CAAE,MAAOa,GAEPC,QAAQD,MACNA,EACA,oGAEJ,GAEJ;AChCG,MAACE,EAAgB,CACpB,0CAA2CC,EAC3C,oGACA,2BAA4BC;"}