{"version":3,"file":"virtual_main.js","sources":["theme-3/virtual:init-settings","theme-3/virtual:theme","theme-3/discourse/components/google-fonts.gjs","theme-3/discourse/initializers/init-google-fonts.js","theme-3/virtual:main"],"sourcesContent":["import { registerSettings } from \"discourse/lib/theme-settings-store\";\n\nregisterSettings(3, {\n  \"fonts\": \"Lato\",\n  \"body_font\": \"Lato\",\n  \"body_font_weight\": 400,\n  \"headline_font\": \"\",\n  \"headline_font_weight\": 900,\n  \"monospaced_font\": \"\",\n  \"monospaced_font_weight\": 400,\n  \"normal_font_size\": \"16px\",\n  \"smaller_font_size\": \"15px\",\n  \"larger_font_size\": \"17px\",\n  \"largest_font_size\": \"19px\"\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\";\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(\"1.0\", (api) => {\n  api.renderInOutlet(\"above-site-header\", GoogleFonts);\n});\n","import \"virtual:init-settings\";\n\nconst themeCompatModules = {};\nimport * as Mod1 from \"./discourse/components/google-fonts\";\nthemeCompatModules[\"discourse/components/google-fonts\"] = Mod1;\n\nimport * as Mod2 from \"./discourse/initializers/init-google-fonts\";\nthemeCompatModules[\"discourse/initializers/init-google-fonts\"] = Mod2;\n\nexport default themeCompatModules;\n"],"names":["registerSettings","fonts","body_font","body_font_weight","headline_font","headline_font_weight","monospaced_font","monospaced_font_weight","normal_font_size","smaller_font_size","larger_font_size","largest_font_size","settings","getObjectForTheme","GoogleFonts","Component","fontLink","bodyFont","bodyFontWeight","headlineFont","headlineFontWeight","monospacedFont","monospacedFontWeight","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","static","setComponentTemplate","createTemplateFactory","id","block","moduleName","isStrictMode","initGoogleFonts","apiInitializer","api","renderInOutlet","themeCompatModules","Mod1","Mod2"],"mappings":";AAEAA,EAAiB,EAAG,CAClBC,MAAS,OACTC,UAAa,OACbC,iBAAoB,IACpBC,cAAiB,GACjBC,qBAAwB,IACxBC,gBAAmB,GACnBC,uBAA0B,IAC1BC,iBAAoB,OACpBC,kBAAqB,OACrBC,iBAAoB,OACpBC,kBAAqB;ACXhB,MAAMC,EAAWC,EAAkB;ACA3B,MAAMC,UAAoBC,EACvC,YAAIC,GACF,MAAMf,EAAQW,EAASX,MACjBgB,EAAWL,EAASV,UACpBgB,EAAiBN,EAAST,kBAAoB,MAC9CgB,EAAeP,EAASR,cACxBgB,EAAqBR,EAASP,sBAAwB,MACtDgB,EAAiBT,EAASN,gBAC1BgB,EAAuBV,EAASL,wBAA0B;AAEhE,IAAKN,EACH;AAGF,MAAMsB,EAAetB,EAAMuB,MAAM,KAC3BC,EAAc;AAsCpB,OApCAF,EAAaG,QAASC,IACpB,IAAKA,EAAWC,OACd;AAGF,IAAIC,EAAa,UAAUF,EAAWC,OAAOE,QAAQ,KAAM,OACvDC,EAAU,UACVC,GAAa;AAEbL,IAAeV,GACjBc,EAAUE,KAAKC,eAAehB,GAC9Bc,GAAa,GACJL,IAAeR,EACxBY,EAAUE,KAAKC,eAAed,GACrBO,IAAeN,IACxBU,EAAUE,KAAKC,eAAeZ;AAGhC,MAAMa,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,CAAAO,SAAA,KAAAC,EAAAC,EAAA,CAAAC,GAAA,KAAAC,MAAA,qcAAAC,WAAA,iDAAAC,cAAA,IAWAvB,MAXA,mDCpEFwB,EAAeC,EAAe,MAAQC,IACpCA,EAAIC,eAAe,oBAAqB9C;ACFrC,MAAC+C,EAAqB,CAAA;AAE3BA,EAAmB,qCAAuCC,EAG1DD,EAAmB,4CAA8CE;"}