{"version":3,"file":"main.lrXu15.js","sources":["theme-85/virtual:theme","theme-85/discourse/components/versatile-banner-column.hbs","theme-85/discourse/components/versatile-banner-column.js","theme-85/discourse/components/versatile-banner.hbs","theme-85/discourse/components/versatile-banner.js","theme-85/discourse/initializers/discourse-versatile-banner.js","theme-85/virtual:entrypoint:main"],"sourcesContent":["import { getObjectForTheme } from \"discourse/lib/theme-settings-store\";\n\nexport const settings = getObjectForTheme(85);\n\nexport function themePrefix(key) {\n  return `theme_translations.85.${key}`;\n}\n","{{#if (or @icon @columnContent)}}\n  <div class=\"{{@columnClass}} single-box\">\n    {{#if @icon}}\n      <div class=\"icon\">\n        {{#if this.isHttpLink}}\n          <img class=\"responsive-img\" src={{@icon}} alt=\"Icon\" />\n        {{else}}\n          {{d-icon @icon}}\n        {{/if}}\n      </div>\n    {{/if}}\n    {{#if @columnContent}}\n      <div>\n        {{html-safe @columnContent}}\n      </div>\n    {{/if}}\n  </div>\n{{/if}}","import Component from \"@glimmer/component\";\n\nexport default class VersatileBannerColumn extends Component {\n  get isHttpLink() {\n    return this.args.icon.startsWith(\"http\");\n  }\n}\n","{{#if this.shouldShow}}\n  {{#unless this.bannerClosed}}\n    <div class=\"bulletin-box\">\n      <div class=\"container\">\n        <div class=\"button-container\">\n          {{#if (theme-setting \"dismissible\")}}\n            <DButton\n              @action={{this.closeBanner}}\n              @translatedLabel={{theme-i18n \"close.label\"}}\n              @translatedTitle={{theme-i18n \"close.title\"}}\n              @icon=\"xmark\"\n              class=\"close\"\n            />\n          {{/if}}\n          {{#if (theme-setting \"collapsible\")}}\n            <DButton\n              @action={{this.toggleBanner}}\n              @translatedLabel={{this.toggleLabel}}\n              @translatedTitle={{theme-i18n \"toggle.title\"}}\n              @icon={{this.toggleIcon}}\n              class=\"toggle\"\n            />\n          {{/if}}\n        </div>\n        <div class=\"section-header\">\n          {{html-safe (theme-setting \"main_heading_content\")}}\n        </div>\n        <div\n          id=\"banner-content_wrap\"\n          class={{if\n            (and (theme-setting \"collapsible\") this.bannerCollapsed)\n            \"--banner-collapsed\"\n          }}\n        >\n          <div class=\"row\">\n            {{#each this.columnData as |data|}}\n              <VersatileBannerColumn\n                @columnContent={{data.content}}\n                @icon={{data.icon}}\n                @columnClass={{data.class}}\n              />\n            {{/each}}\n          </div>\n        </div>\n      </div>\n    </div>\n  {{/unless}}\n{{/if}}\n","import Component from \"@glimmer/component\";\nimport { tracked } from \"@glimmer/tracking\";\nimport { action } from \"@ember/object\";\nimport { service } from \"@ember/service\";\nimport cookie, { removeCookie } from \"discourse/lib/cookie\";\nimport { convertIconClass } from \"discourse/lib/icon-library\";\nimport { defaultHomepage } from \"discourse/lib/utilities\";\nimport { i18n } from \"discourse-i18n\";\n\nexport default class VersatileBanner extends Component {\n  @service router;\n  @service site;\n  @service currentUser;\n  @tracked bannerClosed = this.closedFromCookie || false;\n  @tracked\n  bannerCollapsed =\n    this.collapsedFromCookie !== null\n      ? this.collapsedFromCookie\n      : this.isDefaultCollapsed;\n\n  cookieClosed = cookie(\"banner_closed\");\n  cookieCollapsed = cookie(\"banner_collapsed\");\n  isDefaultCollapsed = settings.default_collapsed_state === \"collapsed\";\n  collapsedFromCookie = this.cookieCollapsed\n    ? JSON.parse(this.cookieCollapsed).collapsed\n    : null;\n  closedFromCookie = (this.cookieClosed  && JSON.parse(this.cookieClosed).name === settings.cookie_name)\n    ? JSON.parse(this.cookieClosed).closed\n    : null;\n  columnData = [\n    {\n      content: settings.first_column_content,\n      class: \"first_column\",\n      icon: convertIconClass(settings.first_column_icon),\n    },\n    {\n      content: settings.second_column_content,\n      class: \"second_column\",\n      icon: convertIconClass(settings.second_column_icon),\n    },\n    {\n      content: settings.third_column_content,\n      class: \"third_column\",\n      icon: convertIconClass(settings.third_column_icon),\n    },\n    {\n      content: settings.fourth_column_content,\n      class: \"fourth_column\",\n      icon: convertIconClass(settings.fourth_column_icon),\n    },\n  ];\n\n  get cookieExpirationDate() {\n    if (settings.cookie_lifespan === \"none\") {\n      removeCookie(\"banner_closed\", { path: \"/\" });\n      removeCookie(\"banner_collapsed\", { path: \"/\" });\n    } else {\n      return moment().add(1, settings.cookie_lifespan).toDate();\n    }\n  }\n\n  get displayForUser() {\n    return (\n      (settings.show_for_members && this.currentUser) ||\n      (settings.show_for_anon && !this.currentUser)\n    );\n  }\n\n  get showOnRoute() {\n    const path = this.router.currentURL;\n\n    if (\n      settings.display_on_homepage &&\n      this.router.currentRouteName === `discovery.${defaultHomepage()}`\n    ) {\n      return true;\n    }\n\n    if (settings.url_must_contain.length) {\n      const allowedPaths = settings.url_must_contain.split(\"|\");\n      return allowedPaths.some((allowedPath) => {\n        if (allowedPath.slice(-1) === \"*\") {\n          return path.indexOf(allowedPath.slice(0, -1)) === 0;\n        }\n        return path === allowedPath;\n      });\n    }\n  }\n\n  get shouldShow() {\n    return this.displayForUser && this.showOnRoute;\n  }\n\n  get toggleLabel() {\n    return this.bannerCollapsed\n      ? i18n(themePrefix(\"toggle.expand_label\"))\n      : i18n(themePrefix(\"toggle.collapse_label\"));\n  }\n\n  get toggleIcon() {\n    return this.bannerCollapsed ? \"chevron-down\" : \"chevron-up\";\n  }\n\n  @action\n  closeBanner() {\n    this.bannerClosed = true;\n\n    if (this.cookieExpirationDate) {\n      const bannerState = { name: settings.cookie_name, closed: \"true\" };\n      cookie(\"banner_closed\", JSON.stringify(bannerState), {\n        expires: this.cookieExpirationDate,\n        path: \"/\",\n      });\n    }\n  }\n\n  @action\n  toggleBanner() {\n    this.bannerCollapsed = !this.bannerCollapsed;\n    let bannerState = {\n      name: settings.cookie_name,\n      collapsed: this.bannerCollapsed,\n    };\n\n    if (this.cookieExpirationDate) {\n      if (this.cookieCollapsed) {\n        bannerState = JSON.parse(this.cookieCollapsed);\n        bannerState.collapsed = this.bannerCollapsed;\n      }\n    } else {\n      bannerState.collapsed = this.bannerCollapsed;\n    }\n\n    cookie(\"banner_collapsed\", JSON.stringify(bannerState), {\n      expires: this.cookieExpirationDate,\n      path: \"/\",\n    });\n  }\n}\n","import { apiInitializer } from \"discourse/lib/api\";\nimport VersatileBanner from \"../components/versatile-banner\";\n\nexport default apiInitializer(\"1.15.0\", (api) => {\n  api.renderInOutlet(settings.plugin_outlet, VersatileBanner);\n});\n","import * as Mod1 from \"./discourse/components/versatile-banner-column\";\nimport * as Mod2 from \"./discourse/components/versatile-banner\";\nimport * as Mod3 from \"./discourse/initializers/discourse-versatile-banner\";\nconst compatModules = {\n  \"discourse/components/versatile-banner-column\": Mod1,\n  \"discourse/components/versatile-banner\": Mod2,\n  \"discourse/initializers/discourse-versatile-banner\": Mod3,\n};\nexport default compatModules;\n"],"names":["settings","getObjectForTheme","themePrefix","key","template$1","createTemplateFactory","id","block","moduleName","isStrictMode","deprecated","url","VersatileBannerColumn","Component","isHttpLink","this","args","icon","startsWith","_setComponentTemplate","__COLOCATED_TEMPLATE__","template","VersatileBanner","dt7948","g","prototype","service","router","i","site","currentUser","tracked","closedFromCookie","bannerClosed","collapsedFromCookie","isDefaultCollapsed","bannerCollapsed","cookieClosed","cookie","cookieCollapsed","default_collapsed_state","JSON","parse","collapsed","name","cookie_name","closed","columnData","content","first_column_content","class","convertIconClass","first_column_icon","second_column_content","second_column_icon","third_column_content","third_column_icon","fourth_column_content","fourth_column_icon","cookieExpirationDate","cookie_lifespan","moment","add","toDate","removeCookie","path","displayForUser","show_for_members","show_for_anon","showOnRoute","currentURL","display_on_homepage","currentRouteName","defaultHomepage","url_must_contain","length","split","some","allowedPath","slice","indexOf","shouldShow","toggleLabel","i18n","toggleIcon","closeBanner","bannerState","stringify","expires","n","action","toggleBanner","discourseVersatileBanner","apiInitializer","api","renderInOutlet","plugin_outlet","compatModules","Mod1","Mod2"],"mappings":"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"}