{"version":3,"file":"discourse-presence.js","names":["define","_exports","_component","_templateFactory","_decorators","_computed","_service","_dec","_dec2","_dec3","_dec4","_dec5","_dec6","_dec7","_dec8","_dec9","_obj","_applyDecoratedDescriptor","target","property","decorators","descriptor","context","desc","Object","keys","forEach","key","enumerable","configurable","initializer","writable","slice","reverse","reduce","decorator","value","call","undefined","defineProperty","default","__COLOCATED_TEMPLATE__","createTemplateFactory","id","block","moduleName","isStrictMode","_default","setComponentTemplate","extend","observes","on","tagName","presence","inject","composerPresenceManager","state","replyingToTopic","editingPost","whisper","composerOpen","isReply","equal","isEdit","isWhisper","replyChannelName","topicId","whisperChannelName","this","currentUser","whisperer","editChannelName","postId","_setupChannel","channelKey","name","unsubscribe","set","getChannel","subscribe","_setupChannels","_cleanupChannels","replyingUsers","union","editingUsers","readOnly","presenceUsers","users","filter","u","siteSettings","presence_max_users_shown","shouldDisplay","gt","_contentChanged","model","reply","entity","post","topic","notifyState","closeComposer","leave","getOwnPropertyDescriptor","replyChannel","whisperChannel","replyUsers","whisperUsers","didReceiveAttrs","_super","arguments","staff","_destroyed","_runloop","_environment","_class","_descriptor","ComposerPresenceManager","constructor","super","intent","allow_users_to_hide_profile","user_option","hide_profile_and_presence","includes","_state","_enter","isTesting","_autoLeaveTimer","debounce","KEEP_ALIVE_DURATION_SECONDS","_presentChannel","cancel","channelName","enter","willDestroy","prototype"],"sources":["discourse/plugins/discourse-presence/discourse/components/composer-presence-display.js","discourse/plugins/discourse-presence/discourse/components/topic-presence-display.js","discourse/plugins/discourse-presence/discourse/services/composer-presence-manager.js","discourse/plugins/discourse-presence/discourse/templates/connectors/before-composer-controls/presence.js","discourse/plugins/discourse-presence/discourse/templates/connectors/topic-above-footer-buttons/presence.js"],"sourcesContent":["define(\"discourse/plugins/discourse-presence/discourse/components/composer-presence-display\", [\"exports\", \"@ember/component\", \"@ember/template-factory\", \"discourse-common/utils/decorators\", \"@ember/object/computed\", \"@ember/service\"], function (_exports, _component, _templateFactory, _decorators, _computed, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _obj;\n  0; //eaimeta@70e063a35619d71f0,\"ember-cli-htmlbars\",0,\"discourse-common/utils/decorators\",0,\"@ember/object/computed\",0,\"@ember/component\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.shouldDisplay}}\n    <div class=\"presence-users\">\n      <div class=\"presence-avatars\">\n        {{#each this.presenceUsers as |user|}}\n          {{avatar user imageSize=\"small\"}}\n        {{/each}}\n      </div>\n      <span class=\"presence-text\">\n        <span class=\"description\">\n          {{#if this.isReply~}}\n            {{i18n \"presence.replying\" count=this.presenceUsers.length}}\n          {{~else~}}\n            {{i18n \"presence.editing\" count=this.presenceUsers.length}}\n          {{~/if}}\n          {{~\"\"~}}\n        </span>\n        {{~\"\"~}}\n        <span class=\"wave\">\n          {{~\"\"~}}\n          <span class=\"dot\">.</span>{{~\"\"~}}\n          <span class=\"dot\">.</span>{{~\"\"~}}\n          <span class=\"dot\">.</span>{{~\"\"~}}\n        </span>\n      </span>\n    </div>\n  {{/if}}\n  */\n  {\n    \"id\": \"qNZjYTNd\",\n    \"block\": \"[[[41,[30,0,[\\\"shouldDisplay\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"presence-users\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"presence-avatars\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,2],[[28,[37,2],[[30,0,[\\\"presenceUsers\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[1,[28,[35,3],[[30,1]],[[\\\"imageSize\\\"],[\\\"small\\\"]]]],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,1],[14,0,\\\"presence-text\\\"],[12],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"description\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"isReply\\\"]],[[[1,[28,[35,4],[\\\"presence.replying\\\"],[[\\\"count\\\"],[[30,0,[\\\"presenceUsers\\\",\\\"length\\\"]]]]]]],[]],[[[1,[28,[35,4],[\\\"presence.editing\\\"],[[\\\"count\\\"],[[30,0,[\\\"presenceUsers\\\",\\\"length\\\"]]]]]]],[]]],[1,\\\"\\\"],[13],[1,\\\"\\\"],[10,1],[14,0,\\\"wave\\\"],[12],[1,\\\"\\\"],[10,1],[14,0,\\\"dot\\\"],[12],[1,\\\".\\\"],[13],[1,\\\"\\\"],[10,1],[14,0,\\\"dot\\\"],[12],[1,\\\".\\\"],[13],[1,\\\"\\\"],[10,1],[14,0,\\\"dot\\\"],[12],[1,\\\".\\\"],[13],[1,\\\"\\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"user\\\"],false,[\\\"if\\\",\\\"each\\\",\\\"-track-array\\\",\\\"avatar\\\",\\\"i18n\\\"]]\",\n    \"moduleName\": \"discourse/plugins/discourse-presence/discourse/components/composer-presence-display.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend((_dec = (0, _decorators.default)(\"model.replyingToTopic\", \"model.editingPost\", \"model.whisper\", \"model.composerOpened\"), _dec2 = (0, _decorators.default)(\"model.topic.id\", \"isReply\", \"isWhisper\"), _dec3 = (0, _decorators.default)(\"model.topic.id\", \"isReply\", \"isWhisper\"), _dec4 = (0, _decorators.default)(\"isEdit\", \"model.post.id\"), _dec5 = (0, _decorators.observes)(\"replyChannelName\", \"whisperChannelName\", \"editChannelName\"), _dec6 = (0, _decorators.default)(\"isReply\", \"replyingUsers.[]\", \"editingUsers.[]\"), _dec7 = (0, _decorators.on)(\"didInsertElement\"), _dec8 = (0, _decorators.observes)(\"model.reply\", \"state\", \"model.post.id\", \"model.topic.id\"), _dec9 = (0, _decorators.on)(\"willDestroyElement\"), (_obj = {\n    tagName: \"\",\n    presence: (0, _service.inject)(),\n    composerPresenceManager: (0, _service.inject)(),\n    state(replyingToTopic, editingPost, whisper, composerOpen) {\n      if (!composerOpen) {\n        return;\n      } else if (editingPost) {\n        return \"edit\";\n      } else if (whisper) {\n        return \"whisper\";\n      } else if (replyingToTopic) {\n        return \"reply\";\n      }\n    },\n    isReply: (0, _computed.equal)(\"state\", \"reply\"),\n    isEdit: (0, _computed.equal)(\"state\", \"edit\"),\n    isWhisper: (0, _computed.equal)(\"state\", \"whisper\"),\n    replyChannelName(topicId, isReply, isWhisper) {\n      if (topicId && (isReply || isWhisper)) {\n        return `/discourse-presence/reply/${topicId}`;\n      }\n    },\n    whisperChannelName(topicId, isReply, isWhisper) {\n      if (topicId && this.currentUser.whisperer && (isReply || isWhisper)) {\n        return `/discourse-presence/whisper/${topicId}`;\n      }\n    },\n    editChannelName(isEdit, postId) {\n      if (isEdit) {\n        return `/discourse-presence/edit/${postId}`;\n      }\n    },\n    _setupChannel(channelKey, name) {\n      if (this[channelKey]?.name !== name) {\n        this[channelKey]?.unsubscribe();\n        if (name) {\n          this.set(channelKey, this.presence.getChannel(name));\n          this[channelKey].subscribe();\n        } else if (this[channelKey]) {\n          this.set(channelKey, null);\n        }\n      }\n    },\n    _setupChannels() {\n      this._setupChannel(\"replyChannel\", this.replyChannelName);\n      this._setupChannel(\"whisperChannel\", this.whisperChannelName);\n      this._setupChannel(\"editChannel\", this.editChannelName);\n    },\n    _cleanupChannels() {\n      this._setupChannel(\"replyChannel\", null);\n      this._setupChannel(\"whisperChannel\", null);\n      this._setupChannel(\"editChannel\", null);\n    },\n    replyingUsers: (0, _computed.union)(\"replyChannel.users\", \"whisperChannel.users\"),\n    editingUsers: (0, _computed.readOnly)(\"editChannel.users\"),\n    presenceUsers(isReply, replyingUsers, editingUsers) {\n      const users = isReply ? replyingUsers : editingUsers;\n      return users?.filter(u => u.id !== this.currentUser.id)?.slice(0, this.siteSettings.presence_max_users_shown);\n    },\n    shouldDisplay: (0, _computed.gt)(\"presenceUsers.length\", 0),\n    subscribe() {\n      this._setupChannels();\n    },\n    _contentChanged() {\n      if (this.model.reply === \"\") {\n        return;\n      }\n      const entity = this.state === \"edit\" ? this.model?.post : this.model?.topic;\n      this.composerPresenceManager.notifyState(this.state, entity?.id);\n    },\n    closeComposer() {\n      this._cleanupChannels();\n      this.composerPresenceManager.leave();\n    }\n  }, (_applyDecoratedDescriptor(_obj, \"state\", [_dec], Object.getOwnPropertyDescriptor(_obj, \"state\"), _obj), _applyDecoratedDescriptor(_obj, \"replyChannelName\", [_dec2], Object.getOwnPropertyDescriptor(_obj, \"replyChannelName\"), _obj), _applyDecoratedDescriptor(_obj, \"whisperChannelName\", [_dec3], Object.getOwnPropertyDescriptor(_obj, \"whisperChannelName\"), _obj), _applyDecoratedDescriptor(_obj, \"editChannelName\", [_dec4], Object.getOwnPropertyDescriptor(_obj, \"editChannelName\"), _obj), _applyDecoratedDescriptor(_obj, \"_setupChannels\", [_dec5], Object.getOwnPropertyDescriptor(_obj, \"_setupChannels\"), _obj), _applyDecoratedDescriptor(_obj, \"presenceUsers\", [_dec6], Object.getOwnPropertyDescriptor(_obj, \"presenceUsers\"), _obj), _applyDecoratedDescriptor(_obj, \"subscribe\", [_dec7], Object.getOwnPropertyDescriptor(_obj, \"subscribe\"), _obj), _applyDecoratedDescriptor(_obj, \"_contentChanged\", [_dec8], Object.getOwnPropertyDescriptor(_obj, \"_contentChanged\"), _obj), _applyDecoratedDescriptor(_obj, \"closeComposer\", [_dec9], Object.getOwnPropertyDescriptor(_obj, \"closeComposer\"), _obj)), _obj))));\n  _exports.default = _default;\n});","define(\"discourse/plugins/discourse-presence/discourse/components/topic-presence-display\", [\"exports\", \"@ember/component\", \"@ember/template-factory\", \"discourse-common/utils/decorators\", \"@ember/object/computed\", \"@ember/service\"], function (_exports, _component, _templateFactory, _decorators, _computed, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _dec2, _dec3, _dec4, _dec5, _obj;\n  0; //eaimeta@70e063a35619d71f0,\"ember-cli-htmlbars\",0,\"discourse-common/utils/decorators\",0,\"@ember/component\",0,\"@ember/object/computed\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.shouldDisplay}}\n    <div class=\"presence-users\">\n      <div class=\"presence-avatars\">\n        {{#each this.users as |user|}}\n          <UserLink @user={{user}}>\n            {{avatar user imageSize=\"small\"}}\n          </UserLink>\n        {{/each}}\n      </div>\n      <span class=\"presence-text\">\n        <span class=\"description\">\n          {{i18n \"presence.replying_to_topic\" count=this.users.length}}\n        </span>\n        <span class=\"wave\">\n          {{~\"\"~}}\n          <span class=\"dot\">.</span>{{~\"\"~}}\n          <span class=\"dot\">.</span>{{~\"\"~}}\n          <span class=\"dot\">.</span>{{~\"\"~}}\n        </span>\n      </span>\n    </div>\n  {{/if}}\n  */\n  {\n    \"id\": \"Q0K+9CNI\",\n    \"block\": \"[[[41,[30,0,[\\\"shouldDisplay\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"presence-users\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"presence-avatars\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,2],[[28,[37,2],[[30,0,[\\\"users\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[8,[39,3],null,[[\\\"@user\\\"],[[30,1]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[1,[28,[35,4],[[30,1]],[[\\\"imageSize\\\"],[\\\"small\\\"]]]],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,1],[14,0,\\\"presence-text\\\"],[12],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"description\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[28,[35,5],[\\\"presence.replying_to_topic\\\"],[[\\\"count\\\"],[[30,0,[\\\"users\\\",\\\"length\\\"]]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"wave\\\"],[12],[1,\\\"\\\"],[10,1],[14,0,\\\"dot\\\"],[12],[1,\\\".\\\"],[13],[1,\\\"\\\"],[10,1],[14,0,\\\"dot\\\"],[12],[1,\\\".\\\"],[13],[1,\\\"\\\"],[10,1],[14,0,\\\"dot\\\"],[12],[1,\\\".\\\"],[13],[1,\\\"\\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"user\\\"],false,[\\\"if\\\",\\\"each\\\",\\\"-track-array\\\",\\\"user-link\\\",\\\"avatar\\\",\\\"i18n\\\"]]\",\n    \"moduleName\": \"discourse/plugins/discourse-presence/discourse/components/topic-presence-display.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend((_dec = (0, _decorators.default)(\"replyChannel.users.[]\"), _dec2 = (0, _decorators.default)(\"whisperChannel.users.[]\"), _dec3 = (0, _decorators.default)(\"topic.id\"), _dec4 = (0, _decorators.default)(\"topic.id\"), _dec5 = (0, _decorators.on)(\"willDestroyElement\"), (_obj = {\n    topic: null,\n    presence: (0, _service.inject)(),\n    replyChannel: null,\n    whisperChannel: null,\n    replyUsers(users) {\n      return users?.filter(u => u.id !== this.currentUser.id);\n    },\n    whisperUsers(users) {\n      return users?.filter(u => u.id !== this.currentUser.id);\n    },\n    users: (0, _computed.union)(\"replyUsers\", \"whisperUsers\"),\n    replyChannelName(id) {\n      return `/discourse-presence/reply/${id}`;\n    },\n    whisperChannelName(id) {\n      return `/discourse-presence/whisper/${id}`;\n    },\n    shouldDisplay: (0, _computed.gt)(\"users.length\", 0),\n    didReceiveAttrs() {\n      this._super(...arguments);\n      if (this.replyChannel?.name !== this.replyChannelName) {\n        this.replyChannel?.unsubscribe();\n        this.set(\"replyChannel\", this.presence.getChannel(this.replyChannelName));\n        this.replyChannel.subscribe();\n      }\n      if (this.currentUser.staff && this.whisperChannel?.name !== this.whisperChannelName) {\n        this.whisperChannel?.unsubscribe();\n        this.set(\"whisperChannel\", this.presence.getChannel(this.whisperChannelName));\n        this.whisperChannel.subscribe();\n      }\n    },\n    _destroyed() {\n      this.replyChannel?.unsubscribe();\n      this.whisperChannel?.unsubscribe();\n    }\n  }, (_applyDecoratedDescriptor(_obj, \"replyUsers\", [_dec], Object.getOwnPropertyDescriptor(_obj, \"replyUsers\"), _obj), _applyDecoratedDescriptor(_obj, \"whisperUsers\", [_dec2], Object.getOwnPropertyDescriptor(_obj, \"whisperUsers\"), _obj), _applyDecoratedDescriptor(_obj, \"replyChannelName\", [_dec3], Object.getOwnPropertyDescriptor(_obj, \"replyChannelName\"), _obj), _applyDecoratedDescriptor(_obj, \"whisperChannelName\", [_dec4], Object.getOwnPropertyDescriptor(_obj, \"whisperChannelName\"), _obj), _applyDecoratedDescriptor(_obj, \"_destroyed\", [_dec5], Object.getOwnPropertyDescriptor(_obj, \"_destroyed\"), _obj)), _obj))));\n  _exports.default = _default;\n});","define(\"discourse/plugins/discourse-presence/discourse/services/composer-presence-manager\", [\"exports\", \"@ember/service\", \"@ember/runloop\", \"discourse-common/config/environment\"], function (_exports, _service, _runloop, _environment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@ember/runloop\",0,\"discourse-common/config/environment\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(target, property, descriptor, context) { if (!descriptor) return; Object.defineProperty(target, property, { enumerable: descriptor.enumerable, configurable: descriptor.configurable, writable: descriptor.writable, value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 }); }\n  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n  function _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\n  function _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n  function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }\n  function _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that ' + 'transform-class-properties is enabled and runs after the decorators transform.'); }\n  const PRESENCE_CHANNEL_PREFIX = \"/discourse-presence\";\n  const KEEP_ALIVE_DURATION_SECONDS = 10;\n  let ComposerPresenceManager = (_class = class ComposerPresenceManager extends _service.default {\n    constructor() {\n      super(...arguments);\n      _initializerDefineProperty(this, \"presence\", _descriptor, this);\n    }\n    notifyState(intent, id) {\n      if (this.siteSettings.allow_users_to_hide_profile && this.currentUser.user_option.hide_profile_and_presence) {\n        return;\n      }\n      if (intent === undefined) {\n        return this.leave();\n      }\n      if (![\"reply\", \"whisper\", \"edit\"].includes(intent)) {\n        throw `Unknown intent ${intent}`;\n      }\n      const state = `${intent}/${id}`;\n      if (this._state !== state) {\n        this._enter(intent, id);\n        this._state = state;\n      }\n      if (!(0, _environment.isTesting)()) {\n        this._autoLeaveTimer = (0, _runloop.debounce)(this, this.leave, KEEP_ALIVE_DURATION_SECONDS * 1000);\n      }\n    }\n    leave() {\n      this._presentChannel?.leave();\n      this._presentChannel = null;\n      this._state = null;\n      if (this._autoLeaveTimer) {\n        (0, _runloop.cancel)(this._autoLeaveTimer);\n        this._autoLeaveTimer = null;\n      }\n    }\n    _enter(intent, id) {\n      this.leave();\n      let channelName = `${PRESENCE_CHANNEL_PREFIX}/${intent}/${id}`;\n      this._presentChannel = this.presence.getChannel(channelName);\n      this._presentChannel.enter();\n    }\n    willDestroy() {\n      this.leave();\n    }\n  }, (_descriptor = _applyDecoratedDescriptor(_class.prototype, \"presence\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  })), _class);\n  _exports.default = ComposerPresenceManager;\n});","define(\"discourse/plugins/discourse-presence/discourse/templates/connectors/before-composer-controls/presence\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"ember-cli-htmlbars\"eaimeta@70e063a35619d71f\n  var _default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <ComposerPresenceDisplay @model={{this.model}} />\n  */\n  {\n    \"id\": \"G/OxL/Vj\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@model\\\"],[[30,0,[\\\"model\\\"]]]],null]],[],false,[\\\"composer-presence-display\\\"]]\",\n    \"moduleName\": \"discourse/plugins/discourse-presence/discourse/templates/connectors/before-composer-controls/presence.hbs\",\n    \"isStrictMode\": false\n  });\n  _exports.default = _default;\n});","define(\"discourse/plugins/discourse-presence/discourse/templates/connectors/topic-above-footer-buttons/presence\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"ember-cli-htmlbars\"eaimeta@70e063a35619d71f\n  var _default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! Note: the topic-above-footer-buttons outlet is only rendered for logged-in users }}\n  <TopicPresenceDisplay @topic={{this.model}} />\n  */\n  {\n    \"id\": \"CmudhbhK\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@topic\\\"],[[30,0,[\\\"model\\\"]]]],null]],[],false,[\\\"topic-presence-display\\\"]]\",\n    \"moduleName\": \"discourse/plugins/discourse-presence/discourse/templates/connectors/topic-above-footer-buttons/presence.hbs\",\n    \"isStrictMode\": false\n  });\n  _exports.default = _default;\n});"],"mappings":"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"}