{"version":3,"file":"virtual_main.js","sources":["theme-18/virtual:init-settings","theme-18/virtual:theme","theme-18/discourse/components/versatile-banner-column.gjs","theme-18/discourse/components/versatile-banner.gjs","theme-18/discourse/initializers/discourse-versatile-banner.js","theme-18/virtual:main"],"sourcesContent":["import { registerSettings } from \"discourse/lib/theme-settings-store\";\n\nregisterSettings(18, {\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\": \"/community/forums/*|/community/forums*|*\",\n  \"dismissible\": false,\n  \"collapsible\": false,\n  \"default_collapsed_state\": \"collapsed\",\n  \"cookie_lifespan\": \"none\",\n  \"cookie_name\": \"v1\",\n  \"full_width_banner\": false,\n  \"swap_default_positioning\": false,\n  \"plugin_outlet\": \"below-site-header\",\n  \"banner_background_image\": \"\",\n  \"banner_background_image_dark\": \"\",\n  \"background_color\": \"transparent\",\n  \"background_color_dark\": \"transparent\",\n  \"primary_text_color\": \"#FFFFFF\",\n  \"primary_text_color_dark\": \"\",\n  \"secondary_text_color\": \"#FFFFFF\",\n  \"secondary_text_color_dark\": \"\",\n  \"link_text_color\": \"#09ce5a\",\n  \"link_text_color_dark\": \"\",\n  \"main_heading_content\": \"<div class=\\\"vertical-banner-container\\\">\\n    <div class=\\\"intro-banner\\\">\\n        <div class=\\\"mini-text-banner\\\">\\n        Welcome to the\\n        </div>\\n        <div class=\\\"x-title\\\" id=\\\"intro-banner-title\\\">\\n        <span></span><div id=\\\"intro-banner-section\\\"><span></span></div>\\n        </div>\\n        \\n    </div>\\n    <div class=\\\"float-child\\\">\\n        <img id=\\\"intro-banner-image\\\" src=\\\"https://mdb-community.s3.amazonaws.com/common/clear-icon.png\\\" alt=\\\"developer-image\\\" width=\\\"338\\\" height=\\\"300\\\"> \\n    </div>\\n</div>\\n    \",\n  \"first_column_content\": \"\",\n  \"second_column_content\": \"\",\n  \"third_column_content\": \"\",\n  \"fourth_column_content\": \"\",\n  \"first_column_size\": \"auto\",\n  \"second_column_size\": \"auto\",\n  \"third_column_size\": \"auto\",\n  \"fourth_column_size\": \"\",\n  \"first_column_icon\": \"\",\n  \"second_column_icon\": \"\",\n  \"third_column_icon\": \"\",\n  \"fourth_column_icon\": \"\"\n});\n","import { getObjectForTheme } from \"discourse/lib/theme-settings-store\";\n\nexport const settings = getObjectForTheme(18);\n\nexport function themePrefix(key) {\n  return `theme_translations.18.${key}`;\n}\n","import Component from \"@glimmer/component\";\nimport { or } from \"truth-helpers\";\nimport icon from \"discourse/helpers/d-icon\";\nimport htmlSafe from \"discourse/helpers/html-safe\";\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 { and } from \"truth-helpers\";\nimport DButton from \"discourse/components/d-button\";\nimport htmlSafe from \"discourse/helpers/html-safe\";\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\";\nimport VersatileBannerColumn from \"./versatile-banner-column\";\n\nexport default class VersatileBanner extends Component {\n  @service router;\n  @service site;\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\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(\"1.15.0\", (api) => {\n  api.renderInOutlet(settings.plugin_outlet, VersatileBanner);\n});\n","import \"virtual:init-settings\";\n\nconst themeCompatModules = {};\nimport * as Mod1 from \"./discourse/components/versatile-banner-column\";\nthemeCompatModules[\"discourse/components/versatile-banner-column\"] = Mod1;\n\nimport * as Mod2 from \"./discourse/components/versatile-banner\";\nthemeCompatModules[\"discourse/components/versatile-banner\"] = Mod2;\n\nimport * as Mod3 from \"./discourse/initializers/discourse-versatile-banner\";\nthemeCompatModules[\"discourse/initializers/discourse-versatile-banner\"] = Mod3;\n\nexport default themeCompatModules;\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","first_column_size","second_column_size","third_column_size","fourth_column_size","first_column_icon","second_column_icon","third_column_icon","fourth_column_icon","settings","getObjectForTheme","themePrefix","key","VersatileBannerColumn","Component","isHttpLink","this","args","icon","startsWith","static","setComponentTemplate","createTemplateFactory","id","block","moduleName","scope","or","htmlSafe","isStrictMode","VersatileBanner","dt7948","g","prototype","service","router","i","site","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","themeCompatModules","Mod1","Mod2","Mod3"],"mappings":";AAEAA,EAAiB,GAAI,CACnBC,kBAAoB,EACpBC,eAAiB,EACjBC,mBAAqB,EACrBC,oBAAsB,EACtBC,qBAAuB,EACvBC,iBAAoB,2CACpBC,aAAe,EACfC,aAAe,EACfC,wBAA2B,YAC3BC,gBAAmB,OACnBC,YAAe,KACfC,mBAAqB,EACrBC,0BAA4B,EAC5BC,cAAiB,oBACjBC,wBAA2B,GAC3BC,6BAAgC,GAChCC,iBAAoB,cACpBC,sBAAyB,cACzBC,mBAAsB,UACtBC,wBAA2B,GAC3BC,qBAAwB,UACxBC,0BAA6B,GAC7BC,gBAAmB,UACnBC,qBAAwB,GACxBC,qBAAwB,mhBACxBC,qBAAwB,GACxBC,sBAAyB,GACzBC,qBAAwB,GACxBC,sBAAyB,GACzBC,kBAAqB,OACrBC,mBAAsB,OACtBC,kBAAqB,OACrBC,mBAAsB,GACtBC,kBAAqB,GACrBC,mBAAsB,GACtBC,kBAAqB,GACrBC,mBAAsB;ACrCjB,MAAMC,EAAWC,EAAkB;AAEnC,SAASC,EAAYC,GAC1B,MAAO,yBAAyBA,GAClC,CCDe,MAAMC,UAA8BC,EACjD,cAAIC,GACF,OAAOC,KAAKC,KAAKC,KAAKC,WAAW,OACnC,CAAAC,SAAA,KAAAC,EAAAC,EAAA,CAAAC,GAAA,KAAAC,MAAA,mrBAAAC,WAAA,6DAAAC,MAAAA,IAAA,CAAAC,EAAAT,EAAAU,GAAAC,cAAA,IAqBAb,MArBA;ACKa,MAAMc,UAAwBhB,EAAAM,cAAAW,OAAAC,EAAAhB,KAAAiB,oBAC1CC;AAAAC,GAAA,MAAAJ,OAAAK,gBAAA,EAAA;AAAAhB,cAAAW,OAAAC,EAAAhB,KAAAiB,kBACAC;AAAAG,GAAA,MAAAN,OAAAK,cAAA,EAAA;AAAAhB,cAAAW,OAAAC,EAAAhB,KAAAiB,yBACAC;AAAAI,GAAA,MAAAP,OAAAK,qBAAA,EAAA;AAAAhB,cAAAW,OAAAC,EAAAhB,KAAAiB,0BAEAM,GAAA,WAAA,OAAuBvB,KAAKwB,eAAgB,CAAA;AAAAC,GAAA,MAAAV,OAAAK,sBAAA,EAAA;AAAAhB,cAAAW,OAAAC,EAAAhB,KAAAiB,6BAC5CM,GAAA,WAAA,OAE8B,OAA7BvB,KAAK0B,oBACD1B,KAAK0B,oBACL1B,KAAK2B,kBAAkB;AAAAC,GAAA,MAAAb,OAAAK,yBAAA,EAAA;AAE7BI,aAAA,KAAeK,EAAO,iBAAtB;AACAC,gBAAA,KAAkBD,EAAO,oBAAzB;AACAF,mBAAA,KAA0D,cAArClC,EAAS7B,wBAA9B;AACA8D,yBAAsB1B,KAAK8B,gBACvBC,KAAKC,MAAMhC,KAAK8B,iBAAiBG,UACjC;AACJC,gBAAa,CACX,CACEC,QAAS1C,EAASZ,qBAClBuD,MAAO,eACPlC,KAAMmC,EAAiB5C,EAASJ,oBAElC,CACE8C,QAAS1C,EAASX,sBAClBsD,MAAO,gBACPlC,KAAMmC,EAAiB5C,EAASH,qBAElC,CACE6C,QAAS1C,EAASV,qBAClBqD,MAAO,eACPlC,KAAMmC,EAAiB5C,EAASF,oBAElC,CACE4C,QAAS1C,EAAST,sBAClBoD,MAAO,gBACPlC,KAAMmC,EAAiB5C,EAASD;AAIpC,wBAAI8C,GACF,GAAiC,SAA7B7C,EAAS5B,gBAIX,OAAO0E,SAASC,IAAI,EAAG/C,EAAS5B,iBAAiB4E;AAHjDC,EAAa,gBAAiB,CAAEC,KAAM,MACtCD,EAAa,mBAAoB,CAAEC,KAAM,KAI7C,CAEA,kBAAIC,GACF,OACGnD,EAASrC,kBAAoB4C,KAAKsB,aAClC7B,EAASpC,gBAAkB2C,KAAKsB,WAErC,CAEA,eAAIuB,GACF,MAAMF,EAAO3C,KAAKmB,OAAO2B;AAEzB,GACErD,EAASjC,qBACTwC,KAAKmB,OAAO4B,mBAAqB,aAAaC,MAE9C,OAAO;AAGT,GAAIvD,EAAShC,iBAAiBwF,OAAQ,CAEpC,OADqBxD,EAAShC,iBAAiByF,MAAM,KACjCC,KAAMC,GACM,MAA1BA,EAAYC,OAAM,GAC8B,IAA3CV,EAAKW,QAAQF,EAAYC,MAAM,GAAG,IAEpCV,IAASS,EAEpB,CACF,CAEA,cAAIG,GACF,OAAOvD,KAAK4C,gBAAkB5C,KAAK6C,WACrC,CAEA,eAAIW,GACF,OAAOxD,KAAK4B,gBACR6B,EAAK9D,EAAY,wBACjB8D,EAAK9D,EAAY,yBACvB,CAEA,cAAI+D,GACF,OAAO1D,KAAK4B,gBAAkB,eAAiB,YACjD,CAGA+B,WAAAA,GAGE,GAFA3D,KAAKyB,cAAe,EAEhBzB,KAAKsC,qBAAsB,CAC7B,MAAMsB,EAAc,CAAEC,KAAMpE,EAAS3B,YAAagG,OAAQ;AAC1DjC,EAAO,gBAAiBE,KAAKgC,UAAUH,GAAc,CACnDI,QAAShE,KAAKsC,qBACdK,KAAM,KAEV,CACF,CAAAvC,cAAAW,OAAAkD,EAAAjE,KAAAiB,yBAXCiD;AAcDC,YAAAA,GACEnE,KAAK4B,iBAAmB5B,KAAK4B;AAC7B,IAAIgC,EAAc,CAChBC,KAAMpE,EAAS3B,YACfmE,UAAWjC,KAAK4B;AAGd5B,KAAKsC,qBACHtC,KAAK8B,kBACP8B,EAAc7B,KAAKC,MAAMhC,KAAK8B,iBAC9B8B,EAAY3B,UAAYjC,KAAK4B,iBAG/BgC,EAAY3B,UAAYjC,KAAK4B,gBAG/BC,EAAO,mBAAoBE,KAAKgC,UAAUH,GAAc,CACtDI,QAAShE,KAAKsC,qBACdK,KAAM,KAEV,CAAAvC,cAAAW,OAAAkD,EAAAjE,KAAAiB,0BArBCiD;AAAA9D,SAAA,KAAAC,EAAAC,EAAA,CAAAC,GAAA,KAAAC,MAAA,qpDAAAC,WAAA,sDAAAC,MAAAA,IAAA,CAAAjB,EAAA2E,EAAAX,EAAA9D,EAAAiB,EAAAyD,EAAAxE,GAAAgB,cAAA,IAwEDb,MAxEC,mDCnHHsE,EAAeC,EAAe,SAAWC,IACvCA,EAAIC,eAAehF,EAASxB,cAAe6C;ACFxC,MAAC4D,EAAqB,CAAA;AAE3BA,EAAmB,gDAAkDC,EAGrED,EAAmB,yCAA2CE,EAG9DF,EAAmB,qDAAuDG;"}