{"version":3,"file":"main.Rl3GSy.js","sources":["theme-43/virtual:theme","theme-43/discourse/initializers/initialize-discourse-post-badges.gjs","theme-43/virtual:entrypoint:main"],"sourcesContent":["import { getObjectForTheme } from \"discourse/lib/theme-settings-store\";\n\nexport const settings = getObjectForTheme(43);\n\nexport function themePrefix(key) {\n  return `theme_translations.43.${key}`;\n}\n","import { htmlSafe } from \"@ember/template\";\nimport { iconHTML } from \"discourse/lib/icon-library\";\nimport { withPluginApi } from \"discourse/lib/plugin-api\";\n\nconst BADGE_CLASS = [\n  \"badge-type-gold\",\n  \"badge-type-silver\",\n  \"badge-type-bronze\",\n];\n\nconst TRUST_LEVEL_BADGE = [\"basic\", \"member\", \"regular\", \"leader\"];\n\nconst USER_BADGE_PAGE = \"user's badge page\";\n\nfunction buildBadge(badge) {\n  let iconBody;\n\n  if (badge.image) {\n    const img = document.createElement(\"img\");\n    img.setAttribute(\"src\", badge.image);\n    iconBody = img.outerHTML;\n  } else if (badge.icon) {\n    iconBody = iconHTML(badge.icon);\n  }\n\n  if (badge.url) {\n    const link = document.createElement(\"a\");\n    link.setAttribute(\"href\", badge.url);\n    link.innerHTML = iconBody;\n    iconBody = link;\n  }\n\n  const span = document.createElement(\"span\");\n  span.classList.add(\"poster-icon\");\n  span.classList.add(badge.className);\n  if (badge.id >= 1 && badge.id <= 4) {\n    // trust level badge\n    span.classList.add(TRUST_LEVEL_BADGE[badge.id - 1]);\n  }\n  span.setAttribute(\"title\", badge.title);\n  span.appendChild(iconBody);\n  return span;\n}\n\nfunction prepareBadges(allSerializedBadges, displayedBadges, username) {\n  let badgePage = \"\";\n\n  const isUserBadgePage = settings.badge_link_destination === USER_BADGE_PAGE;\n  if (isUserBadgePage) {\n    badgePage = `?username=${username}`;\n  }\n\n  return allSerializedBadges\n    .filter((badge) => displayedBadges.includes(badge.name.toLowerCase()))\n    .sort((a, b) => {\n      return (\n        displayedBadges.indexOf(a.name.toLowerCase()) -\n        displayedBadges.indexOf(b.name.toLowerCase())\n      );\n    })\n    .map((badge) => {\n      return {\n        icon: badge.icon.replace(\"fa-\", \"\"),\n        image: badge.image_url ? badge.image_url : badge.image,\n        className: BADGE_CLASS[badge.badge_type_id - 1],\n        name: badge.slug,\n        id: badge.id,\n        badgeGroup: badge.badge_grouping_id,\n        title: badge.description,\n        url: `/badges/${badge.id}/${badge.slug}${badgePage}`,\n      };\n    });\n}\n\nfunction renderBadges(preparedBadges) {\n  return htmlSafe(\n    preparedBadges.map((badge) => buildBadge(badge).outerHTML).join(\"\")\n  );\n}\n\nexport default {\n  name: \"discourse-post-badges\",\n\n  initialize(container) {\n    withPluginApi((api) => {\n      const site = container.lookup(\"service:site\");\n      const displayedBadges = settings.badges\n        .split(\"|\")\n        .filter(Boolean)\n        .map((badge) => badge.toLowerCase());\n\n      function renderBadgeHtml(post) {\n        if (post.userBadges) {\n          const preparedBadges = prepareBadges(\n            post.userBadges,\n            displayedBadges,\n            post.username\n          );\n          return renderBadges(preparedBadges);\n        }\n      }\n\n      api.renderInOutlet(\n        \"post-meta-data-poster-name__before\",\n        <template>\n          {{#if site.mobileView}}\n            <div class=\"poster-icon-container\">{{renderBadgeHtml @post}}</div>\n          {{/if}}\n        </template>\n      );\n\n      api.renderInOutlet(\n        \"post-meta-data-poster-name__after\",\n        <template>\n          {{#if site.desktopView}}\n            <div class=\"poster-icon-container\">{{renderBadgeHtml @post}}</div>\n          {{/if}}\n        </template>\n      );\n\n      api.registerValueTransformer(\n        \"post-article-class\",\n        ({ value: classes, context }) => {\n          let trustLevel = \"\";\n          let highestBadge = 0;\n          context.post.userBadges?.forEach((badge) => {\n            if (badge.badge_grouping_id === 4 && badge.id > highestBadge) {\n              highestBadge = badge.id;\n              trustLevel = `${TRUST_LEVEL_BADGE[highestBadge - 1]}-highest`;\n            }\n          });\n\n          if (trustLevel) {\n            classes.push(trustLevel);\n          }\n\n          return classes;\n        }\n      );\n    });\n  },\n};\n","import * as Mod1 from \"./discourse/initializers/initialize-discourse-post-badges\";\nconst compatModules = {\n  \"discourse/initializers/initialize-discourse-post-badges\": Mod1,\n};\nexport { compatModules };\nexport default compatModules;\n"],"names":["settings","getObjectForTheme","BADGE_CLASS","TRUST_LEVEL_BADGE","renderBadges","preparedBadges","htmlSafe","map","badge","iconBody","image","img","document","createElement","setAttribute","outerHTML","icon","iconHTML","url","link","innerHTML","span","classList","add","className","id","title","appendChild","buildBadge","join","initializeDiscoursePostBadges","name","initialize","container","withPluginApi","api","site","lookup","displayedBadges","badges","split","filter","Boolean","toLowerCase","renderBadgeHtml","post","userBadges","allSerializedBadges","username","badgePage","badge_link_destination","includes","sort","a","b","indexOf","replace","image_url","badge_type_id","slug","badgeGroup","badge_grouping_id","description","prepareBadges","renderInOutlet","setComponentTemplate","createTemplateFactory","block","moduleName","scope","isStrictMode","templateOnly","registerValueTransformer","value","classes","context","trustLevel","highestBadge","forEach","push","compatModules"],"mappings":"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"}