{"version":3,"file":"main.svMgrc.js","sources":["theme-4/virtual:theme","theme-4/discourse/components/google-fonts.gjs","theme-4/discourse/initializers/init-google-fonts.js","theme-4/virtual:entrypoint:main"],"sourcesContent":["import { getObjectForTheme } from \"discourse/lib/theme-settings-store\";\n\nexport const settings = getObjectForTheme(4);\n\nexport function themePrefix(key) {\n  return `theme_translations.4.${key}`;\n}\n","import Component from \"@glimmer/component\";\n\nexport default class GoogleFonts extends Component {\n  get fontLink() {\n    const fonts = settings.fonts;\n    const bodyFont = settings.body_font;\n    const bodyFontWeight = settings.body_font_weight || \"400\";\n    const headlineFont = settings.headline_font;\n    const headlineFontWeight = settings.headline_font_weight || \"700\";\n    const monospacedFont = settings.monospaced_font;\n    const monospacedFontWeight = settings.monospaced_font_weight || \"400\";\n\n    if (!fonts) {\n      return;\n    }\n\n    const fontFamilies = fonts.split(\"|\");\n    const fontConfigs = [];\n\n    fontFamilies.forEach((fontFamily) => {\n      if (!fontFamily.trim()) {\n        return;\n      }\n\n      let fontConfig = `family=${fontFamily.trim().replace(/ /g, \"+\")}`;\n      let weights = \"400;700\"; // default regular and bold weight\n      let isBodyFont = false;\n\n      if (fontFamily === bodyFont) {\n        weights = this.getWeightRange(bodyFontWeight);\n        isBodyFont = true;\n      } else if (fontFamily === headlineFont) {\n        weights = this.getWeightRange(headlineFontWeight);\n      } else if (fontFamily === monospacedFont) {\n        weights = this.getWeightRange(monospacedFontWeight);\n      }\n\n      const sortedWeights = weights\n        .split(\";\")\n        .sort((a, b) => parseInt(a, 10) - parseInt(b, 10));\n\n      // tuples must be sorted or the API will error\n      // if debugging, check the endpoint in the browser for error messages\n      if (isBodyFont) {\n        const sortedTuples = [];\n        sortedWeights.forEach((weight) => sortedTuples.push(`0,${weight}`));\n        sortedWeights.forEach((weight) => sortedTuples.push(`1,${weight}`));\n        fontConfig += `:ital,wght@${sortedTuples.join(\";\")}`;\n      } else {\n        fontConfig += `:wght@${sortedWeights.join(\";\")}`;\n      }\n\n      fontConfigs.push(fontConfig);\n    });\n\n    return fontConfigs.length ? fontConfigs.join(\"&\") : null;\n  }\n\n  getWeightRange(weight) {\n    const weightNum = parseInt(weight, 10) || 400;\n    const weights = new Set([400, weightNum]);\n\n    weights.add(700);\n\n    if (weightNum < 400) {\n      weights.add(weightNum);\n    }\n\n    return Array.from(weights)\n      .sort((a, b) => a - b)\n      .join(\";\");\n  }\n\n  <template>\n    {{#if this.fontLink}}\n      <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\" />\n      <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin />\n      <link\n        rel=\"stylesheet\"\n        href=\"https://fonts.googleapis.com/css2?{{this.fontLink}}&display=swap\"\n      />\n    {{/if}}\n  </template>\n}\n","import { apiInitializer } from \"discourse/lib/api\";\nimport GoogleFonts from \"../components/google-fonts\";\n\nexport default apiInitializer((api) => {\n  api.renderInOutlet(\"above-site-header\", GoogleFonts);\n});\n","import * as Mod1 from \"./discourse/components/google-fonts\";\nimport * as Mod2 from \"./discourse/initializers/init-google-fonts\";\nconst compatModules = {\n  \"discourse/components/google-fonts\": Mod1,\n  \"discourse/initializers/init-google-fonts\": Mod2,\n};\nexport { compatModules };\nexport default compatModules;\n"],"names":["settings","getObjectForTheme","GoogleFonts","Component","fontLink","fonts","bodyFont","body_font","bodyFontWeight","body_font_weight","headlineFont","headline_font","headlineFontWeight","headline_font_weight","monospacedFont","monospaced_font","monospacedFontWeight","monospaced_font_weight","fontFamilies","split","fontConfigs","forEach","fontFamily","trim","fontConfig","replace","weights","isBodyFont","this","getWeightRange","sortedWeights","sort","a","b","parseInt","sortedTuples","weight","push","join","length","weightNum","Set","add","Array","from","setComponentTemplate","createTemplateFactory","id","block","moduleName","isStrictMode","initGoogleFonts","apiInitializer","api","renderInOutlet","compatModules","Mod1"],"mappings":"qfAEaA,EAAWC,EAAkB;ACA3B,MAAMC,UAAoBC,EACvC,YAAIC,GACF,MAAMC,EAAQL,EAASK,MACjBC,EAAWN,EAASO,UACpBC,EAAiBR,EAASS,kBAAoB,MAC9CC,EAAeV,EAASW,cACxBC,EAAqBZ,EAASa,sBAAwB,MACtDC,EAAiBd,EAASe,gBAC1BC,EAAuBhB,EAASiB,wBAA0B;AAEhE,IAAKZ,EACH;AAGF,MAAMa,EAAeb,EAAMc,MAAM,KAC3BC,EAAc;AAsCpB,OApCAF,EAAaG,QAASC,IACpB,IAAKA,EAAWC,OACd;AAGF,IAAIC,EAAa,UAAUF,EAAWC,OAAOE,QAAQ,KAAM,OACvDC,EAAU,UACVC,GAAa;AAEbL,IAAehB,GACjBoB,EAAUE,KAAKC,eAAerB,GAC9BmB,GAAa,GACJL,IAAeZ,EACxBgB,EAAUE,KAAKC,eAAejB,GACrBU,IAAeR,IACxBY,EAAUE,KAAKC,eAAeb;AAGhC,MAAMc,EAAgBJ,EACnBP,MAAM,KACNY,KAAK,CAACC,EAAGC,IAAMC,SAASF,EAAG,IAAME,SAASD,EAAG;AAIhD,GAAIN,EAAY,CACd,MAAMQ,EAAe;AACrBL,EAAcT,QAASe,GAAWD,EAAaE,KAAK,KAAKD,MACzDN,EAAcT,QAASe,GAAWD,EAAaE,KAAK,KAAKD,MACzDZ,GAAc,cAAcW,EAAaG,KAAK,MAChD,MACEd,GAAc,SAASM,EAAcQ,KAAK;AAG5ClB,EAAYiB,KAAKb,KAGZJ,EAAYmB,OAASnB,EAAYkB,KAAK,KAAO,IACtD,CAEAT,cAAAA,CAAeO,GACb,MAAMI,EAAYN,SAASE,EAAQ,KAAO,IACpCV,EAAU,IAAIe,IAAI,CAAC,IAAKD;AAQ9B,OANAd,EAAQgB,IAAI,KAERF,EAAY,KACdd,EAAQgB,IAAIF,GAGPG,MAAMC,KAAKlB,GACfK,KAAK,CAACC,EAAGC,IAAMD,EAAIC,GACnBK,KAAK,IACV,QAEAO,EAAAC,EAAA,CAAAC,GAAA,KAAAC,MAAA,gaAAAC,WAAA,4BAAAC,cAAA,IASAtB,KAAU;;;AC/EZ,IAAAuB;oCAAeC,CAAgBC,IAC7BA,EAAIC,eAAe,oBAAqBpD;ACFrC,MAACqD,EAAgB,CACpB,oCAAqCC,EACrC;"}