{"version":3,"file":"main.CiMuDn.js","sources":["theme-3/virtual:theme","theme-3/discourse/components/topic-excerpt-toggle.gjs","theme-3/discourse/initializers/init-topic-excerpt-toggle.gjs","theme-3/discourse/initializers/init-topic-excerpts.js","theme-3/discourse/services/excerpt-state.js","theme-3/virtual:entrypoint:main"],"sourcesContent":["import { getObjectForTheme } from \"discourse/lib/theme-settings-store\";\n\nexport const settings = getObjectForTheme(3);\n\nexport function themePrefix(key) {\n  return `theme_translations.3.${key}`;\n}\n","import Component from \"@glimmer/component\";\nimport { on } from \"@ember/modifier\";\nimport { action } from \"@ember/object\";\nimport { service } from \"@ember/service\";\nimport icon from \"discourse/helpers/d-icon\";\nimport { i18n } from \"discourse-i18n\";\n\nexport default class ExcerptToggle extends Component {\n  @service excerptState;\n  @service site;\n  @service router;\n\n  get shouldShow() {\n    if (!this.excerptState.shouldApplyOverride) {\n      return false;\n    }\n\n    const categoriesRoute =\n      this.router.currentRouteName === \"discovery.categories\";\n\n    if (!settings.show_toggle || categoriesRoute) {\n      return false;\n    }\n\n    const isTopicHeader =\n      this.args.name === \"default\" ||\n      this.args.name === \"topic.title\" ||\n      this.site.mobileView;\n\n    return isTopicHeader && !this.args.bulkSelectEnabled;\n  }\n\n  get buttonIcon() {\n    return this.excerptState.prefersExcerpt ? \"square-check\" : \"far-square\";\n  }\n\n  @action\n  toggleExcerpt() {\n    this.excerptState.toggleExcerpt();\n  }\n\n  <template>\n    {{#if this.shouldShow}}\n      <button\n        type=\"button\"\n        {{on \"click\" this.toggleExcerpt}}\n        class=\"excerpt-toggle\"\n      >\n        {{icon this.buttonIcon}}\n        <span>{{i18n (themePrefix \"show_excerpts\")}}</span>\n      </button>\n    {{/if}}\n  </template>\n}\n","import { apiInitializer } from \"discourse/lib/api\";\nimport TopicExcerptToggle from \"../components/topic-excerpt-toggle\";\n\nexport default apiInitializer((api) => {\n  const site = api.container.lookup(\"service:site\");\n\n  api.renderInOutlet(\n    \"extra-nav-item\",\n    <template>\n      {{#if site.mobileView}}<TopicExcerptToggle\n          @name={{@name}}\n          @bulkSelectEnabled={{@bulkSelectEnabled}}\n        />{{/if}}\n    </template>\n  );\n\n  api.renderInOutlet(\n    \"topic-list-heading-bottom\",\n    <template>\n      {{#if site.desktopView}}<TopicExcerptToggle\n          @name={{@name}}\n          @bulkSelectEnabled={{@bulkSelectEnabled}}\n        />{{/if}}\n    </template>\n  );\n});\n","import { withPluginApi } from \"discourse/lib/plugin-api\";\n\nexport default {\n  name: \"topic-excerpts-init\",\n\n  initialize() {\n    withPluginApi((api) => {\n      api.registerValueTransformer(\n        \"topic-list-item-expand-pinned\",\n        ({ value }) => {\n          const excerptState = api.container.lookup(\"service:excerpt-state\");\n          return excerptState.shouldApplyOverride\n            ? excerptState.prefersExcerpt\n            : value;\n        }\n      );\n    });\n  },\n};\n","import { tracked } from \"@glimmer/tracking\";\nimport { action } from \"@ember/object\";\nimport Service, { service } from \"@ember/service\";\n\nconst EXCERPT_PREF_KEY = \"showExcerpt\";\nconst enabledCategories = settings.enabled_categories\n  .split(\"|\")\n  .map(Number)\n  .filter(Boolean);\nconst enabledTags = settings.enabled_tags.split(\"|\").filter(Boolean);\n\nexport default class ExcerptState extends Service {\n  @service discovery;\n  @service site;\n\n  @tracked\n  prefersExcerpt = settings.show_toggle\n    ? localStorage.getItem(EXCERPT_PREF_KEY) !== \"false\"\n    : true;\n\n  get shouldApplyOverride() {\n    const overrideEverywhere =\n      enabledCategories.length === 0 && enabledTags.length === 0;\n    const overrideInCategory = enabledCategories.includes(\n      this.discovery.category?.id\n    );\n    const overrideInTag = enabledTags.includes(this.discovery.tag?.name);\n    const overrideOnDevice = this.site.mobileView\n      ? settings.show_excerpts_mobile\n      : settings.show_excerpts_desktop;\n\n    return (\n      (overrideEverywhere || overrideInTag || overrideInCategory) &&\n      overrideOnDevice\n    );\n  }\n\n  @action\n  toggleExcerpt() {\n    this.prefersExcerpt = !this.prefersExcerpt;\n    localStorage.setItem(EXCERPT_PREF_KEY, this.prefersExcerpt);\n  }\n}\n","import * as Mod1 from \"./discourse/components/topic-excerpt-toggle\";\nimport * as Mod2 from \"./discourse/initializers/init-topic-excerpt-toggle\";\nimport * as Mod3 from \"./discourse/initializers/init-topic-excerpts\";\nimport * as Mod4 from \"./discourse/services/excerpt-state\";\nconst compatModules = {\n  \"discourse/components/topic-excerpt-toggle\": Mod1,\n  \"discourse/initializers/init-topic-excerpt-toggle\": Mod2,\n  \"discourse/initializers/init-topic-excerpts\": Mod3,\n  \"discourse/services/excerpt-state\": Mod4,\n};\nexport { compatModules };\nexport default compatModules;\n"],"names":["settings","getObjectForTheme","themePrefix","key","ExcerptToggle","Component","dt7948","g","this","prototype","service","excerptState","i","site","router","shouldShow","shouldApplyOverride","categoriesRoute","currentRouteName","show_toggle","args","name","mobileView","bulkSelectEnabled","buttonIcon","prefersExcerpt","toggleExcerpt","n","action","setComponentTemplate","createTemplateFactory","id","block","moduleName","scope","on","icon","i18n","isStrictMode","initTopicExcerptToggle","apiInitializer","api","container","lookup","renderInOutlet","TopicExcerptToggle","templateOnly","initTopicExcerpts","initialize","withPluginApi","registerValueTransformer","value","EXCERPT_PREF_KEY","enabledCategories","enabled_categories","split","map","Number","filter","Boolean","enabledTags","enabled_tags","ExcerptState","Service","discovery","tracked","localStorage","getItem","overrideEverywhere","length","overrideInCategory","includes","category","overrideInTag","tag","overrideOnDevice","show_excerpts_mobile","show_excerpts_desktop","setItem","compatModules","Mod1","Mod2","Mod3"],"mappings":"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"}