{"version":3,"file":"virtual_main.js","sources":["theme-59/virtual:init-settings","theme-59/virtual:theme","theme-59/discourse/components/modal/guest-gate.gjs","theme-59/discourse/initializers/guest-gate.js","theme-59/virtual:main"],"sourcesContent":["import { registerSettings } from \"discourse/lib/theme-settings-store\";\n\nregisterSettings(59, {\n  \"url_for_show\": \"/t/*\",\n  \"url_for_hide\": \"/login*|/u/*|/session*|/invites/*|/about|/faq|/faq#*|/guidelines|/guidelines#*|/tos|/tos#*|/privacy|/privacy#*\",\n  \"max_guest_topic_views\": \"3\",\n  \"dismissable_false\": false,\n  \"gate_show_only_once\": false,\n  \"gate_show_when_thumbnail_clicked\": true,\n  \"use_gate_buttons\": true,\n  \"login_button_style\": \"btn-default\",\n  \"signup_button_style\": \"btn-primary\",\n  \"login_icon\": \"user\",\n  \"signup_icon\": \"right-to-bracket\",\n  \"svg_icons\": \"\",\n  \"custom_url_enabled\": true,\n  \"custom_login_url\": \"/login\",\n  \"custom_signup_url\": \"https://voyeur-house.tv/payment\",\n  \"enable_discourse_connect_signup\": true,\n  \"discourse_connect_signup_url\": \"http://voyeur-house.tv/payment?from=forum\",\n  \"gate_footer_position\": \"center\",\n  \"custom_gate_enabled\": true,\n  \"custom_gate_image\": \"https://forum-cdn.spyhub.tv/uploads/default/original/3X/f/a/faa5f2cf556ac12d9938be66000e676ef148b4ba.png\",\n  \"custom_gate_image_width\": \"60%\",\n  \"custom_gate_image_position\": \"center\",\n  \"custom_gate_big_text_position\": \"center\",\n  \"custom_gate_little_text_position\": \"center\",\n  \"custom_gate_big_text_color\": \"var(--primary)\",\n  \"custom_gate_little_text_color\": \"var(--primary)\",\n  \"custom_gate_background_color\": \"var(--secondary)\",\n  \"custom_gate_footer_text_color\": \"var(--primary-medium)\",\n  \"custom_gate_link_color\": \"var(--primary-medium)\"\n});\n","import { getObjectForTheme } from \"discourse/lib/theme-settings-store\";\n\nexport const settings = getObjectForTheme(59);\n\nexport function themePrefix(key) {\n  return `theme_translations.59.${key}`;\n}\n","import Component from \"@glimmer/component\";\nimport { action } from \"@ember/object\";\nimport { service } from \"@ember/service\";\nimport { htmlSafe } from \"@ember/template\";\nimport concatClass from \"discourse/helpers/concat-class\";\nimport routeAction from \"discourse/helpers/route-action\";\nimport replaceEmoji from \"discourse/helpers/replace-emoji\";\nimport DButton from \"discourse/components/d-button\";\nimport DModal from \"discourse/components/d-modal\";\nimport LoginButtons from \"discourse/components/login-buttons\";\nimport I18n from \"discourse-i18n\";\n\nexport default class GuestGateModal extends Component {  \n  @service siteSettings;\n  @service login;\n\n  get guestGateModalTitle() {\n    return I18n.t(themePrefix(\"guest_gate.title\"));\n  }\n\n  get customBigText() {\n    return htmlSafe(I18n.t(themePrefix(\"custom_gate.big_text\")));\n  }\n\n  get customLittleText() {\n    return htmlSafe(I18n.t(themePrefix(\"custom_gate.little_text\")));\n  }\n\n  get signupCtaIntro() {\n    return replaceEmoji(I18n.t(\"signup_cta.intro\"));\n  }\n\n  get signupCtaValueProp() {\n    return replaceEmoji(I18n.t(\"signup_cta.value_prop\"));\n  }\n\n  get guestGateLogin() {\n    return I18n.t(themePrefix(\"guest_gate.log_in\"));\n  }\n\n  get guestGateSignup() {\n    return I18n.t(themePrefix(\"guest_gate.sign_up\"));\n  }\n\n  get guestGateSsoLogin() {\n    return I18n.t(themePrefix(\"guest_gate.sso_log_in\"));\n  }\n\n  get guestGateSsoSignup() {\n    return I18n.t(themePrefix(\"guest_gate.sso_sign_up\"));\n  }\n\n  get guestGateOr() {\n    return I18n.t(themePrefix(\"guest_gate.or\"));\n  }\n\n  @action\n  externalLogin(provider) {\n    // we will automatically redirect to the external auth service\n    this.login.externalLogin(provider, { signup: true });\n  }\n\n  <template>\n    <DModal\n      @closeModal={{@closeModal}}\n      @title={{this.guestGateModalTitle}}\n      class={{concatClass\n        \"gate\"\n        (if settings.custom_gate_enabled \"custom-gate\")\n      }}\n      @dismissable={{if settings.dismissable_false false true}}\n    >\n      <:body>\n        {{#if settings.custom_gate_enabled}}\n          <div class=\"custom-gate-content\">\n            <img src=\"{{settings.custom_gate_image}}\"/>\n            <h2>{{this.customBigText}}</h2>\n            <p>{{this.customLittleText}}</p>\n          </div>\n        \n        {{else}}\n        \n          <div>\n            <p>{{this.signupCtaIntro}}</p>\n            <p>{{this.signupCtaValueProp}}</p>\n          </div>\n        {{/if}}\n\n        <LoginButtons\n          @externalLogin={{this.externalLogin}}\n          @context=\"create-account\"\n        />\n      </:body>\n      \n      <:footer>\n        {{#if this.siteSettings.enable_discourse_connect}}\n          {{#if settings.use_gate_buttons}}\n            <DButton\n              @class={{settings.login_button_style}}\n              @icon={{settings.login_icon}}\n              @translatedLabel={{this.guestGateSsoLogin}}\n              @action={{routeAction \"showLogin\"}}\n            />\n            {{#if settings.enable_discourse_connect_signup}}\n              <DButton\n                @class={{settings.signup_button_style}}\n                @icon={{settings.signup_icon}}\n                @translatedLabel={{this.guestGateSsoSignup}}\n                @href={{settings.discourse_connect_signup_url}}\n              />\n            {{/if}}\n            \n          {{else}}\n            \n            <DButton\n              @class=\"btn-transparent\"\n              @translatedLabel={{this.guestGateSsoLogin}}\n              @action={{routeAction \"showLogin\"}}\n            />\n    \n            {{#if settings.enable_discourse_connect_signup}}\n              {{this.guestGateOr}}\n              <DButton\n                @class=\"btn-transparent\"\n                @translatedLabel={{this.guestGateSsoSignup}}\n                @href={{settings.discourse_connect_signup_url}}\n              />\n            {{/if}}\n          {{/if}}\n                  \n        {{else}}\n                  \n          {{#if settings.use_gate_buttons}}\n            {{#if settings.custom_url_enabled}}\n              <DButton\n                @class={{settings.login_button_style}}\n                @icon={{settings.login_icon}}\n                @translatedLabel={{this.guestGateLogin}}\n                @href={{settings.custom_login_url}}\n              />\n              <DButton\n                @class={{settings.signup_button_style}}\n                @icon={{settings.signup_icon}}\n                @translatedLabel={{this.guestGateSignup}}\n                @href={{settings.custom_signup_url}}\n              />\n              \n            {{else}}\n              \n              <DButton\n                @class={{settings.login_button_style}}\n                @icon={{settings.login_icon}}\n                @translatedLabel={{this.guestGateLogin}}\n                @action={{routeAction \"showLogin\"}}\n              />\n              <DButton\n                @class={{settings.signup_button_style}}\n                @icon={{settings.signup_icon}}\n                @translatedLabel={{this.guestGateSignup}}\n                @action={{routeAction \"showCreateAccount\"}}\n              />\n            {{/if}}\n                \n          {{else}}\n              \n            {{#if settings.custom_url_enabled}}\n              <DButton\n                @class=\"btn-transparent\"\n                @translatedLabel={{this.guestGateLogin}}\n                @href={{settings.custom_login_url}}\n              />\n    \n              {{this.guestGateOr}}\n              \n              <DButton\n                @class=\"btn-transparent\"\n                @translatedLabel={{this.guestGateSignup}}\n                @href={{settings.custom_signup_url}}\n              />\n                  \n            {{else}}\n                \n              <DButton\n                @class=\"btn-transparent\"\n                @translatedLabel={{this.guestGateLogin}}\n                @action={{routeAction \"showLogin\"}}\n              />\n    \n              {{this.guestGateOr}}\n    \n              <DButton\n                @class=\"btn-transparent\"\n                @translatedLabel={{this.guestGateSignup}}\n                @action={{routeAction \"showCreateAccount\"}}\n              />\n            {{/if}}\n          {{/if}}\n        {{/if}}\n      </:footer>\n    </DModal>\n  </template>\n}\n","import { withPluginApi } from \"discourse/lib/plugin-api\";\nimport { startPageTracking } from \"discourse/lib/page-tracker\";\nimport { viewTrackingRequired } from \"discourse/lib/ajax\";\nimport GuestGateModal from \"../components/modal/guest-gate\";\nimport { cleanupLightboxes } from \"discourse/lib/lightbox\";\n\nconst botPattern = \"(googlebot\\/|Googlebot-Mobile|Googlebot-Image|Google favicon|Mediapartners-Google|bingbot|slurp|java|wget|curl|Commons-HttpClient|Python-urllib|libwww|httpunit|nutch|phpcrawl|msnbot|jyxobot|FAST-WebCrawler|FAST Enterprise Crawler|biglotron|teoma|convera|seekbot|gigablast|exabot|ngbot|ia_archiver|GingerCrawler|webmon |httrack|webcrawler|grub.org|UsineNouvelleCrawler|antibot|netresearchserver|speedy|fluffy|bibnum.bnf|findlink|msrbot|panscient|yacybot|AISearchBot|IOI|ips-agent|tagoobot|MJ12bot|dotbot|woriobot|yanga|buzzbot|mlbot|yandexbot|purebot|Linguee Bot|Voyager|CyberPatrol|voilabot|baiduspider|citeseerxbot|spbot|twengabot|postrank|turnitinbot|scribdbot|page2rss|sitebot|linkdex|Adidxbot|blekkobot|ezooms|dotbot|Mail.RU_Bot|discobot|heritrix|findthatfile|europarchive.org|NerdByNature.Bot|sistrix crawler|ahrefsbot|Aboundex|domaincrawler|wbsearchbot|summify|ccbot|edisterbot|seznambot|ec2linkfinder|gslfbot|aihitbot|intelium_bot|facebookexternalhit|yeti|RetrevoPageAnalyzer|lb-spider|sogou|lssbot|careerbot|wotbox|wocbot|ichiro|DuckDuckBot|lssrocketcrawler|drupact|webcompanycrawler|acoonbot|openindexspider|gnam gnam spider|web-archive-net.com.bot|backlinkcrawler|coccoc|integromedb|content crawler spider|toplistbot|seokicks-robot|it2media-domain-crawler|ip-web-crawler.com|siteexplorer.info|elisabot|proximic|changedetection|blexbot|arabot|WeSEE:Search|niki-bot|CrystalSemanticsBot|rogerbot|360Spider|psbot|InterfaxScanBot|Lipperhey SEO Service|CC Metadata Scaper|g00g1e.net|GrapeshotCrawler|urlappendbot|brainobot|fr-crawler|binlar|SimpleCrawler|Livelapbot|Twitterbot|cXensebot|smtbot|bnf.fr_bot|A6-Indexer|ADmantX|Facebot|Twitterbot|OrangeBot|memorybot|AdvBot|MegaIndex|SemanticScholarBot|ltx71|nerdybot|xovibot|BUbiNG|Qwantify|archive.org_bot|Applebot|TweetmemeBot|crawler4j|findxbot|SemrushBot|yoozBot|lipperhey|y!j-asr|Domain Re-Animator Bot|AddThis)\";\n\nexport default {\n  name: \"guest-gate\",\n  after: \"inject-objects\",\n\n  initialize(container) {\n    withPluginApi(\"0.8\", api => {\n      const user = container.lookup(\"service:current-user\");\n      const modal = container.lookup(\"service:modal\");\n      this.siteSettings = container.lookup(\"service:site-settings\");\n\n      if (user) {\n        return;\n      } // must not be logged in\n      \n      if (settings.gate_show_when_thumbnail_clicked) {\n        if (this.siteSettings.enable_experimental_lightbox) {\n          // New lightbox\n          api.onAppEvent('lightbox:opened', () => {            \n            modal.show(GuestGateModal);\n            cleanupLightboxes();\n          });\n        } else {\n          // Old lightbox\n          $(\"body\").on(\"click\", \"a.lightbox\", function() {\n            modal.show(GuestGateModal);\n            $.magnificPopup.instance.close();\n          });\n        }\n      } else {\n        let pageView = 0;\n        // Tell our AJAX system to track a page transition\n        const router = container.lookup(\"router:main\");\n        router.on(\"routeWillChange\", viewTrackingRequired);\n\n        const appEvents = container.lookup(\"service:app-events\");\n        startPageTracking(router, appEvents);\n        let gateShownOnce = false;\n\n\n        appEvents.on(\"page:changed\", data => {\n          \n          const path = router.currentURL;\n          \n          let urlShowMatch;\n          let urlHideMatch;\n\n          let isBot = false;\n          let re = new RegExp(botPattern, \"i\");\n          if (re.test(navigator.userAgent)) {\n            isBot = true;\n          }\n          \n          if (settings.url_for_show.length) {\n            const allowedPaths = settings.url_for_show.split(\"|\");\n            urlShowMatch = 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          if (settings.url_for_hide.length) {\n            const disallowedPaths = settings.url_for_hide.split(\"|\");\n            urlHideMatch = disallowedPaths.some((disallowedPaths) => {\n              if(disallowedPaths.slice(-1) === \"*\") {\n                return path.indexOf(disallowedPaths.slice(0, -1)) === 0;\n              }\n              return path === disallowedPaths;\n            });\n          }\n            \n          const maxViews = parseInt(settings.max_guest_topic_views);\n          pageView++;     \n          const hitMaxViews = pageView >= maxViews;\n          const showGateBool = urlShowMatch && !urlHideMatch && hitMaxViews && !isBot && !gateShownOnce;\n            \n          if (showGateBool) {\n            if (settings.gate_show_only_once) {\n              gateShownOnce = true;\n            }\n            pageView = getRandomInt(0, maxViews + 1);\n                \n            modal.show(GuestGateModal);\n          }\n        });\n      }\n    });\n  }\n};\n\nfunction getRandomInt(min, max) {\n  min = Math.ceil(min);\n  max = Math.floor(max);\n  return Math.floor(Math.random() * (max - min)) + min;\n}\n","import \"virtual:init-settings\";\n\nconst themeCompatModules = {};\nimport * as Mod1 from \"./discourse/components/modal/guest-gate\";\nthemeCompatModules[\"discourse/components/modal/guest-gate\"] = Mod1;\n\nimport * as Mod2 from \"./discourse/initializers/guest-gate\";\nthemeCompatModules[\"discourse/initializers/guest-gate\"] = Mod2;\n\nexport default themeCompatModules;\n"],"names":["registerSettings","url_for_show","url_for_hide","max_guest_topic_views","dismissable_false","gate_show_only_once","gate_show_when_thumbnail_clicked","use_gate_buttons","login_button_style","signup_button_style","login_icon","signup_icon","svg_icons","custom_url_enabled","custom_login_url","custom_signup_url","enable_discourse_connect_signup","discourse_connect_signup_url","gate_footer_position","custom_gate_enabled","custom_gate_image","custom_gate_image_width","custom_gate_image_position","custom_gate_big_text_position","custom_gate_little_text_position","custom_gate_big_text_color","custom_gate_little_text_color","custom_gate_background_color","custom_gate_footer_text_color","custom_gate_link_color","settings","getObjectForTheme","themePrefix","key","GuestGateModal","Component","static","dt7948","g","this","prototype","service","siteSettings","i","login","guestGateModalTitle","I18n","t","customBigText","htmlSafe","customLittleText","signupCtaIntro","replaceEmoji","signupCtaValueProp","guestGateLogin","guestGateSignup","guestGateSsoLogin","guestGateSsoSignup","guestGateOr","externalLogin","provider","signup","n","action","setComponentTemplate","createTemplateFactory","id","block","moduleName","scope","DModal","concatClass","LoginButtons","DButton","routeAction","isStrictMode","guestGate","name","after","initialize","container","withPluginApi","api","user","lookup","modal","enable_experimental_lightbox","onAppEvent","show","cleanupLightboxes","$","on","magnificPopup","instance","close","pageView","router","viewTrackingRequired","appEvents","startPageTracking","gateShownOnce","data","path","currentURL","urlShowMatch","urlHideMatch","isBot","RegExp","test","navigator","userAgent","length","split","some","allowedPath","slice","indexOf","disallowedPaths","maxViews","parseInt","min","max","Math","ceil","floor","random","themeCompatModules","Mod1","Mod2"],"mappings":"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"}