{"version":3,"file":"discourse-whos-online.js","names":["define","_exports","_bodyClass","_api","_component","_templateFactory","_templateOnly","Object","defineProperty","value","default","apiInitializer","api","siteSettings","container","lookup","whosOnlineService","indicatorType","whos_online_avatar_indicator","whos_online_display_public","getCurrentUser","trust_level","whos_online_display_min_trust_level","document","documentElement","classList","add","userOnline","id","isUserOnline","modifyClass","Superclass","classNames","extraClasses","this","user","push","super","renderInOutlet","setComponentTemplate","createTemplateFactory","block","moduleName","scope","isStrictMode","undefined","whos_online_avatar_indicator_topic_lists","addLastPosterOnlineClassNameTransformer","additionalClasses","context","topic","whosOnline","lastPoster","lastPosterUser","registerValueTransformer","post","user_id","customizePost","_avatar","WhosOnlineAvatar","_service","_discourseI18n","_whosOnlineAvatar","WhosOnline","dt7948","g","prototype","service","i","users","slice","whos_online_maximum_display","hasUsers","length","whos_online_minimum_display","count","hasCount","isLong","whos_online_collapse_threshold","shouldDisplay","whos_online_hide_below_minimum_display","enabled","i18n","_component2","_whosOnline","OnlineUsersWidget","c","tagName","_site","WhosOnlineService","presence","channel","init","arguments","getChannel","subscribe","currentProp","countOnly","currentUser","login_required","find"],"sources":["discourse/plugins/discourse-whos-online/discourse/api-initializers/intitialize-whos-online-indicators.js","discourse/plugins/discourse-whos-online/discourse/components/whos-online-avatar.js","discourse/plugins/discourse-whos-online/discourse/components/whos-online.js","discourse/plugins/discourse-whos-online/discourse/connectors/discovery-list-container-top/online_users_widget.js","discourse/plugins/discourse-whos-online/discourse/services/whos-online.js"],"sourcesContent":["define(\"discourse/plugins/discourse-whos-online/discourse/api-initializers/intitialize-whos-online-indicators\", [\"exports\", \"discourse/helpers/body-class\", \"discourse/lib/api\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _bodyClass, _api, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _api.apiInitializer)(api => {\n    const siteSettings = api.container.lookup(\"service:site-settings\");\n    const whosOnlineService = api.container.lookup(\"service:whos-online\");\n    const indicatorType = siteSettings.whos_online_avatar_indicator;\n    if (indicatorType === \"none\") {\n      return;\n    }\n    if (!(siteSettings.whos_online_display_public || api.getCurrentUser()?.trust_level >= siteSettings.whos_online_display_min_trust_level)) {\n      return;\n    }\n    document.documentElement.classList.add(`whos-online-${indicatorType}`);\n    const userOnline = id => whosOnlineService.isUserOnline(id);\n    api.modifyClass(\"component:user-card-contents\", Superclass => class extends Superclass {\n      get classNames() {\n        const extraClasses = [];\n        if (this.user && userOnline(this.user.id)) {\n          extraClasses.push(\"user-online\");\n        }\n        return [...super.classNames, ...extraClasses];\n      }\n    });\n    api.renderInOutlet(\"above-user-profile\", (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n    /*\n      {{#if (userOnline @outletArgs.model.id)}}\n      {{bodyClass \"user-page-online\"}}\n    {{/if}}\n    */\n    {\n      \"id\": \"6rpsczR5\",\n      \"block\": \"[[[41,[28,[32,0],[[30,1,[\\\"model\\\",\\\"id\\\"]]],null],[[[1,\\\"  \\\"],[1,[28,[32,1],[\\\"user-page-online\\\"],null]],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@outletArgs\\\"],[\\\"if\\\"]]\",\n      \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/discourse-whos-online/discourse/api-initializers/intitialize-whos-online-indicators.js\",\n      \"scope\": () => [userOnline, _bodyClass.default],\n      \"isStrictMode\": true\n    }), (0, _templateOnly.default)(undefined, undefined)));\n    if (siteSettings.whos_online_avatar_indicator_topic_lists) {\n      const addLastPosterOnlineClassNameTransformer = ({\n        value: additionalClasses,\n        context: {\n          topic\n        }\n      }) => {\n        if (topic) {\n          const whosOnline = api.container.lookup(\"service:whos-online\");\n          const {\n            lastPoster,\n            lastPosterUser\n          } = topic;\n          if (whosOnline.isUserOnline(lastPoster?.id || lastPosterUser?.id)) {\n            additionalClasses.push(\"last-poster-online\");\n          }\n        }\n        return additionalClasses;\n      };\n      api.registerValueTransformer(\"latest-topic-list-item-class\", addLastPosterOnlineClassNameTransformer);\n      api.registerValueTransformer(\"topic-list-item-class\", addLastPosterOnlineClassNameTransformer);\n    }\n    customizePost(api);\n  });\n  function customizePost(api) {\n    api.registerValueTransformer(\"post-avatar-class\", ({\n      value,\n      context: {\n        post\n      }\n    }) => {\n      const whosOnline = api.container.lookup(\"service:whos-online\");\n      if (whosOnline.isUserOnline(post.user_id)) {\n        value.push(\"user-online\");\n      }\n      return value;\n    });\n  }\n});","define(\"discourse/plugins/discourse-whos-online/discourse/components/whos-online-avatar\", [\"exports\", \"discourse/helpers/avatar\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _avatar, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const WhosOnlineAvatar = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    <a data-user-card={{@user.username}} href={{@user.path}}>\n    {{avatar\n      @user\n      avatarTemplatePath=\"avatar_template\"\n      title=@user.username\n      imageSize=\"small\"\n    }}\n  </a>\n  */\n  {\n    \"id\": \"kUeH76O6\",\n    \"block\": \"[[[10,3],[15,\\\"data-user-card\\\",[30,1,[\\\"username\\\"]]],[15,6,[30,1,[\\\"path\\\"]]],[12],[1,\\\"\\\\n  \\\"],[1,[28,[32,0],[[30,1]],[[\\\"avatarTemplatePath\\\",\\\"title\\\",\\\"imageSize\\\"],[\\\"avatar_template\\\",[30,1,[\\\"username\\\"]],\\\"small\\\"]]]],[1,\\\"\\\\n\\\"],[13]],[\\\"@user\\\"],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/discourse-whos-online/discourse/components/whos-online-avatar.js\",\n    \"scope\": () => [_avatar.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"whos-online-avatar:WhosOnlineAvatar\"));\n  var _default = _exports.default = WhosOnlineAvatar;\n});","define(\"discourse/plugins/discourse-whos-online/discourse/components/whos-online\", [\"exports\", \"@ember/component\", \"@ember/service\", \"discourse-i18n\", \"discourse/plugins/discourse-whos-online/discourse/components/whos-online-avatar\", \"@ember/template-factory\"], function (_exports, _component, _service, _discourseI18n, _whosOnlineAvatar, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class WhosOnline extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"whosOnline\", [_service.service]);\n    }\n    #whosOnline = (dt7948.i(this, \"whosOnline\"), void 0);\n    get users() {\n      return this.whosOnline.users?.slice(0, this.siteSettings.whos_online_maximum_display);\n    }\n    get hasUsers() {\n      return this.users?.length >= this.siteSettings.whos_online_minimum_display;\n    }\n    get count() {\n      return this.whosOnline.count;\n    }\n    get hasCount() {\n      return this.count >= this.siteSettings.whos_online_minimum_display;\n    }\n    get isLong() {\n      return this.count >= this.siteSettings.whos_online_collapse_threshold;\n    }\n    get shouldDisplay() {\n      if (this.count < this.siteSettings.whos_online_minimum_display && this.siteSettings.whos_online_hide_below_minimum_display) {\n        return false;\n      }\n      return this.whosOnline.enabled;\n    }\n    static {\n      (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        {{#if this.shouldDisplay}}\n        <div id=\"whos-online\" class={{if this.isLong \"collapsed\"}}>\n          <span\n            title={{i18n\n              \"whos_online.tooltip\"\n              count=this.siteSettings.whos_online_active_timeago\n            }}\n          >\n            {{#if this.hasUsers}}\n              {{i18n \"whos_online.title\" count=this.count}}\n            {{else if this.hasCount}}\n              {{i18n \"whos_online.count_only\" count=this.count}}\n            {{else}}\n              {{i18n \"whos_online.no_users\"}}\n            {{/if}}\n          </span>\n          {{#if this.hasUsers}}\n            {{#each this.users as |user|}}\n              <WhosOnlineAvatar @user={{user}} />\n            {{/each}}\n          {{/if}}\n        </div>\n      {{/if}}\n      */\n      {\n        \"id\": \"dgOlgnAG\",\n        \"block\": \"[[[41,[30,0,[\\\"shouldDisplay\\\"]],[[[1,\\\"  \\\"],[10,0],[14,1,\\\"whos-online\\\"],[15,0,[52,[30,0,[\\\"isLong\\\"]],\\\"collapsed\\\"]],[12],[1,\\\"\\\\n    \\\"],[10,1],[15,\\\"title\\\",[28,[32,0],[\\\"whos_online.tooltip\\\"],[[\\\"count\\\"],[[30,0,[\\\"siteSettings\\\",\\\"whos_online_active_timeago\\\"]]]]]],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"hasUsers\\\"]],[[[1,\\\"        \\\"],[1,[28,[32,0],[\\\"whos_online.title\\\"],[[\\\"count\\\"],[[30,0,[\\\"count\\\"]]]]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"hasCount\\\"]],[[[1,\\\"        \\\"],[1,[28,[32,0],[\\\"whos_online.count_only\\\"],[[\\\"count\\\"],[[30,0,[\\\"count\\\"]]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[1,[28,[32,0],[\\\"whos_online.no_users\\\"],null]],[1,\\\"\\\\n      \\\"]],[]]]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"hasUsers\\\"]],[[[42,[28,[31,2],[[28,[31,2],[[30,0,[\\\"users\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[8,[32,1],null,[[\\\"@user\\\"],[[30,1]]],null],[1,\\\"\\\\n\\\"]],[1]],null]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"user\\\"],[\\\"if\\\",\\\"each\\\",\\\"-track-array\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/discourse-whos-online/discourse/components/whos-online.js\",\n        \"scope\": () => [_discourseI18n.i18n, _whosOnlineAvatar.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = WhosOnline;\n});","define(\"discourse/plugins/discourse-whos-online/discourse/connectors/discovery-list-container-top/online_users_widget\", [\"exports\", \"@ember/component\", \"@ember-decorators/component\", \"discourse/plugins/discourse-whos-online/discourse/components/whos-online\", \"@ember/template-factory\"], function (_exports, _component, _component2, _whosOnline, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const OnlineUsersWidget = dt7948.c(class OnlineUsersWidget extends _component.default {\n    static {\n      (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        <WhosOnline />\n      */\n      {\n        \"id\": \"onIiLYdJ\",\n        \"block\": \"[[[8,[32,0],null,null,null]],[],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/discourse-whos-online/discourse/connectors/discovery-list-container-top/online_users_widget.js\",\n        \"scope\": () => [_whosOnline.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }, [(0, _component2.classNames)(\"discovery-list-container-top-outlet\", \"online_users_widget\"), (0, _component2.tagName)(\"span\")]);\n  var _default = _exports.default = OnlineUsersWidget;\n});","define(\"discourse/plugins/discourse-whos-online/discourse/services/whos-online\", [\"exports\", \"@ember/service\", \"discourse/models/site\"], function (_exports, _service, _site) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class WhosOnlineService extends _service.default {\n    static {\n      dt7948.g(this.prototype, \"presence\", [_service.service]);\n    }\n    #presence = (dt7948.i(this, \"presence\"), void 0);\n    #channel;\n    init() {\n      super.init(...arguments);\n      this.#channel = this.presence.getChannel(\"/whos-online/online\");\n      if (this.enabled) {\n        this.#channel.subscribe(_site.default.currentProp(\"whos_online_state\"));\n      }\n    }\n    get users() {\n      return this.#channel?.users;\n    }\n    get count() {\n      return this.#channel?.count || 0;\n    }\n    get countOnly() {\n      return this.#channel?.countOnly || 0;\n    }\n    get enabled() {\n      const anonAndLoginRequired = !this.currentUser && this.siteSettings.login_required;\n      if (anonAndLoginRequired) {\n        return false;\n      }\n      return this.siteSettings.whos_online_display_public || this.currentUser?.trust_level >= this.siteSettings.whos_online_display_min_trust_level;\n    }\n    isUserOnline(id) {\n      return !!this.#channel?.users?.find(user => user.id === id);\n    }\n  }\n  _exports.default = WhosOnlineService;\n});"],"mappings":"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","ignoreList":[]}