{"version":3,"file":"main.js","sources":["theme-2/virtual:init-settings","theme-2/virtual:theme","theme-2/discourse/components/versatile-banner-column.gjs","theme-2/discourse/components/versatile-banner.gjs","theme-2/discourse/initializers/discourse-versatile-banner.js","theme-2/virtual:entrypoint:main"],"sourcesContent":["import { registerSettings } from \"discourse/lib/theme-settings-store\";\n\nregisterSettings(2, {\n  \"show_for_members\": true,\n  \"show_for_anon\": true,\n  \"display_on_mobile\": false,\n  \"display_on_desktop\": true,\n  \"display_on_homepage\": true,\n  \"url_must_contain\": \"/latest|/categories|/new|/unread|/top*|/tag/*|/tags/*\",\n  \"dismissible\": false,\n  \"collapsible\": false,\n  \"default_collapsed_state\": \"collapsed\",\n  \"cookie_lifespan\": \"none\",\n  \"cookie_name\": \"v1\",\n  \"full_width_banner\": true,\n  \"swap_default_positioning\": false,\n  \"plugin_outlet\": \"below-site-header\",\n  \"banner_background_image\": \"https://neurostars.org/uploads/default/original/3X/6/5/650cca13999298f35fb2e713809a6ffa7275e7a6.jpg\",\n  \"banner_background_image_dark\": \"\",\n  \"background_color\": \"#EED4A1\",\n  \"background_color_dark\": \"\",\n  \"primary_text_color\": \"#fff\",\n  \"primary_text_color_dark\": \"\",\n  \"secondary_text_color\": \"#fff\",\n  \"secondary_text_color_dark\": \"\",\n  \"link_text_color\": \"#0f82af\",\n  \"link_text_color_dark\": \"\",\n  \"main_heading_content\": \"<h2 class=\\\"x-title\\\">\\n Welcome to INCF Neurostars.\\n</h2>\\n<div class=\\\"description\\\">\\n  <p>\\nA question and answer forum for neuroscience researchers, infrastructure providers and software developers.\\n  </p>\\n</div>\\n<div class=\\\"colored-line\\\"></div>\",\n  \"first_column_content\": \"\\n<h3>How to start</h3>\\n<p>\\n  If you are here for the first time, say hello and <a href=\\\"https://neurostars.org/t/introduce-yourself/5526\\\"> introduce yourself!</a> <br> Please visit the <a href=\\\"https://neurostars.org/t/welcome-to-neurostars-how-to-use-this-site/5527\\\">\\\"Welcome\\\"</a> post to learn how to use the forum.</p>\\n\\n  </ul>\\n</div>\",\n  \"second_column_content\": \"\\n   <h3>Some important links</h3>\\n   <div class=\\\"banner-list\\\">\\n     <ul>\\n       <li><a href=\\\"https://training.incf.org\\\" target=\\\"_blank\\\">INCF TrainingSpace</a><span> - Neuroscience educational materials</span> </li>\\n           <li><a href=\\\"https://knowledge-space.org/\\\" target=\\\"_blank\\\">INCF KnowledgeSpace</a><span> - Community encyclopedia for neuroscience</span></li>\\n       <li><a href=\\\"https://incf.org\\\" target=\\\"_blank\\\">INCF.org  </a><span> - INCF portal for FAIR neuroscience </span></li>\\n     <ul>\\n\\n\\n   </div>\",\n  \"third_column_content\": \"\",\n  \"fourth_column_content\": \"\",\n  \"fifth_column_content\": \"\",\n  \"first_column_size\": \"auto\",\n  \"second_column_size\": \"auto\",\n  \"third_column_size\": \"auto\",\n  \"fourth_column_size\": \"auto\",\n  \"fifth_column_size\": \"\",\n  \"first_column_icon\": \"\",\n  \"second_column_icon\": \"\",\n  \"third_column_icon\": \"\",\n  \"fourth_column_icon\": \"\",\n  \"fifth_column_icon\": \"\"\n});\n","import { getObjectForTheme } from \"discourse/lib/theme-settings-store\";\n\nexport const settings = getObjectForTheme(2);\n\nexport function themePrefix(key) {\n  return `theme_translations.2.${key}`;\n}\n","import Component from \"@glimmer/component\";\nimport { htmlSafe } from \"@ember/template\";\nimport icon from \"discourse/helpers/d-icon\";\nimport { or } from \"discourse/truth-helpers\";\n\nexport default class VersatileBannerColumn extends Component {\n  get isHttpLink() {\n    return this.args.icon.startsWith(\"http\");\n  }\n\n  <template>\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              {{icon @icon}}\n            {{/if}}\n          </div>\n        {{/if}}\n        {{#if @columnContent}}\n          <div>\n            {{htmlSafe @columnContent}}\n          </div>\n        {{/if}}\n      </div>\n    {{/if}}\n  </template>\n}\n","import Component from \"@glimmer/component\";\nimport { tracked } from \"@glimmer/tracking\";\nimport { action } from \"@ember/object\";\nimport { service } from \"@ember/service\";\nimport { htmlSafe } from \"@ember/template\";\nimport DButton from \"discourse/components/d-button\";\nimport cookie, { removeCookie } from \"discourse/lib/cookie\";\nimport { convertIconClass } from \"discourse/lib/icon-library\";\nimport { defaultHomepage } from \"discourse/lib/utilities\";\nimport { and } from \"discourse/truth-helpers\";\nimport { i18n } from \"discourse-i18n\";\nimport VersatileBannerColumn from \"./versatile-banner-column\";\n\nexport default class VersatileBanner extends Component {\n  @service router;\n  @service currentUser;\n\n  @tracked bannerClosed = this.cookieClosed || 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  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      content: settings.fifth_column_content,\n      class: \"fifth_column\",\n      icon: convertIconClass(settings.fifth_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  <template>\n    {{#if this.shouldShow}}\n      {{#unless this.bannerClosed}}\n        <div class=\"banner-box\">\n          <div class=\"container\">\n            <div class=\"button-container\">\n              {{#if settings.dismissible}}\n                <DButton\n                  @action={{this.closeBanner}}\n                  @translatedLabel={{i18n (themePrefix \"close.label\")}}\n                  @translatedTitle={{i18n (themePrefix \"close.title\")}}\n                  @icon=\"xmark\"\n                  class=\"close\"\n                />\n              {{/if}}\n              {{#if settings.collapsible}}\n                <DButton\n                  @action={{this.toggleBanner}}\n                  @translatedLabel={{this.toggleLabel}}\n                  @translatedTitle={{i18n (themePrefix \"toggle.title\")}}\n                  @icon={{this.toggleIcon}}\n                  class=\"toggle\"\n                />\n              {{/if}}\n            </div>\n            <div class=\"section-header\">\n              {{htmlSafe settings.main_heading_content}}\n            </div>\n            <div\n              id=\"banner-content_wrap\"\n              class={{if\n                (and settings.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  </template>\n}\n","import { apiInitializer } from \"discourse/lib/api\";\nimport VersatileBanner from \"../components/versatile-banner\";\n\nexport default apiInitializer((api) => {\n  api.renderInOutlet(settings.plugin_outlet, VersatileBanner);\n});\n","const compatModules = {};import \"virtual:init-settings\";\nimport * as Mod1 from \"./discourse/components/versatile-banner-column\";\ncompatModules[\"discourse/components/versatile-banner-column\"] = Mod1;\n\nexport * as discourse$components$versatile__banner__column$$__module from \"./discourse/components/versatile-banner-column\";\nexport {\ndefault as discourse$components$versatile__banner__column$$default\n} from \"./discourse/components/versatile-banner-column\";\nimport * as Mod2 from \"./discourse/components/versatile-banner\";\ncompatModules[\"discourse/components/versatile-banner\"] = Mod2;\n\nexport * as discourse$components$versatile__banner$$__module from \"./discourse/components/versatile-banner\";\nexport {\ndefault as discourse$components$versatile__banner$$default\n} from \"./discourse/components/versatile-banner\";\nimport * as Mod3 from \"./discourse/initializers/discourse-versatile-banner\";\ncompatModules[\"discourse/initializers/discourse-versatile-banner\"] = Mod3;\n\nexport * as discourse$initializers$discourse__versatile__banner$$__module from \"./discourse/initializers/discourse-versatile-banner\";\nexport {\ndefault as discourse$initializers$discourse__versatile__banner$$default\n} from \"./discourse/initializers/discourse-versatile-banner\";\nexport default compatModules;\n"],"names":["registerSettings","show_for_members","show_for_anon","display_on_mobile","display_on_desktop","display_on_homepage","url_must_contain","dismissible","collapsible","default_collapsed_state","cookie_lifespan","cookie_name","full_width_banner","swap_default_positioning","plugin_outlet","banner_background_image","banner_background_image_dark","background_color","background_color_dark","primary_text_color","primary_text_color_dark","secondary_text_color","secondary_text_color_dark","link_text_color","link_text_color_dark","main_heading_content","first_column_content","second_column_content","third_column_content","fourth_column_content","fifth_column_content","first_column_size","second_column_size","third_column_size","fourth_column_size","fifth_column_size","first_column_icon","second_column_icon","third_column_icon","fourth_column_icon","fifth_column_icon","settings","getObjectForTheme","themePrefix","key","VersatileBannerColumn","Component","isHttpLink","this","args","icon","startsWith","setComponentTemplate","createTemplateFactory","id","block","moduleName","scope","or","htmlSafe","isStrictMode","VersatileBanner","dt7948","g","prototype","service","router","i","currentUser","tracked","cookieClosed","bannerClosed","collapsedFromCookie","isDefaultCollapsed","bannerCollapsed","cookie","cookieCollapsed","JSON","parse","collapsed","columnData","content","class","convertIconClass","cookieExpirationDate","moment","add","toDate","removeCookie","path","displayForUser","showOnRoute","currentURL","currentRouteName","defaultHomepage","length","split","some","allowedPath","slice","indexOf","shouldShow","toggleLabel","i18n","toggleIcon","closeBanner","bannerState","name","closed","stringify","expires","n","action","toggleBanner","DButton","and","discourseVersatileBanner","apiInitializer","api","renderInOutlet","compatModules","Mod1","Mod2","Mod3"],"mappings":"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"}