Просмотр исходного кода

refactored threads lists to use viewmodels, added settings for threads pagination, turned fresh content setting into readtracker cutoff, added browseable_categories meta-permission, misc style updates

Rafał Pitoń 9 лет назад
Родитель
Сommit
1c41f9003a

+ 21 - 13
docs/developers/settings.rst

@@ -248,17 +248,6 @@ MISAGO_DYNAMIC_AVATAR_DRAWER
 Function used to create unique avatar for this user. Allows for customization of algorithm used to generate those.
 
 
-MISAGO_EMBER_CLI_ORIGIN
------------------------
-
-Local address under which Ember-CLI web server is being ran. Used for rewriting redirects in development using Ember-CLI (``DEBUG = True``). Defaults to `http://localhost:4200`. Set this to empty string or ``False`` to disable this feature completely.
-
-
-MISAGO_FRESH_CONTENT_PERIOD
----------------------------
-Controls amount of data used in building "New threads" and "Threads with unread replies" lists. Active forums can try lowering this value while less active ones may wish to increase this number.
-
-
 MISAGO_HOURLY_POST_LIMIT
 -----------------------
 
@@ -306,6 +295,13 @@ MISAGO_POSTS_PER_PAGE
 Controls number of posts displayed on thread page. Greater numbers can increase number of objects loaded into memory and thus depending on features enabled greatly increase memory usage.
 
 
+MISAGO_POSTS_TAIL
+-----------------
+
+Defines minimal number of posts for thread's last page. If number of posts on last page is smaller or equal to one specified in this setting, last page will be appended to previous page instead.
+
+
+
 MISAGO_RANKING_LENGTH
 ---------------------
 
@@ -319,6 +315,12 @@ MISAGO_RANKING_SIZE
 Maximum number of items on ranking page.
 
 
+MISAGO_READTRACKER_CUTOFF
+-------------------------
+
+Controls amount of data used by readtracking system. All content older than number of days specified in this setting is considered old and read, even if opposite is true. Active forums can try lowering this value while less active ones may wish to increase it instead.
+
+
 MISAGO_SENDFILE_HEADER
 ----------------------
 
@@ -353,10 +355,16 @@ MISAGO_STOP_FORUM_SPAM_USE
 This settings allows you to decide wheter of not `Stop Forum Spam <http://www.stopforumspam.com/>`_ database should be used to validate IPs and emails during new users registrations.
 
 
-MISAGO_THREAD_TAIL
+MISAGO_THREADS_PER_PAGE
+---------------------
+
+Controls number of threads displayed on page. Greater numbers can increase number of objects loaded into memory and thus depending on features enabled greatly increase memory usage.
+
+
+MISAGO_THREADS_TAIL
 ------------------
 
-Defines minimal number of posts for threads last page. If number of posts on last page is smaller or equal to one specified in this setting, last page will be appended to previous page instead.
+Defines minimal number of threads for lists last page. If number of threads on last page is smaller or equal to one specified in this setting, last page will be appended to previous page instead.
 
 
 MISAGO_THREAD_TYPES

+ 3 - 1
frontend/src/components/threads/header.js

@@ -48,8 +48,10 @@ export default class extends React.Component {
   getGoBackButton() {
     if (this.props.route.category.parent) {
       /* jshint ignore:start */
+      const parent = this.props.categories[this.props.route.category.parent];
+
       return <Link className="btn btn-default btn-aligned btn-icon btn-go-back pull-left"
-                   to={this.props.route.category.parent.absolute_url + this.props.route.list.path}>
+                   to={parent.absolute_url + this.props.route.list.path}>
         <span className="material-icon">
           keyboard_arrow_left
         </span>

+ 2 - 1
frontend/src/components/threads/route.js

@@ -264,7 +264,8 @@ export default class extends WithDropdown {
     /* jshint ignore:start */
     return <div className={this.getClassName()}>
 
-      <Header disabled={!this.state.isLoaded}
+      <Header categories={this.props.route.categoriesMap}
+              disabled={!this.state.isLoaded}
               threads={this.props.threads}
               title={this.getTitle()}
               toggleNav={this.toggleNav}

+ 1 - 1
frontend/src/components/threads/utils.js

@@ -1,7 +1,7 @@
 import misago from 'misago/index';
 
 export function getPageTitle(route) {
-  if (!route.category.special_role) {
+  if (route.category.level) {
     if (route.list.path) {
       return {
         title: route.list.longName,

+ 4 - 0
misago/categories/permissions.py

@@ -35,6 +35,7 @@ ACL Builder
 def build_acl(acl, roles, key_name):
     new_acl = {
         'visible_categories': [],
+        'browseable_categories': [],
         'categories': {},
     }
     new_acl.update(acl)
@@ -83,6 +84,9 @@ def build_category_acl(acl, category, categories_roles, key_name):
         acl['visible_categories'].append(category.pk)
         acl['categories'][category.pk] = final_acl
 
+        if final_acl['can_browse']:
+            acl['browseable_categories'].append(category.pk)
+
 
 """
 ACL's for targets

+ 3 - 26
misago/categories/serializers.py

@@ -32,7 +32,7 @@ def last_activity_detail(f):
 
 
 class CategorySerializer(serializers.ModelSerializer):
-    parent = serializers.SerializerMethodField()
+    parent = serializers.PrimaryKeyRelatedField(read_only=True)
     description = serializers.SerializerMethodField()
     is_read = serializers.SerializerMethodField()
     subcategories = serializers.SerializerMethodField()
@@ -70,15 +70,6 @@ class CategorySerializer(serializers.ModelSerializer):
             'rght',
         )
 
-    def get_parent(self, obj):
-        try:
-            if obj.parent:
-                return BasicCategorySerializer(obj.parent).data
-            else:
-                return None
-        except AttributeError:
-            return None
-
     def get_description(self, obj):
         if obj.description:
             return {
@@ -133,7 +124,7 @@ class CategorySerializer(serializers.ModelSerializer):
         }
 
 
-class IndexCategorySerializer(CategorySerializer):
+class BasicCategorySerializer(CategorySerializer):
     class Meta:
         model = Category
         fields = (
@@ -148,19 +139,5 @@ class IndexCategorySerializer(CategorySerializer):
             'level',
             'lft',
             'rght',
-        )
-
-
-class BasicCategorySerializer(CategorySerializer):
-    class Meta:
-        model = Category
-        fields = (
-            'id',
-            'name',
-            'is_closed',
-            'css_class',
-            'absolute_url',
-            'level',
-            'lft',
-            'rght',
+            'is_read',
         )

+ 11 - 7
misago/conf/defaults.py

@@ -256,9 +256,14 @@ MISAGO_AVATARS_SIZES = (400, 200, 150, 100, 64, 50, 30, 20)
 MISAGO_AVATAR_SERVER_PATH = '/user-avatar'
 
 
+# Number of threads displayed on single page
+MISAGO_THREADS_PER_PAGE = 25
+MISAGO_THREADS_TAIL = 15
+
+
 # Number of posts displayed on single thread page
 MISAGO_POSTS_PER_PAGE = 15
-MISAGO_THREAD_TAIL = 7
+MISAGO_POSTS_TAIL = 7
 
 
 # Controls max age in days of items that Misago has to process to make rankings
@@ -276,12 +281,11 @@ MISAGO_RANKING_SIZE = 50
 MISAGO_USERS_PER_PAGE = 12
 
 
-# Controls amount of data used for new threads/replies lists
-# Only unread threads younger than number of days specified in this setting
-# will be considered fresh for "new threads" list
-# Only unread threads with last reply younger than number of days specified
-# there will be confidered fresh for "Threads with unread replies" list
-MISAGO_FRESH_CONTENT_PERIOD = 40
+# Controls amount of data used by readtracking system
+# Items older than number of days specified below are considered read
+# Depending on amount of new content being posted on your forum you may want
+# To decrease or increase this number to fine-tune readtracker performance
+MISAGO_READTRACKER_CUTOFF = 40
 
 
 # X-Sendfile

+ 8 - 4
misago/readtracker/dates.py

@@ -5,9 +5,13 @@ from django.utils import timezone
 
 def is_date_tracked(date, user, category_read_cutoff=None):
     if date:
-        if category_read_cutoff and category_read_cutoff > date:
-            return False
-        else:
-            return date > user.joined_on
+        cutoff_date = timezone.now() - timedelta(days=settings.MISAGO_READTRACKER_CUTOFF)
+
+        if cutoff_date < user.joined_on:
+            cutoff_date = user.joined_on
+        if category_read_cutoff and cutoff_date < category_read_cutoff:
+            cutoff_date = category_read_cutoff
+
+        return date > cutoff_date
     else:
         return False

+ 1 - 2
misago/readtracker/threadstracker.py

@@ -44,8 +44,7 @@ def make_categories_threads_read_aware(user, threads):
     threads_dict = {}
     for thread in threads:
         category_cutoff = categories_cutoffs.get(thread.category_id)
-        thread.is_read = not is_date_tracked(
-            thread.last_post_on, user, category_cutoff)
+        thread.is_read = not is_date_tracked(thread.last_post_on, user, category_cutoff)
         thread.is_new = True
 
         if not thread.is_read:

+ 13 - 14
misago/static/misago/js/misago.js

@@ -1,15 +1,14 @@
-!function e(t,r,n){function a(s,i){if(!r[s]){if(!t[s]){var l="function"==typeof require&&require;if(!i&&l)return l(s,!0);if(o)return o(s,!0);var u=new Error("Cannot find module '"+s+"'");throw u.code="MODULE_NOT_FOUND",u}var c=r[s]={exports:{}};t[s][0].call(c.exports,function(e){var r=t[s][1][e];return a(r?r:e)},c,c.exports,e,t,r,n)}return r[s].exports}for(var o="function"==typeof require&&require,s=0;s<n.length;s++)a(n[s]);return a}({1:[function(e,t,r){(function(t){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0}),r.Misago=void 0;var o=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),s=e("../../../misago/frontend/src/utils/ordered-list"),i=n(s),l=r.Misago=function(){function e(){a(this,e),this._initializers=[],this._context={}}return o(e,[{key:"addInitializer",value:function(e){this._initializers.push({key:e.name,item:e.initializer,after:e.after,before:e.before})}},{key:"init",value:function(e){var t=this;this._context=e;var r=new i["default"](this._initializers).orderedValues();r.forEach(function(e){e(t)})}},{key:"has",value:function(e){return!!this._context[e]}},{key:"get",value:function(e,t){return this.has(e)?this._context[e]:t||void 0}},{key:"pop",value:function(e){if(this.has(e)){var t=this._context[e];return this._context[e]=null,t}}}]),e}(),u=new l;t.misago=u,r["default"]=u}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../../../misago/frontend/src/utils/ordered-list":183}],2:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(){l["default"].init(s["default"].get("CSRF_COOKIE_NAME"))}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../misago/frontend/src/index"),s=n(o),i=e("../../../../misago/frontend/src/services/ajax"),l=n(i);s["default"].addInitializer({name:"ajax",initializer:a})},{"../../../../misago/frontend/src/index":155,"../../../../misago/frontend/src/services/ajax":164}],3:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(){l["default"].init(d["default"],h["default"],c["default"])}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../misago/frontend/src/index"),s=n(o),i=e("../../../../misago/frontend/src/services/auth"),l=n(i),u=e("../../../../misago/frontend/src/services/modal"),c=n(u),f=e("../../../../misago/frontend/src/services/store"),d=n(f),p=e("../../../../misago/frontend/src/services/local-storage"),h=n(p);s["default"].addInitializer({name:"auth",initializer:a,after:"store"})},{"../../../../misago/frontend/src/index":155,"../../../../misago/frontend/src/services/auth":165,"../../../../misago/frontend/src/services/local-storage":168,"../../../../misago/frontend/src/services/modal":170,"../../../../misago/frontend/src/services/store":174}],4:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e){c["default"].init(e,l["default"],d["default"],h["default"])}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../misago/frontend/src/index"),s=n(o),i=e("../../../../misago/frontend/src/services/ajax"),l=n(i),u=e("../../../../misago/frontend/src/services/captcha"),c=n(u),f=e("../../../../misago/frontend/src/services/include"),d=n(f),p=e("../../../../misago/frontend/src/services/snackbar"),h=n(p);s["default"].addInitializer({name:"captcha",initializer:a})},{"../../../../misago/frontend/src/index":155,"../../../../misago/frontend/src/services/ajax":164,"../../../../misago/frontend/src/services/captcha":166,"../../../../misago/frontend/src/services/include":167,"../../../../misago/frontend/src/services/snackbar":173}],5:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(){(0,f["default"])((0,o.connect)(l.select)(u["default"]),"auth-message-mount")}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("react-redux"),s=e("../../../../../misago/frontend/src/index"),i=n(s),l=e("../../../../../misago/frontend/src/components/auth-message"),u=n(l),c=e("../../../../../misago/frontend/src/utils/mount-component"),f=n(c);i["default"].addInitializer({name:"component:auth-message",initializer:a,after:"store"})},{"../../../../../misago/frontend/src/components/auth-message":37,"../../../../../misago/frontend/src/index":155,"../../../../../misago/frontend/src/utils/mount-component":182,"react-redux":"react-redux"}],6:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e){e.has("BAN_MESSAGE")&&(0,l["default"])(e.get("BAN_MESSAGE"),!1)}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../../misago/frontend/src/index"),s=n(o),i=e("../../../../../misago/frontend/src/utils/banned-page"),l=n(i);s["default"].addInitializer({name:"component:baned-page",initializer:a,after:"store"})},{"../../../../../misago/frontend/src/index":155,"../../../../../misago/frontend/src/utils/banned-page":176}],7:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(){document.getElementById("categories-mount")&&(0,f["default"])((0,o.connect)(s.select)(i["default"]),"categories-mount")}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("react-redux"),s=e("../../../../../misago/frontend/src/components/categories/root"),i=n(s),l=e("../../../../../misago/frontend/src/index"),u=n(l),c=e("../../../../../misago/frontend/src/utils/mount-component"),f=n(c);u["default"].addInitializer({name:"component:reset-password-form",initializer:a,after:"store"})},{"../../../../../misago/frontend/src/components/categories/root":45,"../../../../../misago/frontend/src/index":155,"../../../../../misago/frontend/src/utils/mount-component":182,"react-redux":"react-redux"}],8:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e){e.has("USER_OPTIONS")&&(0,c["default"])({root:l["default"].get("USERCP_URL"),component:s["default"],paths:(0,o.paths)()})}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../../misago/frontend/src/components/options/root"),s=n(o),i=e("../../../../../misago/frontend/src/index"),l=n(i),u=e("../../../../../misago/frontend/src/utils/routed-component"),c=n(u);l["default"].addInitializer({name:"component:options",initializer:a,after:"store"})},{"../../../../../misago/frontend/src/components/options/root":67,"../../../../../misago/frontend/src/index":155,"../../../../../misago/frontend/src/utils/routed-component":186}],9:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e){e.has("PROFILE")&&e.has("PROFILE_PAGES")&&(0,f["default"])({root:u["default"].get("PROFILE").absolute_url,component:(0,o.connect)(s.select)(i["default"]),paths:(0,s.paths)()})}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("react-redux"),s=e("../../../../../misago/frontend/src/components/profile/root"),i=n(s),l=e("../../../../../misago/frontend/src/index"),u=n(l),c=e("../../../../../misago/frontend/src/utils/routed-component"),f=n(c);u["default"].addInitializer({name:"component:profile",initializer:a,after:"reducer:profile-hydrate"})},{"../../../../../misago/frontend/src/components/profile/root":85,"../../../../../misago/frontend/src/index":155,"../../../../../misago/frontend/src/utils/routed-component":186,"react-redux":"react-redux"}],10:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(){document.getElementById("request-activation-link-mount")&&(0,c["default"])(l["default"],"request-activation-link-mount",!1)}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../../misago/frontend/src/index"),s=n(o),i=e("../../../../../misago/frontend/src/components/request-activation-link"),l=n(i),u=e("../../../../../misago/frontend/src/utils/mount-component"),c=n(u);s["default"].addInitializer({name:"component:request-activation-link",initializer:a,after:"store"})},{"../../../../../misago/frontend/src/components/request-activation-link":89,"../../../../../misago/frontend/src/index":155,"../../../../../misago/frontend/src/utils/mount-component":182}],11:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(){document.getElementById("request-password-reset-mount")&&(0,c["default"])(l["default"],"request-password-reset-mount",!1)}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../../misago/frontend/src/index"),s=n(o),i=e("../../../../../misago/frontend/src/components/request-password-reset"),l=n(i),u=e("../../../../../misago/frontend/src/utils/mount-component"),c=n(u);s["default"].addInitializer({name:"component:request-password-reset",initializer:a,after:"store"})},{"../../../../../misago/frontend/src/components/request-password-reset":90,"../../../../../misago/frontend/src/index":155,"../../../../../misago/frontend/src/utils/mount-component":182}],12:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(){document.getElementById("reset-password-form-mount")&&(0,c["default"])(l["default"],"reset-password-form-mount",!1)}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../../misago/frontend/src/index"),s=n(o),i=e("../../../../../misago/frontend/src/components/reset-password-form"),l=n(i),u=e("../../../../../misago/frontend/src/utils/mount-component"),c=n(u);s["default"].addInitializer({name:"component:reset-password-form",initializer:a,after:"store"})},{"../../../../../misago/frontend/src/components/reset-password-form":91,"../../../../../misago/frontend/src/index":155,"../../../../../misago/frontend/src/utils/mount-component":182}],13:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(){(0,c["default"])((0,o.connect)(l.select)(l.Snackbar),"snackbar-mount")}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("react-redux"),s=e("../../../../../misago/frontend/src/index"),i=n(s),l=e("../../../../../misago/frontend/src/components/snackbar"),u=e("../../../../../misago/frontend/src/utils/mount-component"),c=n(u);i["default"].addInitializer({name:"component:snackbar",initializer:a,after:"snackbar"})},{"../../../../../misago/frontend/src/components/snackbar":95,"../../../../../misago/frontend/src/index":155,"../../../../../misago/frontend/src/utils/mount-component":182,"react-redux":"react-redux"}],14:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e){e.has("THREADS")&&e.has("CATEGORIES")&&(0,u["default"])({paths:(0,o.paths)(e.get("user"))})}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../../misago/frontend/src/components/threads/root"),s=e("../../../../../misago/frontend/src/index"),i=n(s),l=e("../../../../../misago/frontend/src/utils/routed-component"),u=n(l);i["default"].addInitializer({name:"component:threads",initializer:a,after:"store"})},{"../../../../../misago/frontend/src/components/threads/root":124,"../../../../../misago/frontend/src/index":155,"../../../../../misago/frontend/src/utils/routed-component":186}],15:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(){(0,c["default"])((0,o.connect)(l.select)(l.UserMenu),"user-menu-mount"),(0,c["default"])((0,o.connect)(l.select)(l.CompactUserMenu),"user-menu-compact-mount")}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("react-redux"),s=e("../../../../../misago/frontend/src/index"),i=n(s),l=e("../../../../../misago/frontend/src/components/user-menu/root"),u=e("../../../../../misago/frontend/src/utils/mount-component"),c=n(u);i["default"].addInitializer({name:"component:user-menu",initializer:a,after:"store"})},{"../../../../../misago/frontend/src/components/user-menu/root":129,"../../../../../misago/frontend/src/index":155,"../../../../../misago/frontend/src/utils/mount-component":182,"react-redux":"react-redux"}],16:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e){e.has("USERS_LISTS")&&(0,c["default"])({root:l["default"].get("USERS_LIST_URL"),component:s["default"],paths:(0,o.paths)()})}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../../misago/frontend/src/components/users/root"),s=n(o),i=e("../../../../../misago/frontend/src/index"),l=n(i),u=e("../../../../../misago/frontend/src/utils/routed-component"),c=n(u);l["default"].addInitializer({name:"component:users",initializer:a,after:"store"})},{"../../../../../misago/frontend/src/components/users/root":152,"../../../../../misago/frontend/src/index":155,"../../../../../misago/frontend/src/utils/routed-component":186}],17:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e){l["default"].init(e.get("STATIC_URL"))}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../misago/frontend/src/index"),s=n(o),i=e("../../../../misago/frontend/src/services/include"),l=n(i);s["default"].addInitializer({name:"include",initializer:a})},{"../../../../misago/frontend/src/index":155,"../../../../misago/frontend/src/services/include":167}],18:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(){l["default"].init("misago_")}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../misago/frontend/src/index"),s=n(o),i=e("../../../../misago/frontend/src/services/local-storage"),l=n(i);s["default"].addInitializer({name:"local-storage",initializer:a})},{"../../../../misago/frontend/src/index":155,"../../../../misago/frontend/src/services/local-storage":168}],19:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(){var e=document.getElementById("mobile-navbar-dropdown-mount");e&&l["default"].init(e)}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../misago/frontend/src/index"),s=n(o),i=e("../../../../misago/frontend/src/services/mobile-navbar-dropdown"),l=n(i);s["default"].addInitializer({name:"dropdown",initializer:a,before:"store"})},{"../../../../misago/frontend/src/index":155,"../../../../misago/frontend/src/services/mobile-navbar-dropdown":169}],20:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(){var e=document.getElementById("modal-mount");e&&l["default"].init(e)}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../misago/frontend/src/index"),s=n(o),i=e("../../../../misago/frontend/src/services/modal"),l=n(i);s["default"].addInitializer({name:"modal",initializer:a,before:"store"})},{"../../../../misago/frontend/src/index":155,"../../../../misago/frontend/src/services/modal":170}],21:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(){s["default"].locale($("html").attr("lang"))}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("moment"),s=n(o),i=e("../../../../misago/frontend/src/index"),l=n(i);l["default"].addInitializer({name:"moment",initializer:a})},{"../../../../misago/frontend/src/index":155,moment:"moment"}],22:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e){l["default"].init(e.get("SETTINGS").forum_index_title,e.get("SETTINGS").forum_name)}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../misago/frontend/src/index"),s=n(o),i=e("../../../../misago/frontend/src/services/page-title"),l=n(i);s["default"].addInitializer({name:"page-title",initializer:a})},{"../../../../misago/frontend/src/index":155,"../../../../misago/frontend/src/services/page-title":171}],23:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(){d["default"].init(l["default"],c["default"])}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../misago/frontend/src/index"),s=n(o),i=e("../../../../misago/frontend/src/services/ajax"),l=n(i),u=e("../../../../misago/frontend/src/services/snackbar"),c=n(u),f=e("../../../../misago/frontend/src/services/polls"),d=n(f);s["default"].addInitializer({name:"polls",initializer:a})},{"../../../../misago/frontend/src/index":155,"../../../../misago/frontend/src/services/ajax":164,"../../../../misago/frontend/src/services/polls":172,"../../../../misago/frontend/src/services/snackbar":173}],24:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e){c["default"].addReducer("auth",l["default"],Object.assign({isAuthenticated:e.get("isAuthenticated"),isAnonymous:!e.get("isAuthenticated"),user:e.get("user")},i.initialState))}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../../misago/frontend/src/index"),s=n(o),i=e("../../../../../misago/frontend/src/reducers/auth"),l=n(i),u=e("../../../../../misago/frontend/src/services/store"),c=n(u);s["default"].addInitializer({name:"reducer:auth",initializer:a,before:"store"})},{"../../../../../misago/frontend/src/index":155,"../../../../../misago/frontend/src/reducers/auth":156,"../../../../../misago/frontend/src/services/store":174}],25:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(){s["default"].has("PROFILE")&&u["default"].dispatch((0,i.hydrate)(s["default"].get("PROFILE")))}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../../misago/frontend/src/index"),s=n(o),i=e("../../../../../misago/frontend/src/reducers/profile"),l=e("../../../../../misago/frontend/src/services/store"),u=n(l);s["default"].addInitializer({name:"reducer:profile-hydrate",initializer:a,after:"store"})},{"../../../../../misago/frontend/src/index":155,"../../../../../misago/frontend/src/reducers/profile":157,"../../../../../misago/frontend/src/services/store":174}],26:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(){c["default"].addReducer("profile",l["default"],{})}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../../misago/frontend/src/index"),s=n(o),i=e("../../../../../misago/frontend/src/reducers/profile"),l=n(i),u=e("../../../../../misago/frontend/src/services/store"),c=n(u);s["default"].addInitializer({name:"reducer:profile",initializer:a,before:"store"})},{"../../../../../misago/frontend/src/index":155,"../../../../../misago/frontend/src/reducers/profile":157,"../../../../../misago/frontend/src/services/store":174}],27:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(){c["default"].addReducer("selection",l["default"],[])}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../../misago/frontend/src/index"),s=n(o),i=e("../../../../../misago/frontend/src/reducers/selection"),l=n(i),u=e("../../../../../misago/frontend/src/services/store"),c=n(u);s["default"].addInitializer({name:"reducer:selection",initializer:a,before:"store"})},{"../../../../../misago/frontend/src/index":155,"../../../../../misago/frontend/src/reducers/selection":158,"../../../../../misago/frontend/src/services/store":174}],28:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(){c["default"].addReducer("snackbar",l["default"],i.initialState)}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../../misago/frontend/src/index"),s=n(o),i=e("../../../../../misago/frontend/src/reducers/snackbar"),l=n(i),u=e("../../../../../misago/frontend/src/services/store"),c=n(u);s["default"].addInitializer({name:"reducer:snackbar",initializer:a,before:"store"})},{"../../../../../misago/frontend/src/index":155,"../../../../../misago/frontend/src/reducers/snackbar":159,"../../../../../misago/frontend/src/services/store":174}],29:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(){c["default"].addReducer("threads",l["default"],[])}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../../misago/frontend/src/index"),s=n(o),i=e("../../../../../misago/frontend/src/reducers/threads"),l=n(i),u=e("../../../../../misago/frontend/src/services/store"),c=n(u);s["default"].addInitializer({name:"reducer:threads",initializer:a,before:"store"})},{"../../../../../misago/frontend/src/index":155,"../../../../../misago/frontend/src/reducers/threads":160,"../../../../../misago/frontend/src/services/store":174}],30:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(){c["default"].addReducer("tick",l["default"],i.initialState)}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../../misago/frontend/src/index"),s=n(o),i=e("../../../../../misago/frontend/src/reducers/tick"),l=n(i),u=e("../../../../../misago/frontend/src/services/store"),c=n(u);s["default"].addInitializer({name:"reducer:tick",initializer:a,before:"store"})},{"../../../../../misago/frontend/src/index":155,"../../../../../misago/frontend/src/reducers/tick":161,"../../../../../misago/frontend/src/services/store":174}],31:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(){c["default"].addReducer("username-history",l["default"],[])}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../../misago/frontend/src/index"),s=n(o),i=e("../../../../../misago/frontend/src/reducers/username-history"),l=n(i),u=e("../../../../../misago/frontend/src/services/store"),c=n(u);s["default"].addInitializer({name:"reducer:username-history",initializer:a,before:"store"})},{"../../../../../misago/frontend/src/index":155,"../../../../../misago/frontend/src/reducers/username-history":162,"../../../../../misago/frontend/src/services/store":174}],32:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(){c["default"].addReducer("users",l["default"],[])}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../../misago/frontend/src/index"),s=n(o),i=e("../../../../../misago/frontend/src/reducers/users"),l=n(i),u=e("../../../../../misago/frontend/src/services/store"),c=n(u);s["default"].addInitializer({name:"reducer:users",initializer:a,before:"store"})},{"../../../../../misago/frontend/src/index":155,"../../../../../misago/frontend/src/reducers/users":163,"../../../../../misago/frontend/src/services/store":174}],33:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(){l["default"].init(c["default"])}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../misago/frontend/src/index"),s=n(o),i=e("../../../../misago/frontend/src/services/snackbar"),l=n(i),u=e("../../../../misago/frontend/src/services/store"),c=n(u);s["default"].addInitializer({name:"snackbar",initializer:a,after:"store"})},{"../../../../misago/frontend/src/index":155,"../../../../misago/frontend/src/services/snackbar":173,"../../../../misago/frontend/src/services/store":174}],34:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(){l["default"].init()}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../misago/frontend/src/index"),s=n(o),i=e("../../../../misago/frontend/src/services/store"),l=n(i);s["default"].addInitializer({name:"store",initializer:a,before:"_end"})},{"../../../../misago/frontend/src/index":155,"../../../../misago/frontend/src/services/store":174}],35:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(){window.setInterval(function(){u["default"].dispatch((0,i.doTick)())},c)}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../misago/frontend/src/index"),s=n(o),i=e("../../../../misago/frontend/src/reducers/tick"),l=e("../../../../misago/frontend/src/services/store"),u=n(l),c=5e4;s["default"].addInitializer({name:"tick-start",initializer:a,after:"store"})},{"../../../../misago/frontend/src/index":155,"../../../../misago/frontend/src/reducers/tick":161,"../../../../misago/frontend/src/services/store":174}],36:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(){c["default"].init(l["default"])}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=a;var o=e("../../../../misago/frontend/src/index"),s=n(o),i=e("../../../../misago/frontend/src/services/include"),l=n(i),u=e("../../../../misago/frontend/src/services/zxcvbn"),c=n(u);s["default"].addInitializer({name:"zxcvbn",initializer:a})},{"../../../../misago/frontend/src/index":155,"../../../../misago/frontend/src/services/include":167,"../../../../misago/frontend/src/services/zxcvbn":175}],37:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{user:e.auth.user,signedIn:e.auth.signedIn,signedOut:e.auth.signedOut}}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}();r.select=i;var u=e("react"),c=n(u),f=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),l(t,[{key:"refresh",value:function(){window.location.reload()}},{key:"getMessage",value:function(){return this.props.signedIn?interpolate(gettext("You have signed in as %(username)s. Please refresh the page before continuing."),{username:this.props.signedIn.username},!0):this.props.signedOut?interpolate(gettext("%(username)s, you have been signed out. Please refresh the page before continuing."),{username:this.props.user.username},!0):void 0}},{key:"getClassName",value:function(){return this.props.signedIn||this.props.signedOut?"auth-message show":"auth-message"}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getClassName()},c["default"].createElement("div",{className:"container"},c["default"].createElement("p",{className:"lead"},this.getMessage()),c["default"].createElement("p",null,c["default"].createElement("button",{type:"button",className:"btn btn-default",onClick:this.refresh},gettext("Reload page"))," ",c["default"].createElement("span",{className:"hidden-xs hidden-sm text-muted"},gettext("or press F5 key.")))))}}]),t}(c["default"].Component);r["default"]=f},{react:"react"}],38:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=$("base").attr("href")+"user-avatar/",f=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getSrc",value:function(){var e=this.props.size||100,t=c;return t+=this.props.user&&this.props.user.id?this.props.user.avatar_hash+"/"+e+"/"+this.props.user.id+".png":e+".png"}},{key:"render",value:function(){return u["default"].createElement("img",{src:this.getSrc(),className:this.props.className||"user-avatar",title:gettext("User avatar")})}}]),t}(u["default"].Component);r["default"]=f},{react:"react"}],39:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("moment"),u=n(l),c=e("react"),f=n(c),d=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getReasonMessage",value:function(){return this.props.message.html?f["default"].createElement("div",{className:"lead",dangerouslySetInnerHTML:{__html:this.props.message.html}}):f["default"].createElement("p",{className:"lead"},this.props.message.plain)}},{key:"getExpirationMessage",value:function(){if(this.props.expires){if(this.props.expires.isAfter((0,u["default"])())){var e=interpolate(gettext("This ban expires on %(expires_on)s."),{expires_on:this.props.expires.format("LL, LT")},!0),t=interpolate(gettext("This ban expires %(expires_on)s."),{expires_on:this.props.expires.fromNow()},!0);return f["default"].createElement("abbr",{title:e},t)}return gettext("This ban has expired.")}return gettext("This ban is permanent.")}},{key:"render",value:function(){return f["default"].createElement("div",{className:"page page-error page-error-banned"},f["default"].createElement("div",{className:"container"},f["default"].createElement("div",{className:"message-panel"},f["default"].createElement("div",{className:"message-icon"},f["default"].createElement("span",{className:"material-icon"},"highlight_off")),f["default"].createElement("div",{className:"message-body"},this.getReasonMessage(),f["default"].createElement("p",{className:"message-footnote"},this.getExpirationMessage())))))}}]),t}(f["default"].Component);r["default"]=d},{moment:"moment",react:"react"}],40:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t;
-}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("./loader"),f=n(c),d=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){var e="btn "+this.props.className,t=this.props.disabled;return this.props.loading&&(e+=" btn-loading",t=!0),u["default"].createElement("button",{type:this.props.onClick?"button":"submit",className:e,disabled:t,onClick:this.props.onClick},this.props.children,this.props.loading?u["default"].createElement(f["default"],null):null)}}]),t}(u["default"].Component);r["default"]=d,d.defaultProps={className:"btn-default",type:"submit",loading:!1,disabled:!1,onClick:null}},{"./loader":58,react:"react"}],41:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("./last-activity"),f=n(c),d=e("./read-icon"),p=n(d),h=e("./stats"),m=n(h),b=e("./subcategory-subcategories"),y=n(b),g=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.category.css_class?"list-group-item category-subcategory subcategory-"+this.props.category.css_class:"list-group-item category-subcategory"}},{key:"getDescription",value:function(){return this.props.category.description?u["default"].createElement("div",{className:"subcategory-description",dangerouslySetInnerHTML:{__html:this.props.category.description.html}}):null}},{key:"getSubcategories",value:function(){return this.props.category.subcategories.length?u["default"].createElement(y["default"],{categories:this.props.category.subcategories}):null}},{key:"render",value:function(){return u["default"].createElement("li",{className:this.getClassName()},u["default"].createElement("div",{className:"title-row"},u["default"].createElement("h4",null,u["default"].createElement(p["default"],{category:this.props.category}),u["default"].createElement("a",{href:this.props.category.absolute_url,className:"item-title"},this.props.category.name)),u["default"].createElement(m["default"],{category:this.props.category})),u["default"].createElement(f["default"],{category:this.props.category}),this.getDescription(),this.getSubcategories())}}]),t}(u["default"].Component);r["default"]=g;var v=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("ul",{className:"list-group category-subcategories"},this.props.categories.map(function(e){return u["default"].createElement(g,{category:e,key:e.id})}))}}]),t}(u["default"].Component);r["default"]=v},{"./last-activity":43,"./read-icon":44,"./stats":46,"./subcategory-subcategories":47,react:"react"}],42:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("./category-subcategories"),f=n(c),d=e("./last-activity"),p=n(d),h=e("./read-icon"),m=n(h),b=e("./stats"),y=n(b),g=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.category.css_class?"panel panel-default panel-category panel-category-"+this.props.category.css_class:"panel panel-default panel-category"}},{key:"getHeadingClassName",value:function(){return this.props.category.subcategories.length?"panel-heading":"panel-heading heading-alone"}},{key:"getCategoryDescription",value:function(){return this.props.category.description?u["default"].createElement("div",{className:"panel-body category-description",dangerouslySetInnerHTML:{__html:this.props.category.description.html}}):null}},{key:"getSubcategories",value:function(){return this.props.category.subcategories.length?u["default"].createElement(f["default"],{categories:this.props.category.subcategories}):null}},{key:"render",value:function(){return u["default"].createElement("div",{id:"panel-category-"+this.props.category.id,className:this.getClassName()},u["default"].createElement("div",{className:this.getHeadingClassName()},u["default"].createElement("div",{className:"panel-heading-inblock"},u["default"].createElement("div",{className:"panel-heading-top-row"},u["default"].createElement("h3",{className:"panel-title"},u["default"].createElement(m["default"],{category:this.props.category}),u["default"].createElement("a",{href:this.props.category.absolute_url,className:"item-title"},this.props.category.name)),u["default"].createElement(y["default"],{category:this.props.category})),u["default"].createElement(p["default"],{category:this.props.category}))),this.getCategoryDescription(),this.getSubcategories())}}]),t}(u["default"].Component);r["default"]=g},{"./category-subcategories":41,"./last-activity":43,"./read-icon":44,"./stats":46,react:"react"}],43:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0}),r.ProtectedMessage=r.PrivateMessage=r.EmptyMessage=r.LastPostMessage=void 0;var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("../../utils/escape-html"),f=n(c),d='<a href="%(url)s" class="poster-title">%(user)s</a>',p='<span class="poster-title">%(user)s</span>',h='<a href="%(url)s" class="item-title thread-title">%(thread)s</a>',m='<a href="%(url)s" class="last-title" title="%(absolute)s">%(relative)s</a>',b=r.LastPostMessage=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getLastPoster",value:function(){return this.props.category.last_poster_url?interpolate(d,{url:(0,f["default"])(this.props.category.last_poster_url),user:(0,f["default"])(this.props.category.last_poster_name)},!0):interpolate(p,{user:(0,f["default"])(this.props.category.last_poster_name)},!0)}},{key:"getLastThread",value:function(){return interpolate(h,{url:(0,f["default"])(this.props.category.last_thread_url),thread:(0,f["default"])(this.props.category.last_thread_title)},!0)}},{key:"getLastReplyDate",value:function(){return interpolate(m,{url:(0,f["default"])(this.props.category.last_post_url),absolute:(0,f["default"])(this.props.category.last_post_on.format("LLL")),relative:(0,f["default"])(this.props.category.last_post_on.fromNow())},!0)}},{key:"render",value:function(){return u["default"].createElement("p",{className:"category-last-post",dangerouslySetInnerHTML:{__html:interpolate((0,f["default"])(gettext("Last post in %(thread)s by %(user)s %(date)s")),{thread:this.getLastThread(),date:this.getLastReplyDate(),user:this.getLastPoster()},!0)}})}}]),t}(u["default"].Component),y=r.EmptyMessage=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("p",{className:"category-thread-message"},u["default"].createElement("span",{className:"material-icon"},"error_outline"),gettext("This category is empty."))}}]),t}(u["default"].Component),g=r.PrivateMessage=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("p",{className:"category-thread-message"},u["default"].createElement("span",{className:"material-icon"},"info_outline"),gettext("This category is private. You can see only your own threads within it."))}}]),t}(u["default"].Component),v=r.ProtectedMessage=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("p",{className:"category-thread-message"},u["default"].createElement("span",{className:"material-icon"},"highlight_off"),gettext("This category is protected. You can't browse it's contents."))}}]),t}(u["default"].Component),_=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return this.props.category.acl.can_browse?this.props.category.acl.can_see_all_threads?this.props.category.last_thread_title?u["default"].createElement(b,{category:this.props.category}):u["default"].createElement(y,null):u["default"].createElement(g,null):u["default"].createElement(v,null)}}]),t}(u["default"].Component);r["default"]=_},{"../../utils/escape-html":180,react:"react"}],44:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.category.is_read?"read-status item-read":"read-status item-new"}},{key:"getTitle",value:function(){return this.props.category.is_closed?this.props.category.is_read?gettext("This category has no new posts. (closed)"):gettext("This category has new posts. (closed)"):this.props.category.is_read?gettext("This category has no new posts."):gettext("This category has new posts.")}},{key:"getIcon",value:function(){return this.props.category.is_closed?this.props.category.is_read?"lock_outline":"lock":this.props.category.is_read?"chat_bubble_outline":"chat_bubble"}},{key:"render",value:function(){return u["default"].createElement("div",{className:this.getClassName(),title:this.getTitle()},u["default"].createElement("span",{className:"material-icon"},this.getIcon()))}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],45:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{tick:e.tick.tick}}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}();r.select=i;var u=e("moment"),c=n(u),f=e("react"),d=n(f),p=e("./category"),h=n(p),m=e("../../index"),b=n(m),y=e("../../services/polls"),g=n(y),v=function w(e){return Object.assign({},e,{last_post_on:e.last_post_on?(0,c["default"])(e.last_post_on):null,subcategories:e.subcategories.map(w)})},_=function(e){function t(e){a(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.update=function(e){r.setState({categories:e.map(v)})},r.state={categories:b["default"].get("CATEGORIES").map(v)},r.startPolling(b["default"].get("CATEGORIES_API")),r}return s(t,e),l(t,[{key:"startPolling",value:function(e){g["default"].start({poll:"categories",url:e,frequency:18e4,update:this.update})}},{key:"render",value:function(){return d["default"].createElement("div",{className:"categories-list"},this.state.categories.map(function(e){return d["default"].createElement(h["default"],{category:e,key:e.id})}))}}]),t}(d["default"].Component);r["default"]=_},{"../../index":155,"../../services/polls":172,"./category":42,moment:"moment",react:"react"}],46:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getThreadsCount",value:function(){var e=ngettext("%(threads)s thread","%(threads)s threads",this.props.category.threads);return interpolate(e,{threads:this.props.category.threads},!0)}},{key:"getPostsCount",value:function(){var e=ngettext("%(posts)s post","%(posts)s posts",this.props.category.posts);return interpolate(e,{posts:this.props.category.posts},!0)}},{key:"render",value:function(){return u["default"].createElement("ul",{className:"list-inline category-stats"},u["default"].createElement("li",{className:"category-threads"},this.getThreadsCount()),u["default"].createElement("li",{className:"category-posts"},this.getPostsCount()))}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],47:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("./subcategory-subcategories"),f=(n(c),function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.category.css_class?"subcategory subcategory-"+this.props.category.css_class:"subcategory"}},{key:"render",value:function(){return u["default"].createElement("li",null,u["default"].createElement("a",{href:this.props.category.absolute_url,className:this.getClassName()},this.props.category.name))}}]),t}(u["default"].Component));r["default"]=f;var d=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("ul",{className:"list-inline subcategories-list"},this.props.categories.map(function(e){return u["default"].createElement(f,{category:e,key:e.id})}))}}]),t}(u["default"].Component);r["default"]=d},{"./subcategory-subcategories":47,react:"react"}],48:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=function(e){return o["default"].createElement("select",{id:e.id||null,className:e.className||"form-control",value:e.value,onChange:e.onChange},e.choices.map(function(e){return o["default"].createElement("option",{disabled:e.disabled||!1,value:e.value,key:e.value},"- - ".repeat(e.level)+e.label)}))};var a=e("react"),o=n(a)},{react:"react"}],49:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("../avatar"),f=(n(c),e("../button")),d=n(f),p=e("../../services/ajax"),h=n(p),m=e("../../services/snackbar"),b=n(m),y=$("base").attr("href")+"user-avatar",g=function(e){function t(e){a(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.cropAvatar=function(){if(r.state.isLoading)return!1;r.setState({isLoading:!0});var e=r.props.upload?"crop_tmp":"crop_org",t=$(".crop-form");h["default"].post(r.props.user.api_url.avatar,{avatar:e,crop:{offset:t.cropit("offset"),zoom:t.cropit("zoom")}}).then(function(e){r.props.onComplete(e.avatar_hash,e.options),b["default"].success(e.detail)},function(e){400===e.status?(b["default"].error(e.detail),r.setState({isLoading:!1})):r.props.showError(e)})},r.state={isLoading:!1},r}return s(t,e),i(t,[{key:"getAvatarSize",value:function(){return this.props.upload?this.props.options.crop_tmp.size:this.props.options.crop_org.size}},{key:"getAvatarSecret",value:function(){return this.props.upload?this.props.options.crop_tmp.secret:this.props.options.crop_org.secret}},{key:"getAvatarHash",value:function(){return this.props.upload||this.props.user.avatar_hash}},{key:"getImagePath",value:function(){return[y,this.getAvatarSecret()+":"+this.getAvatarHash(),this.props.user.id+".png"].join("/")}},{key:"componentDidMount",value:function(){var e=this,t=$(".crop-form");t.width(this.getAvatarSize()),t.cropit({width:this.getAvatarSize(),height:this.getAvatarSize(),imageState:{src:this.getImagePath()},onImageLoaded:function(){if(e.props.upload){var r=t.cropit("zoom"),n=t.cropit("imageSize");if(n.width>n.height){var a=n.width*r,o=(a-e.getAvatarSize())/-2;t.cropit("offset",{x:o,y:0})}else if(n.width<n.height){var s=n.height*r,i=(s-e.getAvatarSize())/-2;t.cropit("offset",{x:0,y:i})}else t.cropit("offset",{x:0,y:0})}else{var l=e.props.options.crop_org.crop;l&&(t.cropit("zoom",l.zoom),t.cropit("offset",{x:l.x,y:l.y}))}}})}},{key:"componentWillUnmount",value:function(){$(".crop-form").cropit("disable")}},{key:"render",value:function(){return u["default"].createElement("div",null,u["default"].createElement("div",{className:"modal-body modal-avatar-crop"},u["default"].createElement("div",{className:"crop-form"},u["default"].createElement("div",{className:"cropit-preview"}),u["default"].createElement("input",{type:"range",className:"cropit-image-zoom-input"}))),u["default"].createElement("div",{className:"modal-footer"},u["default"].createElement("div",{className:"col-md-6 col-md-offset-3"},u["default"].createElement(d["default"],{onClick:this.cropAvatar,loading:this.state.isLoading,className:"btn-primary btn-block"},this.props.upload?gettext("Set avatar"):gettext("Crop image")),u["default"].createElement(d["default"],{onClick:this.props.showIndex,disabled:this.state.isLoading,className:"btn-default btn-block"},gettext("Cancel")))))}}]),t}(u["default"].Component);r["default"]=g},{"../../services/ajax":164,"../../services/snackbar":173,"../avatar":38,"../button":40,react:"react"}],50:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0}),r.Gallery=r.GalleryItem=void 0;var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("../button"),f=n(c),d=e("../../index"),p=n(d),h=e("../../services/ajax"),m=n(h),b=e("../../services/snackbar"),y=n(b),g=e("../../utils/batch"),v=n(g),_=r.GalleryItem=function(e){function t(){var e,r,n,s;a(this,t);for(var i=arguments.length,l=Array(i),u=0;i>u;u++)l[u]=arguments[u];return r=n=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(l))),n.select=function(){n.props.select(n.props.image)},s=r,o(n,s)}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.selection===this.props.image?this.props.disabled?"btn btn-avatar btn-disabled avatar-selected":"btn btn-avatar avatar-selected":this.props.disabled?"btn btn-avatar btn-disabled":"btn btn-avatar"}},{key:"render",value:function(){return u["default"].createElement("button",{type:"button",className:this.getClassName(),disabled:this.props.disabled,onClick:this.select},u["default"].createElement("img",{src:p["default"].get("MEDIA_URL")+this.props.image}))}}]),t}(u["default"].Component),w=r.Gallery=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){var e=this;return u["default"].createElement("div",{className:"avatars-gallery"},u["default"].createElement("h3",null,this.props.name),u["default"].createElement("div",{className:"avatars-gallery-images"},(0,v["default"])(this.props.images,4,null).map(function(t,r){return u["default"].createElement("div",{className:"row",key:r},t.map(function(t,r){return u["default"].createElement("div",{className:"col-xs-3",key:r},t?u["default"].createElement(_,{image:t,disabled:e.props.disabled,select:e.props.select,selection:e.props.selection}):u["default"].createElement("div",{className:"blank-avatar"}))}))})))}}]),t}(u["default"].Component),E=function(e){function t(e){a(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.select=function(e){r.setState({selection:e})},r.save=function(){return r.state.isLoading?!1:(r.setState({isLoading:!0}),void m["default"].post(r.props.user.api_url.avatar,{avatar:"galleries",image:r.state.selection}).then(function(e){r.setState({isLoading:!1}),y["default"].success(e.detail),r.props.onComplete(e.avatar_hash,e.options)},function(e){400===e.status?(y["default"].error(e.detail),r.setState({isLoading:!1})):r.props.showError(e)}))},r.state={selection:null,isLoading:!1},r}return s(t,e),i(t,[{key:"render",value:function(){var e=this;return u["default"].createElement("div",null,u["default"].createElement("div",{className:"modal-body modal-avatar-gallery"},this.props.options.galleries.map(function(t,r){return u["default"].createElement(w,{name:t.name,images:t.images,selection:e.state.selection,disabled:e.state.isLoading,select:e.select,key:r})})),u["default"].createElement("div",{className:"modal-footer"},u["default"].createElement("div",{className:"row"},u["default"].createElement("div",{className:"col-md-6 col-md-offset-3"},u["default"].createElement(f["default"],{onClick:this.save,loading:this.state.isLoading,disabled:!this.state.selection,className:"btn-primary btn-block"},this.state.selection?gettext("Save choice"):gettext("Select avatar")),u["default"].createElement(f["default"],{onClick:this.props.showIndex,disabled:this.state.isLoading,className:"btn-default btn-block"},gettext("Cancel"))))))}}]),t}(u["default"].Component);r["default"]=E},{"../../index":155,"../../services/ajax":164,"../../services/snackbar":173,"../../utils/batch":177,"../button":40,react:"react"}],51:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("../avatar"),f=n(c),d=e("../button"),p=n(d),h=e("../loader"),m=n(h),b=e("../../services/ajax"),y=n(b),g=e("../../services/snackbar"),v=n(g),_=function(e){function t(e){a(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.setGravatar=function(){r.callApi("gravatar")},r.setGenerated=function(){r.callApi("generated")},r.state={isLoading:!1},r}return s(t,e),i(t,[{key:"callApi",value:function(e){var t=this;return this.state.isLoading?!1:(this.setState({isLoading:!0}),void y["default"].post(this.props.user.api_url.avatar,{avatar:e}).then(function(e){t.setState({isLoading:!1}),v["default"].success(e.detail),t.props.onComplete(e.avatar_hash,e.options)},function(e){400===e.status?(v["default"].error(e.detail),t.setState({isLoading:!1})):t.props.showError(e)}))}},{key:"getGravatarButton",value:function(){return this.props.options.gravatar?u["default"].createElement(p["default"],{onClick:this.setGravatar,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-gravatar"},gettext("Download my Gravatar")):null}},{key:"getCropButton",value:function(){return this.props.options.crop_org?u["default"].createElement(p["default"],{onClick:this.props.showCrop,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-crop"},gettext("Re-crop uploaded image")):null}},{key:"getUploadButton",value:function(){return this.props.options.upload?u["default"].createElement(p["default"],{onClick:this.props.showUpload,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-upload"},gettext("Upload new image")):null}},{key:"getGalleryButton",value:function(){return this.props.options.galleries?u["default"].createElement(p["default"],{onClick:this.props.showGallery,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-gallery"},gettext("Pick avatar from gallery")):null}},{key:"getAvatarPreview",value:function(){var e={id:this.props.user.id,avatar_hash:this.props.options.avatar_hash};return this.state.isLoading?u["default"].createElement("div",{className:"avatar-preview preview-loading"},u["default"].createElement(f["default"],{user:e,size:"200"}),u["default"].createElement(m["default"],null)):u["default"].createElement("div",{className:"avatar-preview"},u["default"].createElement(f["default"],{user:e,size:"200"}))}},{key:"render",value:function(){return u["default"].createElement("div",{className:"modal-body modal-avatar-index"},u["default"].createElement("div",{className:"row"},u["default"].createElement("div",{className:"col-md-5"},this.getAvatarPreview()),u["default"].createElement("div",{className:"col-md-7"},this.getGravatarButton(),u["default"].createElement(p["default"],{onClick:this.setGenerated,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-generate"
-},gettext("Generate my individual avatar")),this.getCropButton(),this.getUploadButton(),this.getGalleryButton())))}}]),t}(u["default"].Component);r["default"]=_},{"../../services/ajax":164,"../../services/snackbar":173,"../avatar":38,"../button":40,"../loader":58,react:"react"}],52:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{user:e.auth.user}}Object.defineProperty(r,"__esModule",{value:!0}),r.ChangeAvatarError=void 0;var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}();r.select=i;var u=e("react"),c=n(u),f=e("./index"),d=n(f),p=e("./crop"),h=n(p),m=e("./upload"),b=n(m),y=e("./gallery"),g=n(y),v=e("../modal-loader"),_=n(v),w=e("../../reducers/users"),E=e("../../services/ajax"),O=n(E),k=e("../../services/store"),N=n(k),j=r.ChangeAvatarError=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),l(t,[{key:"getErrorReason",value:function(){return this.props.reason?c["default"].createElement("p",{dangerouslySetInnerHTML:{__html:this.props.reason}}):null}},{key:"render",value:function(){return c["default"].createElement("div",{className:"modal-body"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"remove_circle_outline")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",{className:"lead"},this.props.message),this.getErrorReason()))}}]),t}(c["default"].Component),x=function(e){function t(){var e,r,n,s;a(this,t);for(var i=arguments.length,l=Array(i),u=0;i>u;u++)l[u]=arguments[u];return r=n=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(l))),n.showError=function(e){n.setState({error:e})},n.showIndex=function(){n.setState({component:d["default"]})},n.showUpload=function(){n.setState({component:b["default"]})},n.showCrop=function(){n.setState({component:h["default"]})},n.showGallery=function(){n.setState({component:g["default"]})},n.completeFlow=function(e,t){N["default"].dispatch((0,w.updateAvatar)(n.props.user,e)),n.setState({component:d["default"],options:t})},s=r,o(n,s)}return s(t,e),l(t,[{key:"componentDidMount",value:function(){var e=this;O["default"].get(this.props.user.api_url.avatar).then(function(t){e.setState({component:d["default"],options:t,error:null})},function(t){e.showError(t)})}},{key:"getBody",value:function(){return this.state?this.state.error?c["default"].createElement(j,{message:this.state.error.detail,reason:this.state.error.reason}):c["default"].createElement(this.state.component,{options:this.state.options,user:this.props.user,onComplete:this.completeFlow,showError:this.showError,showIndex:this.showIndex,showCrop:this.showCrop,showUpload:this.showUpload,showGallery:this.showGallery}):c["default"].createElement(_["default"],null)}},{key:"getClassName",value:function(){return this.state&&this.state.error?"modal-dialog modal-message modal-change-avatar":"modal-dialog modal-change-avatar"}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getClassName(),role:"document"},c["default"].createElement("div",{className:"modal-content"},c["default"].createElement("div",{className:"modal-header"},c["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},c["default"].createElement("span",{"aria-hidden":"true"},"×")),c["default"].createElement("h4",{className:"modal-title"},gettext("Change your avatar"))),this.getBody()))}}]),t}(c["default"].Component);r["default"]=x},{"../../reducers/users":163,"../../services/ajax":164,"../../services/store":174,"../modal-loader":59,"./crop":49,"./gallery":50,"./index":51,"./upload":53,react:"react"}],53:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("./crop"),f=n(c),d=e("../button"),p=n(d),h=e("../../services/ajax"),m=n(h),b=e("../../services/snackbar"),y=n(b),g=e("../../utils/file-size"),v=n(g),_=function(e){function t(e){a(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.pickFile=function(){document.getElementById("avatar-hidden-upload").click()},r.uploadFile=function(){var e=document.getElementById("avatar-hidden-upload").files[0],t=r.validateFile(e);if(t)return void y["default"].error(t);r.setState({image:e,preview:URL.createObjectURL(e),progress:0});var n=new FormData;n.append("avatar","upload"),n.append("image",e),m["default"].upload(r.props.user.api_url.avatar,n,function(e){r.setState({progress:e})}).then(function(e){r.setState({options:e.options,uploaded:e.detail}),y["default"].info(gettext("Your image has been uploaded and you may now crop it."))},function(e){400===e.status?(y["default"].error(e.detail),r.setState({isLoading:!1,image:null,progress:0})):r.props.showError(e)})},r.state={image:null,preview:null,progress:0,uploaded:null},r}return s(t,e),i(t,[{key:"validateFile",value:function(e){if(e.size>this.props.options.upload.limit)return interpolate(gettext("Selected file is too big. (%(filesize)s)"),{filesize:(0,v["default"])(e.size)},!0);var t=gettext("Selected file type is not supported.");if(-1===this.props.options.upload.allowed_mime_types.indexOf(e.type))return t;var r=!1,n=e.name.toLowerCase();return this.props.options.upload.allowed_extensions.map(function(e){n.substr(-1*e.length)===e&&(r=!0)}),r?!1:t}},{key:"getUploadRequirements",value:function(e){var t=e.allowed_extensions.map(function(e){return e.substr(1)});return interpolate(gettext("%(files)s files smaller than %(limit)s"),{files:t.join(", "),limit:(0,v["default"])(e.limit)},!0)}},{key:"getUploadButton",value:function(){return u["default"].createElement("div",{className:"modal-body modal-avatar-upload"},u["default"].createElement(p["default"],{className:"btn-pick-file",onClick:this.pickFile},u["default"].createElement("div",{className:"material-icon"},"input"),gettext("Select file")),u["default"].createElement("p",{className:"text-muted"},this.getUploadRequirements(this.props.options.upload)))}},{key:"getUploadProgressLabel",value:function(){return interpolate(gettext("%(progress)s % complete"),{progress:this.state.progress},!0)}},{key:"getUploadProgress",value:function(){return u["default"].createElement("div",{className:"modal-body modal-avatar-upload"},u["default"].createElement("div",{className:"upload-progress"},u["default"].createElement("img",{src:this.state.preview}),u["default"].createElement("div",{className:"progress"},u["default"].createElement("div",{className:"progress-bar",role:"progressbar","aria-valuenow":"{this.state.progress}","aria-valuemin":"0","aria-valuemax":"100",style:{width:this.state.progress+"%"}},u["default"].createElement("span",{className:"sr-only"},this.getUploadProgressLabel())))))}},{key:"renderUpload",value:function(){return u["default"].createElement("div",null,u["default"].createElement("input",{type:"file",id:"avatar-hidden-upload",className:"hidden-file-upload",onChange:this.uploadFile}),this.state.image?this.getUploadProgress():this.getUploadButton(),u["default"].createElement("div",{className:"modal-footer"},u["default"].createElement("div",{className:"col-md-6 col-md-offset-3"},u["default"].createElement(p["default"],{onClick:this.props.showIndex,disabled:!!this.state.image,className:"btn-default btn-block"},gettext("Cancel")))))}},{key:"renderCrop",value:function(){return u["default"].createElement(f["default"],{options:this.state.options,user:this.props.user,upload:this.state.uploaded,onComplete:this.props.onComplete,showError:this.props.showError,showIndex:this.props.showIndex})}},{key:"render",value:function(){return this.state.uploaded?this.renderCrop():this.renderUpload()}}]),t}(u["default"].Component);r["default"]=_},{"../../services/ajax":164,"../../services/snackbar":173,"../../utils/file-size":181,"../button":40,"./crop":49,react:"react"}],54:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.dropdown?"btn btn-default btn-aligned btn-icon btn-dropdown-toggle open hidden-md hidden-lg":"btn btn-default btn-aligned btn-icon btn-dropdown-toggle hidden-md hidden-lg"}},{key:"render",value:function(){return u["default"].createElement("button",{className:this.getClassName(),type:"button",onClick:this.props.toggleNav,"aria-haspopup":"true","aria-expanded":this.props.dropdown?"true":"false"},u["default"].createElement("i",{className:"material-icon"},"menu"))}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],55:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"isValidated",value:function(){return"undefined"!=typeof this.props.validation}},{key:"getClassName",value:function(){var e="form-group";return this.isValidated()&&(e+=" has-feedback",e+=null===this.props.validation?" has-success":" has-error"),e}},{key:"getFeedback",value:function(){var e=this;return this.props.validation?u["default"].createElement("div",{className:"help-block errors"},this.props.validation.map(function(t,r){return u["default"].createElement("p",{key:e.props["for"]+"FeedbackItem"+r},t)})):null}},{key:"getFeedbackIcon",value:function(){return this.isValidated()?u["default"].createElement("span",{className:"material-icon form-control-feedback","aria-hidden":"true",key:this.props["for"]+"FeedbackIcon"},this.props.validation?"clear":"check"):null}},{key:"getFeedbackDescription",value:function(){return this.isValidated()?u["default"].createElement("span",{id:this.props["for"]+"_status",className:"sr-only"},this.props.validation?gettext("(error)"):gettext("(success)")):null}},{key:"getHelpText",value:function(){return this.props.helpText?u["default"].createElement("p",{className:"help-block"},this.props.helpText):null}},{key:"render",value:function(){return u["default"].createElement("div",{className:this.getClassName()},u["default"].createElement("label",{className:"control-label "+(this.props.labelClass||""),htmlFor:this.props["for"]||""},this.props.label+":"),u["default"].createElement("div",{className:this.props.controlClass||""},this.props.children,this.getFeedbackIcon(),this.getFeedbackDescription(),this.getFeedback(),this.getHelpText(),this.props.extra||null))}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],56:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),u=e("react"),c=n(u),f=e("../utils/validators"),d=e("../services/snackbar"),p=n(d),h=(0,f.required)(),m=function(e){function t(){var e,r,n,i;o(this,t);for(var l=arguments.length,u=Array(l),c=0;l>c;c++)u[c]=arguments[c];return r=n=s(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(u))),n.bindInput=function(e){return function(t){var r=a({},e,t.target.value),o=n.state.errors||{};o[e]=n.validateField(e,r[e]),r.errors=o,n.setState(r)}},n.handleSubmit=function(e){if(e.preventDefault(),!n.state.isLoading&&n.clean()){n.setState({isLoading:!0});var t=n.send();t?t.then(function(e){n.setState({isLoading:!1}),n.handleSuccess(e)},function(e){n.setState({isLoading:!1}),n.handleError(e)}):n.setState({isLoading:!1})}},i=r,s(n,i)}return i(t,e),l(t,[{key:"validate",value:function(){var e={};if(!this.state.validators)return e;var t={required:this.state.validators.required||this.state.validators,optional:this.state.validators.optional||{}},r=[];for(var n in t.required)t.required.hasOwnProperty(n)&&t.required[n]&&r.push(n);for(var a in t.optional)t.optional.hasOwnProperty(a)&&t.optional[a]&&r.push(a);for(var o in r){var s=r[o],i=this.validateField(s,this.state[s]);null===i?e[s]=null:i&&(e[s]=i)}return e}},{key:"isValid",value:function(){var e=this.validate();for(var t in e)if(e.hasOwnProperty(t)&&null!==e[t])return!1;return!0}},{key:"validateField",value:function(e,t){var r=[];if(!this.state.validators)return r;var n={required:(this.state.validators.required||this.state.validators)[e],optional:(this.state.validators.optional||{})[e]},a=h(t)||!1;if(n.required){if(a)r=[a];else for(var o in n.required){var s=n.required[o](t);s&&r.push(s)}return r.length?r:null}if(a===!1&&n.optional){for(var i in n.optional){var l=n.optional[i](t);l&&r.push(l)}return r.length?r:null}return!1}},{key:"clean",value:function(){return!0}},{key:"send",value:function(){return null}},{key:"handleSuccess",value:function(e){}},{key:"handleError",value:function(e){p["default"].apiError(e)}}]),t}(c["default"].Component);r["default"]=m},{"../services/snackbar":173,"../utils/validators":189,react:"react"}],57:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"isActive",value:function(){return this.props.isControlled?this.props.isActive:this.props.path?0===document.location.pathname.indexOf(this.props.path):!1}},{key:"getClassName",value:function(){return this.isActive()?(this.props.className||"")+" "+(this.props.activeClassName||"active"):this.props.className||""}},{key:"render",value:function(){return u["default"].createElement("li",{className:this.getClassName()},this.props.children)}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],58:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("div",{className:this.props.className||"loader"},u["default"].createElement("div",{className:"loader-spinning-wheel"}))}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],59:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("./loader"),f=n(c),d=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("div",{className:"modal-body modal-loader"},u["default"].createElement(f["default"],null))}}]),t}(u["default"].Component);r["default"]=d},{"./loader":58,react:"react"}],60:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("./panel-message"),f=n(c),d=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getHelpText",value:function(){return this.props.helpText?u["default"].createElement("p",{className:"help-block"},this.props.helpText):null}},{key:"render",value:function(){return u["default"].createElement("div",{className:"modal-body"},u["default"].createElement("div",{className:"message-icon"},u["default"].createElement("span",{className:"material-icon"},this.props.icon||"info_outline")),u["default"].createElement("div",{className:"message-body"},u["default"].createElement("p",{className:"lead"},this.props.message),this.getHelpText()))}}]),t}(f["default"]);r["default"]=d},{"./panel-message":73,react:"react"}],61:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("../../panel-loader"),f=n(c),d=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("div",{className:"panel panel-default panel-form"},u["default"].createElement("div",{className:"panel-heading"},u["default"].createElement("h3",{className:"panel-title"},gettext("Change username"))),u["default"].createElement(f["default"],null))}}]),t}(u["default"].Component);r["default"]=d},{"../../panel-loader":72,react:"react"}],62:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("../../panel-message"),f=n(c),d=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getHelpText",value:function(){return this.props.options.next_on?interpolate(gettext("You will be able to change your username %(next_change)s."),{next_change:this.props.options.next_on.fromNow()},!0):gettext("You have used up available name changes.")}},{key:"render",value:function(){return u["default"].createElement("div",{className:"panel panel-default panel-form"},u["default"].createElement("div",{className:"panel-heading"},u["default"].createElement("h3",{className:"panel-title"},gettext("Change username"))),u["default"].createElement(f["default"],{message:gettext("You can't change your username at the moment."),helpText:this.getHelpText()}))}}]),t}(u["default"].Component);r["default"]=d},{"../../panel-message":73,react:"react"}],63:[function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function a(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),u=e("react"),c=a(u),f=e("../../button"),d=a(f),p=e("../../form"),h=a(p),m=e("../../form-group"),b=a(m),y=e("../../../services/ajax"),g=a(y),v=e("../../../services/snackbar"),_=a(v),w=e("../../../utils/validators"),E=n(w),O=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));return r.state={username:"",validators:{username:[E.usernameContent(),E.usernameMinLength({username_length_min:e.options.length_min}),E.usernameMaxLength({username_length_max:e.options.length_max})]},isLoading:!1},r}return i(t,e),l(t,[{key:"getHelpText",value:function(){var e=[];if(this.props.options.changes_left>0){var t=ngettext("You can change your username %(changes_left)s more time.","You can change your username %(changes_left)s more times.",this.props.options.changes_left);e.push(interpolate(t,{changes_left:this.props.options.changes_left},!0))}if(this.props.user.acl.name_changes_expire>0){var r=ngettext("Used changes redeem after %(name_changes_expire)s day.","Used changes redeem after %(name_changes_expire)s days.",this.props.user.acl.name_changes_expire);e.push(interpolate(r,{name_changes_expire:this.props.user.acl.name_changes_expire},!0))}return e.length?e.join(" "):null}},{key:"clean",value:function(){var e=this.validate();return e.username?(_["default"].error(e.username[0]),!1):this.state.username.trim()===this.props.user.username?(_["default"].info(gettext("Your new username is same as current one.")),!1):!0}},{key:"send",value:function(){return g["default"].post(this.props.user.api_url.username,{username:this.state.username})}},{key:"handleSuccess",value:function(e){this.setState({username:""}),this.props.complete(e.username,e.slug,e.options)}},{key:"handleError",value:function(e){_["default"].apiError(e)}},{key:"render",value:function(){return c["default"].createElement("form",{onSubmit:this.handleSubmit,className:"form-horizontal"},c["default"].createElement("div",{className:"panel panel-default panel-form"},c["default"].createElement("div",{className:"panel-heading"},c["default"].createElement("h3",{className:"panel-title"},gettext("Change username"))),c["default"].createElement("div",{className:"panel-body"},c["default"].createElement(b["default"],{label:gettext("New username"),"for":"id_username",labelClass:"col-sm-4",controlClass:"col-sm-8",helpText:this.getHelpText()},c["default"].createElement("input",{type:"text",id:"id_username",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("username"),value:this.state.username}))),c["default"].createElement("div",{className:"panel-footer"},c["default"].createElement("div",{className:"row"},c["default"].createElement("div",{className:"col-sm-8 col-sm-offset-4"},c["default"].createElement(d["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Change username")))))))}}]),t}(h["default"]);r["default"]=O},{"../../../services/ajax":164,"../../../services/snackbar":173,"../../../utils/validators":189,"../../button":40,"../../form":56,"../../form-group":55,react:"react"}],64:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("moment"),u=n(l),c=e("react"),f=n(c),d=e("./form-loading"),p=n(d),h=e("./form-locked"),m=n(h),b=e("./form"),y=n(b),g=e("../../username-history/root"),v=n(g),_=e("../../../index"),w=n(_),E=e("../../../reducers/username-history"),O=e("../../../reducers/users"),k=e("../../../services/ajax"),N=n(k),j=e("../../../services/page-title"),x=n(j),P=e("../../../services/snackbar"),C=n(P),S=e("../../../services/store"),T=n(S),M=function(e){
-function t(e){a(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.onComplete=function(e,t,n){r.setState({options:n}),T["default"].dispatch((0,E.addNameChange)({username:e,slug:t},r.props.user,r.props.user)),T["default"].dispatch((0,O.updateUsername)(r.props.user,e,t)),C["default"].success(gettext("Your username has been changed successfully."))},r.state={isLoaded:!1,options:null},r}return s(t,e),i(t,[{key:"componentDidMount",value:function(){var e=this;x["default"].set({title:gettext("Change username"),parent:gettext("Change your options")}),Promise.all([N["default"].get(this.props.user.api_url.username),N["default"].get(w["default"].get("USERNAME_CHANGES_API"),{user:this.props.user.id})]).then(function(t){T["default"].dispatch((0,E.hydrate)(t[1].results)),e.setState({isLoaded:!0,options:{changes_left:t[0].changes_left,length_min:t[0].length_min,length_max:t[0].length_max,next_on:t[0].next_on?(0,u["default"])(t[0].next_on):null}})})}},{key:"getChangeForm",value:function(){return this.state.isLoaded?this.state.options.changes_left>0?f["default"].createElement(y["default"],{user:this.props.user,options:this.state.options,complete:this.onComplete}):f["default"].createElement(m["default"],{options:this.state.options}):f["default"].createElement(p["default"],null)}},{key:"render",value:function(){return f["default"].createElement("div",null,this.getChangeForm(),f["default"].createElement(v["default"],{isLoaded:this.state.isLoaded,changes:this.props["username-history"]}))}}]),t}(f["default"].Component);r["default"]=M},{"../../../index":155,"../../../reducers/username-history":162,"../../../reducers/users":163,"../../../services/ajax":164,"../../../services/page-title":171,"../../../services/snackbar":173,"../../../services/store":174,"../../username-history/root":137,"./form":63,"./form-loading":61,"./form-locked":62,moment:"moment",react:"react"}],65:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("../button"),f=n(c),d=e("../form"),p=n(d),h=e("../form-group"),m=n(h),b=e("../select"),y=n(b),g=e("../yes-no-switch"),v=n(g),_=e("../../reducers/auth"),w=e("../../services/ajax"),E=n(w),O=e("../../services/page-title"),k=n(O),N=e("../../services/snackbar"),j=n(N),x=e("../../services/store"),P=n(x),C=function(e){function t(e){a(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.state={isLoading:!1,is_hiding_presence:e.user.is_hiding_presence,limits_private_thread_invites_to:e.user.limits_private_thread_invites_to,subscribe_to_started_threads:e.user.subscribe_to_started_threads,subscribe_to_replied_threads:e.user.subscribe_to_replied_threads,errors:{}},r.privateThreadInvitesChoices=[{value:0,icon:"help_outline",label:gettext("Everybody")},{value:1,icon:"done_all",label:gettext("Users I follow")},{value:2,icon:"highlight_off",label:gettext("Nobody")}],r.subscribeToChoices=[{value:0,icon:"star_border",label:gettext("No")},{value:1,icon:"star_half",label:gettext("Notify")},{value:2,icon:"star",label:gettext("Notify with e-mail")}],r}return s(t,e),i(t,[{key:"send",value:function(){return E["default"].post(this.props.user.api_url.options,{is_hiding_presence:this.state.is_hiding_presence,limits_private_thread_invites_to:this.state.limits_private_thread_invites_to,subscribe_to_started_threads:this.state.subscribe_to_started_threads,subscribe_to_replied_threads:this.state.subscribe_to_replied_threads})}},{key:"handleSuccess",value:function(){P["default"].dispatch((0,_.patch)({is_hiding_presence:this.state.is_hiding_presence,limits_private_thread_invites_to:this.state.limits_private_thread_invites_to,subscribe_to_started_threads:this.state.subscribe_to_started_threads,subscribe_to_replied_threads:this.state.subscribe_to_replied_threads})),j["default"].success(gettext("Your forum options have been changed."))}},{key:"handleError",value:function(e){400===e.status?j["default"].error(gettext("Please reload page and try again.")):j["default"].apiError(e)}},{key:"componentDidMount",value:function(){k["default"].set({title:gettext("Forum options"),parent:gettext("Change your options")})}},{key:"render",value:function(){return u["default"].createElement("form",{onSubmit:this.handleSubmit,className:"form-horizontal"},u["default"].createElement("div",{className:"panel panel-default panel-form"},u["default"].createElement("div",{className:"panel-heading"},u["default"].createElement("h3",{className:"panel-title"},gettext("Change forum options"))),u["default"].createElement("div",{className:"panel-body"},u["default"].createElement("fieldset",null,u["default"].createElement("legend",null,gettext("Privacy settings")),u["default"].createElement(m["default"],{label:gettext("Hide my presence"),helpText:gettext("If you hide your presence, only members with permission to see hidden users will see when you are online."),"for":"id_is_hiding_presence",labelClass:"col-sm-4",controlClass:"col-sm-8"},u["default"].createElement(v["default"],{id:"id_is_hiding_presence",disabled:this.state.isLoading,iconOn:"visibility_off",iconOff:"visibility",labelOn:gettext("Hide my presence from other users"),labelOff:gettext("Show my presence to other users"),onChange:this.bindInput("is_hiding_presence"),value:this.state.is_hiding_presence})),u["default"].createElement(m["default"],{label:gettext("Private thread invitations"),"for":"id_limits_private_thread_invites_to",labelClass:"col-sm-4",controlClass:"col-sm-8"},u["default"].createElement(y["default"],{id:"id_limits_private_thread_invites_to",disabled:this.state.isLoading,onChange:this.bindInput("limits_private_thread_invites_to"),value:this.state.limits_private_thread_invites_to,choices:this.privateThreadInvitesChoices}))),u["default"].createElement("fieldset",null,u["default"].createElement("legend",null,gettext("Automatic subscriptions")),u["default"].createElement(m["default"],{label:gettext("Threads I start"),"for":"id_subscribe_to_started_threads",labelClass:"col-sm-4",controlClass:"col-sm-8"},u["default"].createElement(y["default"],{id:"id_subscribe_to_started_threads",disabled:this.state.isLoading,onChange:this.bindInput("subscribe_to_started_threads"),value:this.state.subscribe_to_started_threads,choices:this.subscribeToChoices})),u["default"].createElement(m["default"],{label:gettext("Threads I reply to"),"for":"id_subscribe_to_replied_threads",labelClass:"col-sm-4",controlClass:"col-sm-8"},u["default"].createElement(y["default"],{id:"id_subscribe_to_replied_threads",disabled:this.state.isLoading,onChange:this.bindInput("subscribe_to_replied_threads"),value:this.state.subscribe_to_replied_threads,choices:this.subscribeToChoices})))),u["default"].createElement("div",{className:"panel-footer"},u["default"].createElement("div",{className:"row"},u["default"].createElement("div",{className:"col-sm-8 col-sm-offset-4"},u["default"].createElement(f["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Save changes")))))))}}]),t}(p["default"]);r["default"]=C},{"../../reducers/auth":156,"../../services/ajax":164,"../../services/page-title":171,"../../services/snackbar":173,"../../services/store":174,"../button":40,"../form":56,"../form-group":55,"../select":93,"../yes-no-switch":154,react:"react"}],66:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0}),r.CompactNav=r.SideNav=void 0;var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("react-router"),f=e("../li"),d=n(f),p=e("../../index");n(p),r.SideNav=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){var e=this;return u["default"].createElement("div",{className:"list-group nav-side"},this.props.options.map(function(t){return u["default"].createElement(c.Link,{to:e.props.baseUrl+t.component+"/",className:"list-group-item",activeClassName:"active",key:t.component},u["default"].createElement("span",{className:"material-icon"},t.icon),t.name)}))}}]),t}(u["default"].Component),r.CompactNav=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){var e=this;return u["default"].createElement("ul",{className:"dropdown-menu",role:"menu"},this.props.options.map(function(t){return u["default"].createElement(d["default"],{path:e.props.baseUrl+t.component+"/",key:t.component},u["default"].createElement(c.Link,{to:e.props.baseUrl+t.component+"/",onClick:e.props.hideNav},u["default"].createElement("span",{className:"material-icon"},t.icon),t.name))}))}}]),t}(u["default"].Component)},{"../../index":155,"../li":57,react:"react","react-router":"react-router"}],67:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{tick:e.tick.tick,user:e.auth.user,"username-history":e["username-history"]}}function l(){return[{path:N["default"].get("USERCP_URL")+"forum-options/",component:(0,d.connect)(i)(y["default"])},{path:N["default"].get("USERCP_URL")+"change-username/",component:(0,d.connect)(i)(v["default"])},{path:N["default"].get("USERCP_URL")+"sign-in-credentials/",component:(0,d.connect)(i)(w["default"])}]}Object.defineProperty(r,"__esModule",{value:!0});var u=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}();r.select=i,r.paths=l;var c=e("react"),f=n(c),d=e("react-redux"),p=e("../dropdown-toggle"),h=n(p),m=e("./navs"),b=e("./forum-options"),y=n(b),g=e("./change-username/root"),v=n(g),_=e("./sign-in-credentials/root"),w=n(_),E=e("../with-dropdown"),O=n(E),k=e("../../index"),N=n(k),j=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(t,[{key:"render",value:function(){return f["default"].createElement("div",{className:"page page-options"},f["default"].createElement("div",{className:"page-header"},f["default"].createElement("div",{className:"container"},f["default"].createElement("h1",{className:"pull-left"},gettext("Change your options")),f["default"].createElement(h["default"],{toggleNav:this.toggleNav,dropdown:this.state.dropdown}))),f["default"].createElement("div",{className:this.getCompactNavClassName()},f["default"].createElement(m.CompactNav,{options:N["default"].get("USER_OPTIONS"),baseUrl:N["default"].get("USERCP_URL"),hideNav:this.hideNav})),f["default"].createElement("div",{className:"container"},f["default"].createElement("div",{className:"row"},f["default"].createElement("div",{className:"col-md-3 hidden-xs hidden-sm"},f["default"].createElement(m.SideNav,{options:N["default"].get("USER_OPTIONS"),baseUrl:N["default"].get("USERCP_URL")})),f["default"].createElement("div",{className:"col-md-9"},this.props.children))))}}]),t}(O["default"]);r["default"]=j},{"../../index":155,"../dropdown-toggle":54,"../with-dropdown":153,"./change-username/root":64,"./forum-options":65,"./navs":66,"./sign-in-credentials/root":70,react:"react","react-redux":"react-redux"}],68:[function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function a(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),u=e("react"),c=a(u),f=e("../../button"),d=a(f),p=e("../../form"),h=a(p),m=e("../../form-group"),b=a(m),y=e("../../../services/ajax"),g=a(y),v=e("../../../services/snackbar"),_=a(v),w=e("../../../utils/validators"),E=n(w),O=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));return r.state={new_email:"",password:"",validators:{new_email:[E.email()],password:[]},isLoading:!1},r}return i(t,e),l(t,[{key:"clean",value:function(){var e=this.validate(),t=[this.state.new_email.trim().length,this.state.password.trim().length];return-1!==t.indexOf(0)?(_["default"].error(gettext("Fill out all fields.")),!1):e.new_email?(_["default"].error(e.new_email[0]),!1):!0}},{key:"send",value:function(){return g["default"].post(this.props.user.api_url.change_email,{new_email:this.state.new_email,password:this.state.password})}},{key:"handleSuccess",value:function(e){this.setState({new_email:"",password:""}),_["default"].success(e.detail)}},{key:"handleError",value:function(e){400===e.status?e.new_email?_["default"].error(e.new_email):_["default"].error(e.password):_["default"].apiError(e)}},{key:"render",value:function(){return c["default"].createElement("form",{onSubmit:this.handleSubmit,className:"form-horizontal"},c["default"].createElement("input",{type:"type",style:{display:"none"}}),c["default"].createElement("input",{type:"password",style:{display:"none"}}),c["default"].createElement("div",{className:"panel panel-default panel-form"},c["default"].createElement("div",{className:"panel-heading"},c["default"].createElement("h3",{className:"panel-title"},gettext("Change e-mail address"))),c["default"].createElement("div",{className:"panel-body"},c["default"].createElement(b["default"],{label:gettext("New e-mail"),"for":"id_new_email",labelClass:"col-sm-4",controlClass:"col-sm-8"},c["default"].createElement("input",{type:"text",id:"id_new_email",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("new_email"),value:this.state.new_email})),c["default"].createElement("hr",null),c["default"].createElement(b["default"],{label:gettext("Your current password"),"for":"id_password",labelClass:"col-sm-4",controlClass:"col-sm-8"},c["default"].createElement("input",{type:"password",id:"id_password",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("password"),value:this.state.password}))),c["default"].createElement("div",{className:"panel-footer"},c["default"].createElement("div",{className:"row"},c["default"].createElement("div",{className:"col-sm-8 col-sm-offset-4"},c["default"].createElement(d["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Change e-mail")))))))}}]),t}(h["default"]);r["default"]=O},{"../../../services/ajax":164,"../../../services/snackbar":173,"../../../utils/validators":189,"../../button":40,"../../form":56,"../../form-group":55,react:"react"}],69:[function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function a(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),u=e("react"),c=a(u),f=e("../../button"),d=a(f),p=e("../../form"),h=a(p),m=e("../../form-group"),b=a(m),y=e("../../../index"),g=a(y),v=e("../../../services/ajax"),_=a(v),w=e("../../../services/snackbar"),E=a(w),O=e("../../../utils/validators"),k=n(O),N=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));return r.state={new_password:"",repeat_password:"",password:"",validators:{new_password:[k.passwordMinLength(g["default"].get("SETTINGS"))],repeat_password:[],password:[]},isLoading:!1},r}return i(t,e),l(t,[{key:"clean",value:function(){var e=this.validate(),t=[this.state.new_password.trim().length,this.state.repeat_password.trim().length,this.state.password.trim().length];return-1!==t.indexOf(0)?(E["default"].error(gettext("Fill out all fields.")),!1):e.new_password?(E["default"].error(e.new_password[0]),!1):this.state.new_password.trim()!==this.state.repeat_password.trim()?(E["default"].error(gettext("New passwords are different.")),!1):!0}},{key:"send",value:function(){return _["default"].post(this.props.user.api_url.change_password,{new_password:this.state.new_password,password:this.state.password})}},{key:"handleSuccess",value:function(e){this.setState({new_password:"",repeat_password:"",password:""}),E["default"].success(e.detail)}},{key:"handleError",value:function(e){400===e.status?e.new_password?E["default"].error(e.new_password):E["default"].error(e.password):E["default"].apiError(e)}},{key:"render",value:function(){return c["default"].createElement("form",{onSubmit:this.handleSubmit,className:"form-horizontal"},c["default"].createElement("input",{type:"type",style:{display:"none"}}),c["default"].createElement("input",{type:"password",style:{display:"none"}}),c["default"].createElement("div",{className:"panel panel-default panel-form"},c["default"].createElement("div",{className:"panel-heading"},c["default"].createElement("h3",{className:"panel-title"},gettext("Change password"))),c["default"].createElement("div",{className:"panel-body"},c["default"].createElement(b["default"],{label:gettext("New password"),"for":"id_new_password",labelClass:"col-sm-4",controlClass:"col-sm-8"},c["default"].createElement("input",{type:"password",id:"id_new_password",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("new_password"),value:this.state.new_password})),c["default"].createElement(b["default"],{label:gettext("Repeat password"),"for":"id_repeat_password",labelClass:"col-sm-4",controlClass:"col-sm-8"},c["default"].createElement("input",{type:"password",id:"id_repeat_password",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("repeat_password"),value:this.state.repeat_password})),c["default"].createElement("hr",null),c["default"].createElement(b["default"],{label:gettext("Your current password"),"for":"id_password",labelClass:"col-sm-4",controlClass:"col-sm-8"},c["default"].createElement("input",{type:"password",id:"id_password",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("password"),value:this.state.password}))),c["default"].createElement("div",{className:"panel-footer"},c["default"].createElement("div",{className:"row"},c["default"].createElement("div",{className:"col-sm-8 col-sm-offset-4"},c["default"].createElement(d["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Change password")))))))}}]),t}(h["default"]);r["default"]=N},{"../../../index":155,"../../../services/ajax":164,"../../../services/snackbar":173,"../../../utils/validators":189,"../../button":40,"../../form":56,"../../form-group":55,react:"react"}],70:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("./change-email"),f=n(c),d=e("./change-password"),p=n(d),h=e("../../../index"),m=n(h),b=e("../../../services/page-title"),y=n(b),g=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"componentDidMount",value:function(){y["default"].set({title:gettext("Change email or password"),parent:gettext("Change your options")})}},{key:"render",value:function(){return u["default"].createElement("div",null,u["default"].createElement(f["default"],{user:this.props.user}),u["default"].createElement(p["default"],{user:this.props.user}),u["default"].createElement("p",{className:"message-line"},u["default"].createElement("span",{className:"material-icon"},"warning"),u["default"].createElement("a",{href:m["default"].get("FORGOTTEN_PASSWORD_URL")},gettext("Change forgotten password"))))}}]),t}(u["default"].Component);r["default"]=g},{"../../../index":155,"../../../services/page-title":171,"./change-email":68,"./change-password":69,react:"react"}],71:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("../utils/string-count"),f=n(c),d=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.copy&&this.props.copy.length&&1===(0,f["default"])(this.props.copy,"<p")&&-1===this.props.copy.indexOf("<br")?"page-lead lead":"page-lead"}},{key:"render",value:function(){return this.props.copy&&this.props.copy.length?u["default"].createElement("div",{className:this.getClassName(),dangerouslySetInnerHTML:{__html:this.props.copy}}):null}}]),t}(u["default"].Component);r["default"]=d},{"../utils/string-count":188,react:"react"}],72:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("./loader"),f=n(c),d=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("div",{className:"panel-body panel-body-loading"},u["default"].createElement(f["default"],{className:"loader loader-spaced"}))}}]),t}(u["default"].Component);r["default"]=d},{"./loader":58,react:"react"}],73:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getHelpText",value:function(){return this.props.helpText?u["default"].createElement("p",{className:"help-block"},this.props.helpText):null}},{key:"render",value:function(){return u["default"].createElement("div",{className:"panel-body panel-message-body"},u["default"].createElement("div",{className:"message-icon"},u["default"].createElement("span",{className:"material-icon"},this.props.icon||"info_outline")),u["default"].createElement("div",{className:"message-body"},u["default"].createElement("p",{className:"lead"},this.props.message),this.getHelpText()))}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],74:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0}),r.LABELS=r.STYLES=void 0;var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("../services/zxcvbn"),f=n(c),d=r.STYLES=["progress-bar-danger","progress-bar-warning","progress-bar-warning","progress-bar-primary","progress-bar-success"],p=r.LABELS=[gettext("Entered password is very weak."),gettext("Entered password is weak."),gettext("Entered password is average."),gettext("Entered password is strong."),gettext("Entered password is very strong.")],h=function(e){function t(e){a(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r._score=0,r._password=null,r._inputs=[],r}return s(t,e),i(t,[{key:"getScore",value:function(e,t){var r=this,n=!1;return e.trim()!==this._password&&(n=!0),t.length!==this._inputs.length?n=!0:t.map(function(e,t){e.trim()!==r._inputs[t]&&(n=!0)}),n&&(this._score=f["default"].scorePassword(e,t),this._password=e.trim(),this._inputs=t.map(function(e){return e.trim()})),this._score}},{key:"render",value:function(){var e=this.getScore(this.props.password,this.props.inputs);return u["default"].createElement("div",{className:"help-block password-strength"},u["default"].createElement("div",{className:"progress"},u["default"].createElement("div",{className:"progress-bar "+d[e],style:{width:20+20*e+"%"},role:"progress-bar","aria-valuenow":e,"aria-valuemin":"0","aria-valuemax":"4"},u["default"].createElement("span",{className:"sr-only"},p[e]))),u["default"].createElement("p",{className:"text-small"},p[e]))}}]),t}(u["default"].Component);r["default"]=h},{"../services/zxcvbn":175,react:"react"}],75:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t);
-}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("moment"),u=n(l),c=e("react"),f=n(c),d=e("../panel-loader"),p=n(d),h=e("../panel-message"),m=n(h),b=e("../../index"),y=n(b),g=e("../../services/polls"),v=n(g),_=e("../../services/page-title"),w=n(_),E=function(e){function t(e){a(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.update=function(e){e.expires_on&&(e.expires_on=(0,u["default"])(e.expires_on)),r.setState({isLoaded:!0,error:null,ban:e})},r.error=function(e){r.setState({isLoaded:!0,error:e.detail,ban:null})},y["default"].has("PROFILE_BAN")?r.initWithPreloadedData(y["default"].pop("PROFILE_BAN")):r.initWithoutPreloadedData(),r.startPolling(e.profile.api_url.ban),r}return s(t,e),i(t,[{key:"initWithPreloadedData",value:function(e){e.expires_on&&(e.expires_on=(0,u["default"])(e.expires_on)),this.state={isLoaded:!0,ban:e}}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1}}},{key:"startPolling",value:function(e){v["default"].start({poll:"ban-details",url:e,frequency:9e4,update:this.update,error:this.error})}},{key:"componentDidMount",value:function(){w["default"].set({title:gettext("Ban details"),parent:this.props.profile.username})}},{key:"componentWillUnmount",value:function(){v["default"].stop("ban-details")}},{key:"getUserMessage",value:function(){return this.state.ban.user_message?f["default"].createElement("div",{className:"panel-body ban-message ban-user-message"},f["default"].createElement("h4",null,gettext("User-shown ban message")),f["default"].createElement("div",{className:"lead",dangerouslySetInnerHTML:{__html:this.state.ban.user_message.html}})):null}},{key:"getStaffMessage",value:function(){return this.state.ban.staff_message?f["default"].createElement("div",{className:"panel-body ban-message ban-staff-message"},f["default"].createElement("h4",null,gettext("Team-shown ban message")),f["default"].createElement("div",{className:"lead",dangerouslySetInnerHTML:{__html:this.state.ban.staff_message.html}})):null}},{key:"getExpirationMessage",value:function(){if(this.state.ban.expires_on){if(this.state.ban.expires_on.isAfter((0,u["default"])())){var e=interpolate(gettext("This ban expires on %(expires_on)s."),{expires_on:this.state.ban.expires_on.format("LL, LT")},!0),t=interpolate(gettext("This ban expires %(expires_on)s."),{expires_on:this.state.ban.expires_on.fromNow()},!0);return f["default"].createElement("abbr",{title:e},t)}return gettext("This ban has expired.")}return interpolate(gettext("%(username)s's ban is permanent."),{username:this.props.profile.username},!0)}},{key:"getPanelBody",value:function(){return this.state.ban?Object.keys(this.state.ban).length?f["default"].createElement("div",null,this.getUserMessage(),this.getStaffMessage(),f["default"].createElement("div",{className:"panel-body ban-expires"},f["default"].createElement("h4",null,gettext("Ban expiration")),f["default"].createElement("p",{className:"lead"},this.getExpirationMessage()))):f["default"].createElement("div",null,f["default"].createElement(m["default"],{message:gettext("No ban is active at the moment.")})):this.state.error?f["default"].createElement("div",null,f["default"].createElement(m["default"],{icon:"error_outline",message:this.state.error})):f["default"].createElement("div",null,f["default"].createElement(p["default"],null))}},{key:"render",value:function(){return f["default"].createElement("div",{className:"profile-ban-details"},f["default"].createElement("div",{className:"panel panel-default"},f["default"].createElement("div",{className:"panel-heading"},f["default"].createElement("h3",{className:"panel-title"},gettext("Ban details"))),this.getPanelBody()))}}]),t}(f["default"].Component);r["default"]=E},{"../../index":155,"../../services/page-title":171,"../../services/polls":172,"../panel-loader":72,"../panel-message":73,moment:"moment",react:"react"}],76:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("../button"),f=n(c),d=e("../../reducers/profile"),p=e("../../services/ajax"),h=n(p),m=e("../../services/snackbar"),b=n(m),y=e("../../services/store"),g=n(y),v=function(e){function t(e){a(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.action=function(){r.setState({isLoading:!0}),r.props.profile.is_followed?g["default"].dispatch((0,d.patch)({is_followed:!1,followers:r.props.profile.followers-1})):g["default"].dispatch((0,d.patch)({is_followed:!0,followers:r.props.profile.followers+1})),h["default"].post(r.props.profile.api_url.follow).then(function(e){r.setState({isLoading:!1}),g["default"].dispatch((0,d.patch)(e))},function(e){r.setState({isLoading:!1}),b["default"].apiError(e)})},r.state={isLoading:!1},r}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.profile.is_followed?this.props.className+" btn-default btn-following":this.props.className+" btn-default btn-follow"}},{key:"getIcon",value:function(){return this.props.profile.is_followed?"favorite":"favorite_border"}},{key:"getLabel",value:function(){return this.props.profile.is_followed?gettext("Following"):gettext("Follow")}},{key:"render",value:function(){return u["default"].createElement(f["default"],{className:this.getClassName(),disabled:this.state.isLoading,onClick:this.action},u["default"].createElement("span",{className:"material-icon"},this.getIcon()),this.getLabel())}}]),t}(u["default"].Component);r["default"]=v},{"../../reducers/profile":157,"../../services/ajax":164,"../../services/snackbar":173,"../../services/store":174,"../button":40,react:"react"}],77:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),u=e("react"),c=n(u),f=e("../button"),d=n(f),p=e("../search"),h=n(p),m=e("../users-list/root"),b=n(m),y=e("../../index"),g=n(y),v=e("../../reducers/users"),_=e("../../services/ajax"),w=n(_),E=e("../../services/snackbar"),O=n(E),k=e("../../services/store"),N=n(k),j=e("../../services/page-title"),x=n(j),P=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));return r.loadMore=function(){r.setState({isBusy:!0}),r.loadUsers(r.state.page+1,r.state.search)},r.search=function(e){r.setState({isLoaded:!1,isBusy:!0,search:e.target.value,count:0,more:0,page:1,pages:1}),r.loadUsers(1,e.target.value)},r.setSpecialProps(),g["default"].has(r.PRELOADED_DATA_KEY)?r.initWithPreloadedData(g["default"].pop(r.PRELOADED_DATA_KEY)):r.initWithoutPreloadedData(),r}return i(t,e),l(t,[{key:"setSpecialProps",value:function(){this.PRELOADED_DATA_KEY="PROFILE_FOLLOWERS",this.TITLE=gettext("Followers"),this.API_FILTER="followers"}},{key:"initWithPreloadedData",value:function(e){this.state={isLoaded:!0,isBusy:!1,search:"",count:e.count,more:e.more,page:e.page,pages:e.pages},N["default"].dispatch((0,v.hydrate)(e.results))}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1,isBusy:!1,search:"",count:0,more:0,page:1,pages:1},this.loadUsers()}},{key:"loadUsers",value:function(){var e,t=this,r=arguments.length<=0||void 0===arguments[0]?1:arguments[0],n=arguments.length<=1||void 0===arguments[1]?null:arguments[1];w["default"].get(g["default"].get("USERS_API"),(e={},a(e,this.API_FILTER,this.props.profile.id),a(e,"name",n),a(e,"page",r||1),e),"user-"+this.API_FILTER).then(function(e){1===r?N["default"].dispatch((0,v.hydrate)(e.results)):N["default"].dispatch((0,v.append)(e.results)),t.setState({isLoaded:!0,isBusy:!1,count:e.count,more:e.more,page:e.page,pages:e.pages})},function(e){O["default"].apiError(e)})}},{key:"componentDidMount",value:function(){x["default"].set({title:this.TITLE,parent:this.props.profile.username})}},{key:"getLabel",value:function(){if(this.state.isLoaded){if(this.state.search){var e=ngettext("Found %(users)s user.","Found %(users)s users.",this.state.count);return interpolate(e,{users:this.state.count},!0)}if(this.props.profile.id===this.props.user.id){var t=ngettext("You have %(users)s follower.","You have %(users)s followers.",this.state.count);return interpolate(t,{users:this.state.count},!0)}var r=ngettext("%(username)s has %(users)s follower.","%(username)s has %(users)s followers.",this.state.count);return interpolate(r,{username:this.props.profile.username,users:this.state.count},!0)}return gettext("Loading...")}},{key:"getEmptyMessage",value:function(){return this.state.search?gettext("Search returned no users matching specified criteria."):this.props.user.id===this.props.profile.id?gettext("You have no followers."):interpolate(gettext("%(username)s has no followers."),{username:this.props.profile.username},!0)}},{key:"getMoreButton",value:function(){return this.state.more?c["default"].createElement("div",{className:"pager-more"},c["default"].createElement(d["default"],{loading:this.state.isBusy,onClick:this.loadMore},interpolate(gettext("Show more (%(more)s)"),{more:this.state.more},!0))):null}},{key:"getListBody",value:function(){return this.state.isLoaded&&0===this.state.count?c["default"].createElement("p",{className:"lead"},this.getEmptyMessage()):c["default"].createElement("div",null,c["default"].createElement(b["default"],{isLoaded:this.state.isLoaded,users:this.props.users,showRank:!0,cols:2}),this.getMoreButton())}},{key:"getClassName",value:function(){return"profile-"+this.API_FILTER}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getClassName()},c["default"].createElement("nav",{className:"toolbar"},c["default"].createElement("h3",{className:"toolbar-left"},this.getLabel()),c["default"].createElement(h["default"],{className:"toolbar-right",value:this.state.search,onChange:this.search,placeholder:gettext("Search history...")})),this.getListBody())}}]),t}(c["default"].Component);r["default"]=P},{"../../index":155,"../../reducers/users":163,"../../services/ajax":164,"../../services/page-title":171,"../../services/snackbar":173,"../../services/store":174,"../button":40,"../search":92,"../users-list/root":138,react:"react"}],78:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=(n(l),e("./followers")),c=n(u),f=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"setSpecialProps",value:function(){this.PRELOADED_DATA_KEY="PROFILE_FOLLOWS",this.TITLE=gettext("Follows"),this.API_FILTER="follows"}},{key:"getLabel",value:function(){if(this.state.isLoaded){if(this.state.search){var e=ngettext("Found %(users)s user.","Found %(users)s users.",this.state.count);return interpolate(e,{users:this.state.count},!0)}if(this.props.profile.id===this.props.user.id){var t=ngettext("You are following %(users)s user.","You are following %(users)s users.",this.state.count);return interpolate(t,{users:this.state.count},!0)}var r=ngettext("%(username)s is following %(users)s user.","%(username)s is following %(users)s users.",this.state.count);return interpolate(r,{username:this.props.profile.username,users:this.state.count},!0)}return gettext("Loading...")}},{key:"getEmptyMessage",value:function(){return this.state.search?gettext("Search returned no users matching specified criteria."):this.props.user.id===this.props.profile.id?gettext("You are not following any users."):interpolate(gettext("%(username)s is not following any users."),{username:this.props.profile.username},!0)}}]),t}(c["default"]);r["default"]=f},{"./followers":77,react:"react"}],79:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("../avatar"),f=n(c),d=e("../dropdown-toggle"),p=n(d),h=e("./follow-button"),m=n(h),b=e("./moderation/nav"),y=n(b),g=e("../user-status"),v=n(g),_=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getUserStatus",value:function(){return u["default"].createElement("li",{className:"user-status-display"},u["default"].createElement(v["default"],{user:this.props.profile,status:this.props.profile.status},u["default"].createElement(g.StatusIcon,{user:this.props.profile,status:this.props.profile.status}),u["default"].createElement(g.StatusLabel,{user:this.props.profile,status:this.props.profile.status,className:"status-label"})))}},{key:"getUserRank",value:function(){return this.props.profile.rank.is_tab?u["default"].createElement("li",{className:"user-rank"},u["default"].createElement("a",{href:this.props.profile.rank.absolute_url,className:"item-title"},this.props.profile.rank.name)):u["default"].createElement("li",{className:"user-rank"},u["default"].createElement("span",{className:"item-title"},this.props.profile.rank.name))}},{key:"getUserTitle",value:function(){return this.props.profile.title?u["default"].createElement("li",{className:"user-title"},this.props.profile.title):this.props.profile.rank.title?u["default"].createElement("li",{className:"user-title"},this.props.profile.rank.title):null}},{key:"getJoinedOn",value:function(){var e=interpolate(gettext("Joined on %(joined_on)s"),{joined_on:this.props.profile.joined_on.format("LL, LT")},!0),t=interpolate(gettext("Joined %(joined_on)s"),{joined_on:this.props.profile.joined_on.fromNow()},!0);return u["default"].createElement("li",{className:"user-joined-on"},u["default"].createElement("abbr",{title:e},t))}},{key:"getEmail",value:function(){return this.props.profile.email?u["default"].createElement("li",{className:"user-email"},u["default"].createElement("a",{href:"mailto:"+this.props.profile.email,className:"item-title"},this.props.profile.email)):null}},{key:"getFollowButton",value:function(){return this.props.profile.acl.can_follow?u["default"].createElement(m["default"],{className:"btn btn-aligned hidden-xs hidden-sm",profile:this.props.profile}):null}},{key:"getModerationButton",value:function(){return this.props.profile.acl.can_moderate?u["default"].createElement("div",{className:"btn-group btn-aligned hidden-xs hidden-sm"},u["default"].createElement("button",{className:"btn btn-default btn-moderate dropdown-toggle",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},u["default"].createElement("span",{className:"material-icon"},"tonality"),gettext("Moderation")),u["default"].createElement(y["default"],{profile:this.props.profile})):null}},{key:"render",value:function(){return u["default"].createElement("div",{className:"page-header"},u["default"].createElement("div",{className:"container"},u["default"].createElement("div",{className:"row"},u["default"].createElement("div",{className:"col-md-9 col-md-offset-3"},u["default"].createElement("h1",{className:"pull-left"},u["default"].createElement(f["default"],{user:this.props.profile,size:"100"}),u["default"].createElement("span",{className:"user-name"},this.props.profile.username)),this.getFollowButton(),this.getModerationButton(),u["default"].createElement(p["default"],{toggleNav:this.props.toggleNav,dropdown:this.props.dropdown})))),u["default"].createElement("div",{className:"header-stats"},u["default"].createElement("div",{className:"container"},u["default"].createElement("div",{className:"row"},u["default"].createElement("div",{className:"col-md-9 col-md-offset-3"},u["default"].createElement("ul",{className:"list-inline"},this.getUserStatus(),this.getUserRank(),this.getUserTitle(),this.getJoinedOn(),this.getEmail()))))))}}]),t}(u["default"].Component);r["default"]=_},{"../avatar":38,"../dropdown-toggle":54,"../user-status":131,"./follow-button":76,"./moderation/nav":83,react:"react"}],80:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("../../button"),f=n(c),d=e("../../form"),p=n(d),h=e("../../form-group"),m=n(h),b=e("../../modal-loader"),y=n(b),g=e("../../yes-no-switch"),v=n(g),_=e("../../modal-message"),w=n(_),E=e("../../../reducers/users"),O=e("../../../services/ajax"),k=n(O),N=e("../../../services/snackbar"),j=n(N),x=e("../../../services/store"),P=n(x),C=function(e){function t(e){a(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.state={isLoaded:!1,isLoading:!1,error:null,is_avatar_locked:"",avatar_lock_user_message:"",avatar_lock_staff_message:""},r}return s(t,e),i(t,[{key:"componentDidMount",value:function(){var e=this;k["default"].get(this.props.profile.api_url.moderate_avatar).then(function(t){e.setState({isLoaded:!0,is_avatar_locked:t.is_avatar_locked,avatar_lock_user_message:t.avatar_lock_user_message||"",avatar_lock_staff_message:t.avatar_lock_staff_message||""})},function(t){e.setState({isLoaded:!0,error:t.detail})})}},{key:"clean",value:function(){return this.isValid()?!0:(j["default"].error(this.validate().username[0]),!1)}},{key:"send",value:function(){return k["default"].post(this.props.profile.api_url.moderate_avatar,{is_avatar_locked:this.state.is_avatar_locked,avatar_lock_user_message:this.state.avatar_lock_user_message,avatar_lock_staff_message:this.state.avatar_lock_staff_message})}},{key:"handleSuccess",value:function(e){P["default"].dispatch((0,E.updateAvatar)(this.props.profile,e.avatar_hash)),j["default"].success(gettext("Avatar controls have been changed."))}},{key:"getFormBody",value:function(){return u["default"].createElement("form",{onSubmit:this.handleSubmit},u["default"].createElement("div",{className:"modal-body"},u["default"].createElement(m["default"],{label:gettext("Lock avatar"),helpText:gettext("Locking user avatar will prohibit user from changing his avatar and will reset his/her avatar to default one."),"for":"id_is_avatar_locked"},u["default"].createElement(v["default"],{id:"id_is_avatar_locked",disabled:this.state.isLoading,iconOn:"lock_outline",iconOff:"lock_open",labelOn:gettext("Disallow user from changing avatar"),labelOff:gettext("Allow user to change avatar"),onChange:this.bindInput("is_avatar_locked"),value:this.state.is_avatar_locked})),u["default"].createElement(m["default"],{label:gettext("User message"),helpText:gettext("Optional message for user explaining why he/she is prohibited form changing avatar."),"for":"id_avatar_lock_user_message"},u["default"].createElement("textarea",{id:"id_avatar_lock_user_message",className:"form-control",rows:"4",disabled:this.state.isLoading,onChange:this.bindInput("avatar_lock_user_message"),value:this.state.avatar_lock_user_message})),u["default"].createElement(m["default"],{label:gettext("Staff message"),helpText:gettext("Optional message for forum team members explaining why user is prohibited form changing avatar."),"for":"id_avatar_lock_staff_message"},u["default"].createElement("textarea",{id:"id_avatar_lock_staff_message",className:"form-control",rows:"4",disabled:this.state.isLoading,onChange:this.bindInput("avatar_lock_staff_message"),value:this.state.avatar_lock_staff_message}))),u["default"].createElement("div",{className:"modal-footer"},u["default"].createElement("button",{type:"button",className:"btn btn-default","data-dismiss":"modal"},gettext("Close")),u["default"].createElement(f["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Save changes"))))}},{key:"getModalBody",value:function(){return this.state.error?u["default"].createElement(w["default"],{icon:"remove_circle_outline",message:this.state.error}):this.state.isLoaded?this.getFormBody():u["default"].createElement(y["default"],null)}},{key:"getClassName",value:function(){return this.state.error?"modal-dialog modal-message modal-avatar-controls":"modal-dialog modal-avatar-controls"}},{key:"render",value:function(){return u["default"].createElement("div",{className:this.getClassName(),role:"document"},u["default"].createElement("div",{className:"modal-content"},u["default"].createElement("div",{className:"modal-header"},u["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},u["default"].createElement("span",{"aria-hidden":"true"},"×")),u["default"].createElement("h4",{className:"modal-title"},gettext("Avatar controls"))),this.getModalBody()))}}]),t}(p["default"]);r["default"]=C},{"../../../reducers/users":163,"../../../services/ajax":164,"../../../services/snackbar":173,"../../../services/store":174,"../../button":40,"../../form":56,"../../form-group":55,"../../modal-loader":59,"../../modal-message":60,"../../yes-no-switch":154,react:"react"}],81:[function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function a(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),u=e("react"),c=a(u),f=e("../../button"),d=a(f),p=e("../../form"),h=a(p),m=e("../../form-group"),b=a(m),y=e("../../modal-loader"),g=a(y),v=e("../../modal-message"),_=a(v),w=e("../../../index"),E=a(w),O=e("../../../reducers/username-history"),k=e("../../../reducers/users"),N=e("../../../services/ajax"),j=a(N),x=e("../../../services/snackbar"),P=a(x),C=e("../../../services/store"),S=a(C),T=e("../../../utils/validators"),M=n(T),L=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));return r.state={isLoaded:!1,isLoading:!1,error:null,username:"",validators:{username:[M.usernameContent(),M.usernameMinLength(E["default"].get("SETTINGS")),M.usernameMaxLength(E["default"].get("SETTINGS"))]}},r}return i(t,e),l(t,[{key:"componentDidMount",value:function(){var e=this;j["default"].get(this.props.profile.api_url.moderate_username).then(function(){e.setState({isLoaded:!0})},function(t){e.setState({isLoaded:!0,error:t.detail})})}},{key:"clean",value:function(){return this.isValid()?!0:(P["default"].error(this.validate().username[0]),!1)}},{key:"send",value:function(){return j["default"].post(this.props.profile.api_url.moderate_username,{username:this.state.username})}},{key:"handleSuccess",value:function(e){this.setState({username:""}),S["default"].dispatch((0,O.addNameChange)(e,this.props.profile,this.props.user)),S["default"].dispatch((0,k.updateUsername)(this.props.profile,e.username,e.slug)),P["default"].success(gettext("Username has been changed."))}},{key:"getFormBody",value:function(){return c["default"].createElement("form",{onSubmit:this.handleSubmit},c["default"].createElement("div",{className:"modal-body"},c["default"].createElement(b["default"],{label:gettext("New username"),"for":"id_username"},c["default"].createElement("input",{type:"text",id:"id_username",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("username"),value:this.state.username}))),c["default"].createElement("div",{className:"modal-footer"},c["default"].createElement("button",{type:"button",className:"btn btn-default","data-dismiss":"modal"},gettext("Close")),c["default"].createElement(d["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Change username"))))}},{key:"getModalBody",value:function(){return this.state.error?c["default"].createElement(_["default"],{icon:"remove_circle_outline",message:this.state.error}):this.state.isLoaded?this.getFormBody():c["default"].createElement(g["default"],null)}},{key:"getClassName",value:function(){return this.state.error?"modal-dialog modal-message modal-rename-user":"modal-dialog modal-rename-user"}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getClassName(),role:"document"},c["default"].createElement("div",{className:"modal-content"},c["default"].createElement("div",{className:"modal-header"},c["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},c["default"].createElement("span",{"aria-hidden":"true"},"×")),c["default"].createElement("h4",{className:"modal-title"},gettext("Change username"))),this.getModalBody()))}}]),t}(h["default"]);r["default"]=L},{"../../../index":155,"../../../reducers/username-history":162,"../../../reducers/users":163,"../../../services/ajax":164,"../../../services/snackbar":173,"../../../services/store":174,"../../../utils/validators":189,"../../button":40,"../../form":56,"../../form-group":55,"../../modal-loader":59,"../../modal-message":60,react:"react"}],82:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("../../button"),f=n(c),d=e("../../form"),p=n(d),h=e("../../form-group"),m=n(h),b=e("../../modal-loader"),y=n(b),g=e("../../modal-message"),v=n(g),_=e("../../yes-no-switch"),w=n(_),E=e("../../../index"),O=n(E),k=e("../../../services/ajax"),N=n(k),j=e("../../../services/polls"),x=n(j),P=function(e){function t(e){a(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.countdown=function(){window.setTimeout(function(){r.state.countdown>1?(r.setState({countdown:r.state.countdown-1}),r.countdown()):r.state.confirm||r.setState({confirm:!0})},1e3)},r.state={isLoaded:!1,isLoading:!1,isDeleted:!1,error:null,countdown:5,confirm:!1,with_content:!1},r}return s(t,e),i(t,[{key:"componentDidMount",value:function(){var e=this;N["default"].get(this.props.profile.api_url["delete"]).then(function(){e.setState({isLoaded:!0}),e.countdown()},function(t){e.setState({isLoaded:!0,error:t.detail})})}},{key:"send",value:function(){return N["default"].post(this.props.profile.api_url["delete"],{with_content:this.state.with_content})}},{key:"handleSuccess",value:function(){x["default"].stop("user-profile"),this.state.with_content?this.setState({isDeleted:interpolate(gettext("%(username)s's account, threads, posts and other content has been deleted."),{username:this.props.profile.username},!0)}):this.setState({isDeleted:interpolate(gettext("%(username)s's account has been deleted and other content has been hidden."),{
-username:this.props.profile.username},!0)})}},{key:"getButtonLabel",value:function(){return this.state.confirm?interpolate(gettext("Delete %(username)s"),{username:this.props.profile.username},!0):interpolate(gettext("Please wait... (%(countdown)ss)"),{countdown:this.state.countdown},!0)}},{key:"getForm",value:function(){return u["default"].createElement("form",{onSubmit:this.handleSubmit,className:"form-horizontal"},u["default"].createElement("div",{className:"modal-body"},u["default"].createElement(m["default"],{label:gettext("User content"),labelClass:"col-sm-4",controlClass:"col-sm-8","for":"id_with_content"},u["default"].createElement(w["default"],{id:"id_with_content",disabled:this.state.isLoading,labelOn:gettext("Delete together with user's account"),labelOff:gettext("Hide after deleting user's account"),onChange:this.bindInput("with_content"),value:this.state.with_content}))),u["default"].createElement("div",{className:"modal-footer"},u["default"].createElement("button",{type:"button",className:"btn btn-default","data-dismiss":"modal"},gettext("Cancel")),u["default"].createElement(f["default"],{className:"btn-danger",loading:this.state.isLoading,disabled:!this.state.confirm},this.getButtonLabel())))}},{key:"getDeletedBody",value:function(){return u["default"].createElement("div",{className:"modal-body"},u["default"].createElement("div",{className:"message-icon"},u["default"].createElement("span",{className:"material-icon"},"info_outline")),u["default"].createElement("div",{className:"message-body"},u["default"].createElement("p",{className:"lead"},this.state.isDeleted),u["default"].createElement("p",null,u["default"].createElement("a",{href:O["default"].get("USERS_LIST_URL")},gettext("Return to users list")))))}},{key:"getModalBody",value:function(){return this.state.error?u["default"].createElement(v["default"],{icon:"remove_circle_outline",message:this.state.error}):this.state.isLoaded?this.state.isDeleted?this.getDeletedBody():this.getForm():u["default"].createElement(y["default"],null)}},{key:"getClassName",value:function(){return this.state.error||this.state.isDeleted?"modal-dialog modal-message modal-delete-account":"modal-dialog modal-delete-account"}},{key:"render",value:function(){return u["default"].createElement("div",{className:this.getClassName(),role:"document"},u["default"].createElement("div",{className:"modal-content"},u["default"].createElement("div",{className:"modal-header"},u["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},u["default"].createElement("span",{"aria-hidden":"true"},"×")),u["default"].createElement("h4",{className:"modal-title"},gettext("Delete user account"))),this.getModalBody()))}}]),t}(p["default"]);r["default"]=P},{"../../../index":155,"../../../services/ajax":164,"../../../services/polls":172,"../../button":40,"../../form":56,"../../form-group":55,"../../modal-loader":59,"../../modal-message":60,"../../yes-no-switch":154,react:"react"}],83:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("react-redux"),f=e("./avatar-controls"),d=n(f),p=e("./change-username"),h=n(p),m=e("./delete-account"),b=n(m),y=e("../../../services/modal"),g=n(y),v=function(e){return{tick:e.tick,user:e.auth,profile:e.profile}},_=function(e){function t(){var e,r,n,s;a(this,t);for(var i=arguments.length,l=Array(i),u=0;i>u;u++)l[u]=arguments[u];return r=n=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(l))),n.showAvatarDialog=function(){g["default"].show((0,c.connect)(v)(d["default"]))},n.showRenameDialog=function(){g["default"].show((0,c.connect)(v)(h["default"]))},n.showDeleteDialog=function(){g["default"].show((0,c.connect)(v)(b["default"]))},s=r,o(n,s)}return s(t,e),i(t,[{key:"getAvatarButton",value:function(){return this.props.profile.acl.can_moderate_avatar?u["default"].createElement("li",null,u["default"].createElement("button",{type:"button",className:"btn-link",onClick:this.showAvatarDialog},u["default"].createElement("span",{className:"material-icon"},"portrait"),gettext("Avatar controls"))):null}},{key:"getRenameButton",value:function(){return this.props.profile.acl.can_rename?u["default"].createElement("li",null,u["default"].createElement("button",{type:"button",className:"btn-link",onClick:this.showRenameDialog},u["default"].createElement("span",{className:"material-icon"},"credit_card"),gettext("Change username"))):null}},{key:"getDeleteButton",value:function(){return this.props.profile.acl.can_delete?u["default"].createElement("li",null,u["default"].createElement("button",{type:"button",className:"btn-link",onClick:this.showDeleteDialog},u["default"].createElement("span",{className:"material-icon"},"clear"),gettext("Delete account"))):null}},{key:"render",value:function(){return u["default"].createElement("ul",{className:"dropdown-menu dropdown-menu-right",role:"menu"},this.getAvatarButton(),this.getRenameButton(),this.getDeleteButton(),u["default"].createElement("li",{className:"divider hidden-md hidden-lg"}),u["default"].createElement("li",{className:"dropdown-buttons hidden-md hidden-lg"},u["default"].createElement("button",{type:"button",className:"btn btn-default btn-block",onClick:this.props.toggleNav},u["default"].createElement("span",{className:"material-icon"},"menu"),gettext("Menu"))))}}]),t}(u["default"].Component);r["default"]=_},{"../../../services/modal":170,"./avatar-controls":80,"./change-username":81,"./delete-account":82,react:"react","react-redux":"react-redux"}],84:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0}),r.CompactNav=r.SideNav=void 0;var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("react-router"),f=e("../li"),d=n(f),p=e("./follow-button"),h=n(p),m=e("../../index"),b=(n(m),r.SideNav=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getMeta",value:function(e){return e?u["default"].createElement("span",{className:"badge"},this.props.profile[e.attr]):null}},{key:"render",value:function(){var e=this;return u["default"].createElement("div",{className:"list-group nav-side"},this.props.pages.map(function(t){return u["default"].createElement(c.Link,{to:e.props.baseUrl+t.component+"/",className:"list-group-item",activeClassName:"active",key:t.component},u["default"].createElement("span",{className:"material-icon"},t.icon),t.name,e.getMeta(t.meta))}))}}]),t}(u["default"].Component));r.CompactNav=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"showSpecialOptions",value:function(){return this.props.profile.acl.can_follow||this.props.profile.acl.can_moderate}},{key:"getFollowButton",value:function(){return this.props.profile.acl.can_follow?u["default"].createElement(h["default"],{className:"btn btn-block",profile:this.props.profile}):null}},{key:"getModerationButton",value:function(){return this.props.profile.acl.can_moderate?u["default"].createElement("button",{type:"button",className:"btn btn-default btn-block",onClick:this.props.toggleModeration},u["default"].createElement("span",{className:"material-icon"},"tonality"),gettext("Moderation")):null}},{key:"getSpecialOptions",value:function(){return this.showSpecialOptions()?u["default"].createElement("li",{className:"dropdown-buttons"},this.getFollowButton(),this.getModerationButton()):null}},{key:"render",value:function(){var e=this;return u["default"].createElement("ul",{className:"dropdown-menu",role:"menu"},this.getSpecialOptions(),this.showSpecialOptions()?u["default"].createElement("li",{className:"divider"}):null,this.props.pages.map(function(t){return u["default"].createElement(d["default"],{path:e.props.baseUrl+t.component+"/",key:t.component},u["default"].createElement(c.Link,{to:e.props.baseUrl+t.component+"/",onClick:e.props.hideNav},u["default"].createElement("span",{className:"material-icon"},t.icon),t.name,e.getMeta(t.meta)))}))}}]),t}(b)},{"../../index":155,"../li":57,"./follow-button":76,react:"react","react-router":"react-router"}],85:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{tick:e.tick.tick,user:e.auth.user,users:e.users,profile:e.profile,"username-history":e["username-history"]}}function l(){var e=[];return T["default"].get("PROFILE_PAGES").forEach(function(t){e.push(Object.assign({},t,{path:T["default"].get("PROFILE").absolute_url+t.component+"/",component:(0,d.connect)(i)(z[t.component])}))}),e}Object.defineProperty(r,"__esModule",{value:!0});var u=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}();r.select=i,r.paths=l;var c=e("react"),f=n(c),d=e("react-redux"),p=e("../avatar"),h=n(p),m=e("./ban-details"),b=n(m),y=e("./followers"),g=n(y),v=e("./follows"),_=n(v),w=e("./username-history"),E=n(w),O=e("./header"),k=n(O),N=e("./moderation/nav"),j=n(N),x=e("./navs"),P=e("../with-dropdown"),C=n(P),S=e("../../index"),T=n(S),M=e("../../reducers/profile"),L=e("../../services/polls"),R=n(L),A=e("../../services/store"),I=n(A),U=function(e){function t(e){a(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.update=function(e){I["default"].dispatch((0,M.hydrate)(e))},r.toggleNav=function(){"pages"===r.state.dropdown?r.setState({dropdown:!1}):r.setState({dropdown:"pages"})},r.toggleModeration=function(){"moderation"===r.state.dropdown?r.setState({dropdown:!1}):r.setState({dropdown:"moderation"})},r.startPolling(e.profile.api_url.root),r}return s(t,e),u(t,[{key:"startPolling",value:function(e){R["default"].start({poll:"user-profile",url:e,frequency:9e4,update:this.update})}},{key:"getNavDropdown",value:function(){return"pages"===this.state.dropdown?f["default"].createElement(x.CompactNav,{pages:T["default"].get("PROFILE_PAGES"),baseUrl:T["default"].get("PROFILE").absolute_url,profile:this.props.profile,toggleModeration:this.toggleModeration,hideNav:this.hideNav}):"moderation"===this.state.dropdown?f["default"].createElement(j["default"],{profile:this.props.profile,toggleNav:this.toggleNav,hideNav:this.hideNav}):null}},{key:"getClassName",value:function(){var e="page page-user-profile";return e}},{key:"render",value:function(){return f["default"].createElement("div",{className:this.getClassName()},f["default"].createElement(k["default"],{user:this.props.user,profile:this.props.profile,toggleNav:this.toggleNav,toggleModeration:this.toggleModeration}),f["default"].createElement("div",{className:this.getCompactNavClassName()},this.getNavDropdown()),f["default"].createElement("div",{className:"container"},f["default"].createElement("div",{className:"row"},f["default"].createElement("div",{className:"col-md-3 hidden-xs hidden-sm"},f["default"].createElement("div",{className:"profile-side-avatar"},f["default"].createElement(h["default"],{user:this.props.profile,size:"400"})),f["default"].createElement(x.SideNav,{pages:T["default"].get("PROFILE_PAGES"),baseUrl:T["default"].get("PROFILE").absolute_url,profile:this.props.profile})),f["default"].createElement("div",{className:"col-md-9"},this.props.children))))}}]),t}(C["default"]);r["default"]=U;var D=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(t,[{key:"render",value:function(){return f["default"].createElement("div",{className:"container"},f["default"].createElement("p",null,"Hello, I'm placeholder for "+this.props.route.name))}}]),t}(f["default"].Component),z={posts:D,threads:D,followers:g["default"],follows:_["default"],"username-history":E["default"],"ban-details":b["default"]}},{"../../index":155,"../../reducers/profile":157,"../../services/polls":172,"../../services/store":174,"../avatar":38,"../with-dropdown":153,"./ban-details":75,"./followers":77,"./follows":78,"./header":79,"./moderation/nav":83,"./navs":84,"./username-history":86,react:"react","react-redux":"react-redux"}],86:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("../button"),f=n(c),d=e("../search"),p=n(d),h=e("../username-history/root"),m=n(h),b=e("../../index"),y=n(b),g=e("../../reducers/username-history"),v=e("../../services/ajax"),_=n(v),w=e("../../services/snackbar"),E=n(w),O=e("../../services/store"),k=n(O),N=e("../../services/page-title"),j=n(N),x=function(e){function t(e){a(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.loadMore=function(){r.setState({isBusy:!0}),r.loadChanges(r.state.page+1,r.state.search)},r.search=function(e){r.setState({isLoaded:!1,isBusy:!0,search:e.target.value,count:0,more:0,page:1,pages:1}),r.loadChanges(1,e.target.value)},y["default"].has("PROFILE_NAME_HISTORY")?r.initWithPreloadedData(y["default"].pop("PROFILE_NAME_HISTORY")):r.initWithoutPreloadedData(),r}return s(t,e),i(t,[{key:"initWithPreloadedData",value:function(e){this.state={isLoaded:!0,isBusy:!1,search:"",count:e.count,more:e.more,page:e.page,pages:e.pages},k["default"].dispatch((0,g.hydrate)(e.results))}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1,isBusy:!1,search:"",count:0,more:0,page:1,pages:1},this.loadChanges()}},{key:"loadChanges",value:function(){var e=this,t=arguments.length<=0||void 0===arguments[0]?1:arguments[0],r=arguments.length<=1||void 0===arguments[1]?null:arguments[1];_["default"].get(y["default"].get("USERNAME_CHANGES_API"),{user:this.props.profile.id,search:r,page:t||1},"search-username-history").then(function(r){1===t?k["default"].dispatch((0,g.hydrate)(r.results)):k["default"].dispatch((0,g.append)(r.results)),e.setState({isLoaded:!0,isBusy:!1,count:r.count,more:r.more,page:r.page,pages:r.pages})},function(e){E["default"].apiError(e)})}},{key:"componentDidMount",value:function(){j["default"].set({title:gettext("Username history"),parent:this.props.profile.username})}},{key:"getLabel",value:function(){if(this.state.isLoaded){if(this.state.search){var e=ngettext("Found %(changes)s username change.","Found %(changes)s username changes.",this.state.count);return interpolate(e,{changes:this.state.count},!0)}if(this.props.profile.id===this.props.user.id){var t=ngettext("Your username was changed %(changes)s time.","Your username was changed %(changes)s times.",this.state.count);return interpolate(t,{changes:this.state.count},!0)}var r=ngettext("%(username)s's username was changed %(changes)s time.","%(username)s's username was changed %(changes)s times.",this.state.count);return interpolate(r,{username:this.props.profile.username,changes:this.state.count},!0)}return gettext("Loading...")}},{key:"getEmptyMessage",value:function(){return this.state.search?gettext("Search returned no username changes matching specified criteria."):this.props.user.id===this.props.profile.id?gettext("No name changes have been recorded for your account."):interpolate(gettext("%(username)s's username was never changed."),{username:this.props.profile.username},!0)}},{key:"getMoreButton",value:function(){return this.state.more?u["default"].createElement("div",{className:"pager-more"},u["default"].createElement(f["default"],{loading:this.state.isBusy,onClick:this.loadMore},interpolate(gettext("Show older (%(more)s)"),{more:this.state.more},!0))):null}},{key:"render",value:function(){return u["default"].createElement("div",{className:"profile-username-history"},u["default"].createElement("nav",{className:"toolbar"},u["default"].createElement("h3",{className:"toolbar-left"},this.getLabel()),u["default"].createElement(p["default"],{className:"toolbar-right",value:this.state.search,onChange:this.search,placeholder:gettext("Search history...")})),u["default"].createElement(m["default"],{isLoaded:this.state.isLoaded,emptyMessage:this.getEmptyMessage(),changes:this.props["username-history"]}),this.getMoreButton())}}]),t}(u["default"].Component);r["default"]=x},{"../../index":155,"../../reducers/username-history":162,"../../services/ajax":164,"../../services/page-title":171,"../../services/snackbar":173,"../../services/store":174,"../button":40,"../search":92,"../username-history/root":137,react:"react"}],87:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("./loader"),f=n(c),d=e("./register.js"),p=n(d),h=e("../services/captcha"),m=n(h),b=e("../services/modal"),y=n(b),g=e("../services/snackbar"),v=n(g),_=e("../services/zxcvbn"),w=n(_),E=function(e){function t(e){a(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.showRegisterModal=function(){"closed"===misago.get("SETTINGS").account_activation?v["default"].info(gettext("New registrations are currently disabled.")):r.state.isLoaded?y["default"].show(p["default"]):(r.setState({isLoading:!0}),Promise.all([m["default"].load(),w["default"].load()]).then(function(){r.state.isLoaded||r.setState({isLoading:!1,isLoaded:!1}),y["default"].show(p["default"])}))},r.state={isLoading:!1,isLoaded:!1},r}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.className+(this.state.isLoading?" btn-loading":"")}},{key:"render",value:function(){return u["default"].createElement("button",{type:"button",onClick:this.showRegisterModal,className:"btn "+this.getClassName(),disabled:this.state.isLoaded},gettext("Register"),this.state.isLoading?u["default"].createElement(f["default"],null):null)}}]),t}(u["default"].Component);r["default"]=E},{"../services/captcha":166,"../services/modal":170,"../services/snackbar":173,"../services/zxcvbn":175,"./loader":58,"./register.js":88,react:"react"}],88:[function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function a(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0}),r.RegisterComplete=r.RegisterForm=void 0;var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),u=e("react"),c=a(u),f=e("./button"),d=a(f),p=e("./form"),h=a(p),m=e("./form-group"),b=a(m),y=e("./password-strength"),g=a(y),v=e("../index"),_=a(v),w=e("../services/ajax"),E=a(w),O=e("../services/auth"),k=a(O),N=e("../services/captcha"),j=a(N),x=e("../services/modal"),P=a(x),C=e("../services/snackbar"),S=a(C),T=e("../utils/banned-page"),M=a(T),L=e("../utils/validators"),R=n(L),A=r.RegisterForm=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));return r.state={isLoading:!1,username:"",email:"",password:"",captcha:"",validators:{username:[R.usernameContent(),R.usernameMinLength(_["default"].get("SETTINGS")),R.usernameMaxLength(_["default"].get("SETTINGS"))],email:[R.email()],password:[R.passwordMinLength(_["default"].get("SETTINGS"))],captcha:j["default"].validator()},errors:{}},r}return i(t,e),l(t,[{key:"clean",value:function(){return this.isValid()?!0:(S["default"].error(gettext("Form contains errors.")),this.setState({errors:this.validate()}),!1)}},{key:"send",value:function(){return E["default"].post(_["default"].get("USERS_API"),{username:this.state.username,email:this.state.email,password:this.state.password,captcha:this.state.captcha})}},{key:"handleSuccess",value:function(e){this.props.callback(e)}},{key:"handleError",value:function(e){400===e.status?(this.setState({errors:Object.assign({},this.state.errors,e)}),S["default"].error(gettext("Form contains errors."))):403===e.status&&e.ban?((0,M["default"])(e.ban),P["default"].hide()):S["default"].apiError(e)}},{key:"getLegalFootNote",value:function(){return _["default"].get("TERMS_OF_SERVICE_URL")?c["default"].createElement("a",{href:_["default"].get("TERMS_OF_SERVICE_URL"),target:"_blank"},gettext("By registering you agree to site's terms and conditions.")):null}},{key:"render",value:function(){return c["default"].createElement("div",{className:"modal-dialog modal-register",role:"document"},c["default"].createElement("div",{className:"modal-content"},c["default"].createElement("div",{className:"modal-header"},c["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},c["default"].createElement("span",{"aria-hidden":"true"},"×")),c["default"].createElement("h4",{className:"modal-title"},gettext("Register"))),c["default"].createElement("form",{onSubmit:this.handleSubmit,className:"form-horizontal"},c["default"].createElement("input",{type:"type",style:{display:"none"}}),c["default"].createElement("input",{type:"password",style:{display:"none"}}),c["default"].createElement("div",{className:"modal-body"},c["default"].createElement(b["default"],{label:gettext("Username"),"for":"id_username",labelClass:"col-sm-4",controlClass:"col-sm-8",validation:this.state.errors.username},c["default"].createElement("input",{type:"text",id:"id_username",className:"form-control","aria-describedby":"id_username_status",disabled:this.state.isLoading,onChange:this.bindInput("username"),value:this.state.username})),c["default"].createElement(b["default"],{label:gettext("E-mail"),"for":"id_email",labelClass:"col-sm-4",controlClass:"col-sm-8",validation:this.state.errors.email},c["default"].createElement("input",{type:"text",id:"id_email",className:"form-control","aria-describedby":"id_email_status",disabled:this.state.isLoading,onChange:this.bindInput("email"),value:this.state.email})),c["default"].createElement(b["default"],{label:gettext("Password"),"for":"id_password",labelClass:"col-sm-4",controlClass:"col-sm-8",validation:this.state.errors.password,extra:c["default"].createElement(g["default"],{password:this.state.password,inputs:[this.state.username,this.state.email]})},c["default"].createElement("input",{type:"password",id:"id_password",className:"form-control","aria-describedby":"id_password_status",disabled:this.state.isLoading,onChange:this.bindInput("password"),value:this.state.password})),j["default"].component({form:this,labelClass:"col-sm-4",controlClass:"col-sm-8"})),c["default"].createElement("div",{className:"modal-footer"},this.getLegalFootNote(),c["default"].createElement(d["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Register account"))))))}}]),t}(h["default"]),I=r.RegisterComplete=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),l(t,[{key:"getLead",value:function(){return"user"===this.props.activation?gettext("%(username)s, your account has been created but you need to activate it before you will be able to sign in."):"admin"===this.props.activation?gettext("%(username)s, your account has been created but board administrator will have to activate it before you will be able to sign in."):void 0}},{key:"getSubscript",value:function(){return"user"===this.props.activation?gettext("We have sent an e-mail to %(email)s with link that you have to click to activate your account."):"admin"===this.props.activation?gettext("We will send an e-mail to %(email)s when this takes place."):void 0}},{key:"render",value:function(){return c["default"].createElement("div",{className:"modal-dialog modal-message modal-register",role:"document"},c["default"].createElement("div",{className:"modal-content"},c["default"].createElement("div",{className:"modal-header"},c["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},c["default"].createElement("span",{"aria-hidden":"true"},"×")),c["default"].createElement("h4",{className:"modal-title"},gettext("Registration complete"))),c["default"].createElement("div",{className:"modal-body"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"info_outline")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",{className:"lead"},interpolate(this.getLead(),{username:this.props.username},!0)),c["default"].createElement("p",null,interpolate(this.getSubscript(),{email:this.props.email},!0))))))}}]),t}(c["default"].Component),U=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));return r.completeRegistration=function(e){"active"===e.activation?(P["default"].hide(),k["default"].signIn(e)):r.setState({complete:e})},r.state={complete:!1},r}return i(t,e),l(t,[{key:"render",value:function(){return this.state.complete?c["default"].createElement(I,{activation:this.state.complete.activation,username:this.state.complete.username,email:this.state.complete.email}):c["default"].createElement(A,{callback:this.completeRegistration})}}]),t}(c["default"].Component);r["default"]=U},{"../index":155,"../services/ajax":164,"../services/auth":165,"../services/captcha":166,"../services/modal":170,"../services/snackbar":173,"../utils/banned-page":176,"../utils/validators":189,"./button":40,"./form":56,"./form-group":55,"./password-strength":74,react:"react"}],89:[function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function a(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0}),r.LinkSent=r.RequestLinkForm=void 0;var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),u=e("react"),c=a(u),f=e("../index"),d=a(f),p=e("./button"),h=a(p),m=e("./form"),b=a(m),y=e("../services/ajax"),g=a(y),v=e("../services/snackbar"),_=a(v),w=e("../utils/validators"),E=n(w),O=e("../utils/banned-page"),k=a(O),N=r.RequestLinkForm=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));return r.state={isLoading:!1,email:"",validators:{email:[E.email()]}},r}return i(t,e),l(t,[{key:"clean",value:function(){return this.isValid()?!0:(_["default"].error(gettext("Enter a valid email address.")),!1)}},{key:"send",value:function(){return g["default"].post(d["default"].get("SEND_ACTIVATION_API"),{email:this.state.email})}},{key:"handleSuccess",value:function(e){this.props.callback(e)}},{key:"handleError",value:function(e){["already_active","inactive_admin"].indexOf(e.code)>-1?_["default"].info(e.detail):403===e.status&&e.ban?(0,k["default"])(e.ban):_["default"].apiError(e)}},{key:"render",value:function(){return c["default"].createElement("div",{className:"well well-form well-form-request-activation-link"
-},c["default"].createElement("form",{onSubmit:this.handleSubmit},c["default"].createElement("div",{className:"form-group"},c["default"].createElement("div",{className:"control-input"},c["default"].createElement("input",{type:"text",className:"form-control",placeholder:gettext("Your e-mail address"),disabled:this.state.isLoading,onChange:this.bindInput("email"),value:this.state.email}))),c["default"].createElement(h["default"],{className:"btn-primary btn-block",loading:this.state.isLoading},gettext("Send link"))))}}]),t}(b["default"]),j=r.LinkSent=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),l(t,[{key:"getMessage",value:function(){return interpolate(gettext("Activation link was sent to %(email)s"),{email:this.props.user.email},!0)}},{key:"render",value:function(){return c["default"].createElement("div",{className:"well well-form well-form-request-activation-link well-done"},c["default"].createElement("div",{className:"done-message"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"check")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",null,this.getMessage())),c["default"].createElement("button",{type:"button",className:"btn btn-primary btn-block",onClick:this.props.callback},gettext("Request another link"))))}}]),t}(c["default"].Component),x=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));return r.complete=function(e){r.setState({complete:e})},r.reset=function(){r.setState({complete:!1})},r.state={complete:!1},r}return i(t,e),l(t,[{key:"render",value:function(){return this.state.complete?c["default"].createElement(j,{user:this.state.complete,callback:this.reset}):c["default"].createElement(N,{callback:this.complete})}}]),t}(c["default"].Component);r["default"]=x},{"../index":155,"../services/ajax":164,"../services/snackbar":173,"../utils/banned-page":176,"../utils/validators":189,"./button":40,"./form":56,react:"react"}],90:[function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function a(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0}),r.AccountInactivePage=r.LinkSent=r.RequestResetForm=void 0;var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),u=e("react"),c=a(u),f=e("react-dom"),d=a(f),p=e("../index"),h=a(p),m=e("./button"),b=a(m),y=e("./form"),g=a(y),v=e("../services/ajax"),_=a(v),w=e("../services/snackbar"),E=a(w),O=e("../utils/validators"),k=n(O),N=e("../utils/banned-page"),j=a(N),x=r.RequestResetForm=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));return r.state={isLoading:!1,email:"",validators:{email:[k.email()]}},r}return i(t,e),l(t,[{key:"clean",value:function(){return this.isValid()?!0:(E["default"].error(gettext("Enter a valid email address.")),!1)}},{key:"send",value:function(){return _["default"].post(h["default"].get("SEND_PASSWORD_RESET_API"),{email:this.state.email})}},{key:"handleSuccess",value:function(e){this.props.callback(e)}},{key:"handleError",value:function(e){["inactive_user","inactive_admin"].indexOf(e.code)>-1?this.props.showInactivePage(e):403===e.status&&e.ban?(0,j["default"])(e.ban):E["default"].apiError(e)}},{key:"render",value:function(){return c["default"].createElement("div",{className:"well well-form well-form-request-password-reset"},c["default"].createElement("form",{onSubmit:this.handleSubmit},c["default"].createElement("div",{className:"form-group"},c["default"].createElement("div",{className:"control-input"},c["default"].createElement("input",{type:"text",className:"form-control",placeholder:gettext("Your e-mail address"),disabled:this.state.isLoading,onChange:this.bindInput("email"),value:this.state.email}))),c["default"].createElement(b["default"],{className:"btn-primary btn-block",loading:this.state.isLoading},gettext("Send link"))))}}]),t}(g["default"]),P=r.LinkSent=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),l(t,[{key:"getMessage",value:function(){return interpolate(gettext("Reset password link was sent to %(email)s"),{email:this.props.user.email},!0)}},{key:"render",value:function(){return c["default"].createElement("div",{className:"well well-form well-form-request-password-reset well-done"},c["default"].createElement("div",{className:"done-message"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"check")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",null,this.getMessage())),c["default"].createElement("button",{type:"button",className:"btn btn-primary btn-block",onClick:this.props.callback},gettext("Request another link"))))}}]),t}(c["default"].Component),C=r.AccountInactivePage=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),l(t,[{key:"getActivateButton",value:function(){return"inactive_user"===this.props.activation?c["default"].createElement("p",null,c["default"].createElement("a",{href:h["default"].get("REQUEST_ACTIVATION_URL")},gettext("Activate your account."))):null}},{key:"render",value:function(){return c["default"].createElement("div",{className:"page page-message page-message-info page-forgotten-password-inactive"},c["default"].createElement("div",{className:"container"},c["default"].createElement("div",{className:"message-panel"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"info_outline")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",{className:"lead"},gettext("Your account is inactive.")),c["default"].createElement("p",null,this.props.message),this.getActivateButton()))))}}]),t}(c["default"].Component),S=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));return r.complete=function(e){r.setState({complete:e})},r.reset=function(){r.setState({complete:!1})},r.state={complete:!1},r}return i(t,e),l(t,[{key:"showInactivePage",value:function(e){d["default"].render(c["default"].createElement(C,{activation:e.code,message:e.detail}),document.getElementById("page-mount"))}},{key:"render",value:function(){return this.state.complete?c["default"].createElement(P,{user:this.state.complete,callback:this.reset}):c["default"].createElement(x,{callback:this.complete,showInactivePage:this.showInactivePage})}}]),t}(c["default"].Component);r["default"]=S},{"../index":155,"../services/ajax":164,"../services/snackbar":173,"../utils/banned-page":176,"../utils/validators":189,"./button":40,"./form":56,react:"react","react-dom":"react-dom"}],91:[function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function a(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0}),r.PasswordChangedPage=r.ResetPasswordForm=void 0;var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),u=e("react"),c=a(u),f=e("react-dom"),d=a(f),p=e("../index"),h=a(p),m=e("./button"),b=a(m),y=e("./form"),g=a(y),v=e("./sign-in.js"),_=a(v),w=e("../services/ajax"),E=a(w),O=e("../services/auth"),k=a(O),N=e("../services/modal"),j=a(N),x=e("../services/snackbar"),P=a(x),C=e("../utils/validators"),S=n(C),T=e("../utils/banned-page"),M=a(T),L=r.ResetPasswordForm=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));return r.state={isLoading:!1,password:"",validators:{password:[S.passwordMinLength(h["default"].get("SETTINGS"))]}},r}return i(t,e),l(t,[{key:"clean",value:function(){return this.isValid()?!0:(this.state.password.trim().length?P["default"].error(this.state.errors.password[0]):P["default"].error(gettext("Enter new password.")),!1)}},{key:"send",value:function(){return E["default"].post(h["default"].get("CHANGE_PASSWORD_API"),{password:this.state.password})}},{key:"handleSuccess",value:function(e){this.props.callback(e)}},{key:"handleError",value:function(e){403===e.status&&e.ban?(0,M["default"])(e.ban):P["default"].apiError(e)}},{key:"render",value:function(){return c["default"].createElement("div",{className:"well well-form well-form-reset-password"},c["default"].createElement("form",{onSubmit:this.handleSubmit},c["default"].createElement("div",{className:"form-group"},c["default"].createElement("div",{className:"control-input"},c["default"].createElement("input",{type:"password",className:"form-control",placeholder:gettext("Enter new password"),disabled:this.state.isLoading,onChange:this.bindInput("password"),value:this.state.password}))),c["default"].createElement(b["default"],{className:"btn-primary btn-block",loading:this.state.isLoading},gettext("Change password"))))}}]),t}(g["default"]),R=r.PasswordChangedPage=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),l(t,[{key:"getMessage",value:function(){return interpolate(gettext("%(username)s, your password has been changed successfully."),{username:this.props.user.username},!0)}},{key:"showSignIn",value:function(){j["default"].show(_["default"])}},{key:"render",value:function(){return c["default"].createElement("div",{className:"page page-message page-message-success page-forgotten-password-changed"},c["default"].createElement("div",{className:"container"},c["default"].createElement("div",{className:"message-panel"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"check")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",{className:"lead"},this.getMessage()),c["default"].createElement("p",null,gettext("You will have to sign in using new password before continuing.")),c["default"].createElement("p",null,c["default"].createElement("button",{type:"button",className:"btn btn-primary",onClick:this.showSignIn},gettext("Sign in")))))))}}]),t}(c["default"].Component),A=function(e){function t(){var e,r,n,a;o(this,t);for(var i=arguments.length,l=Array(i),u=0;i>u;u++)l[u]=arguments[u];return r=n=s(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(l))),n.complete=function(e){k["default"].softSignOut(),$('#hidden-login-form input[name="redirect_to"]').remove(),d["default"].render(c["default"].createElement(R,{user:e}),document.getElementById("page-mount"))},a=r,s(n,a)}return i(t,e),l(t,[{key:"render",value:function(){return c["default"].createElement(L,{callback:this.complete})}}]),t}(c["default"].Component);r["default"]=A},{"../index":155,"../services/ajax":164,"../services/auth":165,"../services/modal":170,"../services/snackbar":173,"../utils/banned-page":176,"../utils/validators":189,"./button":40,"./form":56,"./sign-in.js":94,react:"react","react-dom":"react-dom"}],92:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.className?"form-search "+this.props.className:"form-search"}},{key:"render",value:function(){return u["default"].createElement("div",{className:this.getClassName()},u["default"].createElement("input",{type:"text",className:"form-control",value:this.props.value,onChange:this.props.onChange,placeholder:this.props.placeholder||gettext("Search...")}),u["default"].createElement("span",{className:"material-icon"},"search"))}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],93:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=function(e){function t(){var e,r,n,s;a(this,t);for(var i=arguments.length,l=Array(i),u=0;i>u;u++)l[u]=arguments[u];return r=n=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(l))),n.change=function(e){return function(){n.props.onChange({target:{value:e}})}},s=r,o(n,s)}return s(t,e),i(t,[{key:"getChoice",value:function(){var e=this,t=null;return this.props.choices.map(function(r){r.value===e.props.value&&(t=r)}),t}},{key:"getIcon",value:function(){return this.getChoice().icon}},{key:"getLabel",value:function(){return this.getChoice().label}},{key:"render",value:function(){var e=this;return u["default"].createElement("div",{className:"btn-group btn-select-group"},u["default"].createElement("button",{type:"button",className:"btn btn-select dropdown-toggle",id:this.props.id||null,"data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-describedby":this.props["aria-describedby"]||null,disabled:this.props.disabled||!1},u["default"].createElement("span",{className:"material-icon"},this.getIcon()),this.getLabel()),u["default"].createElement("ul",{className:"dropdown-menu"},this.props.choices.map(function(t,r){return u["default"].createElement("li",{key:r},u["default"].createElement("button",{type:"button",className:"btn-link",onClick:e.change(t.value)},u["default"].createElement("span",{className:"material-icon"},t.icon),t.label))})))}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],94:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("../index"),f=n(c),d=e("./button"),p=n(d),h=e("./form"),m=n(h),b=e("../services/ajax"),y=n(b),g=e("../services/modal"),v=n(g),_=e("../services/snackbar"),w=n(_),E=e("../utils/banned-page"),O=n(E),k=function(e){function t(e){a(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.state={isLoading:!1,showActivation:!1,username:"",password:"",validators:{username:[],password:[]}},r}return s(t,e),i(t,[{key:"clean",value:function(){return this.isValid()?!0:(w["default"].error(gettext("Fill out both fields.")),!1)}},{key:"send",value:function(){return y["default"].post(f["default"].get("AUTH_API"),{username:this.state.username,password:this.state.password})}},{key:"handleSuccess",value:function(){var e=$("#hidden-login-form");e.append('<input type="text" name="username" />'),e.append('<input type="password" name="password" />'),e.find('input[type="hidden"]').val(y["default"].getCsrfToken()),e.find('input[name="redirect_to"]').val(window.location.pathname),e.find('input[name="username"]').val(this.state.username),e.find('input[name="password"]').val(this.state.password),e.submit(),this.setState({isLoading:!0})}},{key:"handleError",value:function(e){400===e.status?"inactive_admin"===e.code?w["default"].info(e.detail):"inactive_user"===e.code?(w["default"].info(e.detail),this.setState({showActivation:!0})):"banned"===e.code?((0,O["default"])(e.detail),v["default"].hide()):w["default"].error(e.detail):403===e.status&&e.ban?((0,O["default"])(e.ban),v["default"].hide()):w["default"].apiError(e)}},{key:"getActivationButton",value:function(){return this.state.showActivation?u["default"].createElement("a",{href:f["default"].get("REQUEST_ACTIVATION_URL"),className:"btn btn-success btn-block"},gettext("Activate account")):null}},{key:"render",value:function(){return u["default"].createElement("div",{className:"modal-dialog modal-sm modal-sign-in",role:"document"},u["default"].createElement("div",{className:"modal-content"},u["default"].createElement("div",{className:"modal-header"},u["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},u["default"].createElement("span",{"aria-hidden":"true"},"×")),u["default"].createElement("h4",{className:"modal-title"},gettext("Sign in"))),u["default"].createElement("form",{onSubmit:this.handleSubmit},u["default"].createElement("div",{className:"modal-body"},u["default"].createElement("div",{className:"form-group"},u["default"].createElement("div",{className:"control-input"},u["default"].createElement("input",{id:"id_username",className:"form-control",type:"text",disabled:this.state.isLoading,placeholder:gettext("Username or e-mail"),onChange:this.bindInput("username"),value:this.state.username}))),u["default"].createElement("div",{className:"form-group"},u["default"].createElement("div",{className:"control-input"},u["default"].createElement("input",{id:"id_password",className:"form-control",type:"password",disabled:this.state.isLoading,placeholder:gettext("Password"),onChange:this.bindInput("password"),value:this.state.password})))),u["default"].createElement("div",{className:"modal-footer"},this.getActivationButton(),u["default"].createElement(p["default"],{className:"btn-primary btn-block",loading:this.state.isLoading},gettext("Sign in")),u["default"].createElement("a",{href:f["default"].get("FORGOTTEN_PASSWORD_URL"),className:"btn btn-default btn-block"},gettext("Forgot password?"))))))}}]),t}(m["default"]);r["default"]=k},{"../index":155,"../services/ajax":164,"../services/modal":170,"../services/snackbar":173,"../utils/banned-page":176,"./button":40,"./form":56,react:"react"}],95:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return e.snackbar}Object.defineProperty(r,"__esModule",{value:!0}),r.Snackbar=void 0;var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}();r.select=i;var u=e("react"),c=n(u),f={info:"alert-info",success:"alert-success",warning:"alert-warning",error:"alert-danger"};r.Snackbar=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),l(t,[{key:"getSnackbarClass",value:function(){var e="alerts-snackbar";return e+=this.props.isVisible?" in":" out"}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getSnackbarClass()},c["default"].createElement("p",{className:"alert "+f[this.props.type]},this.props.message))}}]),t}(c["default"].Component)},{react:"react"}],96:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getMessage",value:function(){var e=ngettext("There is %(threads)s new or updated thread. Click this message to show it.","There are %(threads)s new or updated threads. Click this message to show them.",this.props.diffSize);return interpolate(e,{threads:this.props.diffSize},!0)}},{key:"render",value:function(){return u["default"].createElement("li",{className:"list-group-item threads-diff-message"},u["default"].createElement("button",{type:"button",className:"btn btn-block btn-default",onClick:this.props.applyDiff},u["default"].createElement("span",{className:"material-icon"},"cached"),u["default"].createElement("span",{className:"diff-message"},this.getMessage())))}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],97:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("./diff-message"),f=n(c),d=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getDiffMessage",value:function(){return this.props.diffSize>0?u["default"].createElement(f["default"],{diffSize:this.props.diffSize,applyDiff:this.props.applyDiff}):null}},{key:"render",value:function(){return u["default"].createElement("div",{className:"threads-list ui-ready"},u["default"].createElement("ul",{className:"list-group"},this.getDiffMessage(),this.props.children))}}]),t}(u["default"].Component);r["default"]=d},{"./diff-message":96,react:"react"}],98:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("../thread/preview"),f=n(c),d=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"render",value:function(){return u["default"].createElement("div",{className:"threads-list ui-preview"},u["default"].createElement("ul",{className:"list-group"},[0,1,2].map(function(e){return u["default"].createElement(f["default"],{hiddenOnMobile:e>0,key:e})})))}}]),t}(u["default"].Component);r["default"]=d},{"../thread/preview":107,react:"react"}],99:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("./diff-message"),f=n(c),d=e("../thread/ready"),p=n(d),h=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getDiffMessage",value:function(){return this.props.diffSize>0?u["default"].createElement(f["default"],{diffSize:this.props.diffSize,applyDiff:this.props.applyDiff}):null}},{key:"render",value:function(){var e=this;return u["default"].createElement("div",{className:"threads-list ui-ready"},u["default"].createElement("ul",{className:"list-group"},this.getDiffMessage(),this.props.threads.map(function(t){return u["default"].createElement(p["default"],{categories:e.props.categories,thread:t,list:e.props.list,showOptions:e.props.showOptions,isSelected:e.props.selection.indexOf(t.id)>=0,isBusy:e.props.busyThreads.indexOf(t.id)>=0,key:t.id})})))}}]),t}(u["default"].Component);r["default"]=h},{"../thread/ready":108,"./diff-message":96,react:"react"}],100:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("./list/empty"),f=n(c),d=e("./list/ready"),p=n(d),h=e("./list/preview"),m=n(h),b=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return this.props.isLoaded?this.props.threads.length>0?u["default"].createElement(p["default"],{threads:this.props.threads,categories:this.props.categories,list:this.props.list,diffSize:this.props.diffSize,applyDiff:this.props.applyDiff,showOptions:this.props.showOptions,selection:this.props.selection,busyThreads:this.props.busyThreads}):u["default"].createElement(f["default"],{diffSize:this.props.diffSize,applyDiff:this.props.applyDiff},this.props.children):u["default"].createElement(m["default"],null)}}]),t}(u["default"].Component);r["default"]=b},{"./list/empty":97,"./list/preview":98,"./list/ready":99,react:"react"}],101:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t;
-}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("react-router"),f=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getUrl",value:function(){return this.props.category.absolute_url+this.props.list.path}},{key:"getClassName",value:function(){return this.props.category.css_class?"thread-category thread-category-"+this.props.category.css_class:"thread-category"}},{key:"render",value:function(){return u["default"].createElement(c.Link,{to:this.getUrl(),className:this.getClassName()},this.props.category.name)}}]),t}(u["default"].Component);r["default"]=f},{react:"react","react-router":"react-router"}],102:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("../category"),f=n(c),d=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getPath",value:function(){var e=this.props.categories[this.props.thread.top_category],t=this.props.categories[this.props.thread.category];return e&&t&&e.id!==t.id?u["default"].createElement("li",{className:"thread-path"},u["default"].createElement(f["default"],{category:t,list:this.props.list})):e?u["default"].createElement("li",{className:"thread-path"},u["default"].createElement(f["default"],{category:e,list:this.props.list})):null}},{key:"getRepliesCount",value:function(){return u["default"].createElement("li",{className:"thread-replies-count"},u["default"].createElement("span",{className:"material-icon"},"forum"),u["default"].createElement("span",{className:"icon-legend"},this.props.thread.replies))}},{key:"getLastReply",value:function(){return u["default"].createElement("li",{className:"thread-last-reply-clock"},u["default"].createElement("span",{className:"material-icon"},"schedule"),u["default"].createElement("span",{className:"icon-legend"},this.props.thread.last_post_on.fromNow()))}},{key:"render",value:function(){return u["default"].createElement("ul",{className:"thread-details-compact list-inline"},this.getPath(),this.getRepliesCount(),this.getLastReply())}}]),t}(u["default"].Component);r["default"]=d},{"../category":101,react:"react"}],103:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("../category"),f=n(c),d=e("../../../../utils/escape-html"),p=n(d),h='<a href="%(url)s" class="poster-title">%(user)s</a>',m='<span class="poster-title">%(user)s</span>',b='<a href="%(url)s" class="last-title" title="%(absolute)s">%(relative)s</a>',y=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getNewLabel",value:function(){return this.props.thread.is_read?null:u["default"].createElement("li",{className:"thread-new-posts",title:gettext("Go to first unread post")},u["default"].createElement("a",{href:this.props.thread.new_post_url},u["default"].createElement("span",{className:"material-icon"},"comment"),u["default"].createElement("span",{className:"icon-legend"},gettext("New posts"))))}},{key:"getPinnedLabel",value:function(){return 2===this.props.thread.weight?u["default"].createElement("li",{className:"thread-pinned-globally"},u["default"].createElement("span",{className:"material-icon"},"bookmark"),u["default"].createElement("span",{className:"icon-legend"},gettext("Pinned globally"))):1===this.props.thread.weight?u["default"].createElement("li",{className:"thread-pinned-locally"},u["default"].createElement("span",{className:"material-icon"},"bookmark_border"),u["default"].createElement("span",{className:"icon-legend"},gettext("Pinned locally"))):null}},{key:"getUnapprovedLabel",value:function(){return this.props.thread.is_unapproved?u["default"].createElement("li",{className:"thread-unapproved"},u["default"].createElement("span",{className:"material-icon"},"remove_circle"),u["default"].createElement("span",{className:"icon-legend"},gettext("Unapproved"))):this.props.thread.has_unapproved_posts?u["default"].createElement("li",{className:"thread-unapproved-posts"},u["default"].createElement("span",{className:"material-icon"},"remove_circle_outline"),u["default"].createElement("span",{className:"icon-legend"},gettext("Unapproved posts"))):null}},{key:"getHiddenLabel",value:function(){return this.props.thread.is_hidden?u["default"].createElement("li",{className:"thread-hidden"},u["default"].createElement("span",{className:"material-icon"},"visibility_off"),u["default"].createElement("span",{className:"icon-legend"},gettext("Hidden"))):null}},{key:"getClosedLabel",value:function(){return this.props.thread.is_closed?u["default"].createElement("li",{className:"thread-closed"},u["default"].createElement("span",{className:"material-icon"},"lock_outline"),u["default"].createElement("span",{className:"icon-legend"},gettext("Closed"))):null}},{key:"getPath",value:function(){var e=this.props.categories[this.props.thread.top_category],t=this.props.categories[this.props.thread.category];return e&&t&&e.id!==t.id?u["default"].createElement("li",{className:"thread-path"},u["default"].createElement(f["default"],{category:e,list:this.props.list}),u["default"].createElement("span",{className:"path-separator material-icon"},"arrow_forward"),u["default"].createElement(f["default"],{category:t,list:this.props.list})):e?u["default"].createElement("li",{className:"thread-path"},u["default"].createElement(f["default"],{category:e,list:this.props.list})):null}},{key:"getRepliesCount",value:function(){var e=ngettext("%(replies)s reply","%(replies)s replies",this.props.thread.replies);return u["default"].createElement("li",{className:"thread-replies"},u["default"].createElement("span",{className:"material-icon"},"forum"),u["default"].createElement("span",{className:"icon-legend"},interpolate(e,{replies:this.props.thread.replies},!0)))}},{key:"getLastReplyDate",value:function(){return interpolate(b,{url:(0,p["default"])(this.props.thread.last_post_url),absolute:(0,p["default"])(this.props.thread.last_post_on.format("LLL")),relative:(0,p["default"])(this.props.thread.last_post_on.fromNow())},!0)}},{key:"getLastPoster",value:function(){return this.props.thread.last_poster_url?interpolate(h,{url:(0,p["default"])(this.props.thread.last_poster_url),user:(0,p["default"])(this.props.thread.last_poster_name)},!0):interpolate(m,{user:(0,p["default"])(this.props.thread.last_poster_name)},!0)}},{key:"getLastReply",value:function(){return u["default"].createElement("li",{className:"thread-last-reply",dangerouslySetInnerHTML:{__html:interpolate((0,p["default"])(gettext("last reply by %(user)s %(date)s")),{date:this.getLastReplyDate(),user:this.getLastPoster()},!0)}})}},{key:"render",value:function(){return u["default"].createElement("ul",{className:"thread-details-full list-inline"},this.getNewLabel(),this.getPinnedLabel(),this.getUnapprovedLabel(),this.getHiddenLabel(),this.getClosedLabel(),this.getPath(),this.getRepliesCount(),this.getLastReply())}}]),t}(u["default"].Component);r["default"]=y},{"../../../../utils/escape-html":180,"../category":101,react:"react"}],104:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getPinnedIcon",value:function(){return 2===this.props.thread.weight?u["default"].createElement("span",{className:"thread-pinned-globally"},u["default"].createElement("span",{className:"material-icon"},"bookmark")):1===this.props.thread.weight?u["default"].createElement("span",{className:"thread-pinned-locally"},u["default"].createElement("span",{className:"material-icon"},"bookmark_border")):null}},{key:"getUnapprovedIcon",value:function(){return this.props.thread.is_unapproved?u["default"].createElement("span",{className:"thread-unapproved"},u["default"].createElement("span",{className:"material-icon"},"remove_circle")):this.props.thread.has_unapproved_posts?u["default"].createElement("span",{className:"thread-unapproved-posts"},u["default"].createElement("span",{className:"material-icon"},"remove_circle_outline")):null}},{key:"getHiddenIcon",value:function(){return this.props.thread.is_hidden?u["default"].createElement("span",{className:"thread-hidden"},u["default"].createElement("span",{className:"material-icon"},"visibility_off")):null}},{key:"getClosedIcon",value:function(){return this.props.thread.is_closed?u["default"].createElement("span",{className:"thread-closed"},u["default"].createElement("span",{className:"material-icon"},"lock_outline")):null}},{key:"render",value:function(){return u["default"].createElement("div",{className:"thread-flags"},this.getPinnedIcon(),this.getUnapprovedIcon(),this.getHiddenIcon(),this.getClosedIcon())}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],105:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.thread.is_read?"read-status item-read":"read-status item-new"}},{key:"getTitle",value:function(){return this.props.thread.is_read?gettext("This thread has no new posts."):gettext("This thread has new posts.")}},{key:"getIcon",value:function(){return this.props.thread.is_read?"chat_bubble_outline":"chat_bubble"}},{key:"getUrl",value:function(){return this.props.thread.is_read?this.props.thread.last_post_url:this.props.thread.new_post_url}},{key:"render",value:function(){return u["default"].createElement("a",{className:this.getClassName(),href:this.getUrl(),title:this.getTitle()},u["default"].createElement("span",{className:"material-icon"},this.getIcon()))}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],106:[function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function a(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),u=e("react"),c=a(u),f=e("./subscription/compact"),d=a(f),p=e("./subscription/full"),h=a(p),m=e("../../../reducers/selection"),b=n(m),y=e("../../../services/store"),g=a(y),v=function(e){function t(){var e,r,n,a;o(this,t);for(var i=arguments.length,l=Array(i),u=0;i>u;u++)l[u]=arguments[u];return r=n=s(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(l))),n.toggleSelection=function(){g["default"].dispatch(b.item(n.props.thread.id))},a=r,s(n,a)}return i(t,e),l(t,[{key:"getSelectToggle",value:function(){return this.props.thread.moderation.length?c["default"].createElement("li",null,c["default"].createElement("button",{className:"btn btn-default btn-checkbox",onClick:this.toggleSelection,disabled:this.props.disabled},c["default"].createElement("span",{className:"material-icon"},this.props.isSelected?"check_box":"check_box_outline_blank"),c["default"].createElement("span",{className:"icon-legend"},this.props.isSelected?gettext("Selected"):gettext("Select")))):null}},{key:"render",value:function(){return c["default"].createElement("div",{className:"thread-options"},c["default"].createElement("ul",{className:"list-inline"},this.getSelectToggle(),c["default"].createElement(h["default"],{thread:this.props.thread,disabled:this.props.disabled}),c["default"].createElement(d["default"],{thread:this.props.thread,disabled:this.props.disabled})))}}]),t}(c["default"].Component);r["default"]=v},{"../../../reducers/selection":158,"../../../services/store":174,"./subscription/compact":109,"./subscription/full":110,react:"react"}],107:[function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function a(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),u=e("react"),c=a(u),f=e("../../../utils/random"),d=n(f),p=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),l(t,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"getClassName",value:function(){return this.props.hiddenOnMobile?"list-group-item thread-preview hidden-xs hidden-sm":"list-group-item thread-preview"}},{key:"render",value:function(){return c["default"].createElement("li",{className:this.getClassName()},c["default"].createElement("div",{className:"thread-icon"},c["default"].createElement("span",{className:"read-status item-read"},c["default"].createElement("span",{className:"material-icon"},"chat_bubble_outline"))),c["default"].createElement("div",{className:"thread-main"},c["default"].createElement("span",{className:"item-title thread-title"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:d["int"](60,200)+"px"}}," ")),c["default"].createElement("ul",{className:"thread-details-compact list-inline"},c["default"].createElement("li",null,c["default"].createElement("span",{className:"ui-preview-text",style:{width:d["int"](20,70)+"px"}}," ")),c["default"].createElement("li",null,c["default"].createElement("span",{className:"ui-preview-text",style:{width:d["int"](20,70)+"px"}}," ")),c["default"].createElement("li",null,c["default"].createElement("span",{className:"ui-preview-text",style:{width:d["int"](20,70)+"px"}}," "))),c["default"].createElement("ul",{className:"thread-details-full list-inline"},c["default"].createElement("li",null,c["default"].createElement("span",{className:"ui-preview-text",style:{width:d["int"](50,150)+"px"}}," ")),c["default"].createElement("li",null,c["default"].createElement("span",{className:"ui-preview-text",style:{width:d["int"](50,100)+"px"}}," ")),c["default"].createElement("li",null,c["default"].createElement("span",{className:"ui-preview-text",style:{width:d["int"](100,250)+"px"}}," ")))),c["default"].createElement("div",{className:"clearfix"}))}}]),t}(c["default"].Component);r["default"]=p},{"../../../utils/random":184,react:"react"}],108:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("../../loader"),f=n(c),d=e("./details/compact"),p=n(d),h=e("./details/full"),m=n(h),b=e("./flags"),y=n(b),g=e("./icon"),v=n(g),_=e("./options"),w=n(_),E=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getIcon",value:function(){return this.props.isBusy?u["default"].createElement(f["default"],null):u["default"].createElement(v["default"],{thread:this.props.thread})}},{key:"getOptions",value:function(){return this.props.showOptions?u["default"].createElement(w["default"],{thread:this.props.thread,disabled:this.props.isBusy,isSelected:this.props.isSelected}):null}},{key:"getClassName",value:function(){var e=["list-group-item"];return this.props.thread.is_read?e.push("thread-read"):e.push("thread-new"),this.props.isBusy?e.push("thread-busy"):this.props.isSelected&&e.push("thread-selected"),this.props.showOptions&&(this.props.thread.moderation.length?e.push("thread-ops-two"):e.push("thread-ops-one")),e.join(" ")}},{key:"render",value:function(){return u["default"].createElement("li",{className:this.getClassName()},u["default"].createElement("div",{className:"thread-icon"},this.getIcon(),u["default"].createElement(y["default"],{thread:this.props.thread})),this.getOptions(),u["default"].createElement("div",{className:"thread-main"},u["default"].createElement("a",{href:this.props.thread.absolute_url,className:"item-title thread-title"},this.props.thread.title),u["default"].createElement(m["default"],{categories:this.props.categories,list:this.props.list,thread:this.props.thread}),u["default"].createElement(p["default"],{categories:this.props.categories,list:this.props.list,thread:this.props.thread})),u["default"].createElement("div",{className:"clearfix"}))}}]),t}(u["default"].Component);r["default"]=E},{"../../loader":58,"./details/compact":102,"./details/full":103,"./flags":104,"./icon":105,"./options":106,react:"react"}],109:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("./full"),f=n(c),d=e("./modal"),p=n(d),h=e("../../../../services/modal"),m=n(h),b=function(e){function t(){var e,r,n,s;a(this,t);for(var i=arguments.length,l=Array(i),c=0;i>c;c++)l[c]=arguments[c];return r=n=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(l))),n.showOptions=function(){m["default"].show(u["default"].createElement(p["default"],{thread:n.props.thread}))},s=r,o(n,s)}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("li",{className:"hidden-md hidden-lg"},u["default"].createElement("button",{type:"button",className:this.getClassName(),disabled:this.props.disabled,onClick:this.showOptions},u["default"].createElement("span",{className:"material-icon"},this.getIcon()),u["default"].createElement("span",{className:"icon-legend"},this.getLegend())))}}]),t}(f["default"]);r["default"]=b},{"../../../../services/modal":170,"./full":110,"./modal":111,react:"react"}],110:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("./options"),f=n(c),d=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getIcon",value:function(){return this.props.thread.subscription===!0?"star":this.props.thread.subscription===!1?"star_half":"star_border"}},{key:"getLegend",value:function(){return this.props.thread.subscription===!0?gettext("E-mail"):this.props.thread.subscription===!1?gettext("Enabled"):gettext("Disabled")}},{key:"getClassName",value:function(){return this.props.thread.subscription===!0?"btn btn-default btn-subscribe btn-subscribe-full dropdown-toggle":this.props.thread.subscription===!1?"btn btn-default btn-subscribe btn-subscribe-half dropdown-toggle":"btn btn-default btn-subscribe dropdown-toggle"}},{key:"render",value:function(){return u["default"].createElement("li",{className:"hidden-xs hidden-sm"},u["default"].createElement("div",{className:"btn-group"},u["default"].createElement("button",{type:"button",className:this.getClassName(),disabled:this.props.disabled,"data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},u["default"].createElement("span",{className:"material-icon"},this.getIcon()),u["default"].createElement("span",{className:"icon-legend"},this.getLegend())),u["default"].createElement(f["default"],{className:"dropdown-menu dropdown-menu-right",thread:this.props.thread})))}}]),t}(u["default"].Component);r["default"]=d},{"./options":112,react:"react"}],111:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("./options"),f=n(c),d=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("div",{className:"modal-dialog modal-sm",role:"document"},u["default"].createElement("div",{className:"modal-content"},u["default"].createElement("div",{className:"modal-header"},u["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},u["default"].createElement("span",{"aria-hidden":"true"},"×")),u["default"].createElement("h4",{className:"modal-title"},gettext("Change subscription"))),u["default"].createElement(f["default"],{className:"modal-menu",thread:this.props.thread})))}}]),t}(u["default"].Component);r["default"]=d},{"./options":112,react:"react"}],112:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("../../../button"),f=(n(c),e("../../../../reducers/threads")),d=e("../../../../services/ajax"),p=n(d),h=e("../../../../services/modal"),m=n(h),b=e("../../../../services/snackbar"),y=n(b),g=e("../../../../services/store"),v=n(g),_={unsubscribe:null,notify:!1,email:!0},w=function(e){function t(e){a(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.setSubscription=function(e){m["default"].hide(),r.setState({isLoading:!0});var t=r.props.thread.subscription;v["default"].dispatch((0,f.patch)(r.props.thread,{subscription:_[e]})),p["default"].patch(r.props.thread.api_url,[{op:"replace",path:"subscription",value:e}]).then(function(){r.setState({isLoading:!1})},function(e){r.setState({isLoading:!1}),v["default"].dispatch((0,f.patch)(r.props.thread,{subscription:_[t]})),y["default"].apiError(e)})},r.unsubscribe=function(){r.setSubscription("unsubscribe")},r.notify=function(){r.setSubscription("notify")},r.email=function(){r.setSubscription("email")},r.state={isLoading:!1},r}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("ul",{className:this.props.className},u["default"].createElement("li",null,u["default"].createElement("button",{className:"btn-link",onClick:this.unsubscribe},u["default"].createElement("span",{className:"material-icon"},"star_border"),gettext("Unsubscribe"))),u["default"].createElement("li",null,u["default"].createElement("button",{className:"btn-link",onClick:this.notify},u["default"].createElement("span",{className:"material-icon"},"star_half"),gettext("Subscribe"))),u["default"].createElement("li",null,u["default"].createElement("button",{className:"btn-link",onClick:this.email},u["default"].createElement("span",{className:"material-icon"},"star"),gettext("Subscribe with e-mail"))))}}]),t}(u["default"].Component);r["default"]=w},{"../../../../reducers/threads":160,"../../../../services/ajax":164,"../../../../services/modal":170,"../../../../services/snackbar":173,"../../../../services/store":174,"../../../button":40,react:"react"}],113:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function");
-}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0}),r.Subcategory=void 0;var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("react-router"),f=r.Subcategory=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getUrl",value:function(){return this.props.listPath?this.props.category.absolute_url+this.props.listPath:this.props.category.absolute_url}},{key:"render",value:function(){return u["default"].createElement("li",null,u["default"].createElement(c.Link,{to:this.getUrl(),className:"btn btn-link"},this.props.category.name))}}]),t}(u["default"].Component),d=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){var e=this;return u["default"].createElement("div",{className:"btn-group category-picker"},u["default"].createElement("button",{type:"button",className:"btn btn-default dropdown-toggle","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},u["default"].createElement("span",{className:"material-icon"},"more_vert"),gettext("Go to")),u["default"].createElement("ul",{className:"dropdown-menu categories-menu"},this.props.choices.map(function(t){return e.props.categories[t]?u["default"].createElement(f,{category:e.props.categories[t],listPath:e.props.list.path,key:t}):null})))}}]),t}(u["default"].Component);r["default"]=d},{react:"react","react-router":"react-router"}],114:[function(e,t,r){"use strict";function n(e,t){return e.last_post>t.last_post?-1:e.last_post<t.last_post?1:0}function a(e,t){return 2===e.weight&&e.weight>t.weight?-1:2===t.weight&&e.weight<t.weight?1:n(e,t)}function o(e,t){return e.weight>t.weight?-1:e.weight<t.weight?1:n(e,t)}Object.defineProperty(r,"__esModule",{value:!0}),r.compareLastPostAge=n,r.compareGlobalWeight=a,r.compareWeight=o},{}],115:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("../page-lead"),f=n(c),d=e("./toolbar"),p=n(d),h=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getCategoryDescription",value:function(){return this.props.route.category.description?u["default"].createElement("div",{className:"category-description"},u["default"].createElement(f["default"],{copy:this.props.route.category.description.html})):null}},{key:"getToolbarLabel",value:function(){if(this.props.isLoaded){var e=null;return e=this.props.route.list.path?ngettext("%(threads)s thread found.","%(threads)s threads found.",this.props.threadsCount):this.props.route.category.parent?ngettext("There is %(threads)s thread in this category.","There are %(threads)s threads in this category.",this.props.threadsCount):ngettext("There is %(threads)s thread on our forums.","There are %(threads)s threads on our forums.",this.props.threadsCount),interpolate(e,{threads:this.props.threadsCount},!0)}return gettext("Loading threads...")}},{key:"getDisableToolbar",value:function(){return!this.props.isLoaded||this.props.isBusy||this.props.busyThreads.length}},{key:"getToolbar",value:function(){return this.props.subcategories.length||this.props.user.id?u["default"].createElement(p["default"],{subcategories:this.props.subcategories,categories:this.props.route.categories,categoriesMap:this.props.route.categoriesMap,list:this.props.route.list,threads:this.props.threads,moderation:this.props.moderation,selection:this.props.selection,selectAllThreads:this.props.selectAllThreads,selectNoneThreads:this.props.selectNoneThreads,addThreads:this.props.addThreads,freezeThread:this.props.freezeThread,deleteThread:this.props.deleteThread,updateThread:this.props.updateThread,route:this.props.route,disabled:this.getDisableToolbar(),user:this.props.user},this.getToolbarLabel()):null}},{key:"render",value:function(){return u["default"].createElement("div",{className:"container"},this.getCategoryDescription(),this.getToolbar(),this.props.children)}}]),t}(u["default"].Component);r["default"]=h},{"../page-lead":71,"./toolbar":126,react:"react"}],116:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("react-router"),f=e("../button"),d=n(f),p=e("../dropdown-toggle"),h=n(p),m=e("./navs"),b=e("../../reducers/threads"),y=e("../../services/ajax"),g=n(y),v=e("../../services/snackbar"),_=n(v),w=e("../../services/store"),E=n(w),O=function(e){function t(e){a(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.markAsRead=function(){r.setState({isBusy:!0}),g["default"].post(r.props.route.category.api_url.read).then(function(){E["default"].dispatch((0,b.read)()),r.setState({isBusy:!1}),_["default"].success(gettext("Threads have been marked as read."))},function(e){r.setState({isBusy:!1}),_["default"].apiError(e)})},r.startThread=function(){console.log("TODO: Start thread form!")},r.state={isBusy:!1},r}return s(t,e),i(t,[{key:"getGoBackButton",value:function(){return this.props.route.category.parent?u["default"].createElement(c.Link,{className:"btn btn-default btn-aligned btn-icon btn-go-back pull-left",to:this.props.route.category.parent.absolute_url+this.props.route.list.path},u["default"].createElement("span",{className:"material-icon"},"keyboard_arrow_left")):null}},{key:"getStartThreadButton",value:function(){return this.props.user.id?u["default"].createElement(d["default"],{className:"btn btn-success btn-aligned hidden-xs hidden-sm",onClick:this.startThread,disabled:this.props.disabled},u["default"].createElement("span",{className:"material-icon"},"chat"),gettext("Start thread")):null}},{key:"getMarkAsReadButton",value:function(){return this.props.user.id?u["default"].createElement(d["default"],{className:"btn btn-default btn-aligned hidden-xs hidden-sm",onClick:this.markAsRead,loading:this.state.isBusy,disabled:this.props.disabled},u["default"].createElement("span",{className:"material-icon"},"playlist_add_check"),gettext("Mark as read")):null}},{key:"getCompactNavToggle",value:function(){return this.props.route.lists.length>1?u["default"].createElement(h["default"],{toggleNav:this.props.toggleNav,dropdown:this.props.dropdown}):null}},{key:"getTabsNav",value:function(){return this.props.route.lists.length>1?u["default"].createElement(m.TabsNav,{baseUrl:this.props.route.category.absolute_url,list:this.props.route.list,lists:this.props.route.lists}):null}},{key:"getClassName",value:function(){return this.props.route.lists.length>1?"page-header tabbed":"page-header"}},{key:"render",value:function(){return u["default"].createElement("div",{className:this.getClassName()},u["default"].createElement("div",{className:"container"},this.getGoBackButton(),u["default"].createElement("h1",{className:"pull-left"},this.props.title),this.getStartThreadButton(),this.getMarkAsReadButton(),this.getCompactNavToggle()),this.getTabsNav())}}]),t}(u["default"].Component);r["default"]=O},{"../../reducers/threads":160,"../../services/ajax":164,"../../services/snackbar":173,"../../services/store":174,"../button":40,"../dropdown-toggle":54,"./navs":123,react:"react","react-router":"react-router"}],117:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return"all"===this.props.list.type?u["default"].createElement("li",{className:"list-group-item empty-message"},u["default"].createElement("p",{className:"lead"},this.props.category.special_role?gettext("There are no threads on this forum... yet!"):gettext("There are no threads in this category.")),u["default"].createElement("p",null,gettext("Why not start one yourself?"))):u["default"].createElement("li",{className:"list-group-item empty-message"},gettext("No threads matching specified criteria were found."))}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],118:[function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function a(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),u=e("react"),c=a(u),f=e("./errors-list"),d=a(f),p=e("./merge"),h=a(p),m=e("./move"),b=a(m),y=e("../../../reducers/selection"),g=n(y),v=e("../../../services/ajax"),_=a(v),w=e("../../../services/modal"),E=a(w),O=e("../../../services/snackbar"),k=a(O),N=e("../../../services/store"),j=a(N),x=e("../../../utils/countdown"),P=a(x),C=function(e){function t(){var e,r,n,a;o(this,t);for(var i=arguments.length,l=Array(i),u=0;i>u;u++)l[u]=arguments[u];return r=n=s(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(l))),n.callApi=function(e,t){var r=arguments.length<=2||void 0===arguments[2]?null:arguments[2],a=[],o=new P["default"](function(){n.props.threads.forEach(function(e){n.props.freezeThread(e.id)}),a.length?E["default"].show(c["default"].createElement(d["default"],{errors:a})):(k["default"].success(t),r&&r())},n.props.threads.length);n.props.threads.forEach(function(t){n.props.freezeThread(t.id),_["default"].patch(t.api_url,e).then(function(e){n.props.updateThread(e),o.count()},function(e){a.push({thread:t,errors:[e.detail]}),o.count()})})},n.pinGlobally=function(){n.callApi([{op:"replace",path:"weight",value:2}],gettext("Selected threads were pinned globally."))},n.pinLocally=function(){n.callApi([{op:"replace",path:"weight",value:1}],gettext("Selected threads were pinned locally."))},n.unpin=function(){n.callApi([{op:"replace",path:"weight",value:0}],gettext("Selected threads were unpinned."))},n.approve=function(){n.callApi([{op:"replace",path:"is-unapproved",value:!1}],gettext("Selected threads were approved."))},n.open=function(){n.callApi([{op:"replace",path:"is-closed",value:!1}],gettext("Selected threads were opened."))},n.close=function(){n.callApi([{op:"replace",path:"is-closed",value:!0}],gettext("Selected threads were closed."))},n.unhide=function(){n.callApi([{op:"replace",path:"is-hidden",value:!1}],gettext("Selected threads were unhidden."))},n.hide=function(){n.callApi([{op:"replace",path:"is-hidden",value:!0}],gettext("Selected threads were hidden."))},n.move=function(){E["default"].show(c["default"].createElement(b["default"],{callApi:n.callApi,categories:n.props.categories,categoriesMap:n.props.categoriesMap,route:n.props.route,user:n.props.user}))},n.merge=function(){var e=[];if(n.props.threads.forEach(function(t){t.acl.can_merge||e.append({id:t.id,title:t.title,errors:[gettext("You don't have permission to merge this thread with others.")]})}),n.props.threads.length<2)k["default"].info(gettext("You have to select at least two threads to merge."));else{if(e.length)return void E["default"].show(c["default"].createElement(d["default"],{errors:e}));E["default"].show(c["default"].createElement(h["default"],n.props))}},n["delete"]=function(){if(confirm(gettext("Are you sure you want to delete selected threads?"))){var e=[],t=new P["default"](function(){e.length?E["default"].show(c["default"].createElement(d["default"],{errors:e})):k["default"].success(gettext("Selected threads were deleted.")),n.props.threads.forEach(function(e){n.props.freezeThread(e.id)}),j["default"].dispatch(g.all(n.props.threads.map(function(e){return e.id})))},n.props.threads.length);n.props.threads.forEach(function(r){n.props.freezeThread(r.id),_["default"]["delete"](r.api_url).then(function(e){n.props.freezeThread(r.id),n.props.deleteThread(r),t.count()},function(n){e.push({thread:r,errors:[n.detail]}),t.count()})})}},a=r,s(n,a)}return i(t,e),l(t,[{key:"getPinGloballyButton",value:function(){return 2==this.props.moderation.can_pin?c["default"].createElement("li",null,c["default"].createElement("button",{type:"button",className:"btn btn-link",onClick:this.pinGlobally},gettext("Pin threads globally"))):null}},{key:"getPinLocallyButton",value:function(){return this.props.moderation.can_pin>0?c["default"].createElement("li",null,c["default"].createElement("button",{type:"button",className:"btn btn-link",onClick:this.pinLocally},gettext("Pin threads locally"))):null}},{key:"getUnpinButton",value:function(){return this.props.moderation.can_pin>0?c["default"].createElement("li",null,c["default"].createElement("button",{type:"button",className:"btn btn-link",onClick:this.unpin},gettext("Unpin threads"))):null}},{key:"getMoveButton",value:function(){return this.props.moderation.can_move?c["default"].createElement("li",null,c["default"].createElement("button",{type:"button",className:"btn btn-link",onClick:this.move},gettext("Move threads"))):null}},{key:"getMergeButton",value:function(){return this.props.moderation.can_merge?c["default"].createElement("li",null,c["default"].createElement("button",{type:"button",className:"btn btn-link",onClick:this.merge},gettext("Merge threads"))):null}},{key:"getApproveButton",value:function(){return this.props.moderation.can_approve?c["default"].createElement("li",null,c["default"].createElement("button",{type:"button",className:"btn btn-link",onClick:this.approve},gettext("Approve threads"))):null}},{key:"getOpenButton",value:function(){return this.props.moderation.can_close?c["default"].createElement("li",null,c["default"].createElement("button",{type:"button",className:"btn btn-link",onClick:this.open},gettext("Open threads"))):null}},{key:"getCloseButton",value:function(){return this.props.moderation.can_close?c["default"].createElement("li",null,c["default"].createElement("button",{type:"button",className:"btn btn-link",onClick:this.close},gettext("Close threads"))):null}},{key:"getUnhideButton",value:function(){return this.props.moderation.can_hide?c["default"].createElement("li",null,c["default"].createElement("button",{type:"button",className:"btn btn-link",onClick:this.unhide},gettext("Unhide threads"))):null}},{key:"getHideButton",value:function(){return this.props.moderation.can_hide?c["default"].createElement("li",null,c["default"].createElement("button",{type:"button",className:"btn btn-link",onClick:this.hide},gettext("Hide threads"))):null}},{key:"getDeleteButton",value:function(){return 2==this.props.moderation.can_hide?c["default"].createElement("li",null,c["default"].createElement("button",{type:"button",className:"btn btn-link",onClick:this["delete"]},gettext("Delete threads"))):null}},{key:"render",value:function(){return c["default"].createElement("ul",{className:this.props.className},this.getPinGloballyButton(),this.getPinLocallyButton(),this.getUnpinButton(),this.getMoveButton(),this.getMergeButton(),this.getApproveButton(),this.getOpenButton(),this.getCloseButton(),this.getUnhideButton(),this.getHideButton(),this.getDeleteButton())}}]),t}(c["default"].Component);r["default"]=C},{"../../../reducers/selection":158,"../../../services/ajax":164,"../../../services/modal":170,"../../../services/snackbar":173,"../../../services/store":174,"../../../utils/countdown":179,"./errors-list":119,"./merge":120,"./move":121,react:"react"}],119:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return c["default"].createElement("li",null,c["default"].createElement("h5",null,e.thread.title),c["default"].createElement("ul",{className:"list-unstyled list-item-errors"},e.errors.map(function(e,t){return c["default"].createElement("li",{key:t},e)})))}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}();r.ThreadErrors=i;var u=e("react"),c=n(u),f=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),l(t,[{key:"render",value:function(){return c["default"].createElement("div",{className:"modal-dialog",role:"document"},c["default"].createElement("div",{className:"modal-content"},c["default"].createElement("div",{className:"modal-header"},c["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},c["default"].createElement("span",{"aria-hidden":"true"},"×")),c["default"].createElement("h4",{className:"modal-title"},gettext("Threads moderation"))),c["default"].createElement("div",{className:"modal-body"},c["default"].createElement("p",{className:"lead"},gettext("Errors were encountered when performing moderation action on one or more threads:")),c["default"].createElement("ul",{className:"list-unstyled list-errored-items"},this.props.errors.map(function(e){return c["default"].createElement(i,{errors:e.errors,key:e.thread.id,thread:e.thread})})))))}}]),t}(c["default"].Component);r["default"]=f},{react:"react"}],120:[function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function a(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),u=e("react"),c=a(u),f=e("../../button"),d=a(f),p=e("../../form"),h=a(p),m=e("../../form-group"),b=a(m),y=e("../../category-select"),g=a(y),v=e("../../select"),_=a(v),w=e("../../../index"),E=a(w),O=e("../../../reducers/threads"),k=e("../../../reducers/selection"),N=n(k),j=e("./errors-list"),x=a(j),P=e("../../../services/ajax"),C=a(P),S=e("../../../services/modal"),T=a(S),M=e("../../../services/snackbar"),L=a(M),R=e("../../../services/store"),A=a(R),I=e("../../../utils/validators"),U=n(I),D=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));r.onCategoryChange=function(e){var t=e.target.value,n={category:t};r.acl[t].can_pin_threads<n.weight&&(n.weight=0),r.acl[t].can_close_threads||(n.is_closed=!1),r.setState(n)},r.state={isLoading:!1,title:"",category:null,weight:0,is_closed:!1,validators:{title:[U.required()]},errors:{}},r.acl={};for(var n in e.user.acl.categories)if(e.user.acl.categories.hasOwnProperty(n)){var a=e.user.acl.categories[n];r.acl[a.id]=a}return r.categoryChoices=[],e.categories.forEach(function(e){if(e.level>0){var t=r.acl[e.id],n=!t.can_start_threads||e.is_closed&&!t.can_close_threads;r.categoryChoices.push({value:e.id,disabled:n,level:e.level-1,label:e.name}),n||r.state.category||(r.state.category=e.id)}}),r.isClosedChoices=[{value:!1,icon:"lock_outline",label:gettext("No")},{value:!0,icon:"lock",label:gettext("Yes")}],r}return i(t,e),l(t,[{key:"clean",value:function(){return this.isValid()?!0:(L["default"].error(gettext("Form contains errors.")),this.setState({errors:this.validate()}),!1)}},{key:"send",value:function(){return C["default"].post(E["default"].get("MERGE_THREADS_API"),{top_category:this.props.route.category.id,threads:this.props.threads.map(function(e){return e.id}),title:this.state.title,category:this.state.category,weight:this.state.weight,is_closed:this.state.is_closed})}},{key:"handleSuccess",value:function(e){var t=this;this.props.threads.forEach(function(e){t.props.freezeThread(e.id),t.props.deleteThread(e)}),A["default"].dispatch(N.none()),this.props.addThreads([e]),A["default"].dispatch((0,O.filterThreads)(this.props.route.category,this.props.categoriesMap)),T["default"].hide()}},{key:"handleError",value:function(e){400===e.status?(this.setState({errors:Object.assign({},this.state.errors,e)}),L["default"].error(gettext("Form contains errors."))):403===e.status&&Array.isArray(e)?T["default"].show(c["default"].createElement(x["default"],{errors:e})):L["default"].apiError(e)}},{key:"getWeightChoices",value:function(){var e=[];return 2==this.acl[this.state.category].can_pin_threads&&e.push({value:2,icon:"bookmark",label:gettext("Pinned globally")}),e.push({value:1,icon:"bookmark_border",label:gettext("Pinned locally")}),e.push({value:0,icon:"remove",label:gettext("Not pinned")}),e}},{key:"renderWeightField",value:function(){return this.acl[this.state.category].can_pin_threads?c["default"].createElement(b["default"],{label:gettext("Thread weight"),"for":"id_weight",labelClass:"col-sm-4",controlClass:"col-sm-8"},c["default"].createElement(_["default"],{id:"id_weight",onChange:this.bindInput("weight"),value:this.state.weight,choices:this.getWeightChoices()})):null}},{key:"renderClosedField",value:function(){return this.acl[this.state.category].can_close_threads?c["default"].createElement(b["default"],{label:gettext("Close thread"),"for":"id_is_closed",labelClass:"col-sm-4",controlClass:"col-sm-8"},c["default"].createElement(_["default"],{id:"id_is_closed",onChange:this.bindInput("is_closed"),value:this.state.is_closed,choices:this.isClosedChoices})):null}},{key:"renderForm",value:function(){return c["default"].createElement("form",{onSubmit:this.handleSubmit},c["default"].createElement("div",{className:"modal-body"},c["default"].createElement(b["default"],{label:gettext("Thread title"),"for":"id_title",labelClass:"col-sm-4",controlClass:"col-sm-8",validation:this.state.errors.title},c["default"].createElement("input",{id:"id_title",className:"form-control",type:"text",onChange:this.bindInput("title"),value:this.state.title})),c["default"].createElement("div",{className:"clearfix"}),c["default"].createElement(b["default"],{label:gettext("Category"),"for":"id_category",labelClass:"col-sm-4",controlClass:"col-sm-8",validation:this.state.errors.category},c["default"].createElement(g["default"],{id:"id_category",onChange:this.onCategoryChange,value:this.state.category,choices:this.categoryChoices})),c["default"].createElement("div",{className:"clearfix"}),this.renderWeightField(),this.renderClosedField()),c["default"].createElement("div",{className:"modal-footer"},c["default"].createElement(d["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Merge threads"))))}},{key:"renderCantMergeMessage",value:function(){return c["default"].createElement("div",{className:"modal-body"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"info_outline")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",{className:"lead"},gettext("You can't move threads because there are no categories you are allowed to move them to.")),c["default"].createElement("p",null,gettext("You need permission to start threads in category to be able to merge threads to it."))))}},{key:"getClassName",value:function(){return this.state.category?"modal-dialog":"modal-dialog modal-message"}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getClassName(),role:"document"},c["default"].createElement("div",{className:"modal-content"},c["default"].createElement("div",{className:"modal-header"},c["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},c["default"].createElement("span",{"aria-hidden":"true"},"×")),c["default"].createElement("h4",{className:"modal-title"},gettext("Merge threads"))),this.state.category?this.renderForm():this.renderCantMergeMessage()))}}]),t}(h["default"]);r["default"]=D},{"../../../index":155,"../../../reducers/selection":158,"../../../reducers/threads":160,"../../../services/ajax":164,"../../../services/modal":170,"../../../services/snackbar":173,"../../../services/store":174,"../../../utils/validators":189,"../../button":40,"../../category-select":48,"../../form":56,"../../form-group":55,"../../select":93,"./errors-list":119,react:"react"}],121:[function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function a(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),u=e("react"),c=a(u),f=e("../../form"),d=a(f),p=e("../../form-group"),h=a(p),m=e("../../category-select"),b=a(m),y=e("../../../reducers/selection"),g=n(y),v=e("../../../reducers/threads"),_=e("../../../services/modal"),w=a(_),E=e("../../../services/store"),O=a(E),k=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));r.handleSubmit=function(e){e.preventDefault(),w["default"].hide();var t=function(){O["default"].dispatch((0,v.filterThreads)(r.props.route.category,r.props.categoriesMap));var e=O["default"].getState(),t=e.threads.map(function(e){return e.id});O["default"].dispatch(g.all(e.selection.filter(function(e){return-1!==t.indexOf(e)})))};r.props.callApi([{op:"replace",path:"category",value:r.state.category},{op:"add",path:"top-category",value:r.props.route.category.id},{op:"replace",path:"flatten-categories",value:null}],gettext("Selected threads were moved."),t)},r.state={category:null};var n={};for(var a in e.user.acl.categories)if(e.user.acl.categories.hasOwnProperty(a)){var i=e.user.acl.categories[a];n[i.id]=i}return r.categoryChoices=[],e.categories.forEach(function(e){if(e.level>0){var t=n[e.id],a=!t.can_start_threads||e.is_closed&&!t.can_close_threads;r.categoryChoices.push({value:e.id,disabled:a,level:e.level-1,label:e.name}),a||r.state.category||(r.state.category=e.id)}}),r}return i(t,e),l(t,[{key:"getClassName",value:function(){return this.state.category?"modal-dialog":"modal-dialog modal-message"}},{key:"renderForm",value:function(){return c["default"].createElement("form",{onSubmit:this.handleSubmit},c["default"].createElement("div",{className:"modal-body"},c["default"].createElement(h["default"],{label:gettext("New category"),"for":"id_new_category",labelClass:"col-sm-4",controlClass:"col-sm-8"
-},c["default"].createElement(b["default"],{id:"id_new_category",onChange:this.bindInput("category"),value:this.state.category,choices:this.categoryChoices}))),c["default"].createElement("div",{className:"modal-footer"},c["default"].createElement("button",{className:"btn btn-primary"},gettext("Move threads"))))}},{key:"renderCantMoveMessage",value:function(){return c["default"].createElement("div",{className:"modal-body"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"info_outline")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",{className:"lead"},gettext("You can't move threads because there are no categories you are allowed to move them to.")),c["default"].createElement("p",null,gettext("You need permission to start threads in category to be able to move threads to it."))))}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getClassName(),role:"document"},c["default"].createElement("div",{className:"modal-content"},c["default"].createElement("div",{className:"modal-header"},c["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},c["default"].createElement("span",{"aria-hidden":"true"},"×")),c["default"].createElement("h4",{className:"modal-title"},gettext("Move threads"))),this.state.category?this.renderForm():this.renderCantMoveMessage()))}}]),t}(d["default"]);r["default"]=k},{"../../../reducers/selection":158,"../../../reducers/threads":160,"../../../services/modal":170,"../../../services/store":174,"../../category-select":48,"../../form":56,"../../form-group":55,react:"react"}],122:[function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function a(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),u=e("react"),c=a(u),f=e("../../../reducers/selection"),d=n(f),p=e("../../../services/store"),h=a(p),m=function(e){function t(){var e,r,n,a;o(this,t);for(var i=arguments.length,l=Array(i),u=0;i>u;u++)l[u]=arguments[u];return r=n=s(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(l))),n.selectAll=function(){h["default"].dispatch(d.all(n.props.threads.map(function(e){return e.id})))},n.selectNone=function(){h["default"].dispatch(d.none())},a=r,s(n,a)}return i(t,e),l(t,[{key:"render",value:function(){return c["default"].createElement("ul",{className:this.props.className},c["default"].createElement("li",null,c["default"].createElement("button",{className:"btn btn-link",type:"button",onClick:this.selectAll},c["default"].createElement("span",{className:"material-icon"},"check_box"),gettext("Select all"))),c["default"].createElement("li",null,c["default"].createElement("button",{className:"btn btn-link",type:"button",onClick:this.selectNone},c["default"].createElement("span",{className:"material-icon"},"check_box_outline_blank"),gettext("Select none"))))}}]),t}(c["default"].Component);r["default"]=m},{"../../../reducers/selection":158,"../../../services/store":174,react:"react"}],123:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0}),r.CompactNav=r.TabsNav=void 0;var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("react-router"),f=e("../li"),d=n(f),p=function(e,t,r,n){return r.map(function(r){return u["default"].createElement(d["default"],{isControlled:!0,isActive:r.path===t.path,key:e+r.path},u["default"].createElement(c.Link,{to:e+r.path,onClick:n},u["default"].createElement("span",{className:"hidden-xs hidden-sm"},r.name),u["default"].createElement("span",{className:"hidden-md hidden-lg"},r.longName)))})};r.TabsNav=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("div",{className:"page-tabs hidden-xs hidden-sm"},u["default"].createElement("div",{className:"container"},u["default"].createElement("ul",{className:"nav nav-pills"},p(this.props.baseUrl,this.props.list,this.props.lists,this.props.hideNav))))}}]),t}(u["default"].Component),r.CompactNav=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("ul",{className:"dropdown-menu",role:"menu"},p(this.props.baseUrl,this.props.list,this.props.lists,this.props.hideNav))}}]),t}(u["default"].Component)},{"../li":57,react:"react","react-router":"react-router"}],124:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e){return{selection:e.selection,threads:e.threads,tick:e.tick.tick,user:e.auth.user}}function o(e){var t=[{type:"all",path:"",name:gettext("All"),longName:gettext("All threads")}];return e.id&&(t.push({type:"my",path:"my/",name:gettext("My"),longName:gettext("My threads")}),t.push({type:"new",path:"new/",name:gettext("New"),longName:gettext("New threads")}),t.push({type:"unread",path:"unread/",name:gettext("Unread"),longName:gettext("Unread threads")}),t.push({type:"subscribed",path:"subscribed/",name:gettext("Subscribed"),longName:gettext("Subscribed threads")}),e.acl.can_see_unapproved_content_lists&&t.push({type:"unapproved",path:"unapproved/",name:gettext("Unapproved"),longName:gettext("Unapproved content")})),t}function s(e){var t=o(e),r=[],n={};return f["default"].get("CATEGORIES").forEach(function(e){t.forEach(function(o){n[e.id]=e,r.push({path:e.absolute_url+o.path,component:(0,i.connect)(a)(u["default"]),categories:f["default"].get("CATEGORIES"),categoriesMap:n,category:e,lists:t,list:o})})}),r}Object.defineProperty(r,"__esModule",{value:!0}),r.select=a,r.getLists=o,r.paths=s;var i=e("react-redux"),l=e("./route"),u=n(l),c=e("../../index"),f=n(c)},{"../../index":155,"./route":125,"react-redux":"react-redux"}],125:[function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function a(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),u=e("react"),c=a(u),f=e("../button"),d=a(f),p=e("./compare"),h=e("./container"),m=a(h),b=e("./navs"),y=e("./header"),g=a(y),v=e("./utils"),_=e("../threads-list/root"),w=a(_),E=e("./list-empty"),O=a(E),k=e("../with-dropdown"),N=a(k),j=e("../../index"),x=a(j),P=e("../../reducers/selection"),C=n(P),S=e("../../reducers/threads"),T=e("../../services/ajax"),M=a(T),L=e("../../services/polls"),R=a(L),A=e("../../services/snackbar"),I=a(A),U=e("../../services/store"),D=a(U),z=e("../../services/page-title"),B=a(z),F=e("../../utils/sets"),H=n(F),G=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));r.loadMore=function(){r.setState({isBusy:!0}),r.loadThreads(r.getCategory(),r.state.page+1)},r.pollResponse=function(e){r.setState({diff:Object.assign({},e,{results:(0,v.diffThreads)(r.props.threads,e.results)})})},r.addThreads=function(e){D["default"].dispatch((0,S.append)(e,r.getSorting()))},r.applyDiff=function(){r.addThreads(r.state.diff.results),r.setState(Object.assign({},r.state.diff,{moderation:(0,v.getModerationActions)(D["default"].getState().threads),diff:{results:[]}}))},r.freezeThread=function(e){r.setState(function(t){return{busyThreads:H.toggle(t.busyThreads,e)}})},r.updateThread=function(e){D["default"].dispatch((0,S.patch)(e,e,r.getSorting()))},r.deleteThread=function(e){D["default"].dispatch((0,S.deleteThread)(e))},r.state={isMounted:!0,isLoaded:!1,isBusy:!1,diff:{results:[]},moderation:[],busyThreads:[],dropdown:!1,subcategories:[],count:0,more:0,page:1,pages:1};var n=r.getCategory();return x["default"].has("THREADS")?r.initWithPreloadedData(n,x["default"].get("THREADS")):r.initWithoutPreloadedData(n),r}return i(t,e),l(t,[{key:"getCategory",value:function(){return this.props.route.category.special_role?null:this.props.route.category.id}},{key:"initWithPreloadedData",value:function(e,t){this.state=Object.assign(this.state,{moderation:(0,v.getModerationActions)(t.results),subcategories:t.subcategories,count:t.count,more:t.more,page:t.page,pages:t.pages}),this.startPolling(e)}},{key:"initWithoutPreloadedData",value:function(e){this.loadThreads(e)}},{key:"loadThreads",value:function(e){var t=this,r=arguments.length<=1||void 0===arguments[1]?1:arguments[1];M["default"].get(x["default"].get("THREADS_API"),{category:e,list:this.props.route.list.type,page:r||1},"threads").then(function(n){t.state.isMounted&&(1===r?D["default"].dispatch((0,S.hydrate)(n.results)):D["default"].dispatch((0,S.append)(n.results,t.getSorting())),t.setState({isLoaded:!0,isBusy:!1,moderation:(0,v.getModerationActions)(D["default"].getState().threads),subcategories:n.subcategories,count:n.count,more:n.more,page:n.page,pages:n.pages}),t.startPolling(e))},function(e){I["default"].apiError(e)})}},{key:"startPolling",value:function(e){R["default"].start({poll:"threads",url:x["default"].get("THREADS_API"),data:{category:e,list:this.props.route.list.type},frequency:12e4,update:this.pollResponse})}},{key:"componentDidMount",value:function(){B["default"].set((0,v.getPageTitle)(this.props.route)),x["default"].has("THREADS")&&(D["default"].dispatch((0,S.hydrate)(x["default"].pop("THREADS").results)),this.setState({isLoaded:!0})),D["default"].dispatch(C.none())}},{key:"componentWillUnmount",value:function(){this.state.isMounted=!1,R["default"].stop("threads")}},{key:"getTitle",value:function(){return(0,v.getTitle)(this.props.route)}},{key:"getSorting",value:function(){return this.props.route.category.special_role?p.compareGlobalWeight:p.compareWeight}},{key:"getCompactNav",value:function(){return this.props.route.lists.length>1?c["default"].createElement("div",{className:this.getCompactNavClassName()},c["default"].createElement(b.CompactNav,{baseUrl:this.props.route.category.absolute_url,list:this.props.route.list,lists:this.props.route.lists,hideNav:this.hideNav})):null}},{key:"getMoreButton",value:function(){return this.state.more?c["default"].createElement("div",{className:"pager-more"},c["default"].createElement(d["default"],{loading:this.state.isBusy||this.state.busyThreads.length,onClick:this.loadMore},gettext("Show more"))):null}},{key:"getClassName",value:function(){var e="page page-threads";return e+=" page-threads-"+this.props.route.list,this.props.route.category.css_class&&(e+=" page-"+this.props.route.category.css_class),e}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getClassName()},c["default"].createElement(g["default"],{disabled:!this.state.isLoaded,threads:this.props.threads,title:this.getTitle(),toggleNav:this.toggleNav,route:this.props.route,user:this.props.user}),this.getCompactNav(),c["default"].createElement(m["default"],{route:this.props.route,subcategories:this.state.subcategories,user:this.props.user,threads:this.props.threads,threadsCount:this.state.count,moderation:this.state.moderation,selection:this.props.selection,busyThreads:this.state.busyThreads,addThreads:this.addThreads,freezeThread:this.freezeThread,deleteThread:this.deleteThread,updateThread:this.updateThread,isLoaded:this.state.isLoaded,isBusy:this.state.isBusy},c["default"].createElement(w["default"],{categories:this.props.route.categoriesMap,list:this.props.route.list,selection:this.props.selection,threads:this.props.threads,diffSize:this.state.diff.results.length,applyDiff:this.applyDiff,showOptions:!!this.props.user.id,isLoaded:this.state.isLoaded,busyThreads:this.state.busyThreads},c["default"].createElement(O["default"],{category:this.props.route.category,list:this.props.route.list})),this.getMoreButton()))}}]),t}(N["default"]);r["default"]=G},{"../../index":155,"../../reducers/selection":158,"../../reducers/threads":160,"../../services/ajax":164,"../../services/page-title":171,"../../services/polls":172,"../../services/snackbar":173,"../../services/store":174,"../../utils/sets":187,"../button":40,"../threads-list/root":100,"../with-dropdown":153,"./compare":114,"./container":115,"./header":116,"./list-empty":117,"./navs":123,"./utils":127,react:"react"}],126:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("./category-picker"),f=n(c),d=e("./moderation/controls"),p=n(d),h=e("./moderation/selection"),m=n(h),b=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getCategoryPicker",value:function(){return this.props.subcategories.length?u["default"].createElement("div",{className:"toolbar-left"},u["default"].createElement(f["default"],{choices:this.props.subcategories,categories:this.props.categoriesMap,list:this.props.list})):null}},{key:"showModerationOptions",value:function(){return this.props.user.id&&this.props.moderation.allow}},{key:"getSelectionButton",value:function(){return this.showModerationOptions()?u["default"].createElement("div",{className:"toolbar-right dropdown"},u["default"].createElement("button",{type:"button",className:"btn btn-default btn-icon dropdown-toggle","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",disabled:this.props.disabled},u["default"].createElement("span",{className:"material-icon"},"select_all")),u["default"].createElement(m["default"],{className:"dropdown-menu dropdown-menu-right",threads:this.props.threads})):null}},{key:"getSelectedThreads",value:function(){var e=this;return this.props.threads.filter(function(t){return e.props.selection.indexOf(t.id)>=0})}},{key:"getModerationButton",value:function(){return this.showModerationOptions()?u["default"].createElement("div",{className:"toolbar-right dropdown"},u["default"].createElement("button",{type:"button",className:"btn btn-default dropdown-toggle","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",disabled:this.props.disabled||!this.props.selection.length},u["default"].createElement("span",{className:"material-icon"},"settings"),gettext("Moderation")),u["default"].createElement(p["default"],{addThreads:this.props.addThreads,categories:this.props.categories,categoriesMap:this.props.categoriesMap,className:"dropdown-menu dropdown-menu-right",deleteThread:this.props.deleteThread,freezeThread:this.props.freezeThread,moderation:this.props.moderation,route:this.props.route,threads:this.getSelectedThreads(),updateThread:this.props.updateThread,user:this.props.user})):null}},{key:"render",value:function(){return u["default"].createElement("div",{className:"toolbar with-js"},this.getCategoryPicker(),u["default"].createElement("p",{className:"toolbar-left hidden-xs hidden-sm"},this.props.children),this.getSelectionButton(),this.getModerationButton())}}]),t}(u["default"].Component);r["default"]=b},{"./category-picker":113,"./moderation/controls":118,"./moderation/selection":122,react:"react"}],127:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e){return e.category.special_role?c["default"].get("CATEGORIES_ON_INDEX")?e.list.path?{title:e.list.longName,parent:gettext("Threads")}:{title:gettext("Threads")}:e.list.path?{title:e.list.longName}:null:e.list.path?{title:e.list.longName,parent:e.category.name}:{title:e.category.name}}function o(e){return e.category.special_role?c["default"].get("CATEGORIES_ON_INDEX")?gettext("Threads"):c["default"].get("SETTINGS").forum_index_title?c["default"].get("SETTINGS").forum_index_title:c["default"].get("SETTINGS").forum_name:e.category.name}function s(e,t){return[e.title===t.title,e.weight===t.weight,e.category===t.category,e.top_category===t.top_category,e.last_post===t.last_post,e.last_poster_name===t.last_poster_name].indexOf(!1)>=0}function i(e,t){var r={};return e.forEach(function(e){r[e.id]=e}),t.filter(function(e){return r[e.id]?s(r[e.id],e):!0})}function l(e){var t={allow:!1,can_approve:0,can_close:0,can_hide:0,can_merge:0,can_move:0,can_pin:0};return e.forEach(function(e){e.is_unapproved&&e.acl.can_approve>t.can_approve&&(t.can_approve=e.acl.can_approve),e.acl.can_close>t.can_close&&(t.can_close=e.acl.can_close),e.acl.can_hide>t.can_hide&&(t.can_hide=e.acl.can_hide),e.acl.can_merge>t.can_merge&&(t.can_merge=e.acl.can_merge),e.acl.can_move>t.can_move&&(t.can_move=e.acl.can_move),e.acl.can_pin>t.can_pin&&(t.can_pin=e.acl.can_pin),t.allow=t.can_approve||t.can_close||t.can_hide||t.can_merge||t.can_move||t.can_pin}),t}Object.defineProperty(r,"__esModule",{value:!0}),r.getPageTitle=a,r.getTitle=o,r.isThreadChanged=s,r.diffThreads=i,r.getModerationActions=l;var u=e("../../index"),c=n(u)},{"../../index":155}],128:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0}),r.CompactGuestNav=r.GuestNav=r.GuestMenu=void 0;var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("../avatar"),f=n(c),d=e("../register-button"),p=n(d),h=e("../sign-in.js"),m=n(h),b=e("../../services/mobile-navbar-dropdown"),y=n(b),g=e("../../services/modal"),v=n(g),_=r.GuestMenu=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"showSignInModal",value:function(){v["default"].show(m["default"])}},{key:"render",value:function(){return u["default"].createElement("ul",{className:"dropdown-menu user-dropdown dropdown-menu-right",role:"menu"},u["default"].createElement("li",{className:"guest-preview"},u["default"].createElement("h4",null,gettext("You are browsing as guest.")),u["default"].createElement("p",null,gettext("Sign in or register to start and participate in discussions.")),u["default"].createElement("div",{className:"row"},u["default"].createElement("div",{className:"col-xs-6"},u["default"].createElement("button",{type:"button",className:"btn btn-default btn-block",onClick:this.showSignInModal},gettext("Sign in"))),u["default"].createElement("div",{className:"col-xs-6"},u["default"].createElement(p["default"],{className:"btn-primary btn-block"},gettext("Register"))))))}}]),t}(u["default"].Component);r.GuestNav=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("div",{className:"nav nav-guest"},u["default"].createElement("button",{type:"button",className:"btn navbar-btn btn-default",onClick:this.showSignInModal},gettext("Sign in")),u["default"].createElement(p["default"],{className:"navbar-btn btn-primary"},gettext("Register")))}}]),t}(_),r.CompactGuestNav=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"showGuestMenu",value:function(){y["default"].show(_)}},{key:"render",value:function(){return u["default"].createElement("button",{type:"button",onClick:this.showGuestMenu},u["default"].createElement(f["default"],{size:"64"}))}}]),t}(u["default"].Component)},{"../../services/mobile-navbar-dropdown":169,"../../services/modal":170,"../avatar":38,"../register-button":87,"../sign-in.js":94,react:"react"}],129:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return e.auth}Object.defineProperty(r,"__esModule",{value:!0}),r.CompactUserMenu=r.UserMenu=void 0;var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}();r.select=i;var u=e("react"),c=n(u),f=e("./guest-nav"),d=e("./user-nav");r.UserMenu=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),l(t,[{key:"render",value:function(){return this.props.isAuthenticated?c["default"].createElement(d.UserNav,{user:this.props.user}):c["default"].createElement(f.GuestNav,null)}}]),t}(c["default"].Component),r.CompactUserMenu=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),l(t,[{key:"render",value:function(){return this.props.isAuthenticated?c["default"].createElement(d.CompactUserNav,{user:this.props.user}):c["default"].createElement(f.CompactGuestNav,null)}}]),t}(c["default"].Component)},{"./guest-nav":128,"./user-nav":130,react:"react"}],130:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{user:e.auth.user}}Object.defineProperty(r,"__esModule",{value:!0}),r.CompactUserNav=r.UserNav=r.UserMenu=void 0;var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}();r.selectUserMenu=i;var u=e("react"),c=n(u),f=e("react-redux"),d=e("../avatar"),p=n(d),h=e("../change-avatar/root"),m=n(h),b=e("../../index"),y=n(b),g=e("../../services/mobile-navbar-dropdown"),v=n(g),_=e("../../services/modal"),w=n(_),E=r.UserMenu=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),l(t,[{key:"logout",value:function(){var e=confirm(gettext("Are you sure you want to sign out?"));e&&$("#hidden-logout-form").submit()}},{key:"changeAvatar",value:function(){w["default"].show((0,f.connect)(h.select)(m["default"]))}},{key:"render",value:function(){return c["default"].createElement("ul",{className:"dropdown-menu user-dropdown dropdown-menu-right",role:"menu"},c["default"].createElement("li",{className:"dropdown-header"},c["default"].createElement("strong",null,this.props.user.username)),c["default"].createElement("li",{className:"divider"}),c["default"].createElement("li",null,c["default"].createElement("a",{href:this.props.user.absolute_url},c["default"].createElement("span",{className:"material-icon"},"account_circle"),gettext("See your profile"))),c["default"].createElement("li",null,c["default"].createElement("a",{href:y["default"].get("USERCP_URL")},c["default"].createElement("span",{className:"material-icon"},"done_all"),gettext("Change options"))),c["default"].createElement("li",null,c["default"].createElement("button",{type:"button",className:"btn-link",onClick:this.changeAvatar},c["default"].createElement("span",{className:"material-icon"},"portrait"),gettext("Change avatar"))),c["default"].createElement("li",{className:"divider"}),c["default"].createElement("li",{className:"dropdown-buttons"},c["default"].createElement("button",{type:"button",className:"btn btn-default btn-block",onClick:this.logout},gettext("Log out"))))}}]),t}(c["default"].Component);r.UserNav=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),l(t,[{key:"render",value:function(){return c["default"].createElement("ul",{className:"ul nav navbar-nav nav-user"},c["default"].createElement("li",{className:"dropdown"},c["default"].createElement("a",{href:this.props.user.absolute_url,className:"dropdown-toggle","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",role:"button"},c["default"].createElement(p["default"],{user:this.props.user,size:"64"})),c["default"].createElement(E,{user:this.props.user})))}}]),t}(c["default"].Component),r.CompactUserNav=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),l(t,[{key:"showUserMenu",value:function(){v["default"].showConnected("user-menu",(0,f.connect)(i)(E))}},{key:"render",value:function(){return c["default"].createElement("button",{type:"button",onClick:this.showUserMenu},c["default"].createElement(p["default"],{user:this.props.user,size:"64"}))}}]),t}(c["default"].Component)},{"../../index":155,"../../services/mobile-navbar-dropdown":169,"../../services/modal":170,"../avatar":38,"../change-avatar/root":52,react:"react","react-redux":"react-redux"}],131:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0}),r.StatusLabel=r.StatusIcon=void 0;var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getClass",value:function(){var e="";return this.props.status.is_banned?e="banned":this.props.status.is_hidden?e="offline":this.props.status.is_online_hidden?e="online":this.props.status.is_offline_hidden?e="offline":this.props.status.is_online?e="online":this.props.status.is_offline&&(e="offline"),"user-status user-"+e}},{key:"render",value:function(){return u["default"].createElement("span",{className:this.getClass()},this.props.children)}}]),t}(u["default"].Component);r["default"]=c;r.StatusIcon=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getIcon",value:function(){return this.props.status.is_banned?"remove_circle_outline":this.props.status.is_hidden?"help_outline":this.props.status.is_online_hidden?"label":this.props.status.is_offline_hidden?"label_outline":this.props.status.is_online?"lens":this.props.status.is_offline?"panorama_fish_eye":void 0}},{key:"render",value:function(){return u["default"].createElement("span",{className:"material-icon status-icon"},this.getIcon())}}]),t}(u["default"].Component),r.StatusLabel=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getHelp",value:function(){return this.props.status.is_banned?this.props.status.banned_until?interpolate(gettext("%(username)s is banned until %(ban_expires)s"),{username:this.props.user.username,ban_expires:this.props.status.banned_until.format("LL, LT")},!0):interpolate(gettext("%(username)s is banned"),{
-username:this.props.user.username},!0):this.props.status.is_hidden?interpolate(gettext("%(username)s is hiding presence"),{username:this.props.user.username},!0):this.props.status.is_online_hidden?interpolate(gettext("%(username)s is online (hidden)"),{username:this.props.user.username},!0):this.props.status.is_offline_hidden?interpolate(gettext("%(username)s was last seen %(last_click)s (hidden)"),{username:this.props.user.username,last_click:this.props.status.last_click.fromNow()},!0):this.props.status.is_online?interpolate(gettext("%(username)s is online"),{username:this.props.user.username},!0):this.props.status.is_offline?interpolate(gettext("%(username)s was last seen %(last_click)s"),{username:this.props.user.username,last_click:this.props.status.last_click.fromNow()},!0):void 0}},{key:"getLabel",value:function(){return this.props.status.is_banned?gettext("Banned"):this.props.status.is_hidden?gettext("Hidden"):this.props.status.is_online_hidden?gettext("Online (hidden)"):this.props.status.is_offline_hidden?gettext("Offline (hidden)"):this.props.status.is_online?gettext("Online"):this.props.status.is_offline?gettext("Offline"):void 0}},{key:"render",value:function(){return u["default"].createElement("span",{className:this.props.className||"status-label",title:this.getHelp()},this.getLabel())}}]),t}(u["default"].Component)},{react:"react"}],132:[function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function a(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),u=e("react"),c=a(u),f=e("../avatar"),d=a(f),p=e("../../utils/random"),h=n(p),m=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),l(t,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"getClassName",value:function(){return this.props.hiddenOnMobile?"list-group-item hidden-xs hidden-sm":"list-group-item"}},{key:"render",value:function(){return c["default"].createElement("li",{className:this.getClassName()},c["default"].createElement("div",{className:"change-avatar"},c["default"].createElement("span",{className:"user-avatar"},c["default"].createElement(d["default"],{size:"100"}))),c["default"].createElement("div",{className:"change-author"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](30,100)+"px"}}," ")),c["default"].createElement("div",{className:"change"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](30,70)+"px"}}," "),c["default"].createElement("span",{className:"material-icon"},"arrow_forward"),c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](30,70)+"px"}}," ")),c["default"].createElement("div",{className:"change-date"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](80,140)+"px"}}," ")))}}]),t}(c["default"].Component);r["default"]=m},{"../../utils/random":184,"../avatar":38,react:"react"}],133:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("../avatar"),f=n(c),d=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"renderUserAvatar",value:function(){return this.props.change.changed_by?u["default"].createElement("a",{href:this.props.change.changed_by.absolute_url,className:"user-avatar-wrapper"},u["default"].createElement(f["default"],{user:this.props.change.changed_by,size:"100"})):u["default"].createElement("span",{className:"user-avatar-wrapper"},u["default"].createElement(f["default"],{size:"100"}))}},{key:"renderUsername",value:function(){return this.props.change.changed_by?u["default"].createElement("a",{href:this.props.change.changed_by.absolute_url,className:"item-title"},this.props.change.changed_by.username):u["default"].createElement("span",{className:"item-title"},this.props.change.changed_by_username)}},{key:"render",value:function(){return u["default"].createElement("li",{className:"list-group-item",key:this.props.change.id},u["default"].createElement("div",{className:"change-avatar"},this.renderUserAvatar()),u["default"].createElement("div",{className:"change-author"},this.renderUsername()),u["default"].createElement("div",{className:"change"},u["default"].createElement("span",{className:"old-username"},this.props.change.old_username),u["default"].createElement("span",{className:"material-icon"},"arrow_forward"),u["default"].createElement("span",{className:"new-username"},this.props.change.new_username)),u["default"].createElement("div",{className:"change-date"},u["default"].createElement("abbr",{title:this.props.change.changed_on.format("LLL")},this.props.change.changed_on.fromNow())))}}]),t}(u["default"].Component);r["default"]=d},{"../avatar":38,react:"react"}],134:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getEmptyMessage",value:function(){return this.props.emptyMessage?this.props.emptyMessage:gettext("No name changes have been recorded for your account.")}},{key:"render",value:function(){return u["default"].createElement("div",{className:"username-history ui-ready"},u["default"].createElement("ul",{className:"list-group"},u["default"].createElement("li",{className:"list-group-item empty-message"},this.getEmptyMessage())))}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],135:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("./change-preview"),f=n(c),d=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"render",value:function(){return u["default"].createElement("div",{className:"username-history ui-preview"},u["default"].createElement("ul",{className:"list-group"},[0,1,2].map(function(e){return u["default"].createElement(f["default"],{hiddenOnMobile:e>0,key:e})})))}}]),t}(u["default"].Component);r["default"]=d},{"./change-preview":132,react:"react"}],136:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("./change"),f=n(c),d=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("div",{className:"username-history ui-ready"},u["default"].createElement("ul",{className:"list-group"},this.props.changes.map(function(e){return u["default"].createElement(f["default"],{change:e,key:e.id})})))}}]),t}(u["default"].Component);r["default"]=d},{"./change":133,react:"react"}],137:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("./list-empty"),f=n(c),d=e("./list-ready"),p=n(d),h=e("./list-preview"),m=n(h),b=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return this.props.isLoaded?this.props.changes.length?u["default"].createElement(p["default"],{changes:this.props.changes}):u["default"].createElement(f["default"],{emptyMessage:this.props.emptyMessage}):u["default"].createElement(m["default"],null)}}]),t}(u["default"].Component);r["default"]=b},{"./list-empty":134,"./list-preview":135,"./list-ready":136,react:"react"}],138:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("./user-card"),f=n(c),d=e("./user-preview"),p=n(d),h=e("../../utils/batch"),m=n(h),b=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"shouldComponentUpdate",value:function(e){return e.isLoaded}},{key:"getPager",value:function(){return this.props.pages>1?u["default"].createElement(Pager,this.props):null}},{key:"getClassName",value:function(){return this.props.className?"users-cards-list "+this.props.className+" ui-ready":"users-cards-list ui-ready"}},{key:"getColClassName",value:function(){return"col-md-"+12/this.props.cols}},{key:"getBody",value:function(){var e=this;if(this.props.isLoaded)return(0,m["default"])(this.props.users,this.props.cols).map(function(t,r){return u["default"].createElement("div",{className:"row",key:r},t.map(function(t){return u["default"].createElement("div",{className:e.getColClassName(),key:t.id},u["default"].createElement(f["default"],{user:t,showStatus:e.props.showStatus,showRank:e.props.showRank}))}))});for(var t=[],r=0;r<this.props.cols;r++)0===r?t.push(this.getColClassName()):t.push(this.getColClassName()+" hidden-xs hidden-sm");return u["default"].createElement("div",{className:"row"},t.map(function(t,r){return u["default"].createElement("div",{className:t,key:r},u["default"].createElement(p["default"],{showStatus:e.props.showStatus}))}))}},{key:"render",value:function(){return u["default"].createElement("div",{className:"users-cards-list ui-ready"},this.getBody())}}]),t}(u["default"].Component);r["default"]=b},{"../../utils/batch":177,"./user-card":139,"./user-preview":140,react:"react"}],139:[function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function a(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),u=e("react"),c=a(u),f=e("../avatar"),d=a(f),p=e("../user-status"),h=a(p),m=e("../../utils/random"),b=n(m),y=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),l(t,[{key:"getUserStatus",value:function(){return this.props.showStatus?this.props.user.status?c["default"].createElement(h["default"],{user:this.props.user,status:this.props.user.status},c["default"].createElement(p.StatusIcon,{user:this.props.user,status:this.props.user.status}),c["default"].createElement(p.StatusLabel,{user:this.props.user,status:this.props.user.status,className:"status-label"})):c["default"].createElement("span",{className:"user-status"},c["default"].createElement("span",{className:"status-icon ui-preview-text"}," "),c["default"].createElement("span",{className:"status-label ui-preview-text",style:{width:b["int"](30,50)+"px"}}," ")):null}},{key:"getRankName",value:function(){return this.props.showRank?this.props.user.rank.is_tab?c["default"].createElement("a",{href:this.props.user.rank.absolute_url,className:"item-title rank-name"},this.props.user.rank.name):c["default"].createElement("span",{className:"item-title rank-name"},this.props.user.rank.name):null}},{key:"getUserTitle",value:function(){return this.props.user.title?c["default"].createElement("span",{className:"user-title"},this.props.user.title):null}},{key:"getUserJoinedOn",value:function(){var e=interpolate(gettext("Joined on %(joined_on)s"),{joined_on:this.props.user.joined_on.format("LL, LT")},!0),t=interpolate(gettext("Joined %(joined_on)s"),{joined_on:this.props.user.joined_on.fromNow()},!0);return c["default"].createElement("span",{className:"user-joined-on",title:e},t)}},{key:"getPostsCount",value:function(){var e=ngettext("%(posts)s post","%(posts)s posts",this.props.user.posts);return interpolate(e,{posts:this.props.user.posts},!0)}},{key:"getThreadsCount",value:function(){var e=ngettext("%(threads)s thread","%(threads)s threads",this.props.user.threads);return interpolate(e,{threads:this.props.user.threads},!0)}},{key:"getFollowersCount",value:function(){var e=ngettext("%(followers)s follower","%(followers)s followers",this.props.user.followers);return interpolate(e,{followers:this.props.user.followers},!0)}},{key:"getClassName",value:function(){return this.props.user.rank.css_class?"user-card user-card-"+this.props.user.rank.css_class+" ui-ready":"user-card ui-ready"}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getClassName()},c["default"].createElement("div",{className:"user-card-bg-image"},c["default"].createElement(d["default"],{user:this.props.user,size:"400",className:"bg-image"}),c["default"].createElement("div",{className:"user-card-bg"},c["default"].createElement("div",{className:"user-details"},c["default"].createElement("div",{className:"user-avatar"},c["default"].createElement("a",{href:this.props.user.absolute_url},c["default"].createElement(d["default"],{user:this.props.user,size:"400"}))),c["default"].createElement("h4",{className:"user-name"},c["default"].createElement("a",{href:this.props.user.absolute_url,className:"item-title"},this.props.user.username)),c["default"].createElement("p",{className:"user-subscript"},this.getUserStatus(),this.getRankName(),this.getUserTitle(),this.getUserJoinedOn())),c["default"].createElement("div",{className:"user-card-stats"},c["default"].createElement("ul",{className:"list-unstyled"},c["default"].createElement("li",{className:"user-posts-count"},this.getPostsCount()),c["default"].createElement("li",{className:"user-threads-count"},this.getThreadsCount()),c["default"].createElement("li",{className:"user-followers-count"},this.getFollowersCount()))))))}}]),t}(c["default"].Component);r["default"]=y},{"../../utils/random":184,"../avatar":38,"../user-status":131,react:"react"}],140:[function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function a(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),u=e("react"),c=a(u),f=e("../avatar"),d=a(f),p=e("../../utils/random"),h=n(p),m=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),l(t,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"getUserStatus",value:function(){return this.props.showStatus?c["default"].createElement("span",{className:"user-status"},c["default"].createElement("span",{className:"status-icon ui-preview-text"}," "),c["default"].createElement("span",{className:"status-label ui-preview-text",style:{width:h["int"](30,50)+"px"}}," ")):null}},{key:"render",value:function(){return c["default"].createElement("div",{className:"user-card ui-preview"},c["default"].createElement("div",{className:"user-card-bg-image"},c["default"].createElement(d["default"],{size:"400",className:"bg-image"}),c["default"].createElement("div",{className:"user-card-bg"},c["default"].createElement("div",{className:"user-details"},c["default"].createElement("div",{className:"user-avatar"},c["default"].createElement(d["default"],{size:"400"})),c["default"].createElement("h4",{className:"user-name"},c["default"].createElement("span",{className:"item-title"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](60,150)+"px"}}," "))),c["default"].createElement("p",{className:"user-subscript"},this.getUserStatus(),c["default"].createElement("span",{className:"user-joined-on"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](30,50)+"px"}}," ")))),c["default"].createElement("div",{className:"user-card-stats"},c["default"].createElement("ul",{className:"list-unstyled"},c["default"].createElement("li",{className:"user-posts-count"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](40,70)+"px"}}," ")),c["default"].createElement("li",{className:"user-threads-count"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](40,70)+"px"}}," ")),c["default"].createElement("li",{className:"user-followers-count"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](40,70)+"px"}}," ")))))))}}]),t}(c["default"].Component);r["default"]=m},{"../../utils/random":184,"../avatar":38,react:"react"}],141:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getEmptyMessage",value:function(){return interpolate(gettext("No users have posted any new messages during last %(days)s days."),{days:this.props.trackedPeriod},!0)}},{key:"render",value:function(){return u["default"].createElement("div",{className:"active-posters-list"},u["default"].createElement("div",{className:"container"},u["default"].createElement("p",{className:"lead"},this.getEmptyMessage())))}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],142:[function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function a(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),u=e("react"),c=a(u),f=e("../../avatar"),d=a(f),p=e("../../../utils/random"),h=n(p),m=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),l(t,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"getClassName",value:function(){return this.props.hiddenOnMobile?"list-group-item hidden-xs hidden-sm":"list-group-item"}},{key:"render",value:function(){return c["default"].createElement("li",{className:this.getClassName()},c["default"].createElement("div",{className:"rank-user-avatar"},c["default"].createElement("span",null,c["default"].createElement(d["default"],{size:"50"}))),c["default"].createElement("div",{className:"rank-user"},c["default"].createElement("div",{className:"user-name"},c["default"].createElement("span",{className:"item-title"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](30,80)+"px"}}," "))),c["default"].createElement("div",{className:"user-details"},c["default"].createElement("span",{className:"user-status"},c["default"].createElement("span",{className:"status-icon ui-preview-text"}," "),c["default"].createElement("span",{className:"status-label ui-preview-text hidden-xs hidden-sm",style:{width:h["int"](30,50)+"px"}}," ")),c["default"].createElement("span",{className:"rank-name"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](30,50)+"px"}}," ")),c["default"].createElement("span",{className:"user-title hidden-xs hidden-sm"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](30,50)+"px"}}," ")))),c["default"].createElement("div",{className:"rank-position"},c["default"].createElement("strong",null,c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](20,30)+"px"}}," ")),c["default"].createElement("small",null,gettext("Rank"))),c["default"].createElement("div",{className:"rank-posts-counted"},c["default"].createElement("strong",null,c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](20,30)+"px"}}," ")),c["default"].createElement("small",null,gettext("Ranked posts"))),c["default"].createElement("div",{className:"rank-posts-total"},c["default"].createElement("strong",null,c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](20,30)+"px"}}," ")),c["default"].createElement("small",null,gettext("Total posts"))))}}]),t}(c["default"].Component);r["default"]=m},{"../../../utils/random":184,"../../avatar":38,react:"react"}],143:[function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function a(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),u=e("react"),c=a(u),f=e("react-router"),d=e("../../avatar"),p=a(d),h=e("../../user-status"),m=a(h),b=e("../../../index"),y=a(b),g=e("../../../utils/random"),v=n(g),_=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),l(t,[{key:"getClassName",value:function(){return this.props.rank.css_class?"list-group-item list-group-rank-"+this.props.rank.css_class:"list-group-item"}},{key:"getUserStatus",value:function(){return this.props.user.status?c["default"].createElement(m["default"],{user:this.props.user,status:this.props.user.status},c["default"].createElement(h.StatusIcon,{user:this.props.user,status:this.props.user.status}),c["default"].createElement(h.StatusLabel,{user:this.props.user,status:this.props.user.status,className:"status-label hidden-xs hidden-sm"})):c["default"].createElement("span",{className:"user-status"},c["default"].createElement("span",{className:"status-icon ui-preview-text"}," "),c["default"].createElement("span",{className:"status-label ui-preview-text hidden-xs hidden-sm",style:{width:v["int"](30,50)+"px"}}," "))}},{key:"getRankName",value:function(){if(this.props.rank.is_tab){var e=y["default"].get("USERS_LIST_URL")+this.props.rank.slug+"/";return c["default"].createElement(f.Link,{to:e,className:"rank-name item-title"},this.props.rank.name)}return c["default"].createElement("span",{className:"rank-name item-title"},this.props.rank.name)}},{key:"getUserTitle",value:function(){return this.props.user.title?c["default"].createElement("span",{className:"user-title hidden-xs hidden-sm"},this.props.user.title):null}},{key:"render",value:function(){return c["default"].createElement("li",{className:this.getClassName()},c["default"].createElement("div",{className:"rank-user-avatar"},c["default"].createElement("a",{href:this.props.user.absolute_url},c["default"].createElement(p["default"],{
-user:this.props.user,size:"50"}))),c["default"].createElement("div",{className:"rank-user"},c["default"].createElement("div",{className:"user-name"},c["default"].createElement("a",{href:this.props.user.absolute_url,className:"item-title"},this.props.user.username)),c["default"].createElement("div",{className:"user-details"},this.getUserStatus(),this.getRankName(),this.getUserTitle())),c["default"].createElement("div",{className:"rank-position"},c["default"].createElement("strong",null,"#",this.props.counter),c["default"].createElement("small",null,gettext("Rank"))),c["default"].createElement("div",{className:"rank-posts-counted"},c["default"].createElement("strong",null,this.props.user.meta.score),c["default"].createElement("small",null,gettext("Ranked posts"))),c["default"].createElement("div",{className:"rank-posts-total"},c["default"].createElement("strong",null,this.props.user.posts),c["default"].createElement("small",null,gettext("Total posts"))))}}]),t}(c["default"].Component);r["default"]=_},{"../../../index":155,"../../../utils/random":184,"../../avatar":38,"../../user-status":131,react:"react","react-router":"react-router"}],144:[function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function a(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),u=e("react"),c=a(u),f=e("./list-item-preview"),d=a(f),p=e("../../../utils/random"),h=n(p),m=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),l(t,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"render",value:function(){return c["default"].createElement("div",{className:"active-posters-list"},c["default"].createElement("div",{className:"container"},c["default"].createElement("p",{className:"lead ui-preview"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](50,220)+"px"}}," ")),c["default"].createElement("div",{className:"active-posters ui-preview"},c["default"].createElement("ul",{className:"list-group"},[0,1,2].map(function(e){return c["default"].createElement(d["default"],{hiddenOnMobile:e>0,key:e})})))))}}]),t}(c["default"].Component);r["default"]=m},{"../../../utils/random":184,"./list-item-preview":142,react:"react"}],145:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("./list-item"),f=n(c),d=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getLeadMessage",value:function(){var e=ngettext("%(posters)s most active poster from last %(days)s days.","%(posters)s most active posters from last %(days)s days.",this.props.count);return interpolate(e,{posters:this.props.count,days:this.props.trackedPeriod},!0)}},{key:"render",value:function(){return u["default"].createElement("div",{className:"active-posters-list"},u["default"].createElement("div",{className:"container"},u["default"].createElement("p",{className:"lead"},this.getLeadMessage()),u["default"].createElement("div",{className:"active-posters ui-ready"},u["default"].createElement("ul",{className:"list-group"},this.props.users.map(function(e,t){return u["default"].createElement(f["default"],{user:e,rank:e.rank,counter:t+1,key:e.id})})))))}}]),t}(u["default"].Component);r["default"]=d},{"./list-item":143,react:"react"}],146:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("./list-empty"),f=n(c),d=e("./list-preview"),p=n(d),h=e("./list-ready"),m=n(h),b=e("../../../index"),y=n(b),g=e("../../../reducers/users"),v=e("../../../services/polls"),_=n(v),w=e("../../../services/store"),E=n(w),O=e("../../../services/page-title"),k=n(O),N=function(e){function t(e){a(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.update=function(e){E["default"].dispatch((0,g.hydrate)(e.results)),r.setState({isLoaded:!0,trackedPeriod:e.tracked_period,count:e.count})},y["default"].has("USERS")?r.initWithPreloadedData(y["default"].pop("USERS")):r.initWithoutPreloadedData(),r.startPolling(),r}return s(t,e),i(t,[{key:"initWithPreloadedData",value:function(e){this.state={isLoaded:!0,trackedPeriod:e.tracked_period,count:e.count},E["default"].dispatch((0,g.hydrate)(e.results))}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1}}},{key:"startPolling",value:function(){_["default"].start({poll:"active-posters",url:y["default"].get("USERS_API"),data:{list:"active"},frequency:9e4,update:this.update})}},{key:"componentDidMount",value:function(){k["default"].set({title:this.props.route.extra.name,parent:gettext("Users")})}},{key:"componentWillUnmount",value:function(){_["default"].stop("active-posters")}},{key:"render",value:function(){return this.state.isLoaded?this.state.count>0?u["default"].createElement(m["default"],{users:this.props.users,trackedPeriod:this.state.trackedPeriod,count:this.state.count}):u["default"].createElement(f["default"],{trackedPeriod:this.state.trackedPeriod}):u["default"].createElement(p["default"],null)}}]),t}(u["default"].Component);r["default"]=N},{"../../../index":155,"../../../reducers/users":163,"../../../services/page-title":171,"../../../services/polls":172,"../../../services/store":174,"./list-empty":141,"./list-preview":144,"./list-ready":145,react:"react"}],147:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0}),r.CompactNav=r.TabsNav=void 0;var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("react-router"),f=e("../li"),d=n(f),p=e("../../index"),h=(n(p),function(e,t){var r=e;return r+="rank"===t.component?t.slug:t.component,r+"/"}),m=function(e,t,r){return t.map(function(t){var n=h(e,t);return u["default"].createElement(d["default"],{path:n,key:n},u["default"].createElement(c.Link,{to:n,onClick:r},t.name))})};r.TabsNav=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("ul",{className:"nav nav-pills"},m(this.props.baseUrl,this.props.lists))}}]),t}(u["default"].Component),r.CompactNav=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("ul",{className:"dropdown-menu",role:"menu"},m(this.props.baseUrl,this.props.lists,this.props.hideNav))}}]),t}(u["default"].Component)},{"../../index":155,"../li":57,react:"react","react-router":"react-router"}],148:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("../../users-list/root"),f=n(c),d=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"render",value:function(){return u["default"].createElement("div",null,u["default"].createElement(f["default"],{isLoaded:!1,cols:3,showStatus:!0}))}}]),t}(u["default"].Component);r["default"]=d},{"../../users-list/root":138,react:"react"}],149:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("./pager"),f=n(c),d=e("../../users-list/root"),p=n(d),h=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getPager",value:function(){return this.props.pages>1?u["default"].createElement(f["default"],this.props):null}},{key:"render",value:function(){return u["default"].createElement("div",null,u["default"].createElement(p["default"],{users:this.props.users,showStatus:!0,cols:3,isLoaded:!0}),this.getPager())}}]),t}(u["default"].Component);r["default"]=h},{"../../users-list/root":138,"./pager":150,react:"react"}],150:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("react-router"),f=e("../../../utils/reset-scroll"),d=n(f),p=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getPreviousPage",value:function(){if(this.props.previous||this.props.first){var e=this.props.baseUrl;return this.props.previous&&(e+=this.props.previous+"/"),u["default"].createElement("li",{className:"previous"},u["default"].createElement(c.Link,{to:e,onClick:d["default"]},u["default"].createElement("span",{"aria-hidden":"true",className:"material-icon"},"arrow_back")))}return null}},{key:"getNextPage",value:function(){if(this.props.next){var e=this.props.baseUrl+this.props.next+"/";return u["default"].createElement("li",{className:"next"},u["default"].createElement(c.Link,{to:e,onClick:d["default"]},u["default"].createElement("span",{"aria-hidden":"true",className:"material-icon"},"arrow_forward")))}return null}},{key:"getProgessBar",value:function(){var e=this;return u["default"].createElement("ul",{className:"pager-progress-bar"},this.props.page_range.map(function(t){var r=t===e.props.page?"active":null,n=e.props.baseUrl;return t>1&&(n+=t+"/"),u["default"].createElement("li",{key:t,className:r},u["default"].createElement(c.Link,{to:n,onClick:d["default"]},t))}))}},{key:"render",value:function(){return u["default"].createElement("div",{className:"pager-undercontent"},u["default"].createElement("nav",null,u["default"].createElement("ul",{className:"pager"},this.getPreviousPage(),this.getNextPage()),this.getProgessBar()))}}]),t}(u["default"].Component);r["default"]=p},{"../../../utils/reset-scroll":185,react:"react","react-router":"react-router"}],151:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),u=e("react"),c=n(u),f=e("../../page-lead"),d=n(f),p=e("./list"),h=n(p),m=e("./list-loading"),b=n(m),y=e("../../../index"),g=n(y),v=e("../../../reducers/users"),_=e("../../../services/polls"),w=n(_),E=e("../../../services/store"),O=n(E),k=e("../../../services/page-title"),N=n(k),j=function(e){function t(e){a(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.update=function(e){O["default"].dispatch((0,v.hydrate)(e.results)),e.isLoaded=!0,r.setState(e)},g["default"].has("USERS")?r.initWithPreloadedData(g["default"].pop("USERS")):r.initWithoutPreloadedData(),r.startPolling(e.params.page||1),r}return s(t,e),l(t,[{key:"initWithPreloadedData",value:function(e){this.state=Object.assign(e,{isLoaded:!0}),O["default"].dispatch((0,v.hydrate)(e.results))}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1}}},{key:"startPolling",value:function(e){w["default"].start({poll:"rank-users",url:g["default"].get("USERS_API"),data:{rank:this.props.route.rank.id,page:e},frequency:9e4,update:this.update})}},{key:"componentDidMount",value:function(){N["default"].set({title:this.props.route.rank.name,page:this.props.params.page||null,parent:gettext("Users")})}},{key:"componentWillUnmount",value:function(){w["default"].stop("rank-users")}},{key:"componentWillReceiveProps",value:function(e){this.props.params.page!==e.params.page&&(N["default"].set({title:this.props.route.rank.name,page:e.params.page||null,parent:gettext("Users")}),this.setState({isLoaded:!1}),w["default"].stop("rank-users"),this.startPolling(e.params.page))}},{key:"getClassName",value:function(){return this.props.route.rank.css_class?"rank-users-list rank-users-"+this.props.route.rank.css_class:"rank-users-list"}},{key:"getRankDescription",value:function(){return this.props.route.rank.description?c["default"].createElement("div",{className:"rank-description"},c["default"].createElement(d["default"],{copy:this.props.route.rank.description.html})):null}},{key:"getComponent",value:function(){if(this.state.isLoaded){if(this.state.count>0){var e=g["default"].get("USERS_LIST_URL")+this.props.route.rank.slug+"/";return c["default"].createElement(h["default"],i({baseUrl:e,users:this.props.users},this.state))}return c["default"].createElement("p",{className:"lead"},gettext("There are no users with this rank at the moment."))}return c["default"].createElement(b["default"],null)}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getClassName()},c["default"].createElement("div",{className:"container"},this.getRankDescription(),this.getComponent()))}}]),t}(c["default"].Component);r["default"]=j},{"../../../index":155,"../../../reducers/users":163,"../../../services/page-title":171,"../../../services/polls":172,"../../../services/store":174,"../../page-lead":71,"./list":149,"./list-loading":148,react:"react"}],152:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{tick:e.tick.tick,user:e.auth.user,users:e.users}}function l(){var e=[];return O["default"].get("USERS_LISTS").forEach(function(t){"rank"===t.component?(e.push({path:O["default"].get("USERS_LIST_URL")+t.slug+"/:page/",component:(0,d.connect)(i)(v["default"]),rank:t}),e.push({path:O["default"].get("USERS_LIST_URL")+t.slug+"/",component:(0,d.connect)(i)(v["default"]),rank:t})):"active-posters"===t.component&&e.push({path:O["default"].get("USERS_LIST_URL")+t.component+"/",component:(0,d.connect)(i)(y["default"]),extra:{name:t.name}})}),e}Object.defineProperty(r,"__esModule",{value:!0});var u=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}();r.select=i,r.paths=l;var c=e("react"),f=n(c),d=e("react-redux"),p=e("../dropdown-toggle"),h=n(p),m=e("./navs"),b=e("./active-posters/root"),y=n(b),g=e("./rank/root"),v=n(g),_=e("../with-dropdown"),w=n(_),E=e("../../index"),O=n(E),k=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(t,[{key:"render",value:function(){return f["default"].createElement("div",{className:"page page-users-lists"},f["default"].createElement("div",{className:"page-header tabbed"},f["default"].createElement("div",{className:"container"},f["default"].createElement("h1",{className:"pull-left"},gettext("Users")),f["default"].createElement(h["default"],{toggleNav:this.toggleNav,dropdown:this.state.dropdown})),f["default"].createElement("div",{className:"page-tabs hidden-xs hidden-sm"},f["default"].createElement("div",{className:"container"},f["default"].createElement(m.TabsNav,{lists:O["default"].get("USERS_LISTS"),baseUrl:O["default"].get("USERS_LIST_URL")})))),f["default"].createElement("div",{className:this.getCompactNavClassName()},f["default"].createElement(m.CompactNav,{lists:O["default"].get("USERS_LISTS"),baseUrl:O["default"].get("USERS_LIST_URL"),hideNav:this.hideNav})),this.props.children)}}]),t}(w["default"]);r["default"]=k},{"../../index":155,"../dropdown-toggle":54,"../with-dropdown":153,"./active-posters/root":146,"./navs":147,"./rank/root":151,react:"react","react-redux":"react-redux"}],153:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=function(e){function t(e){a(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.toggleNav=function(){r.setState({dropdown:!r.state.dropdown})},r.hideNav=function(){r.setState({dropdown:!1})},r.state={dropdown:!1},r}return s(t,e),i(t,[{key:"getCompactNavClassName",value:function(){return this.state.dropdown?"compact-nav open":"compact-nav"}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],154:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=function(e){function t(){var e,r,n,s;a(this,t);for(var i=arguments.length,l=Array(i),u=0;i>u;u++)l[u]=arguments[u];return r=n=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(l))),n.toggle=function(){n.props.onChange({target:{value:!n.props.value}})},s=r,o(n,s)}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.value?"btn btn-yes-no btn-yes-no-on":"btn btn-yes-no btn-yes-no-off"}},{key:"getIcon",value:function(){return this.props.value?this.props.iconOn||"check_box":this.props.iconOff||"check_box_outline_blank"}},{key:"getLabel",value:function(){return this.props.value?this.props.labelOn||gettext("yes"):this.props.labelOff||gettext("no")}},{key:"render",value:function(){return u["default"].createElement("button",{type:"button",onClick:this.toggle,className:this.getClassName(),id:this.props.id||null,"aria-describedby":this.props["aria-describedby"]||null,disabled:this.props.disabled||!1},u["default"].createElement("span",{className:"material-icon"},this.getIcon()),this.getLabel())}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],155:[function(e,t,r){(function(t){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0}),r.Misago=void 0;var o=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),s=e("./utils/ordered-list"),i=n(s),l=r.Misago=function(){function e(){a(this,e),this._initializers=[],this._context={}}return o(e,[{key:"addInitializer",value:function(e){this._initializers.push({key:e.name,item:e.initializer,after:e.after,before:e.before})}},{key:"init",value:function(e){var t=this;this._context=e;var r=new i["default"](this._initializers).orderedValues();r.forEach(function(e){e(t)})}},{key:"has",value:function(e){return!!this._context[e]}},{key:"get",value:function(e,t){return this.has(e)?this._context[e]:t||void 0}},{key:"pop",value:function(e){if(this.has(e)){var t=this._context[e];return this._context[e]=null,t}}}]),e}(),u=new l;t.misago=u,r["default"]=u}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./utils/ordered-list":183}],156:[function(e,t,r){"use strict";function n(e){return{type:u,patch:e}}function a(e){return{type:c,user:e}}function o(){var e=arguments.length<=0||void 0===arguments[0]?!1:arguments[0];return{type:f,soft:e}}function s(){var e=arguments.length<=0||void 0===arguments[0]?l:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];switch(t.type){case u:var r=Object.assign({},e);return r.user=Object.assign({},e.user,t.patch),r;case c:return Object.assign({},e,{signedIn:t.user});case f:return Object.assign({},e,{isAuthenticated:!1,isAnonymous:!0,signedOut:!t.soft});case i.UPDATE_AVATAR:if(e.isAuthenticated&&e.user.id===t.userId){var n=Object.assign({},e);return n.user=Object.assign({},e.user,{avatar_hash:t.avatarHash}),n}return e;case i.UPDATE_USERNAME:if(e.isAuthenticated&&e.user.id===t.userId){var a=Object.assign({},e);return a.user=Object.assign({},e.user,{username:t.username,slug:t.slug}),a}return e;default:return e}}Object.defineProperty(r,"__esModule",{value:!0}),r.SIGN_OUT=r.SIGN_IN=r.PATCH_USER=r.initialState=void 0,r.patch=n,r.signIn=a,r.signOut=o,r["default"]=s;var i=e("./users"),l=r.initialState={signedIn:!1,signedOut:!1},u=r.PATCH_USER="PATCH_USER",c=r.SIGN_IN="SIGN_IN",f=r.SIGN_OUT="SIGN_OUT"},{"./users":163}],157:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e){return{type:c,profile:e}}function o(e){return{type:f,patch:e}}function s(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];switch(t.type){case c:return Object.assign({},t.profile,{joined_on:(0,l["default"])(t.profile.joined_on),status:(0,u.hydrateStatus)(t.profile.status)});case f:return Object.assign({},e,t.patch);case u.UPDATE_AVATAR:return e.id===t.userId?Object.assign({},e,{avatar_hash:t.avatarHash}):e;case u.UPDATE_USERNAME:return e.id===t.userId?Object.assign({},e,{username:t.username,slug:t.slug}):e;default:return e}}Object.defineProperty(r,"__esModule",{value:!0}),r.PATCH_PROFILE=r.HYDRATE_PROFILE=void 0,r.hydrate=a,r.patch=o,r["default"]=s;var i=e("moment"),l=n(i),u=e("./users"),c=r.HYDRATE_PROFILE="HYDRATE_PROFILE",f=r.PATCH_PROFILE="PATCH_PROFILE"},{"./users":163,moment:"moment"}],158:[function(e,t,r){"use strict";function n(e){return{type:l,items:e}}function a(){return{type:u}}function o(e){return{type:c,item:e}}function s(){var e=arguments.length<=0||void 0===arguments[0]?[]:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];switch(t.type){case l:return t.items;case u:return[];case c:return(0,i.toggle)(e,t.item);default:return e}}Object.defineProperty(r,"__esModule",{value:!0}),r.SELECT_ITEM=r.SELECT_NONE=r.SELECT_ALL=void 0,r.all=n,r.none=a,r.item=o,r["default"]=s;var i=e("../utils/sets"),l=r.SELECT_ALL="SELECT_ALL",u=r.SELECT_NONE="SELECT_NONE",c=r.SELECT_ITEM="SELECT_ITEM"},{"../utils/sets":187}],159:[function(e,t,r){"use strict";function n(e,t){return{type:i,message:e,messageType:t}}function a(){return{type:l}}function o(){var e=arguments.length<=0||void 0===arguments[0]?s:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return t.type===i?{type:t.messageType,message:t.message,isVisible:!0}:t.type===l?Object.assign({},e,{isVisible:!1}):e}Object.defineProperty(r,"__esModule",{value:!0}),r.showSnackbar=n,r.hideSnackbar=a,r["default"]=o;var s=r.initialState={type:"info",message:"",isVisible:!1},i=r.SHOW_SNACKBAR="SHOW_SNACKBAR",l=r.HIDE_SNACKBAR="HIDE_SNACKBAR"},{}],160:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){return{type:g,items:e,sorting:t}}function o(e){return{type:v,thread:e}}function s(e,t){return{type:_,category:e,categoriesMap:t}}function i(e){return{type:w,items:e}}function l(e,t){var r=arguments.length<=2||void 0===arguments[2]?null:arguments[2];return{type:E,thread:e,patch:t,sorting:r}}function u(){return{type:O}}function c(e){return{type:k,sorting:e}}function f(e){var t=[];return N.forEach(function(r){e[r]&&t.push(r)}),t}function d(e){return Object.assign({},e,{started_on:(0,m["default"])(e.started_on),last_post_on:(0,m["default"])(e.last_post_on),moderation:f(e.acl)})}function p(){var e=arguments.length<=0||void 0===arguments[0]?[]:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];switch(t.type){case g:var r=(0,y["default"])(t.items.map(d),e);return r.sort(t.sorting);case v:return e.filter(function(e){return e.id!==t.thread.id});case _:return e.filter(function(e){var r=t.categoriesMap[e.category];
-return r.lft>=t.category.lft&&r.rght<=t.category.rght?!0:2==e.weight});case w:return t.items.map(d);case E:var n=e.map(function(e){return e.id===t.thread.id?Object.assign({},e,t.patch):e});return t.sorting?n.sort(t.sorting):n;case O:return e.map(function(e){return Object.assign({},e,{is_read:!0})});case k:return e.sort(t.sorting);default:return e}}Object.defineProperty(r,"__esModule",{value:!0}),r.MODERATION_PERMISSIONS=r.SORT_THREADS=r.READ_THREADS=r.PATCH_THREAD=r.HYDRATE_THREADS=r.FILTER_THREADS=r.DELETE_THREAD=r.APPEND_THREADS=void 0,r.append=a,r.deleteThread=o,r.filterThreads=s,r.hydrate=i,r.patch=l,r.read=u,r.sort=c,r.getThreadModerationOptions=f,r.hydrateThread=d,r["default"]=p;var h=e("moment"),m=n(h),b=e("../utils/concat-unique"),y=n(b),g=r.APPEND_THREADS="APPEND_THREADS",v=r.DELETE_THREAD="DELETE_THREAD",_=r.FILTER_THREADS="FILTER_THREADS",w=r.HYDRATE_THREADS="HYDRATE_THREADS",E=r.PATCH_THREAD="PATCH_THREAD",O=r.READ_THREADS="READ_THREADS",k=r.SORT_THREADS="SORT_THREADS",N=r.MODERATION_PERMISSIONS=["can_announce","can_approve","can_close","can_hide","can_move","can_merge","can_pin","can_review"]},{"../utils/concat-unique":178,moment:"moment"}],161:[function(e,t,r){"use strict";function n(){return{type:s}}function a(){var e=arguments.length<=0||void 0===arguments[0]?o:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return t.type===s?Object.assign({},e,{tick:e.tick+1}):e}Object.defineProperty(r,"__esModule",{value:!0}),r.doTick=n,r["default"]=a;var o=r.initialState={tick:0},s=r.TICK="TICK"},{}],162:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t,r){return{type:h,change:e,user:t,changedBy:r}}function o(e){return{type:m,items:e}}function s(e){return{type:b,items:e}}function i(e){return Object.assign({},e,{changed_on:(0,c["default"])(e.changed_on)})}function l(){var e=arguments.length<=0||void 0===arguments[0]?[]:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];switch(t.type){case h:var r=e.slice();return r.unshift({id:Math.floor(Date.now()/1e3),changed_by:t.changedBy,changed_by_username:t.changedBy.username,changed_on:(0,c["default"])(),new_username:t.change.username,old_username:t.user.username}),r;case m:return(0,p["default"])(e,t.items.map(i));case b:return t.items.map(i);case f.UPDATE_AVATAR:return e.map(function(e){return e=Object.assign({},e),e.changed_by&&e.changed_by.id===t.userId&&(e.changed_by=Object.assign({},e.changed_by,{avatar_hash:t.avatarHash})),e});case f.UPDATE_USERNAME:return e.map(function(e){return e=Object.assign({},e),e.changed_by&&e.changed_by.id===t.userId&&(e.changed_by=Object.assign({},e.changed_by,{username:t.username,slug:t.slug})),Object.assign({},e)});default:return e}}Object.defineProperty(r,"__esModule",{value:!0}),r.HYDRATE_HISTORY=r.APPEND_HISTORY=r.ADD_NAME_CHANGE=void 0,r.addNameChange=a,r.append=o,r.hydrate=s,r.hydrateNamechange=i,r["default"]=l;var u=e("moment"),c=n(u),f=e("./users"),d=e("../utils/concat-unique"),p=n(d),h=r.ADD_NAME_CHANGE="ADD_NAME_CHANGE",m=r.APPEND_HISTORY="APPEND_HISTORY",b=r.HYDRATE_HISTORY="HYDRATE_HISTORY"},{"../utils/concat-unique":178,"./users":163,moment:"moment"}],163:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e){return{type:m,items:e}}function o(e){return{type:b,items:e}}function s(e){return e?Object.assign({},e,{last_click:e.last_click?(0,d["default"])(e.last_click):null,banned_until:e.banned_until?(0,d["default"])(e.banned_until):null}):null}function i(e){return Object.assign({},e,{joined_on:(0,d["default"])(e.joined_on),status:s(e.status)})}function l(e,t){return{type:y,userId:e.id,avatarHash:t}}function u(e,t,r){return{type:g,userId:e.id,username:t,slug:r}}function c(){var e=arguments.length<=0||void 0===arguments[0]?[]:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];switch(t.type){case m:var r=(0,h["default"])(e,t.items.map(i));return r.sort(function(e,t){return e.username<t.username?-1:e.username>t.username?1:0});case b:return t.items.map(i);case y:return e.map(function(e){return e=Object.assign({},e),e.id===t.userId&&(e.avatar_hash=t.avatarHash),e});default:return e}}Object.defineProperty(r,"__esModule",{value:!0}),r.UPDATE_USERNAME=r.UPDATE_AVATAR=r.HYDRATE_USERS=r.APPEND_USERS=void 0,r.append=a,r.hydrate=o,r.hydrateStatus=s,r.hydrateUser=i,r.updateAvatar=l,r.updateUsername=u,r["default"]=c;var f=e("moment"),d=n(f),p=e("../utils/concat-unique"),h=n(p),m=r.APPEND_USERS="APPEND_USERS",b=r.HYDRATE_USERS="HYDRATE_USERS",y=r.UPDATE_AVATAR="UPDATE_AVATAR",g=r.UPDATE_USERNAME="UPDATE_USERNAME"},{"../utils/concat-unique":178,moment:"moment"}],164:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},o=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),s=r.Ajax=function(){function e(){n(this,e),this._cookieName=null,this._csrfToken=null,this._locks={}}return o(e,[{key:"init",value:function(e){this._cookieName=e,this._csrfToken=this.getCsrfToken()}},{key:"getCsrfToken",value:function(){if(-1!==document.cookie.indexOf(this._cookieName)){var e=new RegExp(this._cookieName+"=([^;]*)"),t=document.cookie.match(e)[0];return t?t.split("=")[1]:null}return null}},{key:"request",value:function(e,t,r){var n=this;return new Promise(function(a,o){var s={url:t,method:e,headers:{"X-CSRFToken":n._csrfToken},data:r?JSON.stringify(r):null,contentType:"application/json; charset=utf-8",dataType:"json",success:function(e){a(e)},error:function(e){var t=e.responseJSON||{};t.status=e.status,0===t.status&&(t.detail=gettext("Lost connection with application.")),404===t.status&&(t.detail&&"NOT FOUND"!==t.detail||(t.detail=gettext("Action link is invalid."))),500!==t.status||t.detail||(t.detail=gettext("Unknown error has occured.")),t.statusText=e.statusText,o(t)}};$.ajax(s)})}},{key:"get",value:function(e,t,r){var n=this;if(t&&(e+="?"+$.param(t)),!r)return this.request("GET",e);var o=function(){var t=n;return n._locks[r]&&(n._locks[r].url=e),n._locks[r]&&n._locks[r].waiter?{v:{then:function(){}}}:n._locks[r]&&n._locks[r].wait?(n._locks[r].waiter=!0,{v:new Promise(function(n,a){var o=function s(e){t._locks[r].wait?window.setTimeout(function(){s(e)},300):t._locks[r].url!==e?s(t._locks[r].url):(t._locks[r].waiter=!1,t.request("GET",t._locks[r].url).then(function(a){t._locks[r].url===e?n(a):(t._locks[r].waiter=!0,s(t._locks[r].url))},function(n){t._locks[r].url===e?a(n):(t._locks[r].waiter=!0,s(t._locks[r].url))}))};window.setTimeout(function(){o(e)},300)})}):(n._locks[r]={url:e,wait:!0,waiter:!1},{v:new Promise(function(n,a){t.request("GET",e).then(function(a){t._locks[r].wait=!1,t._locks[r].url===e&&n(a)},function(n){t._locks[r].wait=!1,t._locks[r].url===e&&a(n)})})})}();return"object"===("undefined"==typeof o?"undefined":a(o))?o.v:void 0}},{key:"post",value:function(e,t){return this.request("POST",e,t)}},{key:"patch",value:function(e,t){return this.request("PATCH",e,t)}},{key:"put",value:function(e,t){return this.request("PUT",e,t)}},{key:"delete",value:function(e){return this.request("DELETE",e)}},{key:"upload",value:function(e,t,r){var n=this;return new Promise(function(a,o){var s={url:e,method:"POST",headers:{"X-CSRFToken":n._csrfToken},data:t,contentType:!1,processData:!1,xhr:function i(){var i=new window.XMLHttpRequest;return i.upload.addEventListener("progress",function(e){e.lengthComputable&&r(Math.round(e.loaded/e.total*100))},!1),i},success:function(e){a(e)},error:function(e){var t=e.responseJSON||{};t.status=e.status,0===t.status&&(t.detail=gettext("Lost connection with application.")),404===t.status&&(t.detail&&"NOT FOUND"!==t.detail||(t.detail=gettext("Action link is invalid."))),500!==t.status||t.detail||(t.detail=gettext("Unknown error has occured.")),t.statusText=e.statusText,o(t)}};$.ajax(s)})}}]),e}();r["default"]=new s},{}],165:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0}),r.Auth=void 0;var a=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),o=e("../reducers/auth"),s=r.Auth=function(){function e(){n(this,e)}return a(e,[{key:"init",value:function(e,t,r){this._store=e,this._local=t,this._modal=r,this.syncSession(),this.watchState()}},{key:"syncSession",value:function(){var e=this._store.getState().auth;e.isAuthenticated?this._local.set("auth",{isAuthenticated:!0,username:e.user.username}):this._local.set("auth",{isAuthenticated:!1})}},{key:"watchState",value:function(){var e=this;this._local.watch("auth",function(t){t.isAuthenticated?e._store.dispatch((0,o.signIn)({username:t.username})):e._store.dispatch((0,o.signOut)())}),this._modal.hide()}},{key:"signIn",value:function(e){this._store.dispatch((0,o.signIn)(e)),this._local.set("auth",{isAuthenticated:!0,username:e.username}),this._modal.hide()}},{key:"signOut",value:function(){this._store.dispatch((0,o.signOut)()),this._local.set("auth",{isAuthenticated:!1}),this._modal.hide()}},{key:"softSignOut",value:function(){this._store.dispatch((0,o.signOut)(!0)),this._local.set("auth",{isAuthenticated:!1}),this._modal.hide()}}]),e}();r["default"]=new s},{"../reducers/auth":156}],166:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0}),r.Captcha=r.ReCaptcha=r.ReCaptchaComponent=r.QACaptcha=r.NoCaptcha=r.BaseCaptcha=void 0;var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=e("react"),u=n(l),c=e("../components/form-group"),f=n(c),d=r.BaseCaptcha=function(){function e(){s(this,e)}return i(e,[{key:"init",value:function(e,t,r,n){this._context=e,this._ajax=t,this._include=r,this._snackbar=n}}]),e}(),p=r.NoCaptcha=function(e){function t(){return s(this,t),a(this,Object.getPrototypeOf(t).apply(this,arguments))}return o(t,e),i(t,[{key:"load",value:function(){return new Promise(function(e){e()})}},{key:"validator",value:function(){return null}},{key:"component",value:function(){return null}}]),t}(d),h=r.QACaptcha=function(e){function t(){return s(this,t),a(this,Object.getPrototypeOf(t).apply(this,arguments))}return o(t,e),i(t,[{key:"load",value:function(){var e=this;return new Promise(function(t,r){e._ajax.get(e._context.get("CAPTCHA_API")).then(function(r){e.question=r.question,e.helpText=r.help_text,t()},function(){e._snackbar.error(gettext("Failed to load CAPTCHA.")),r()})})}},{key:"validator",value:function(){return[]}},{key:"component",value:function(e){return u["default"].createElement(f["default"],{label:this.question,"for":"id_captcha",labelClass:e.labelClass||"col-sm-4",controlClass:e.controlClass||"col-sm-8",validation:e.form.state.errors.captcha,helpText:this.helpText||null},u["default"].createElement("input",{type:"text",id:"id_captcha",className:"form-control","aria-describedby":"id_captcha_status",disabled:e.form.state.isLoading,onChange:e.form.bindInput("captcha"),value:e.form.state.captcha}))}}]),t}(d),m=r.ReCaptchaComponent=function(e){function t(){return s(this,t),a(this,Object.getPrototypeOf(t).apply(this,arguments))}return o(t,e),i(t,[{key:"componentDidMount",value:function(){var e=this;grecaptcha.render("recaptcha",{sitekey:this.props.siteKey,callback:function(t){e.props.binding({target:{value:t}})}})}},{key:"render",value:function(){return u["default"].createElement("div",{id:"recaptcha"})}}]),t}(u["default"].Component),b=r.ReCaptcha=function(e){function t(){return s(this,t),a(this,Object.getPrototypeOf(t).apply(this,arguments))}return o(t,e),i(t,[{key:"load",value:function(){return this._include.include("https://www.google.com/recaptcha/api.js",!0),new Promise(function(e){var t=function r(){"undefined"==typeof grecaptcha?window.setTimeout(function(){r()},200):e()};t()})}},{key:"validator",value:function(){return[]}},{key:"component",value:function(e){return u["default"].createElement(f["default"],{label:gettext("Captcha"),"for":"id_captcha",labelClass:e.labelClass||"col-sm-4",controlClass:e.controlClass||"col-sm-8",validation:e.form.state.errors.captcha,helpText:gettext("Please solve the quick test.")},u["default"].createElement(m,{siteKey:this._context.get("SETTINGS").recaptcha_site_key,binding:e.form.bindInput("captcha")}))}}]),t}(d),y=r.Captcha=function(){function e(){s(this,e)}return i(e,[{key:"init",value:function(e,t,r,n){switch(e.get("SETTINGS").captcha_type){case"no":this._captcha=new p;break;case"qa":this._captcha=new h;break;case"re":this._captcha=new b}this._captcha.init(e,t,r,n)}},{key:"load",value:function(){return this._captcha.load()}},{key:"validator",value:function(){return this._captcha.validator()}},{key:"component",value:function(e){return this._captcha.component(e)}}]),e}();r["default"]=new y},{"../components/form-group":55,react:"react"}],167:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),o=r.Include=function(){function e(){n(this,e)}return a(e,[{key:"init",value:function(e){this._staticUrl=e,this._included=[]}},{key:"include",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?!1:arguments[1];-1===this._included.indexOf(e)&&(this._included.push(e),this._include(e,t))}},{key:"_include",value:function(e,t){$.ajax({url:(t?"":this._staticUrl)+e,cache:!0,dataType:"script"})}}]),e}();r["default"]=new o},{}],168:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),o=window.localStorage,s=r.LocalStorage=function(){function e(){n(this,e)}return a(e,[{key:"init",value:function(e){var t=this;this._prefix=e,this._watchers=[],window.addEventListener("storage",function(e){var r=JSON.parse(e.newValue);t._watchers.forEach(function(t){t.key===e.key&&e.oldValue!==e.newValue&&t.callback(r)})})}},{key:"set",value:function(e,t){o.setItem(this._prefix+e,JSON.stringify(t))}},{key:"get",value:function(e){var t=o.getItem(this._prefix+e);return t?JSON.parse(t):null}},{key:"watch",value:function(e,t){this._watchers.push({key:this._prefix+e,callback:t})}}]),e}();r["default"]=new s},{}],169:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0}),r.MobileNavbarDropdown=void 0;var o=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),s=e("../utils/mount-component"),i=n(s),l=r.MobileNavbarDropdown=function(){function e(){a(this,e)}return o(e,[{key:"init",value:function(e){this._element=e,this._component=null}},{key:"show",value:function(e){this._component===e?this.hide():(this._component=e,(0,i["default"])(e,this._element.id),$(this._element).addClass("open"))}},{key:"showConnected",value:function(e,t){this._component===e?this.hide():(this._component=e,(0,i["default"])(t,this._element.id,!0),$(this._element).addClass("open"))}},{key:"hide",value:function(){$(this._element).removeClass("open"),this._component=null}}]),e}();r["default"]=new l},{"../utils/mount-component":182}],170:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0}),r.Modal=void 0;var o=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),s=e("react-dom"),i=n(s),l=e("../utils/mount-component"),u=n(l),c=r.Modal=function(){function e(){a(this,e)}return o(e,[{key:"init",value:function(e){var t=this;this._element=e,this._modal=$(e).modal({show:!1}),this._modal.on("hidden.bs.modal",function(){i["default"].unmountComponentAtNode(t._element)})}},{key:"show",value:function(e){(0,u["default"])(e,this._element.id),this._modal.modal("show")}},{key:"hide",value:function(){this._modal.modal("hide")}}]),e}();r["default"]=new c},{"../utils/mount-component":182,"react-dom":"react-dom"}],171:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),o=r.PageTitle=function(){function e(){n(this,e)}return a(e,[{key:"init",value:function(e,t){this._indexTitle=e,this._forumName=t}},{key:"set",value:function(e){if(!e)return void(document.title=this._indexTitle||this._forumName);"string"==typeof e&&(e={title:e});var t=e.title;if(e.page){var r=interpolate(gettext("page: %(page)s"),{page:e.page},!0);t+=" ("+r+")"}e.parent&&(t+=" | "+e.parent),document.title=t+" | "+this._forumName}}]),e}();r["default"]=new o},{}],172:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),o=r.Polls=function(){function e(){n(this,e)}return a(e,[{key:"init",value:function(e,t){this._ajax=e,this._snackbar=t,this._polls={}}},{key:"start",value:function(e){var t=this,r=function n(){t._polls[e.poll]=e,t._ajax.get(e.url,e.data||null).then(function(r){t._polls[e.poll]._stopped||(e.update(r),t._polls[e.poll].timeout=window.setTimeout(n,e.frequency))},function(r){t._polls[e.poll]._stopped||(e.error?e.error(r):t._snackbar.apiError(r))})};r()}},{key:"stop",value:function(e){this._polls[e]&&(window.clearTimeout(this._polls[e].timeout),this._polls[e]._stopped=!0)}}]),e}();r["default"]=new o},{}],173:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0}),r.Snackbar=void 0;var a=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),o=e("../reducers/snackbar"),s=300,i=5e3,l=r.Snackbar=function(){function e(){n(this,e)}return a(e,[{key:"init",value:function(e){this._store=e,this._timeout=null}},{key:"alert",value:function(e,t){var r=this;this._timeout?(window.clearTimeout(this._timeout),this._store.dispatch((0,o.hideSnackbar)()),this._timeout=window.setTimeout(function(){r._timeout=null,r.alert(e,t)},s)):(this._store.dispatch((0,o.showSnackbar)(e,t)),this._timeout=window.setTimeout(function(){r._store.dispatch((0,o.hideSnackbar)()),r._timeout=null},i))}},{key:"info",value:function(e){this.alert(e,"info")}},{key:"success",value:function(e){this.alert(e,"success")}},{key:"warning",value:function(e){this.alert(e,"warning")}},{key:"error",value:function(e){this.alert(e,"error")}},{key:"apiError",value:function(e){var t=e.detail;t||(t=404===e.status?gettext("Action link is invalid."):gettext("Unknown error has occured.")),403===e.status&&"Permission denied"===t&&(t=gettext("You don't have permission to perform this action.")),this.error(t)}}]),e}();r["default"]=new l},{"../reducers/snackbar":159}],174:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0}),r.StoreWrapper=void 0;var a=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),o=e("redux"),s=r.StoreWrapper=function(){function e(){n(this,e),this._store=null,this._reducers={},this._initialState={}}return a(e,[{key:"addReducer",value:function(e,t,r){this._reducers[e]=t,this._initialState[e]=r}},{key:"init",value:function(){this._store=(0,o.createStore)((0,o.combineReducers)(this._reducers),this._initialState)}},{key:"getStore",value:function(){return this._store}},{key:"getState",value:function(){return this._store.getState()}},{key:"dispatch",value:function(e){return this._store.dispatch(e)}}]),e}();r["default"]=new s},{redux:"redux"}],175:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),o=r.Zxcvbn=function(){function e(){n(this,e)}return a(e,[{key:"init",value:function(e){this._include=e}},{key:"scorePassword",value:function(e,t){return zxcvbn(e,t).score}},{key:"load",value:function(){return"undefined"==typeof zxcvbn?(this._include.include("misago/js/zxcvbn.js"),this._loadingPromise()):this._loadedPromise()}},{key:"_loadingPromise",value:function(){return new Promise(function(e){var t=function r(){"undefined"==typeof zxcvbn?window.setTimeout(function(){r()},200):e()};t()})}},{key:"_loadedPromise",value:function(){return new Promise(function(e){e()})}}]),e}();r["default"]=new o},{}],176:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=function(e,t){if(u["default"].render(i["default"].createElement(c.Provider,{store:b["default"].getStore()},i["default"].createElement(g,{message:e.message,expires:e.expires_on?(0,o["default"])(e.expires_on):null})),document.getElementById("page-mount")),"undefined"==typeof t||t){var r=h["default"].get("SETTINGS").forum_name;document.title=gettext("You are banned")+" | "+r,window.history.pushState({},"",h["default"].get("BANNED_URL"))}};var a=e("moment"),o=n(a),s=e("react"),i=n(s),l=e("react-dom"),u=n(l),c=e("react-redux"),f=e("../components/banned-page"),d=n(f),p=e("../index"),h=n(p),m=e("../services/store"),b=n(m),y=function(e){return e.tick},g=(0,c.connect)(y)(d["default"])},{"../components/banned-page":39,"../index":155,"../services/store":174,moment:"moment",react:"react","react-dom":"react-dom","react-redux":"react-redux"}],177:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=function(e,t){var r=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],n=[],a=[];if(e.forEach(function(e){a.push(e),a.length===t&&(n.push(a),a=[])}),r!==!1&&a.length>0&&a.length<t)for(var o=a.length;t>o;o++)a.push(r);return a.length&&n.push(a),n}},{}],178:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=function(e,t){var r=[];return e.concat(t).filter(function(e){return-1===r.indexOf(e.id)?(r.push(e.id),!0):!1})}},{}],179:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),o=function(){function e(t,r){n(this,e),this._callback=t,this._count=r}return a(e,[{key:"count",value:function(){this._count-=1,0===this._count&&this._callback()}}]),e}();r["default"]=o},{}],180:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=function(e){return e.replace(/[&<>"']/g,function(e){return n[e]})};var n={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"}},{}],181:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=function(e){return e>1e9?Math.round(100*e/1e9)/100+" GB":e>1e6?Math.round(100*e/1e6)/100+" MB":e>1e3?Math.round(100*e/1e3)/100+" KB":Math.round(100*e)/100+" B"}},{}],182:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=function(e,t){var r=arguments.length<=2||void 0===arguments[2]?!0:arguments[2],n=document.getElementById(t),a=e.props?e:o["default"].createElement(e,null);n&&(r?i["default"].render(o["default"].createElement(l.Provider,{store:c["default"].getStore()},a),n):i["default"].render(a,n))};var a=e("react"),o=n(a),s=e("react-dom"),i=n(s),l=e("react-redux"),u=e("../services/store"),c=n(u)},{"../services/store":174,react:"react","react-dom":"react-dom","react-redux":"react-redux"}],183:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),o=function(){function e(t){n(this,e),this.isOrdered=!1,this._items=t||[]}return a(e,[{key:"add",value:function(e,t,r){this._items.push({key:e,item:t,after:r?r.after||null:null,before:r?r.before||null:null})}},{key:"get",value:function(e,t){for(var r=0;r<this._items.length;r++)if(this._items[r].key===e)return this._items[r].item;return t}},{key:"has",value:function(e){return void 0!==this.get(e)}},{key:"values",value:function t(){for(var t=[],e=0;e<this._items.length;e++)t.push(this._items[e].item);return t}},{key:"order",value:function(e){return this.isOrdered||(this._items=this._order(this._items),this.isOrdered=!0),e||"undefined"==typeof e?this.values():this._items}},{key:"orderedValues",value:function(){return this.order(!0)}},{key:"_order",value:function(e){function t(e){var t=-1;-1===a.indexOf(e.key)&&(e.after?(t=a.indexOf(e.after),-1!==t&&(t+=1)):e.before&&(t=a.indexOf(e.before)),-1!==t&&(n.splice(t,0,e),a.splice(t,0,e.key)))}var r=[];e.forEach(function(e){r.push(e.key)});var n=[],a=[];e.forEach(function(e){e.after||e.before||(n.push(e),a.push(e.key))}),e.forEach(function(e){"_end"===e.before&&(n.push(e),a.push(e.key))});for(var o=200;o>0&&r.length!==a.length;)o-=1,e.forEach(t);return n}}]),e}();r["default"]=o},{}],184:[function(e,t,r){"use strict";function n(e,t){return Math.floor(Math.random()*(t-e+1))+e}function a(e,t){for(var r=new Array(n(e,t)),a=0;a<r.length;a++)r[a]=a;return r}Object.defineProperty(r,"__esModule",{value:!0}),r["int"]=n,r.range=a},{}],185:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=function(){window.scrollTo(0,0)}},{}],186:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=function(e){var t={component:e.component||null,childRoutes:[]};e.root?t.childRoutes=[{path:e.root,onEnter:function(t,r){r(null,e.paths[0].path)}}].concat(e.paths):t.childRoutes=e.paths,i["default"].render(o["default"].createElement(l.Provider,{store:f["default"].getStore()},o["default"].createElement(u.Router,{routes:t,history:u.browserHistory})),d)};var a=e("react"),o=n(a),s=e("react-dom"),i=n(s),l=e("react-redux"),u=e("react-router"),c=e("../services/store"),f=n(c),d=document.getElementById("page-mount")},{"../services/store":174,react:"react","react-dom":"react-dom","react-redux":"react-redux","react-router":"react-router"}],187:[function(e,t,r){"use strict";function n(e,t){if(-1===e.indexOf(t)){var r=e.slice();return r.push(t),r}return e}function a(e,t){return e.indexOf(t)>=0?e.filter(function(e){return e!==t}):e}function o(e,t){if(-1===e.indexOf(t)){var r=e.slice();return r.push(t),r}return e.filter(function(e){return e!==t})}Object.defineProperty(r,"__esModule",{value:!0}),r.push=n,r.remove=a,r.toggle=o},{}],188:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=function(e,t){if(e=(e+"").toLowerCase(),t=(t+"").toLowerCase(),t.length<=0)return 0;for(var r=0,n=0,a=t.length;;){if(n=e.indexOf(t,n),!(n>=0))break;r+=1,n+=a}return r}},{}],189:[function(e,t,r){"use strict";function n(){return function(e){return 0===$.trim(e).length?gettext("This field is required."):void 0}}function a(e){return function(t){return f.test(t)?void 0:e||gettext("Enter a valid email address.")}}function o(e,t){return function(r){var n="",a=$.trim(r).length;return e>a?(n=t?t(e,a):ngettext("Ensure this value has at least %(limit_value)s character (it has %(show_value)s).","Ensure this value has at least %(limit_value)s characters (it has %(show_value)s).",e),interpolate(n,{limit_value:e,show_value:a},!0)):void 0}}function s(e,t){return function(r){var n="",a=$.trim(r).length;return a>e?(n=t?t(e,a):ngettext("Ensure this value has at most %(limit_value)s character (it has %(show_value)s).","Ensure this value has at most %(limit_value)s characters (it has %(show_value)s).",e),interpolate(n,{limit_value:e,show_value:a},!0)):void 0}}function i(e){var t=function(e){return ngettext("Username must be at least %(limit_value)s character long.","Username must be at least %(limit_value)s characters long.",e)};return this.minLength(e.username_length_min,t)}function l(e){var t=function(e){return ngettext("Username cannot be longer than %(limit_value)s character.","Username cannot be longer than %(limit_value)s characters.",e)};return this.maxLength(e.username_length_max,t)}function u(){return function(e){return d.test($.trim(e))?void 0:gettext("Username can only contain latin alphabet letters and digits.");
-}}function c(e){var t=function(e){return ngettext("Valid password must be at least %(limit_value)s character long.","Valid password must be at least %(limit_value)s characters long.",e)};return this.minLength(e.password_length_min,t)}Object.defineProperty(r,"__esModule",{value:!0}),r.required=n,r.email=a,r.minLength=o,r.maxLength=s,r.usernameMinLength=i,r.usernameMaxLength=l,r.usernameContent=u,r.passwordMinLength=c;var f=/^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i,d=new RegExp("^[0-9a-z]+$","i")},{}]},{},[1,2,3,4,17,18,19,20,21,22,23,33,34,35,36,5,6,7,8,9,10,11,12,13,14,15,16,24,25,26,27,28,29,30,31,32]);
+!function e(t,r,a){function n(s,i){if(!r[s]){if(!t[s]){var l="function"==typeof require&&require;if(!i&&l)return l(s,!0);if(o)return o(s,!0);var u=new Error("Cannot find module '"+s+"'");throw u.code="MODULE_NOT_FOUND",u}var c=r[s]={exports:{}};t[s][0].call(c.exports,function(e){var r=t[s][1][e];return n(r?r:e)},c,c.exports,e,t,r,a)}return r[s].exports}for(var o="function"==typeof require&&require,s=0;s<a.length;s++)n(a[s]);return n}({1:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{user:e.auth.user,signedIn:e.auth.signedIn,signedOut:e.auth.signedOut}}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}();r.select=i;var u=e("react"),c=a(u),f=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),l(t,[{key:"refresh",value:function(){window.location.reload()}},{key:"getMessage",value:function(){return this.props.signedIn?interpolate(gettext("You have signed in as %(username)s. Please refresh the page before continuing."),{username:this.props.signedIn.username},!0):this.props.signedOut?interpolate(gettext("%(username)s, you have been signed out. Please refresh the page before continuing."),{username:this.props.user.username},!0):void 0}},{key:"getClassName",value:function(){return this.props.signedIn||this.props.signedOut?"auth-message show":"auth-message"}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getClassName()},c["default"].createElement("div",{className:"container"},c["default"].createElement("p",{className:"lead"},this.getMessage()),c["default"].createElement("p",null,c["default"].createElement("button",{type:"button",className:"btn btn-default",onClick:this.refresh},gettext("Reload page"))," ",c["default"].createElement("span",{className:"hidden-xs hidden-sm text-muted"},gettext("or press F5 key.")))))}}]),t}(c["default"].Component);r["default"]=f},{react:"react"}],2:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=$("base").attr("href")+"user-avatar/",f=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getSrc",value:function(){var e=this.props.size||100,t=c;return t+=this.props.user&&this.props.user.id?this.props.user.avatar_hash+"/"+e+"/"+this.props.user.id+".png":e+".png"}},{key:"render",value:function(){return u["default"].createElement("img",{src:this.getSrc(),className:this.props.className||"user-avatar",title:gettext("User avatar")})}}]),t}(u["default"].Component);r["default"]=f},{react:"react"}],3:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("moment"),u=a(l),c=e("react"),f=a(c),d=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getReasonMessage",value:function(){return this.props.message.html?f["default"].createElement("div",{className:"lead",dangerouslySetInnerHTML:{__html:this.props.message.html}}):f["default"].createElement("p",{className:"lead"},this.props.message.plain)}},{key:"getExpirationMessage",value:function(){if(this.props.expires){if(this.props.expires.isAfter((0,u["default"])())){var e=interpolate(gettext("This ban expires on %(expires_on)s."),{expires_on:this.props.expires.format("LL, LT")},!0),t=interpolate(gettext("This ban expires %(expires_on)s."),{expires_on:this.props.expires.fromNow()},!0);return f["default"].createElement("abbr",{title:e},t)}return gettext("This ban has expired.")}return gettext("This ban is permanent.")}},{key:"render",value:function(){return f["default"].createElement("div",{className:"page page-error page-error-banned"},f["default"].createElement("div",{className:"container"},f["default"].createElement("div",{className:"message-panel"},f["default"].createElement("div",{className:"message-icon"},f["default"].createElement("span",{className:"material-icon"},"highlight_off")),f["default"].createElement("div",{className:"message-body"},this.getReasonMessage(),f["default"].createElement("p",{className:"message-footnote"},this.getExpirationMessage())))))}}]),t}(f["default"].Component);r["default"]=d},{moment:"moment",react:"react"}],4:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("./loader"),f=a(c),d=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){var e="btn "+this.props.className,t=this.props.disabled;return this.props.loading&&(e+=" btn-loading",t=!0),u["default"].createElement("button",{type:this.props.onClick?"button":"submit",className:e,disabled:t,onClick:this.props.onClick},this.props.children,this.props.loading?u["default"].createElement(f["default"],null):null)}}]),t}(u["default"].Component);r["default"]=d,d.defaultProps={className:"btn-default",type:"submit",loading:!1,disabled:!1,onClick:null}},{"./loader":22,react:"react"}],5:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("./last-activity"),f=a(c),d=e("./read-icon"),p=a(d),h=e("./stats"),m=a(h),b=e("./subcategory-subcategories"),y=a(b),g=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.category.css_class?"list-group-item category-subcategory subcategory-"+this.props.category.css_class:"list-group-item category-subcategory"}},{key:"getDescription",value:function(){return this.props.category.description?u["default"].createElement("div",{className:"subcategory-description",dangerouslySetInnerHTML:{__html:this.props.category.description.html}}):null}},{key:"getSubcategories",value:function(){return this.props.category.subcategories.length?u["default"].createElement(y["default"],{categories:this.props.category.subcategories}):null}},{key:"render",value:function(){return u["default"].createElement("li",{className:this.getClassName()},u["default"].createElement("div",{className:"title-row"},u["default"].createElement("h4",null,u["default"].createElement(p["default"],{category:this.props.category}),u["default"].createElement("a",{href:this.props.category.absolute_url,className:"item-title"},this.props.category.name)),u["default"].createElement(m["default"],{category:this.props.category})),u["default"].createElement(f["default"],{category:this.props.category}),this.getDescription(),this.getSubcategories())}}]),t}(u["default"].Component);r["default"]=g;var v=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("ul",{className:"list-group category-subcategories"},this.props.categories.map(function(e){return u["default"].createElement(g,{category:e,key:e.id})}))}}]),t}(u["default"].Component);r["default"]=v},{"./last-activity":7,"./read-icon":8,"./stats":10,"./subcategory-subcategories":11,react:"react"}],6:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("./category-subcategories"),f=a(c),d=e("./last-activity"),p=a(d),h=e("./read-icon"),m=a(h),b=e("./stats"),y=a(b),g=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.category.css_class?"panel panel-default panel-category panel-category-"+this.props.category.css_class:"panel panel-default panel-category"}},{key:"getHeadingClassName",value:function(){return this.props.category.subcategories.length?"panel-heading":"panel-heading heading-alone"}},{key:"getCategoryDescription",value:function(){return this.props.category.description?u["default"].createElement("div",{className:"panel-body category-description",dangerouslySetInnerHTML:{__html:this.props.category.description.html}}):null}},{key:"getSubcategories",value:function(){return this.props.category.subcategories.length?u["default"].createElement(f["default"],{categories:this.props.category.subcategories}):null}},{key:"render",value:function(){return u["default"].createElement("div",{id:"panel-category-"+this.props.category.id,className:this.getClassName()},u["default"].createElement("div",{className:this.getHeadingClassName()},u["default"].createElement("div",{className:"panel-heading-inblock"},u["default"].createElement("div",{className:"panel-heading-top-row"},u["default"].createElement("h3",{className:"panel-title"},u["default"].createElement(m["default"],{category:this.props.category}),u["default"].createElement("a",{href:this.props.category.absolute_url,className:"item-title"},this.props.category.name)),u["default"].createElement(y["default"],{category:this.props.category})),u["default"].createElement(p["default"],{category:this.props.category}))),this.getCategoryDescription(),this.getSubcategories())}}]),t}(u["default"].Component);r["default"]=g},{"./category-subcategories":5,"./last-activity":7,"./read-icon":8,"./stats":10,react:"react"}],7:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0}),r.ProtectedMessage=r.PrivateMessage=r.EmptyMessage=r.LastPostMessage=void 0;var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("../../utils/escape-html"),f=a(c),d='<a href="%(url)s" class="poster-title">%(user)s</a>',p='<span class="poster-title">%(user)s</span>',h='<a href="%(url)s" class="item-title thread-title">%(thread)s</a>',m='<a href="%(url)s" class="last-title" title="%(absolute)s">%(relative)s</a>',b=r.LastPostMessage=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getLastPoster",value:function(){return this.props.category.last_poster_url?interpolate(d,{url:(0,f["default"])(this.props.category.last_poster_url),user:(0,f["default"])(this.props.category.last_poster_name)},!0):interpolate(p,{user:(0,f["default"])(this.props.category.last_poster_name)},!0)}},{key:"getLastThread",value:function(){return interpolate(h,{url:(0,f["default"])(this.props.category.last_thread_url),thread:(0,f["default"])(this.props.category.last_thread_title)},!0)}},{key:"getLastReplyDate",value:function(){return interpolate(m,{url:(0,f["default"])(this.props.category.last_post_url),absolute:(0,f["default"])(this.props.category.last_post_on.format("LLL")),relative:(0,f["default"])(this.props.category.last_post_on.fromNow())},!0)}},{key:"render",value:function(){return u["default"].createElement("p",{className:"category-last-post",dangerouslySetInnerHTML:{__html:interpolate((0,f["default"])(gettext("Last post in %(thread)s by %(user)s %(date)s")),{thread:this.getLastThread(),date:this.getLastReplyDate(),user:this.getLastPoster()},!0)}})}}]),t}(u["default"].Component),y=r.EmptyMessage=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("p",{className:"category-thread-message"},u["default"].createElement("span",{className:"material-icon"},"error_outline"),gettext("This category is empty."))}}]),t}(u["default"].Component),g=r.PrivateMessage=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("p",{className:"category-thread-message"},u["default"].createElement("span",{className:"material-icon"},"info_outline"),gettext("This category is private. You can see only your own threads within it."))}}]),t}(u["default"].Component),v=r.ProtectedMessage=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("p",{className:"category-thread-message"},u["default"].createElement("span",{className:"material-icon"},"highlight_off"),gettext("This category is protected. You can't browse it's contents."))}}]),t}(u["default"].Component),_=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return this.props.category.acl.can_browse?this.props.category.acl.can_see_all_threads?this.props.category.last_thread_title?u["default"].createElement(b,{category:this.props.category}):u["default"].createElement(y,null):u["default"].createElement(g,null):u["default"].createElement(v,null)}}]),t}(u["default"].Component);r["default"]=_},{"../../utils/escape-html":179,react:"react"}],8:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.category.is_read?"read-status item-read":"read-status item-new"}},{key:"getTitle",value:function(){return this.props.category.is_closed?this.props.category.is_read?gettext("This category has no new posts. (closed)"):gettext("This category has new posts. (closed)"):this.props.category.is_read?gettext("This category has no new posts."):gettext("This category has new posts.")}},{key:"getIcon",value:function(){return this.props.category.is_closed?this.props.category.is_read?"lock_outline":"lock":this.props.category.is_read?"chat_bubble_outline":"chat_bubble"}},{key:"render",value:function(){return u["default"].createElement("div",{className:this.getClassName(),title:this.getTitle()},u["default"].createElement("span",{className:"material-icon"},this.getIcon()))}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],9:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{tick:e.tick.tick}}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}();r.select=i;var u=e("moment"),c=a(u),f=e("react"),d=a(f),p=e("./category"),h=a(p),m=e("../../index"),b=a(m),y=e("../../services/polls"),g=a(y),v=function E(e){return Object.assign({},e,{last_post_on:e.last_post_on?(0,c["default"])(e.last_post_on):null,subcategories:e.subcategories.map(E)})},_=function(e){function t(e){n(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.update=function(e){r.setState({categories:e.map(v)})},r.state={categories:b["default"].get("CATEGORIES").map(v)},r.startPolling(b["default"].get("CATEGORIES_API")),r}return s(t,e),l(t,[{key:"startPolling",value:function(e){g["default"].start({poll:"categories",url:e,frequency:18e4,update:this.update})}},{key:"render",value:function(){return d["default"].createElement("div",{className:"categories-list"},this.state.categories.map(function(e){return d["default"].createElement(h["default"],{category:e,key:e.id})}))}}]),t}(d["default"].Component);r["default"]=_},{"../../index":119,"../../services/polls":171,"./category":6,moment:"moment",react:"react"}],10:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getThreadsCount",value:function(){var e=ngettext("%(threads)s thread","%(threads)s threads",this.props.category.threads);return interpolate(e,{threads:this.props.category.threads},!0)}},{key:"getPostsCount",value:function(){var e=ngettext("%(posts)s post","%(posts)s posts",this.props.category.posts);return interpolate(e,{posts:this.props.category.posts},!0)}},{key:"render",value:function(){return u["default"].createElement("ul",{className:"list-inline category-stats"},u["default"].createElement("li",{className:"category-threads"},this.getThreadsCount()),u["default"].createElement("li",{className:"category-posts"},this.getPostsCount()))}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],11:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("./subcategory-subcategories"),f=(a(c),function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.category.css_class?"subcategory subcategory-"+this.props.category.css_class:"subcategory"}},{key:"render",value:function(){return u["default"].createElement("li",null,u["default"].createElement("a",{href:this.props.category.absolute_url,className:this.getClassName()},this.props.category.name))}}]),t}(u["default"].Component));r["default"]=f;var d=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("ul",{className:"list-inline subcategories-list"},this.props.categories.map(function(e){return u["default"].createElement(f,{category:e,key:e.id})}))}}]),t}(u["default"].Component);r["default"]=d},{"./subcategory-subcategories":11,react:"react"}],12:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=function(e){return o["default"].createElement("select",{id:e.id||null,className:e.className||"form-control",value:e.value,onChange:e.onChange},e.choices.map(function(e){return o["default"].createElement("option",{disabled:e.disabled||!1,value:e.value,key:e.value},"- - ".repeat(e.level)+e.label)}))};var n=e("react"),o=a(n)},{react:"react"}],13:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("../avatar"),f=(a(c),e("../button")),d=a(f),p=e("../../services/ajax"),h=a(p),m=e("../../services/snackbar"),b=a(m),y=$("base").attr("href")+"user-avatar",g=function(e){function t(e){n(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.cropAvatar=function(){if(r.state.isLoading)return!1;r.setState({isLoading:!0});var e=r.props.upload?"crop_tmp":"crop_org",t=$(".crop-form");h["default"].post(r.props.user.api_url.avatar,{avatar:e,crop:{offset:t.cropit("offset"),zoom:t.cropit("zoom")}}).then(function(e){r.props.onComplete(e.avatar_hash,e.options),b["default"].success(e.detail)},function(e){400===e.status?(b["default"].error(e.detail),r.setState({isLoading:!1})):r.props.showError(e)})},r.state={isLoading:!1},r}return s(t,e),i(t,[{key:"getAvatarSize",value:function(){return this.props.upload?this.props.options.crop_tmp.size:this.props.options.crop_org.size}},{key:"getAvatarSecret",value:function(){return this.props.upload?this.props.options.crop_tmp.secret:this.props.options.crop_org.secret}},{key:"getAvatarHash",value:function(){return this.props.upload||this.props.user.avatar_hash}},{key:"getImagePath",value:function(){return[y,this.getAvatarSecret()+":"+this.getAvatarHash(),this.props.user.id+".png"].join("/")}},{key:"componentDidMount",value:function(){var e=this,t=$(".crop-form");t.width(this.getAvatarSize()),t.cropit({width:this.getAvatarSize(),height:this.getAvatarSize(),imageState:{src:this.getImagePath()},onImageLoaded:function(){if(e.props.upload){var r=t.cropit("zoom"),a=t.cropit("imageSize");if(a.width>a.height){var n=a.width*r,o=(n-e.getAvatarSize())/-2;t.cropit("offset",{x:o,y:0})}else if(a.width<a.height){var s=a.height*r,i=(s-e.getAvatarSize())/-2;t.cropit("offset",{x:0,y:i})}else t.cropit("offset",{x:0,y:0})}else{var l=e.props.options.crop_org.crop;l&&(t.cropit("zoom",l.zoom),t.cropit("offset",{x:l.x,y:l.y}))}}})}},{key:"componentWillUnmount",value:function(){$(".crop-form").cropit("disable")}},{key:"render",value:function(){return u["default"].createElement("div",null,u["default"].createElement("div",{className:"modal-body modal-avatar-crop"},u["default"].createElement("div",{className:"crop-form"},u["default"].createElement("div",{className:"cropit-preview"}),u["default"].createElement("input",{type:"range",className:"cropit-image-zoom-input"}))),u["default"].createElement("div",{className:"modal-footer"},u["default"].createElement("div",{className:"col-md-6 col-md-offset-3"},u["default"].createElement(d["default"],{onClick:this.cropAvatar,loading:this.state.isLoading,className:"btn-primary btn-block"},this.props.upload?gettext("Set avatar"):gettext("Crop image")),u["default"].createElement(d["default"],{onClick:this.props.showIndex,disabled:this.state.isLoading,className:"btn-default btn-block"},gettext("Cancel")))))}}]),t}(u["default"].Component);r["default"]=g},{"../../services/ajax":163,"../../services/snackbar":172,"../avatar":2,"../button":4,react:"react"}],14:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0}),r.Gallery=r.GalleryItem=void 0;var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("../button"),f=a(c),d=e("../../index"),p=a(d),h=e("../../services/ajax"),m=a(h),b=e("../../services/snackbar"),y=a(b),g=e("../../utils/batch"),v=a(g),_=r.GalleryItem=function(e){
+function t(){var e,r,a,s;n(this,t);for(var i=arguments.length,l=Array(i),u=0;i>u;u++)l[u]=arguments[u];return r=a=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(l))),a.select=function(){a.props.select(a.props.image)},s=r,o(a,s)}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.selection===this.props.image?this.props.disabled?"btn btn-avatar btn-disabled avatar-selected":"btn btn-avatar avatar-selected":this.props.disabled?"btn btn-avatar btn-disabled":"btn btn-avatar"}},{key:"render",value:function(){return u["default"].createElement("button",{type:"button",className:this.getClassName(),disabled:this.props.disabled,onClick:this.select},u["default"].createElement("img",{src:p["default"].get("MEDIA_URL")+this.props.image}))}}]),t}(u["default"].Component),E=r.Gallery=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){var e=this;return u["default"].createElement("div",{className:"avatars-gallery"},u["default"].createElement("h3",null,this.props.name),u["default"].createElement("div",{className:"avatars-gallery-images"},(0,v["default"])(this.props.images,4,null).map(function(t,r){return u["default"].createElement("div",{className:"row",key:r},t.map(function(t,r){return u["default"].createElement("div",{className:"col-xs-3",key:r},t?u["default"].createElement(_,{image:t,disabled:e.props.disabled,select:e.props.select,selection:e.props.selection}):u["default"].createElement("div",{className:"blank-avatar"}))}))})))}}]),t}(u["default"].Component),w=function(e){function t(e){n(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.select=function(e){r.setState({selection:e})},r.save=function(){return r.state.isLoading?!1:(r.setState({isLoading:!0}),void m["default"].post(r.props.user.api_url.avatar,{avatar:"galleries",image:r.state.selection}).then(function(e){r.setState({isLoading:!1}),y["default"].success(e.detail),r.props.onComplete(e.avatar_hash,e.options)},function(e){400===e.status?(y["default"].error(e.detail),r.setState({isLoading:!1})):r.props.showError(e)}))},r.state={selection:null,isLoading:!1},r}return s(t,e),i(t,[{key:"render",value:function(){var e=this;return u["default"].createElement("div",null,u["default"].createElement("div",{className:"modal-body modal-avatar-gallery"},this.props.options.galleries.map(function(t,r){return u["default"].createElement(E,{name:t.name,images:t.images,selection:e.state.selection,disabled:e.state.isLoading,select:e.select,key:r})})),u["default"].createElement("div",{className:"modal-footer"},u["default"].createElement("div",{className:"row"},u["default"].createElement("div",{className:"col-md-6 col-md-offset-3"},u["default"].createElement(f["default"],{onClick:this.save,loading:this.state.isLoading,disabled:!this.state.selection,className:"btn-primary btn-block"},this.state.selection?gettext("Save choice"):gettext("Select avatar")),u["default"].createElement(f["default"],{onClick:this.props.showIndex,disabled:this.state.isLoading,className:"btn-default btn-block"},gettext("Cancel"))))))}}]),t}(u["default"].Component);r["default"]=w},{"../../index":119,"../../services/ajax":163,"../../services/snackbar":172,"../../utils/batch":176,"../button":4,react:"react"}],15:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("../avatar"),f=a(c),d=e("../button"),p=a(d),h=e("../loader"),m=a(h),b=e("../../services/ajax"),y=a(b),g=e("../../services/snackbar"),v=a(g),_=function(e){function t(e){n(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.setGravatar=function(){r.callApi("gravatar")},r.setGenerated=function(){r.callApi("generated")},r.state={isLoading:!1},r}return s(t,e),i(t,[{key:"callApi",value:function(e){var t=this;return this.state.isLoading?!1:(this.setState({isLoading:!0}),void y["default"].post(this.props.user.api_url.avatar,{avatar:e}).then(function(e){t.setState({isLoading:!1}),v["default"].success(e.detail),t.props.onComplete(e.avatar_hash,e.options)},function(e){400===e.status?(v["default"].error(e.detail),t.setState({isLoading:!1})):t.props.showError(e)}))}},{key:"getGravatarButton",value:function(){return this.props.options.gravatar?u["default"].createElement(p["default"],{onClick:this.setGravatar,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-gravatar"},gettext("Download my Gravatar")):null}},{key:"getCropButton",value:function(){return this.props.options.crop_org?u["default"].createElement(p["default"],{onClick:this.props.showCrop,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-crop"},gettext("Re-crop uploaded image")):null}},{key:"getUploadButton",value:function(){return this.props.options.upload?u["default"].createElement(p["default"],{onClick:this.props.showUpload,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-upload"},gettext("Upload new image")):null}},{key:"getGalleryButton",value:function(){return this.props.options.galleries?u["default"].createElement(p["default"],{onClick:this.props.showGallery,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-gallery"},gettext("Pick avatar from gallery")):null}},{key:"getAvatarPreview",value:function(){var e={id:this.props.user.id,avatar_hash:this.props.options.avatar_hash};return this.state.isLoading?u["default"].createElement("div",{className:"avatar-preview preview-loading"},u["default"].createElement(f["default"],{user:e,size:"200"}),u["default"].createElement(m["default"],null)):u["default"].createElement("div",{className:"avatar-preview"},u["default"].createElement(f["default"],{user:e,size:"200"}))}},{key:"render",value:function(){return u["default"].createElement("div",{className:"modal-body modal-avatar-index"},u["default"].createElement("div",{className:"row"},u["default"].createElement("div",{className:"col-md-5"},this.getAvatarPreview()),u["default"].createElement("div",{className:"col-md-7"},this.getGravatarButton(),u["default"].createElement(p["default"],{onClick:this.setGenerated,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-generate"},gettext("Generate my individual avatar")),this.getCropButton(),this.getUploadButton(),this.getGalleryButton())))}}]),t}(u["default"].Component);r["default"]=_},{"../../services/ajax":163,"../../services/snackbar":172,"../avatar":2,"../button":4,"../loader":22,react:"react"}],16:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{user:e.auth.user}}Object.defineProperty(r,"__esModule",{value:!0}),r.ChangeAvatarError=void 0;var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}();r.select=i;var u=e("react"),c=a(u),f=e("./index"),d=a(f),p=e("./crop"),h=a(p),m=e("./upload"),b=a(m),y=e("./gallery"),g=a(y),v=e("../modal-loader"),_=a(v),E=e("../../reducers/users"),w=e("../../services/ajax"),O=a(w),k=e("../../services/store"),N=a(k),j=r.ChangeAvatarError=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),l(t,[{key:"getErrorReason",value:function(){return this.props.reason?c["default"].createElement("p",{dangerouslySetInnerHTML:{__html:this.props.reason}}):null}},{key:"render",value:function(){return c["default"].createElement("div",{className:"modal-body"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"remove_circle_outline")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",{className:"lead"},this.props.message),this.getErrorReason()))}}]),t}(c["default"].Component),x=function(e){function t(){var e,r,a,s;n(this,t);for(var i=arguments.length,l=Array(i),u=0;i>u;u++)l[u]=arguments[u];return r=a=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(l))),a.showError=function(e){a.setState({error:e})},a.showIndex=function(){a.setState({component:d["default"]})},a.showUpload=function(){a.setState({component:b["default"]})},a.showCrop=function(){a.setState({component:h["default"]})},a.showGallery=function(){a.setState({component:g["default"]})},a.completeFlow=function(e,t){N["default"].dispatch((0,E.updateAvatar)(a.props.user,e)),a.setState({component:d["default"],options:t})},s=r,o(a,s)}return s(t,e),l(t,[{key:"componentDidMount",value:function(){var e=this;O["default"].get(this.props.user.api_url.avatar).then(function(t){e.setState({component:d["default"],options:t,error:null})},function(t){e.showError(t)})}},{key:"getBody",value:function(){return this.state?this.state.error?c["default"].createElement(j,{message:this.state.error.detail,reason:this.state.error.reason}):c["default"].createElement(this.state.component,{options:this.state.options,user:this.props.user,onComplete:this.completeFlow,showError:this.showError,showIndex:this.showIndex,showCrop:this.showCrop,showUpload:this.showUpload,showGallery:this.showGallery}):c["default"].createElement(_["default"],null)}},{key:"getClassName",value:function(){return this.state&&this.state.error?"modal-dialog modal-message modal-change-avatar":"modal-dialog modal-change-avatar"}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getClassName(),role:"document"},c["default"].createElement("div",{className:"modal-content"},c["default"].createElement("div",{className:"modal-header"},c["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},c["default"].createElement("span",{"aria-hidden":"true"},"×")),c["default"].createElement("h4",{className:"modal-title"},gettext("Change your avatar"))),this.getBody()))}}]),t}(c["default"].Component);r["default"]=x},{"../../reducers/users":162,"../../services/ajax":163,"../../services/store":173,"../modal-loader":23,"./crop":13,"./gallery":14,"./index":15,"./upload":17,react:"react"}],17:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("./crop"),f=a(c),d=e("../button"),p=a(d),h=e("../../services/ajax"),m=a(h),b=e("../../services/snackbar"),y=a(b),g=e("../../utils/file-size"),v=a(g),_=function(e){function t(e){n(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.pickFile=function(){document.getElementById("avatar-hidden-upload").click()},r.uploadFile=function(){var e=document.getElementById("avatar-hidden-upload").files[0],t=r.validateFile(e);if(t)return void y["default"].error(t);r.setState({image:e,preview:URL.createObjectURL(e),progress:0});var a=new FormData;a.append("avatar","upload"),a.append("image",e),m["default"].upload(r.props.user.api_url.avatar,a,function(e){r.setState({progress:e})}).then(function(e){r.setState({options:e.options,uploaded:e.detail}),y["default"].info(gettext("Your image has been uploaded and you may now crop it."))},function(e){400===e.status?(y["default"].error(e.detail),r.setState({isLoading:!1,image:null,progress:0})):r.props.showError(e)})},r.state={image:null,preview:null,progress:0,uploaded:null},r}return s(t,e),i(t,[{key:"validateFile",value:function(e){if(e.size>this.props.options.upload.limit)return interpolate(gettext("Selected file is too big. (%(filesize)s)"),{filesize:(0,v["default"])(e.size)},!0);var t=gettext("Selected file type is not supported.");if(-1===this.props.options.upload.allowed_mime_types.indexOf(e.type))return t;var r=!1,a=e.name.toLowerCase();return this.props.options.upload.allowed_extensions.map(function(e){a.substr(-1*e.length)===e&&(r=!0)}),r?!1:t}},{key:"getUploadRequirements",value:function(e){var t=e.allowed_extensions.map(function(e){return e.substr(1)});return interpolate(gettext("%(files)s files smaller than %(limit)s"),{files:t.join(", "),limit:(0,v["default"])(e.limit)},!0)}},{key:"getUploadButton",value:function(){return u["default"].createElement("div",{className:"modal-body modal-avatar-upload"},u["default"].createElement(p["default"],{className:"btn-pick-file",onClick:this.pickFile},u["default"].createElement("div",{className:"material-icon"},"input"),gettext("Select file")),u["default"].createElement("p",{className:"text-muted"},this.getUploadRequirements(this.props.options.upload)))}},{key:"getUploadProgressLabel",value:function(){return interpolate(gettext("%(progress)s % complete"),{progress:this.state.progress},!0)}},{key:"getUploadProgress",value:function(){return u["default"].createElement("div",{className:"modal-body modal-avatar-upload"},u["default"].createElement("div",{className:"upload-progress"},u["default"].createElement("img",{src:this.state.preview}),u["default"].createElement("div",{className:"progress"},u["default"].createElement("div",{className:"progress-bar",role:"progressbar","aria-valuenow":"{this.state.progress}","aria-valuemin":"0","aria-valuemax":"100",style:{width:this.state.progress+"%"}},u["default"].createElement("span",{className:"sr-only"},this.getUploadProgressLabel())))))}},{key:"renderUpload",value:function(){return u["default"].createElement("div",null,u["default"].createElement("input",{type:"file",id:"avatar-hidden-upload",className:"hidden-file-upload",onChange:this.uploadFile}),this.state.image?this.getUploadProgress():this.getUploadButton(),u["default"].createElement("div",{className:"modal-footer"},u["default"].createElement("div",{className:"col-md-6 col-md-offset-3"},u["default"].createElement(p["default"],{onClick:this.props.showIndex,disabled:!!this.state.image,className:"btn-default btn-block"},gettext("Cancel")))))}},{key:"renderCrop",value:function(){return u["default"].createElement(f["default"],{options:this.state.options,user:this.props.user,upload:this.state.uploaded,onComplete:this.props.onComplete,showError:this.props.showError,showIndex:this.props.showIndex})}},{key:"render",value:function(){return this.state.uploaded?this.renderCrop():this.renderUpload()}}]),t}(u["default"].Component);r["default"]=_},{"../../services/ajax":163,"../../services/snackbar":172,"../../utils/file-size":180,"../button":4,"./crop":13,react:"react"}],18:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.dropdown?"btn btn-default btn-aligned btn-icon btn-dropdown-toggle open hidden-md hidden-lg":"btn btn-default btn-aligned btn-icon btn-dropdown-toggle hidden-md hidden-lg"}},{key:"render",value:function(){return u["default"].createElement("button",{className:this.getClassName(),type:"button",onClick:this.props.toggleNav,"aria-haspopup":"true","aria-expanded":this.props.dropdown?"true":"false"},u["default"].createElement("i",{className:"material-icon"},"menu"))}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],19:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"isValidated",value:function(){return"undefined"!=typeof this.props.validation}},{key:"getClassName",value:function(){var e="form-group";return this.isValidated()&&(e+=" has-feedback",e+=null===this.props.validation?" has-success":" has-error"),e}},{key:"getFeedback",value:function(){var e=this;return this.props.validation?u["default"].createElement("div",{className:"help-block errors"},this.props.validation.map(function(t,r){return u["default"].createElement("p",{key:e.props["for"]+"FeedbackItem"+r},t)})):null}},{key:"getFeedbackIcon",value:function(){return this.isValidated()?u["default"].createElement("span",{className:"material-icon form-control-feedback","aria-hidden":"true",key:this.props["for"]+"FeedbackIcon"},this.props.validation?"clear":"check"):null}},{key:"getFeedbackDescription",value:function(){return this.isValidated()?u["default"].createElement("span",{id:this.props["for"]+"_status",className:"sr-only"},this.props.validation?gettext("(error)"):gettext("(success)")):null}},{key:"getHelpText",value:function(){return this.props.helpText?u["default"].createElement("p",{className:"help-block"},this.props.helpText):null}},{key:"render",value:function(){return u["default"].createElement("div",{className:this.getClassName()},u["default"].createElement("label",{className:"control-label "+(this.props.labelClass||""),htmlFor:this.props["for"]||""},this.props.label+":"),u["default"].createElement("div",{className:this.props.controlClass||""},this.props.children,this.getFeedbackIcon(),this.getFeedbackDescription(),this.getFeedback(),this.getHelpText(),this.props.extra||null))}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],20:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),u=e("react"),c=a(u),f=e("../utils/validators"),d=e("../services/snackbar"),p=a(d),h=(0,f.required)(),m=function(e){function t(){var e,r,a,i;o(this,t);for(var l=arguments.length,u=Array(l),c=0;l>c;c++)u[c]=arguments[c];return r=a=s(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(u))),a.bindInput=function(e){return function(t){var r=n({},e,t.target.value),o=a.state.errors||{};o[e]=a.validateField(e,r[e]),r.errors=o,a.setState(r)}},a.handleSubmit=function(e){if(e.preventDefault(),!a.state.isLoading&&a.clean()){a.setState({isLoading:!0});var t=a.send();t?t.then(function(e){a.setState({isLoading:!1}),a.handleSuccess(e)},function(e){a.setState({isLoading:!1}),a.handleError(e)}):a.setState({isLoading:!1})}},i=r,s(a,i)}return i(t,e),l(t,[{key:"validate",value:function(){var e={};if(!this.state.validators)return e;var t={required:this.state.validators.required||this.state.validators,optional:this.state.validators.optional||{}},r=[];for(var a in t.required)t.required.hasOwnProperty(a)&&t.required[a]&&r.push(a);for(var n in t.optional)t.optional.hasOwnProperty(n)&&t.optional[n]&&r.push(n);for(var o in r){var s=r[o],i=this.validateField(s,this.state[s]);null===i?e[s]=null:i&&(e[s]=i)}return e}},{key:"isValid",value:function(){var e=this.validate();for(var t in e)if(e.hasOwnProperty(t)&&null!==e[t])return!1;return!0}},{key:"validateField",value:function(e,t){var r=[];if(!this.state.validators)return r;var a={required:(this.state.validators.required||this.state.validators)[e],optional:(this.state.validators.optional||{})[e]},n=h(t)||!1;if(a.required){if(n)r=[n];else for(var o in a.required){var s=a.required[o](t);s&&r.push(s)}return r.length?r:null}if(n===!1&&a.optional){for(var i in a.optional){var l=a.optional[i](t);l&&r.push(l)}return r.length?r:null}return!1}},{key:"clean",value:function(){return!0}},{key:"send",value:function(){return null}},{key:"handleSuccess",value:function(e){}},{key:"handleError",value:function(e){p["default"].apiError(e)}}]),t}(c["default"].Component);r["default"]=m},{"../services/snackbar":172,"../utils/validators":188,react:"react"}],21:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"isActive",value:function(){return this.props.isControlled?this.props.isActive:this.props.path?0===document.location.pathname.indexOf(this.props.path):!1}},{key:"getClassName",value:function(){return this.isActive()?(this.props.className||"")+" "+(this.props.activeClassName||"active"):this.props.className||""}},{key:"render",value:function(){return u["default"].createElement("li",{className:this.getClassName()},this.props.children)}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],22:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("div",{className:this.props.className||"loader"},u["default"].createElement("div",{className:"loader-spinning-wheel"}))}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],23:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("./loader"),f=a(c),d=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("div",{className:"modal-body modal-loader"},u["default"].createElement(f["default"],null))}}]),t}(u["default"].Component);r["default"]=d},{"./loader":22,react:"react"}],24:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("./panel-message"),f=a(c),d=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getHelpText",value:function(){return this.props.helpText?u["default"].createElement("p",{className:"help-block"},this.props.helpText):null}},{key:"render",value:function(){return u["default"].createElement("div",{className:"modal-body"},u["default"].createElement("div",{className:"message-icon"},u["default"].createElement("span",{className:"material-icon"},this.props.icon||"info_outline")),u["default"].createElement("div",{className:"message-body"},u["default"].createElement("p",{className:"lead"},this.props.message),this.getHelpText()))}}]),t}(f["default"]);r["default"]=d},{"./panel-message":37,react:"react"}],25:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("../../panel-loader"),f=a(c),d=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("div",{className:"panel panel-default panel-form"},u["default"].createElement("div",{className:"panel-heading"},u["default"].createElement("h3",{className:"panel-title"},gettext("Change username"))),u["default"].createElement(f["default"],null))}}]),t}(u["default"].Component);r["default"]=d},{"../../panel-loader":36,react:"react"}],26:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("../../panel-message"),f=a(c),d=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getHelpText",value:function(){return this.props.options.next_on?interpolate(gettext("You will be able to change your username %(next_change)s."),{next_change:this.props.options.next_on.fromNow()},!0):gettext("You have used up available name changes.")}},{key:"render",value:function(){return u["default"].createElement("div",{className:"panel panel-default panel-form"},u["default"].createElement("div",{className:"panel-heading"},u["default"].createElement("h3",{className:"panel-title"},gettext("Change username"))),u["default"].createElement(f["default"],{message:gettext("You can't change your username at the moment."),helpText:this.getHelpText()}))}}]),t}(u["default"].Component);r["default"]=d},{"../../panel-message":37,react:"react"}],27:[function(e,t,r){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function n(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),u=e("react"),c=n(u),f=e("../../button"),d=n(f),p=e("../../form"),h=n(p),m=e("../../form-group"),b=n(m),y=e("../../../services/ajax"),g=n(y),v=e("../../../services/snackbar"),_=n(v),E=e("../../../utils/validators"),w=a(E),O=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));return r.state={username:"",validators:{username:[w.usernameContent(),w.usernameMinLength({username_length_min:e.options.length_min}),w.usernameMaxLength({username_length_max:e.options.length_max})]},isLoading:!1},r}return i(t,e),l(t,[{key:"getHelpText",value:function(){var e=[];if(this.props.options.changes_left>0){var t=ngettext("You can change your username %(changes_left)s more time.","You can change your username %(changes_left)s more times.",this.props.options.changes_left);e.push(interpolate(t,{changes_left:this.props.options.changes_left},!0))}if(this.props.user.acl.name_changes_expire>0){var r=ngettext("Used changes redeem after %(name_changes_expire)s day.","Used changes redeem after %(name_changes_expire)s days.",this.props.user.acl.name_changes_expire);e.push(interpolate(r,{name_changes_expire:this.props.user.acl.name_changes_expire},!0))}return e.length?e.join(" "):null}},{key:"clean",value:function(){var e=this.validate();return e.username?(_["default"].error(e.username[0]),!1):this.state.username.trim()===this.props.user.username?(_["default"].info(gettext("Your new username is same as current one.")),!1):!0}},{key:"send",value:function(){return g["default"].post(this.props.user.api_url.username,{username:this.state.username})}},{key:"handleSuccess",value:function(e){this.setState({username:""}),this.props.complete(e.username,e.slug,e.options)}},{key:"handleError",value:function(e){_["default"].apiError(e)}},{key:"render",value:function(){return c["default"].createElement("form",{onSubmit:this.handleSubmit,className:"form-horizontal"},c["default"].createElement("div",{className:"panel panel-default panel-form"},c["default"].createElement("div",{className:"panel-heading"},c["default"].createElement("h3",{className:"panel-title"},gettext("Change username"))),c["default"].createElement("div",{className:"panel-body"},c["default"].createElement(b["default"],{label:gettext("New username"),"for":"id_username",labelClass:"col-sm-4",controlClass:"col-sm-8",helpText:this.getHelpText()},c["default"].createElement("input",{type:"text",id:"id_username",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("username"),value:this.state.username}))),c["default"].createElement("div",{className:"panel-footer"},c["default"].createElement("div",{className:"row"},c["default"].createElement("div",{className:"col-sm-8 col-sm-offset-4"},c["default"].createElement(d["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Change username")))))))}}]),t}(h["default"]);r["default"]=O},{"../../../services/ajax":163,"../../../services/snackbar":172,"../../../utils/validators":188,"../../button":4,"../../form":20,"../../form-group":19,react:"react"}],28:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("moment"),u=a(l),c=e("react"),f=a(c),d=e("./form-loading"),p=a(d),h=e("./form-locked"),m=a(h),b=e("./form"),y=a(b),g=e("../../username-history/root"),v=a(g),_=e("../../../index"),E=a(_),w=e("../../../reducers/username-history"),O=e("../../../reducers/users"),k=e("../../../services/ajax"),N=a(k),j=e("../../../services/page-title"),x=a(j),P=e("../../../services/snackbar"),C=a(P),S=e("../../../services/store"),T=a(S),M=function(e){function t(e){n(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.onComplete=function(e,t,a){r.setState({options:a}),T["default"].dispatch((0,w.addNameChange)({username:e,slug:t},r.props.user,r.props.user)),T["default"].dispatch((0,O.updateUsername)(r.props.user,e,t)),C["default"].success(gettext("Your username has been changed successfully."))},r.state={isLoaded:!1,options:null},r}return s(t,e),i(t,[{key:"componentDidMount",value:function(){var e=this;x["default"].set({title:gettext("Change username"),parent:gettext("Change your options")}),Promise.all([N["default"].get(this.props.user.api_url.username),N["default"].get(E["default"].get("USERNAME_CHANGES_API"),{user:this.props.user.id})]).then(function(t){T["default"].dispatch((0,w.hydrate)(t[1].results)),e.setState({isLoaded:!0,options:{changes_left:t[0].changes_left,length_min:t[0].length_min,length_max:t[0].length_max,next_on:t[0].next_on?(0,u["default"])(t[0].next_on):null}})})}},{key:"getChangeForm",value:function(){return this.state.isLoaded?this.state.options.changes_left>0?f["default"].createElement(y["default"],{user:this.props.user,options:this.state.options,complete:this.onComplete}):f["default"].createElement(m["default"],{options:this.state.options}):f["default"].createElement(p["default"],null)}},{key:"render",value:function(){return f["default"].createElement("div",null,this.getChangeForm(),f["default"].createElement(v["default"],{isLoaded:this.state.isLoaded,changes:this.props["username-history"]}))}}]),t}(f["default"].Component);r["default"]=M},{"../../../index":119,"../../../reducers/username-history":161,"../../../reducers/users":162,"../../../services/ajax":163,"../../../services/page-title":170,"../../../services/snackbar":172,"../../../services/store":173,"../../username-history/root":101,"./form":27,"./form-loading":25,"./form-locked":26,moment:"moment",react:"react"}],29:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("../button"),f=a(c),d=e("../form"),p=a(d),h=e("../form-group"),m=a(h),b=e("../select"),y=a(b),g=e("../yes-no-switch"),v=a(g),_=e("../../reducers/auth"),E=e("../../services/ajax"),w=a(E),O=e("../../services/page-title"),k=a(O),N=e("../../services/snackbar"),j=a(N),x=e("../../services/store"),P=a(x),C=function(e){function t(e){n(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.state={isLoading:!1,is_hiding_presence:e.user.is_hiding_presence,limits_private_thread_invites_to:e.user.limits_private_thread_invites_to,subscribe_to_started_threads:e.user.subscribe_to_started_threads,subscribe_to_replied_threads:e.user.subscribe_to_replied_threads,errors:{}},r.privateThreadInvitesChoices=[{value:0,icon:"help_outline",label:gettext("Everybody")},{value:1,icon:"done_all",label:gettext("Users I follow")},{value:2,icon:"highlight_off",label:gettext("Nobody")}],r.subscribeToChoices=[{value:0,icon:"star_border",label:gettext("No")},{value:1,icon:"star_half",label:gettext("Notify")},{value:2,icon:"star",label:gettext("Notify with e-mail")}],r}return s(t,e),i(t,[{key:"send",value:function(){return w["default"].post(this.props.user.api_url.options,{is_hiding_presence:this.state.is_hiding_presence,limits_private_thread_invites_to:this.state.limits_private_thread_invites_to,subscribe_to_started_threads:this.state.subscribe_to_started_threads,subscribe_to_replied_threads:this.state.subscribe_to_replied_threads})}},{key:"handleSuccess",value:function(){P["default"].dispatch((0,_.patch)({is_hiding_presence:this.state.is_hiding_presence,limits_private_thread_invites_to:this.state.limits_private_thread_invites_to,subscribe_to_started_threads:this.state.subscribe_to_started_threads,subscribe_to_replied_threads:this.state.subscribe_to_replied_threads})),j["default"].success(gettext("Your forum options have been changed."))}},{key:"handleError",value:function(e){400===e.status?j["default"].error(gettext("Please reload page and try again.")):j["default"].apiError(e)}},{key:"componentDidMount",value:function(){k["default"].set({title:gettext("Forum options"),parent:gettext("Change your options")})}},{key:"render",value:function(){return u["default"].createElement("form",{onSubmit:this.handleSubmit,className:"form-horizontal"},u["default"].createElement("div",{className:"panel panel-default panel-form"},u["default"].createElement("div",{className:"panel-heading"},u["default"].createElement("h3",{className:"panel-title"},gettext("Change forum options"))),u["default"].createElement("div",{className:"panel-body"},u["default"].createElement("fieldset",null,u["default"].createElement("legend",null,gettext("Privacy settings")),u["default"].createElement(m["default"],{label:gettext("Hide my presence"),helpText:gettext("If you hide your presence, only members with permission to see hidden users will see when you are online."),"for":"id_is_hiding_presence",labelClass:"col-sm-4",controlClass:"col-sm-8"},u["default"].createElement(v["default"],{id:"id_is_hiding_presence",disabled:this.state.isLoading,iconOn:"visibility_off",iconOff:"visibility",labelOn:gettext("Hide my presence from other users"),labelOff:gettext("Show my presence to other users"),onChange:this.bindInput("is_hiding_presence"),value:this.state.is_hiding_presence})),u["default"].createElement(m["default"],{label:gettext("Private thread invitations"),"for":"id_limits_private_thread_invites_to",labelClass:"col-sm-4",controlClass:"col-sm-8"},u["default"].createElement(y["default"],{id:"id_limits_private_thread_invites_to",disabled:this.state.isLoading,onChange:this.bindInput("limits_private_thread_invites_to"),value:this.state.limits_private_thread_invites_to,choices:this.privateThreadInvitesChoices}))),u["default"].createElement("fieldset",null,u["default"].createElement("legend",null,gettext("Automatic subscriptions")),u["default"].createElement(m["default"],{label:gettext("Threads I start"),"for":"id_subscribe_to_started_threads",labelClass:"col-sm-4",controlClass:"col-sm-8"},u["default"].createElement(y["default"],{id:"id_subscribe_to_started_threads",disabled:this.state.isLoading,onChange:this.bindInput("subscribe_to_started_threads"),value:this.state.subscribe_to_started_threads,choices:this.subscribeToChoices})),u["default"].createElement(m["default"],{label:gettext("Threads I reply to"),"for":"id_subscribe_to_replied_threads",labelClass:"col-sm-4",controlClass:"col-sm-8"},u["default"].createElement(y["default"],{id:"id_subscribe_to_replied_threads",disabled:this.state.isLoading,onChange:this.bindInput("subscribe_to_replied_threads"),value:this.state.subscribe_to_replied_threads,choices:this.subscribeToChoices})))),u["default"].createElement("div",{className:"panel-footer"},u["default"].createElement("div",{className:"row"},u["default"].createElement("div",{className:"col-sm-8 col-sm-offset-4"},u["default"].createElement(f["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Save changes")))))))}}]),t}(p["default"]);r["default"]=C},{"../../reducers/auth":155,"../../services/ajax":163,"../../services/page-title":170,"../../services/snackbar":172,"../../services/store":173,"../button":4,"../form":20,"../form-group":19,"../select":57,"../yes-no-switch":118,react:"react"}],30:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0}),r.CompactNav=r.SideNav=void 0;var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("react-router"),f=e("../li"),d=a(f),p=e("../../index");a(p),r.SideNav=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){var e=this;return u["default"].createElement("div",{className:"list-group nav-side"},this.props.options.map(function(t){return u["default"].createElement(c.Link,{to:e.props.baseUrl+t.component+"/",className:"list-group-item",activeClassName:"active",key:t.component},u["default"].createElement("span",{className:"material-icon"},t.icon),t.name)}))}}]),t}(u["default"].Component),r.CompactNav=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){var e=this;return u["default"].createElement("ul",{className:"dropdown-menu",role:"menu"},this.props.options.map(function(t){return u["default"].createElement(d["default"],{path:e.props.baseUrl+t.component+"/",key:t.component},u["default"].createElement(c.Link,{to:e.props.baseUrl+t.component+"/",onClick:e.props.hideNav},u["default"].createElement("span",{className:"material-icon"},t.icon),t.name))}))}}]),t}(u["default"].Component)},{"../../index":119,"../li":21,react:"react","react-router":"react-router"}],31:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{tick:e.tick.tick,user:e.auth.user,"username-history":e["username-history"]}}function l(){return[{path:N["default"].get("USERCP_URL")+"forum-options/",component:(0,d.connect)(i)(y["default"])},{path:N["default"].get("USERCP_URL")+"change-username/",component:(0,d.connect)(i)(v["default"])},{path:N["default"].get("USERCP_URL")+"sign-in-credentials/",component:(0,d.connect)(i)(E["default"])}]}Object.defineProperty(r,"__esModule",{value:!0});var u=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}();r.select=i,r.paths=l;var c=e("react"),f=a(c),d=e("react-redux"),p=e("../dropdown-toggle"),h=a(p),m=e("./navs"),b=e("./forum-options"),y=a(b),g=e("./change-username/root"),v=a(g),_=e("./sign-in-credentials/root"),E=a(_),w=e("../with-dropdown"),O=a(w),k=e("../../index"),N=a(k),j=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(t,[{key:"render",value:function(){return f["default"].createElement("div",{className:"page page-options"},f["default"].createElement("div",{className:"page-header"},f["default"].createElement("div",{className:"container"},f["default"].createElement("h1",{className:"pull-left"},gettext("Change your options")),f["default"].createElement(h["default"],{toggleNav:this.toggleNav,dropdown:this.state.dropdown}))),f["default"].createElement("div",{className:this.getCompactNavClassName()},f["default"].createElement(m.CompactNav,{options:N["default"].get("USER_OPTIONS"),baseUrl:N["default"].get("USERCP_URL"),hideNav:this.hideNav})),f["default"].createElement("div",{className:"container"},f["default"].createElement("div",{className:"row"},f["default"].createElement("div",{className:"col-md-3 hidden-xs hidden-sm"},f["default"].createElement(m.SideNav,{options:N["default"].get("USER_OPTIONS"),baseUrl:N["default"].get("USERCP_URL")})),f["default"].createElement("div",{className:"col-md-9"},this.props.children))))}}]),t}(O["default"]);r["default"]=j},{"../../index":119,"../dropdown-toggle":18,"../with-dropdown":117,"./change-username/root":28,"./forum-options":29,"./navs":30,"./sign-in-credentials/root":34,react:"react","react-redux":"react-redux"}],32:[function(e,t,r){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function n(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),u=e("react"),c=n(u),f=e("../../button"),d=n(f),p=e("../../form"),h=n(p),m=e("../../form-group"),b=n(m),y=e("../../../services/ajax"),g=n(y),v=e("../../../services/snackbar"),_=n(v),E=e("../../../utils/validators"),w=a(E),O=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));return r.state={new_email:"",password:"",validators:{new_email:[w.email()],password:[]},isLoading:!1},r}return i(t,e),l(t,[{key:"clean",value:function(){var e=this.validate(),t=[this.state.new_email.trim().length,this.state.password.trim().length];return-1!==t.indexOf(0)?(_["default"].error(gettext("Fill out all fields.")),!1):e.new_email?(_["default"].error(e.new_email[0]),!1):!0}},{key:"send",value:function(){return g["default"].post(this.props.user.api_url.change_email,{new_email:this.state.new_email,password:this.state.password})}},{key:"handleSuccess",value:function(e){this.setState({new_email:"",password:""}),_["default"].success(e.detail)}},{key:"handleError",value:function(e){400===e.status?e.new_email?_["default"].error(e.new_email):_["default"].error(e.password):_["default"].apiError(e)}},{key:"render",value:function(){return c["default"].createElement("form",{onSubmit:this.handleSubmit,className:"form-horizontal"},c["default"].createElement("input",{type:"type",style:{display:"none"}}),c["default"].createElement("input",{type:"password",style:{display:"none"}}),c["default"].createElement("div",{className:"panel panel-default panel-form"},c["default"].createElement("div",{className:"panel-heading"},c["default"].createElement("h3",{className:"panel-title"},gettext("Change e-mail address"))),c["default"].createElement("div",{className:"panel-body"},c["default"].createElement(b["default"],{label:gettext("New e-mail"),"for":"id_new_email",labelClass:"col-sm-4",controlClass:"col-sm-8"},c["default"].createElement("input",{type:"text",id:"id_new_email",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("new_email"),value:this.state.new_email})),c["default"].createElement("hr",null),c["default"].createElement(b["default"],{label:gettext("Your current password"),"for":"id_password",labelClass:"col-sm-4",controlClass:"col-sm-8"},c["default"].createElement("input",{type:"password",id:"id_password",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("password"),value:this.state.password}))),c["default"].createElement("div",{className:"panel-footer"},c["default"].createElement("div",{className:"row"},c["default"].createElement("div",{className:"col-sm-8 col-sm-offset-4"},c["default"].createElement(d["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Change e-mail")))))))}}]),t}(h["default"]);r["default"]=O},{"../../../services/ajax":163,"../../../services/snackbar":172,"../../../utils/validators":188,"../../button":4,"../../form":20,"../../form-group":19,react:"react"}],33:[function(e,t,r){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function n(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),u=e("react"),c=n(u),f=e("../../button"),d=n(f),p=e("../../form"),h=n(p),m=e("../../form-group"),b=n(m),y=e("../../../index"),g=n(y),v=e("../../../services/ajax"),_=n(v),E=e("../../../services/snackbar"),w=n(E),O=e("../../../utils/validators"),k=a(O),N=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));return r.state={new_password:"",repeat_password:"",password:"",validators:{new_password:[k.passwordMinLength(g["default"].get("SETTINGS"))],repeat_password:[],password:[]},isLoading:!1},r}return i(t,e),l(t,[{key:"clean",value:function(){var e=this.validate(),t=[this.state.new_password.trim().length,this.state.repeat_password.trim().length,this.state.password.trim().length];return-1!==t.indexOf(0)?(w["default"].error(gettext("Fill out all fields.")),!1):e.new_password?(w["default"].error(e.new_password[0]),!1):this.state.new_password.trim()!==this.state.repeat_password.trim()?(w["default"].error(gettext("New passwords are different.")),!1):!0}},{key:"send",value:function(){return _["default"].post(this.props.user.api_url.change_password,{new_password:this.state.new_password,password:this.state.password})}},{key:"handleSuccess",value:function(e){this.setState({new_password:"",repeat_password:"",password:""}),w["default"].success(e.detail)}},{key:"handleError",value:function(e){400===e.status?e.new_password?w["default"].error(e.new_password):w["default"].error(e.password):w["default"].apiError(e)}},{key:"render",value:function(){return c["default"].createElement("form",{onSubmit:this.handleSubmit,className:"form-horizontal"},c["default"].createElement("input",{type:"type",style:{display:"none"}}),c["default"].createElement("input",{type:"password",style:{display:"none"}}),c["default"].createElement("div",{className:"panel panel-default panel-form"},c["default"].createElement("div",{className:"panel-heading"},c["default"].createElement("h3",{className:"panel-title"},gettext("Change password"))),c["default"].createElement("div",{className:"panel-body"},c["default"].createElement(b["default"],{label:gettext("New password"),"for":"id_new_password",labelClass:"col-sm-4",controlClass:"col-sm-8"},c["default"].createElement("input",{type:"password",id:"id_new_password",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("new_password"),value:this.state.new_password})),c["default"].createElement(b["default"],{label:gettext("Repeat password"),"for":"id_repeat_password",labelClass:"col-sm-4",controlClass:"col-sm-8"},c["default"].createElement("input",{type:"password",id:"id_repeat_password",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("repeat_password"),value:this.state.repeat_password})),c["default"].createElement("hr",null),c["default"].createElement(b["default"],{label:gettext("Your current password"),"for":"id_password",labelClass:"col-sm-4",controlClass:"col-sm-8"},c["default"].createElement("input",{type:"password",id:"id_password",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("password"),value:this.state.password}))),c["default"].createElement("div",{className:"panel-footer"},c["default"].createElement("div",{className:"row"},c["default"].createElement("div",{className:"col-sm-8 col-sm-offset-4"},c["default"].createElement(d["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Change password")))))))}}]),t}(h["default"]);r["default"]=N},{"../../../index":119,"../../../services/ajax":163,"../../../services/snackbar":172,"../../../utils/validators":188,"../../button":4,"../../form":20,"../../form-group":19,react:"react"}],34:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("./change-email"),f=a(c),d=e("./change-password"),p=a(d),h=e("../../../index"),m=a(h),b=e("../../../services/page-title"),y=a(b),g=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"componentDidMount",value:function(){y["default"].set({title:gettext("Change email or password"),parent:gettext("Change your options")})}},{key:"render",value:function(){return u["default"].createElement("div",null,u["default"].createElement(f["default"],{user:this.props.user}),u["default"].createElement(p["default"],{user:this.props.user}),u["default"].createElement("p",{className:"message-line"},u["default"].createElement("span",{className:"material-icon"},"warning"),u["default"].createElement("a",{href:m["default"].get("FORGOTTEN_PASSWORD_URL")},gettext("Change forgotten password"))))}}]),t}(u["default"].Component);r["default"]=g},{"../../../index":119,"../../../services/page-title":170,"./change-email":32,"./change-password":33,react:"react"}],35:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){
+for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("../utils/string-count"),f=a(c),d=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.copy&&this.props.copy.length&&1===(0,f["default"])(this.props.copy,"<p")&&-1===this.props.copy.indexOf("<br")?"page-lead lead":"page-lead"}},{key:"render",value:function(){return this.props.copy&&this.props.copy.length?u["default"].createElement("div",{className:this.getClassName(),dangerouslySetInnerHTML:{__html:this.props.copy}}):null}}]),t}(u["default"].Component);r["default"]=d},{"../utils/string-count":187,react:"react"}],36:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("./loader"),f=a(c),d=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("div",{className:"panel-body panel-body-loading"},u["default"].createElement(f["default"],{className:"loader loader-spaced"}))}}]),t}(u["default"].Component);r["default"]=d},{"./loader":22,react:"react"}],37:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getHelpText",value:function(){return this.props.helpText?u["default"].createElement("p",{className:"help-block"},this.props.helpText):null}},{key:"render",value:function(){return u["default"].createElement("div",{className:"panel-body panel-message-body"},u["default"].createElement("div",{className:"message-icon"},u["default"].createElement("span",{className:"material-icon"},this.props.icon||"info_outline")),u["default"].createElement("div",{className:"message-body"},u["default"].createElement("p",{className:"lead"},this.props.message),this.getHelpText()))}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],38:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0}),r.LABELS=r.STYLES=void 0;var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("../services/zxcvbn"),f=a(c),d=r.STYLES=["progress-bar-danger","progress-bar-warning","progress-bar-warning","progress-bar-primary","progress-bar-success"],p=r.LABELS=[gettext("Entered password is very weak."),gettext("Entered password is weak."),gettext("Entered password is average."),gettext("Entered password is strong."),gettext("Entered password is very strong.")],h=function(e){function t(e){n(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r._score=0,r._password=null,r._inputs=[],r}return s(t,e),i(t,[{key:"getScore",value:function(e,t){var r=this,a=!1;return e.trim()!==this._password&&(a=!0),t.length!==this._inputs.length?a=!0:t.map(function(e,t){e.trim()!==r._inputs[t]&&(a=!0)}),a&&(this._score=f["default"].scorePassword(e,t),this._password=e.trim(),this._inputs=t.map(function(e){return e.trim()})),this._score}},{key:"render",value:function(){var e=this.getScore(this.props.password,this.props.inputs);return u["default"].createElement("div",{className:"help-block password-strength"},u["default"].createElement("div",{className:"progress"},u["default"].createElement("div",{className:"progress-bar "+d[e],style:{width:20+20*e+"%"},role:"progress-bar","aria-valuenow":e,"aria-valuemin":"0","aria-valuemax":"4"},u["default"].createElement("span",{className:"sr-only"},p[e]))),u["default"].createElement("p",{className:"text-small"},p[e]))}}]),t}(u["default"].Component);r["default"]=h},{"../services/zxcvbn":174,react:"react"}],39:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("moment"),u=a(l),c=e("react"),f=a(c),d=e("../panel-loader"),p=a(d),h=e("../panel-message"),m=a(h),b=e("../../index"),y=a(b),g=e("../../services/polls"),v=a(g),_=e("../../services/page-title"),E=a(_),w=function(e){function t(e){n(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.update=function(e){e.expires_on&&(e.expires_on=(0,u["default"])(e.expires_on)),r.setState({isLoaded:!0,error:null,ban:e})},r.error=function(e){r.setState({isLoaded:!0,error:e.detail,ban:null})},y["default"].has("PROFILE_BAN")?r.initWithPreloadedData(y["default"].pop("PROFILE_BAN")):r.initWithoutPreloadedData(),r.startPolling(e.profile.api_url.ban),r}return s(t,e),i(t,[{key:"initWithPreloadedData",value:function(e){e.expires_on&&(e.expires_on=(0,u["default"])(e.expires_on)),this.state={isLoaded:!0,ban:e}}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1}}},{key:"startPolling",value:function(e){v["default"].start({poll:"ban-details",url:e,frequency:9e4,update:this.update,error:this.error})}},{key:"componentDidMount",value:function(){E["default"].set({title:gettext("Ban details"),parent:this.props.profile.username})}},{key:"componentWillUnmount",value:function(){v["default"].stop("ban-details")}},{key:"getUserMessage",value:function(){return this.state.ban.user_message?f["default"].createElement("div",{className:"panel-body ban-message ban-user-message"},f["default"].createElement("h4",null,gettext("User-shown ban message")),f["default"].createElement("div",{className:"lead",dangerouslySetInnerHTML:{__html:this.state.ban.user_message.html}})):null}},{key:"getStaffMessage",value:function(){return this.state.ban.staff_message?f["default"].createElement("div",{className:"panel-body ban-message ban-staff-message"},f["default"].createElement("h4",null,gettext("Team-shown ban message")),f["default"].createElement("div",{className:"lead",dangerouslySetInnerHTML:{__html:this.state.ban.staff_message.html}})):null}},{key:"getExpirationMessage",value:function(){if(this.state.ban.expires_on){if(this.state.ban.expires_on.isAfter((0,u["default"])())){var e=interpolate(gettext("This ban expires on %(expires_on)s."),{expires_on:this.state.ban.expires_on.format("LL, LT")},!0),t=interpolate(gettext("This ban expires %(expires_on)s."),{expires_on:this.state.ban.expires_on.fromNow()},!0);return f["default"].createElement("abbr",{title:e},t)}return gettext("This ban has expired.")}return interpolate(gettext("%(username)s's ban is permanent."),{username:this.props.profile.username},!0)}},{key:"getPanelBody",value:function(){return this.state.ban?Object.keys(this.state.ban).length?f["default"].createElement("div",null,this.getUserMessage(),this.getStaffMessage(),f["default"].createElement("div",{className:"panel-body ban-expires"},f["default"].createElement("h4",null,gettext("Ban expiration")),f["default"].createElement("p",{className:"lead"},this.getExpirationMessage()))):f["default"].createElement("div",null,f["default"].createElement(m["default"],{message:gettext("No ban is active at the moment.")})):this.state.error?f["default"].createElement("div",null,f["default"].createElement(m["default"],{icon:"error_outline",message:this.state.error})):f["default"].createElement("div",null,f["default"].createElement(p["default"],null))}},{key:"render",value:function(){return f["default"].createElement("div",{className:"profile-ban-details"},f["default"].createElement("div",{className:"panel panel-default"},f["default"].createElement("div",{className:"panel-heading"},f["default"].createElement("h3",{className:"panel-title"},gettext("Ban details"))),this.getPanelBody()))}}]),t}(f["default"].Component);r["default"]=w},{"../../index":119,"../../services/page-title":170,"../../services/polls":171,"../panel-loader":36,"../panel-message":37,moment:"moment",react:"react"}],40:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("../button"),f=a(c),d=e("../../reducers/profile"),p=e("../../services/ajax"),h=a(p),m=e("../../services/snackbar"),b=a(m),y=e("../../services/store"),g=a(y),v=function(e){function t(e){n(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.action=function(){r.setState({isLoading:!0}),r.props.profile.is_followed?g["default"].dispatch((0,d.patch)({is_followed:!1,followers:r.props.profile.followers-1})):g["default"].dispatch((0,d.patch)({is_followed:!0,followers:r.props.profile.followers+1})),h["default"].post(r.props.profile.api_url.follow).then(function(e){r.setState({isLoading:!1}),g["default"].dispatch((0,d.patch)(e))},function(e){r.setState({isLoading:!1}),b["default"].apiError(e)})},r.state={isLoading:!1},r}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.profile.is_followed?this.props.className+" btn-default btn-following":this.props.className+" btn-default btn-follow"}},{key:"getIcon",value:function(){return this.props.profile.is_followed?"favorite":"favorite_border"}},{key:"getLabel",value:function(){return this.props.profile.is_followed?gettext("Following"):gettext("Follow")}},{key:"render",value:function(){return u["default"].createElement(f["default"],{className:this.getClassName(),disabled:this.state.isLoading,onClick:this.action},u["default"].createElement("span",{className:"material-icon"},this.getIcon()),this.getLabel())}}]),t}(u["default"].Component);r["default"]=v},{"../../reducers/profile":156,"../../services/ajax":163,"../../services/snackbar":172,"../../services/store":173,"../button":4,react:"react"}],41:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),u=e("react"),c=a(u),f=e("../button"),d=a(f),p=e("../search"),h=a(p),m=e("../users-list/root"),b=a(m),y=e("../../index"),g=a(y),v=e("../../reducers/users"),_=e("../../services/ajax"),E=a(_),w=e("../../services/snackbar"),O=a(w),k=e("../../services/store"),N=a(k),j=e("../../services/page-title"),x=a(j),P=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));return r.loadMore=function(){r.setState({isBusy:!0}),r.loadUsers(r.state.page+1,r.state.search)},r.search=function(e){r.setState({isLoaded:!1,isBusy:!0,search:e.target.value,count:0,more:0,page:1,pages:1}),r.loadUsers(1,e.target.value)},r.setSpecialProps(),g["default"].has(r.PRELOADED_DATA_KEY)?r.initWithPreloadedData(g["default"].pop(r.PRELOADED_DATA_KEY)):r.initWithoutPreloadedData(),r}return i(t,e),l(t,[{key:"setSpecialProps",value:function(){this.PRELOADED_DATA_KEY="PROFILE_FOLLOWERS",this.TITLE=gettext("Followers"),this.API_FILTER="followers"}},{key:"initWithPreloadedData",value:function(e){this.state={isLoaded:!0,isBusy:!1,search:"",count:e.count,more:e.more,page:e.page,pages:e.pages},N["default"].dispatch((0,v.hydrate)(e.results))}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1,isBusy:!1,search:"",count:0,more:0,page:1,pages:1},this.loadUsers()}},{key:"loadUsers",value:function(){var e,t=this,r=arguments.length<=0||void 0===arguments[0]?1:arguments[0],a=arguments.length<=1||void 0===arguments[1]?null:arguments[1];E["default"].get(g["default"].get("USERS_API"),(e={},n(e,this.API_FILTER,this.props.profile.id),n(e,"name",a),n(e,"page",r||1),e),"user-"+this.API_FILTER).then(function(e){1===r?N["default"].dispatch((0,v.hydrate)(e.results)):N["default"].dispatch((0,v.append)(e.results)),t.setState({isLoaded:!0,isBusy:!1,count:e.count,more:e.more,page:e.page,pages:e.pages})},function(e){O["default"].apiError(e)})}},{key:"componentDidMount",value:function(){x["default"].set({title:this.TITLE,parent:this.props.profile.username})}},{key:"getLabel",value:function(){if(this.state.isLoaded){if(this.state.search){var e=ngettext("Found %(users)s user.","Found %(users)s users.",this.state.count);return interpolate(e,{users:this.state.count},!0)}if(this.props.profile.id===this.props.user.id){var t=ngettext("You have %(users)s follower.","You have %(users)s followers.",this.state.count);return interpolate(t,{users:this.state.count},!0)}var r=ngettext("%(username)s has %(users)s follower.","%(username)s has %(users)s followers.",this.state.count);return interpolate(r,{username:this.props.profile.username,users:this.state.count},!0)}return gettext("Loading...")}},{key:"getEmptyMessage",value:function(){return this.state.search?gettext("Search returned no users matching specified criteria."):this.props.user.id===this.props.profile.id?gettext("You have no followers."):interpolate(gettext("%(username)s has no followers."),{username:this.props.profile.username},!0)}},{key:"getMoreButton",value:function(){return this.state.more?c["default"].createElement("div",{className:"pager-more"},c["default"].createElement(d["default"],{loading:this.state.isBusy,onClick:this.loadMore},interpolate(gettext("Show more (%(more)s)"),{more:this.state.more},!0))):null}},{key:"getListBody",value:function(){return this.state.isLoaded&&0===this.state.count?c["default"].createElement("p",{className:"lead"},this.getEmptyMessage()):c["default"].createElement("div",null,c["default"].createElement(b["default"],{isLoaded:this.state.isLoaded,users:this.props.users,showRank:!0,cols:2}),this.getMoreButton())}},{key:"getClassName",value:function(){return"profile-"+this.API_FILTER}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getClassName()},c["default"].createElement("nav",{className:"toolbar"},c["default"].createElement("h3",{className:"toolbar-left"},this.getLabel()),c["default"].createElement(h["default"],{className:"toolbar-right",value:this.state.search,onChange:this.search,placeholder:gettext("Search history...")})),this.getListBody())}}]),t}(c["default"].Component);r["default"]=P},{"../../index":119,"../../reducers/users":162,"../../services/ajax":163,"../../services/page-title":170,"../../services/snackbar":172,"../../services/store":173,"../button":4,"../search":56,"../users-list/root":102,react:"react"}],42:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=(a(l),e("./followers")),c=a(u),f=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"setSpecialProps",value:function(){this.PRELOADED_DATA_KEY="PROFILE_FOLLOWS",this.TITLE=gettext("Follows"),this.API_FILTER="follows"}},{key:"getLabel",value:function(){if(this.state.isLoaded){if(this.state.search){var e=ngettext("Found %(users)s user.","Found %(users)s users.",this.state.count);return interpolate(e,{users:this.state.count},!0)}if(this.props.profile.id===this.props.user.id){var t=ngettext("You are following %(users)s user.","You are following %(users)s users.",this.state.count);return interpolate(t,{users:this.state.count},!0)}var r=ngettext("%(username)s is following %(users)s user.","%(username)s is following %(users)s users.",this.state.count);return interpolate(r,{username:this.props.profile.username,users:this.state.count},!0)}return gettext("Loading...")}},{key:"getEmptyMessage",value:function(){return this.state.search?gettext("Search returned no users matching specified criteria."):this.props.user.id===this.props.profile.id?gettext("You are not following any users."):interpolate(gettext("%(username)s is not following any users."),{username:this.props.profile.username},!0)}}]),t}(c["default"]);r["default"]=f},{"./followers":41,react:"react"}],43:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("../avatar"),f=a(c),d=e("../dropdown-toggle"),p=a(d),h=e("./follow-button"),m=a(h),b=e("./moderation/nav"),y=a(b),g=e("../user-status"),v=a(g),_=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getUserStatus",value:function(){return u["default"].createElement("li",{className:"user-status-display"},u["default"].createElement(v["default"],{user:this.props.profile,status:this.props.profile.status},u["default"].createElement(g.StatusIcon,{user:this.props.profile,status:this.props.profile.status}),u["default"].createElement(g.StatusLabel,{user:this.props.profile,status:this.props.profile.status,className:"status-label"})))}},{key:"getUserRank",value:function(){return this.props.profile.rank.is_tab?u["default"].createElement("li",{className:"user-rank"},u["default"].createElement("a",{href:this.props.profile.rank.absolute_url,className:"item-title"},this.props.profile.rank.name)):u["default"].createElement("li",{className:"user-rank"},u["default"].createElement("span",{className:"item-title"},this.props.profile.rank.name))}},{key:"getUserTitle",value:function(){return this.props.profile.title?u["default"].createElement("li",{className:"user-title"},this.props.profile.title):this.props.profile.rank.title?u["default"].createElement("li",{className:"user-title"},this.props.profile.rank.title):null}},{key:"getJoinedOn",value:function(){var e=interpolate(gettext("Joined on %(joined_on)s"),{joined_on:this.props.profile.joined_on.format("LL, LT")},!0),t=interpolate(gettext("Joined %(joined_on)s"),{joined_on:this.props.profile.joined_on.fromNow()},!0);return u["default"].createElement("li",{className:"user-joined-on"},u["default"].createElement("abbr",{title:e},t))}},{key:"getEmail",value:function(){return this.props.profile.email?u["default"].createElement("li",{className:"user-email"},u["default"].createElement("a",{href:"mailto:"+this.props.profile.email,className:"item-title"},this.props.profile.email)):null}},{key:"getFollowButton",value:function(){return this.props.profile.acl.can_follow?u["default"].createElement(m["default"],{className:"btn btn-aligned hidden-xs hidden-sm",profile:this.props.profile}):null}},{key:"getModerationButton",value:function(){return this.props.profile.acl.can_moderate?u["default"].createElement("div",{className:"btn-group btn-aligned hidden-xs hidden-sm"},u["default"].createElement("button",{className:"btn btn-default btn-moderate dropdown-toggle",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},u["default"].createElement("span",{className:"material-icon"},"tonality"),gettext("Moderation")),u["default"].createElement(y["default"],{profile:this.props.profile})):null}},{key:"render",value:function(){return u["default"].createElement("div",{className:"page-header"},u["default"].createElement("div",{className:"container"},u["default"].createElement("div",{className:"row"},u["default"].createElement("div",{className:"col-md-9 col-md-offset-3"},u["default"].createElement("h1",{className:"pull-left"},u["default"].createElement(f["default"],{user:this.props.profile,size:"100"}),u["default"].createElement("span",{className:"user-name"},this.props.profile.username)),this.getFollowButton(),this.getModerationButton(),u["default"].createElement(p["default"],{toggleNav:this.props.toggleNav,dropdown:this.props.dropdown})))),u["default"].createElement("div",{className:"header-stats"},u["default"].createElement("div",{className:"container"},u["default"].createElement("div",{className:"row"},u["default"].createElement("div",{className:"col-md-9 col-md-offset-3"},u["default"].createElement("ul",{className:"list-inline"},this.getUserStatus(),this.getUserRank(),this.getUserTitle(),this.getJoinedOn(),this.getEmail()))))))}}]),t}(u["default"].Component);r["default"]=_},{"../avatar":2,"../dropdown-toggle":18,"../user-status":95,"./follow-button":40,"./moderation/nav":47,react:"react"}],44:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("../../button"),f=a(c),d=e("../../form"),p=a(d),h=e("../../form-group"),m=a(h),b=e("../../modal-loader"),y=a(b),g=e("../../yes-no-switch"),v=a(g),_=e("../../modal-message"),E=a(_),w=e("../../../reducers/users"),O=e("../../../services/ajax"),k=a(O),N=e("../../../services/snackbar"),j=a(N),x=e("../../../services/store"),P=a(x),C=function(e){function t(e){n(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.state={isLoaded:!1,isLoading:!1,error:null,is_avatar_locked:"",avatar_lock_user_message:"",avatar_lock_staff_message:""},r}return s(t,e),i(t,[{key:"componentDidMount",value:function(){var e=this;k["default"].get(this.props.profile.api_url.moderate_avatar).then(function(t){e.setState({isLoaded:!0,is_avatar_locked:t.is_avatar_locked,avatar_lock_user_message:t.avatar_lock_user_message||"",avatar_lock_staff_message:t.avatar_lock_staff_message||""})},function(t){e.setState({isLoaded:!0,error:t.detail})})}},{key:"clean",value:function(){return this.isValid()?!0:(j["default"].error(this.validate().username[0]),!1)}},{key:"send",value:function(){return k["default"].post(this.props.profile.api_url.moderate_avatar,{is_avatar_locked:this.state.is_avatar_locked,avatar_lock_user_message:this.state.avatar_lock_user_message,avatar_lock_staff_message:this.state.avatar_lock_staff_message})}},{key:"handleSuccess",value:function(e){P["default"].dispatch((0,w.updateAvatar)(this.props.profile,e.avatar_hash)),j["default"].success(gettext("Avatar controls have been changed."))}},{key:"getFormBody",value:function(){return u["default"].createElement("form",{onSubmit:this.handleSubmit},u["default"].createElement("div",{className:"modal-body"},u["default"].createElement(m["default"],{label:gettext("Lock avatar"),helpText:gettext("Locking user avatar will prohibit user from changing his avatar and will reset his/her avatar to default one."),"for":"id_is_avatar_locked"},u["default"].createElement(v["default"],{id:"id_is_avatar_locked",disabled:this.state.isLoading,iconOn:"lock_outline",iconOff:"lock_open",labelOn:gettext("Disallow user from changing avatar"),labelOff:gettext("Allow user to change avatar"),onChange:this.bindInput("is_avatar_locked"),value:this.state.is_avatar_locked})),u["default"].createElement(m["default"],{label:gettext("User message"),helpText:gettext("Optional message for user explaining why he/she is prohibited form changing avatar."),"for":"id_avatar_lock_user_message"},u["default"].createElement("textarea",{id:"id_avatar_lock_user_message",className:"form-control",rows:"4",disabled:this.state.isLoading,onChange:this.bindInput("avatar_lock_user_message"),value:this.state.avatar_lock_user_message})),u["default"].createElement(m["default"],{label:gettext("Staff message"),helpText:gettext("Optional message for forum team members explaining why user is prohibited form changing avatar."),"for":"id_avatar_lock_staff_message"},u["default"].createElement("textarea",{id:"id_avatar_lock_staff_message",className:"form-control",rows:"4",disabled:this.state.isLoading,onChange:this.bindInput("avatar_lock_staff_message"),value:this.state.avatar_lock_staff_message}))),u["default"].createElement("div",{className:"modal-footer"},u["default"].createElement("button",{type:"button",className:"btn btn-default","data-dismiss":"modal"},gettext("Close")),u["default"].createElement(f["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Save changes"))))}},{key:"getModalBody",value:function(){return this.state.error?u["default"].createElement(E["default"],{icon:"remove_circle_outline",message:this.state.error}):this.state.isLoaded?this.getFormBody():u["default"].createElement(y["default"],null)}},{key:"getClassName",value:function(){return this.state.error?"modal-dialog modal-message modal-avatar-controls":"modal-dialog modal-avatar-controls"}},{key:"render",value:function(){return u["default"].createElement("div",{className:this.getClassName(),role:"document"},u["default"].createElement("div",{className:"modal-content"},u["default"].createElement("div",{className:"modal-header"},u["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},u["default"].createElement("span",{"aria-hidden":"true"},"×")),u["default"].createElement("h4",{className:"modal-title"},gettext("Avatar controls"))),this.getModalBody()))}}]),t}(p["default"]);r["default"]=C},{"../../../reducers/users":162,"../../../services/ajax":163,"../../../services/snackbar":172,"../../../services/store":173,"../../button":4,"../../form":20,"../../form-group":19,"../../modal-loader":23,
+"../../modal-message":24,"../../yes-no-switch":118,react:"react"}],45:[function(e,t,r){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function n(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),u=e("react"),c=n(u),f=e("../../button"),d=n(f),p=e("../../form"),h=n(p),m=e("../../form-group"),b=n(m),y=e("../../modal-loader"),g=n(y),v=e("../../modal-message"),_=n(v),E=e("../../../index"),w=n(E),O=e("../../../reducers/username-history"),k=e("../../../reducers/users"),N=e("../../../services/ajax"),j=n(N),x=e("../../../services/snackbar"),P=n(x),C=e("../../../services/store"),S=n(C),T=e("../../../utils/validators"),M=a(T),L=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));return r.state={isLoaded:!1,isLoading:!1,error:null,username:"",validators:{username:[M.usernameContent(),M.usernameMinLength(w["default"].get("SETTINGS")),M.usernameMaxLength(w["default"].get("SETTINGS"))]}},r}return i(t,e),l(t,[{key:"componentDidMount",value:function(){var e=this;j["default"].get(this.props.profile.api_url.moderate_username).then(function(){e.setState({isLoaded:!0})},function(t){e.setState({isLoaded:!0,error:t.detail})})}},{key:"clean",value:function(){return this.isValid()?!0:(P["default"].error(this.validate().username[0]),!1)}},{key:"send",value:function(){return j["default"].post(this.props.profile.api_url.moderate_username,{username:this.state.username})}},{key:"handleSuccess",value:function(e){this.setState({username:""}),S["default"].dispatch((0,O.addNameChange)(e,this.props.profile,this.props.user)),S["default"].dispatch((0,k.updateUsername)(this.props.profile,e.username,e.slug)),P["default"].success(gettext("Username has been changed."))}},{key:"getFormBody",value:function(){return c["default"].createElement("form",{onSubmit:this.handleSubmit},c["default"].createElement("div",{className:"modal-body"},c["default"].createElement(b["default"],{label:gettext("New username"),"for":"id_username"},c["default"].createElement("input",{type:"text",id:"id_username",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("username"),value:this.state.username}))),c["default"].createElement("div",{className:"modal-footer"},c["default"].createElement("button",{type:"button",className:"btn btn-default","data-dismiss":"modal"},gettext("Close")),c["default"].createElement(d["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Change username"))))}},{key:"getModalBody",value:function(){return this.state.error?c["default"].createElement(_["default"],{icon:"remove_circle_outline",message:this.state.error}):this.state.isLoaded?this.getFormBody():c["default"].createElement(g["default"],null)}},{key:"getClassName",value:function(){return this.state.error?"modal-dialog modal-message modal-rename-user":"modal-dialog modal-rename-user"}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getClassName(),role:"document"},c["default"].createElement("div",{className:"modal-content"},c["default"].createElement("div",{className:"modal-header"},c["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},c["default"].createElement("span",{"aria-hidden":"true"},"×")),c["default"].createElement("h4",{className:"modal-title"},gettext("Change username"))),this.getModalBody()))}}]),t}(h["default"]);r["default"]=L},{"../../../index":119,"../../../reducers/username-history":161,"../../../reducers/users":162,"../../../services/ajax":163,"../../../services/snackbar":172,"../../../services/store":173,"../../../utils/validators":188,"../../button":4,"../../form":20,"../../form-group":19,"../../modal-loader":23,"../../modal-message":24,react:"react"}],46:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("../../button"),f=a(c),d=e("../../form"),p=a(d),h=e("../../form-group"),m=a(h),b=e("../../modal-loader"),y=a(b),g=e("../../modal-message"),v=a(g),_=e("../../yes-no-switch"),E=a(_),w=e("../../../index"),O=a(w),k=e("../../../services/ajax"),N=a(k),j=e("../../../services/polls"),x=a(j),P=function(e){function t(e){n(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.countdown=function(){window.setTimeout(function(){r.state.countdown>1?(r.setState({countdown:r.state.countdown-1}),r.countdown()):r.state.confirm||r.setState({confirm:!0})},1e3)},r.state={isLoaded:!1,isLoading:!1,isDeleted:!1,error:null,countdown:5,confirm:!1,with_content:!1},r}return s(t,e),i(t,[{key:"componentDidMount",value:function(){var e=this;N["default"].get(this.props.profile.api_url["delete"]).then(function(){e.setState({isLoaded:!0}),e.countdown()},function(t){e.setState({isLoaded:!0,error:t.detail})})}},{key:"send",value:function(){return N["default"].post(this.props.profile.api_url["delete"],{with_content:this.state.with_content})}},{key:"handleSuccess",value:function(){x["default"].stop("user-profile"),this.state.with_content?this.setState({isDeleted:interpolate(gettext("%(username)s's account, threads, posts and other content has been deleted."),{username:this.props.profile.username},!0)}):this.setState({isDeleted:interpolate(gettext("%(username)s's account has been deleted and other content has been hidden."),{username:this.props.profile.username},!0)})}},{key:"getButtonLabel",value:function(){return this.state.confirm?interpolate(gettext("Delete %(username)s"),{username:this.props.profile.username},!0):interpolate(gettext("Please wait... (%(countdown)ss)"),{countdown:this.state.countdown},!0)}},{key:"getForm",value:function(){return u["default"].createElement("form",{onSubmit:this.handleSubmit,className:"form-horizontal"},u["default"].createElement("div",{className:"modal-body"},u["default"].createElement(m["default"],{label:gettext("User content"),labelClass:"col-sm-4",controlClass:"col-sm-8","for":"id_with_content"},u["default"].createElement(E["default"],{id:"id_with_content",disabled:this.state.isLoading,labelOn:gettext("Delete together with user's account"),labelOff:gettext("Hide after deleting user's account"),onChange:this.bindInput("with_content"),value:this.state.with_content}))),u["default"].createElement("div",{className:"modal-footer"},u["default"].createElement("button",{type:"button",className:"btn btn-default","data-dismiss":"modal"},gettext("Cancel")),u["default"].createElement(f["default"],{className:"btn-danger",loading:this.state.isLoading,disabled:!this.state.confirm},this.getButtonLabel())))}},{key:"getDeletedBody",value:function(){return u["default"].createElement("div",{className:"modal-body"},u["default"].createElement("div",{className:"message-icon"},u["default"].createElement("span",{className:"material-icon"},"info_outline")),u["default"].createElement("div",{className:"message-body"},u["default"].createElement("p",{className:"lead"},this.state.isDeleted),u["default"].createElement("p",null,u["default"].createElement("a",{href:O["default"].get("USERS_LIST_URL")},gettext("Return to users list")))))}},{key:"getModalBody",value:function(){return this.state.error?u["default"].createElement(v["default"],{icon:"remove_circle_outline",message:this.state.error}):this.state.isLoaded?this.state.isDeleted?this.getDeletedBody():this.getForm():u["default"].createElement(y["default"],null)}},{key:"getClassName",value:function(){return this.state.error||this.state.isDeleted?"modal-dialog modal-message modal-delete-account":"modal-dialog modal-delete-account"}},{key:"render",value:function(){return u["default"].createElement("div",{className:this.getClassName(),role:"document"},u["default"].createElement("div",{className:"modal-content"},u["default"].createElement("div",{className:"modal-header"},u["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},u["default"].createElement("span",{"aria-hidden":"true"},"×")),u["default"].createElement("h4",{className:"modal-title"},gettext("Delete user account"))),this.getModalBody()))}}]),t}(p["default"]);r["default"]=P},{"../../../index":119,"../../../services/ajax":163,"../../../services/polls":171,"../../button":4,"../../form":20,"../../form-group":19,"../../modal-loader":23,"../../modal-message":24,"../../yes-no-switch":118,react:"react"}],47:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("react-redux"),f=e("./avatar-controls"),d=a(f),p=e("./change-username"),h=a(p),m=e("./delete-account"),b=a(m),y=e("../../../services/modal"),g=a(y),v=function(e){return{tick:e.tick,user:e.auth,profile:e.profile}},_=function(e){function t(){var e,r,a,s;n(this,t);for(var i=arguments.length,l=Array(i),u=0;i>u;u++)l[u]=arguments[u];return r=a=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(l))),a.showAvatarDialog=function(){g["default"].show((0,c.connect)(v)(d["default"]))},a.showRenameDialog=function(){g["default"].show((0,c.connect)(v)(h["default"]))},a.showDeleteDialog=function(){g["default"].show((0,c.connect)(v)(b["default"]))},s=r,o(a,s)}return s(t,e),i(t,[{key:"getAvatarButton",value:function(){return this.props.profile.acl.can_moderate_avatar?u["default"].createElement("li",null,u["default"].createElement("button",{type:"button",className:"btn-link",onClick:this.showAvatarDialog},u["default"].createElement("span",{className:"material-icon"},"portrait"),gettext("Avatar controls"))):null}},{key:"getRenameButton",value:function(){return this.props.profile.acl.can_rename?u["default"].createElement("li",null,u["default"].createElement("button",{type:"button",className:"btn-link",onClick:this.showRenameDialog},u["default"].createElement("span",{className:"material-icon"},"credit_card"),gettext("Change username"))):null}},{key:"getDeleteButton",value:function(){return this.props.profile.acl.can_delete?u["default"].createElement("li",null,u["default"].createElement("button",{type:"button",className:"btn-link",onClick:this.showDeleteDialog},u["default"].createElement("span",{className:"material-icon"},"clear"),gettext("Delete account"))):null}},{key:"render",value:function(){return u["default"].createElement("ul",{className:"dropdown-menu dropdown-menu-right",role:"menu"},this.getAvatarButton(),this.getRenameButton(),this.getDeleteButton(),u["default"].createElement("li",{className:"divider hidden-md hidden-lg"}),u["default"].createElement("li",{className:"dropdown-buttons hidden-md hidden-lg"},u["default"].createElement("button",{type:"button",className:"btn btn-default btn-block",onClick:this.props.toggleNav},u["default"].createElement("span",{className:"material-icon"},"menu"),gettext("Menu"))))}}]),t}(u["default"].Component);r["default"]=_},{"../../../services/modal":169,"./avatar-controls":44,"./change-username":45,"./delete-account":46,react:"react","react-redux":"react-redux"}],48:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0}),r.CompactNav=r.SideNav=void 0;var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("react-router"),f=e("../li"),d=a(f),p=e("./follow-button"),h=a(p),m=e("../../index"),b=(a(m),r.SideNav=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getMeta",value:function(e){return e?u["default"].createElement("span",{className:"badge"},this.props.profile[e.attr]):null}},{key:"render",value:function(){var e=this;return u["default"].createElement("div",{className:"list-group nav-side"},this.props.pages.map(function(t){return u["default"].createElement(c.Link,{to:e.props.baseUrl+t.component+"/",className:"list-group-item",activeClassName:"active",key:t.component},u["default"].createElement("span",{className:"material-icon"},t.icon),t.name,e.getMeta(t.meta))}))}}]),t}(u["default"].Component));r.CompactNav=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"showSpecialOptions",value:function(){return this.props.profile.acl.can_follow||this.props.profile.acl.can_moderate}},{key:"getFollowButton",value:function(){return this.props.profile.acl.can_follow?u["default"].createElement(h["default"],{className:"btn btn-block",profile:this.props.profile}):null}},{key:"getModerationButton",value:function(){return this.props.profile.acl.can_moderate?u["default"].createElement("button",{type:"button",className:"btn btn-default btn-block",onClick:this.props.toggleModeration},u["default"].createElement("span",{className:"material-icon"},"tonality"),gettext("Moderation")):null}},{key:"getSpecialOptions",value:function(){return this.showSpecialOptions()?u["default"].createElement("li",{className:"dropdown-buttons"},this.getFollowButton(),this.getModerationButton()):null}},{key:"render",value:function(){var e=this;return u["default"].createElement("ul",{className:"dropdown-menu",role:"menu"},this.getSpecialOptions(),this.showSpecialOptions()?u["default"].createElement("li",{className:"divider"}):null,this.props.pages.map(function(t){return u["default"].createElement(d["default"],{path:e.props.baseUrl+t.component+"/",key:t.component},u["default"].createElement(c.Link,{to:e.props.baseUrl+t.component+"/",onClick:e.props.hideNav},u["default"].createElement("span",{className:"material-icon"},t.icon),t.name,e.getMeta(t.meta)))}))}}]),t}(b)},{"../../index":119,"../li":21,"./follow-button":40,react:"react","react-router":"react-router"}],49:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{tick:e.tick.tick,user:e.auth.user,users:e.users,profile:e.profile,"username-history":e["username-history"]}}function l(){var e=[];return T["default"].get("PROFILE_PAGES").forEach(function(t){e.push(Object.assign({},t,{path:T["default"].get("PROFILE").absolute_url+t.component+"/",component:(0,d.connect)(i)(B[t.component])}))}),e}Object.defineProperty(r,"__esModule",{value:!0});var u=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}();r.select=i,r.paths=l;var c=e("react"),f=a(c),d=e("react-redux"),p=e("../avatar"),h=a(p),m=e("./ban-details"),b=a(m),y=e("./followers"),g=a(y),v=e("./follows"),_=a(v),E=e("./username-history"),w=a(E),O=e("./header"),k=a(O),N=e("./moderation/nav"),j=a(N),x=e("./navs"),P=e("../with-dropdown"),C=a(P),S=e("../../index"),T=a(S),M=e("../../reducers/profile"),L=e("../../services/polls"),R=a(L),A=e("../../services/store"),I=a(A),U=function(e){function t(e){n(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.update=function(e){I["default"].dispatch((0,M.hydrate)(e))},r.toggleNav=function(){"pages"===r.state.dropdown?r.setState({dropdown:!1}):r.setState({dropdown:"pages"})},r.toggleModeration=function(){"moderation"===r.state.dropdown?r.setState({dropdown:!1}):r.setState({dropdown:"moderation"})},r.startPolling(e.profile.api_url.root),r}return s(t,e),u(t,[{key:"startPolling",value:function(e){R["default"].start({poll:"user-profile",url:e,frequency:9e4,update:this.update})}},{key:"getNavDropdown",value:function(){return"pages"===this.state.dropdown?f["default"].createElement(x.CompactNav,{pages:T["default"].get("PROFILE_PAGES"),baseUrl:T["default"].get("PROFILE").absolute_url,profile:this.props.profile,toggleModeration:this.toggleModeration,hideNav:this.hideNav}):"moderation"===this.state.dropdown?f["default"].createElement(j["default"],{profile:this.props.profile,toggleNav:this.toggleNav,hideNav:this.hideNav}):null}},{key:"getClassName",value:function(){var e="page page-user-profile";return e}},{key:"render",value:function(){return f["default"].createElement("div",{className:this.getClassName()},f["default"].createElement(k["default"],{user:this.props.user,profile:this.props.profile,toggleNav:this.toggleNav,toggleModeration:this.toggleModeration}),f["default"].createElement("div",{className:this.getCompactNavClassName()},this.getNavDropdown()),f["default"].createElement("div",{className:"container"},f["default"].createElement("div",{className:"row"},f["default"].createElement("div",{className:"col-md-3 hidden-xs hidden-sm"},f["default"].createElement("div",{className:"profile-side-avatar"},f["default"].createElement(h["default"],{user:this.props.profile,size:"400"})),f["default"].createElement(x.SideNav,{pages:T["default"].get("PROFILE_PAGES"),baseUrl:T["default"].get("PROFILE").absolute_url,profile:this.props.profile})),f["default"].createElement("div",{className:"col-md-9"},this.props.children))))}}]),t}(C["default"]);r["default"]=U;var D=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(t,[{key:"render",value:function(){return f["default"].createElement("div",{className:"container"},f["default"].createElement("p",null,"Hello, I'm placeholder for "+this.props.route.name))}}]),t}(f["default"].Component),B={posts:D,threads:D,followers:g["default"],follows:_["default"],"username-history":w["default"],"ban-details":b["default"]}},{"../../index":119,"../../reducers/profile":156,"../../services/polls":171,"../../services/store":173,"../avatar":2,"../with-dropdown":117,"./ban-details":39,"./followers":41,"./follows":42,"./header":43,"./moderation/nav":47,"./navs":48,"./username-history":50,react:"react","react-redux":"react-redux"}],50:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("../button"),f=a(c),d=e("../search"),p=a(d),h=e("../username-history/root"),m=a(h),b=e("../../index"),y=a(b),g=e("../../reducers/username-history"),v=e("../../services/ajax"),_=a(v),E=e("../../services/snackbar"),w=a(E),O=e("../../services/store"),k=a(O),N=e("../../services/page-title"),j=a(N),x=function(e){function t(e){n(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.loadMore=function(){r.setState({isBusy:!0}),r.loadChanges(r.state.page+1,r.state.search)},r.search=function(e){r.setState({isLoaded:!1,isBusy:!0,search:e.target.value,count:0,more:0,page:1,pages:1}),r.loadChanges(1,e.target.value)},y["default"].has("PROFILE_NAME_HISTORY")?r.initWithPreloadedData(y["default"].pop("PROFILE_NAME_HISTORY")):r.initWithoutPreloadedData(),r}return s(t,e),i(t,[{key:"initWithPreloadedData",value:function(e){this.state={isLoaded:!0,isBusy:!1,search:"",count:e.count,more:e.more,page:e.page,pages:e.pages},k["default"].dispatch((0,g.hydrate)(e.results))}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1,isBusy:!1,search:"",count:0,more:0,page:1,pages:1},this.loadChanges()}},{key:"loadChanges",value:function(){var e=this,t=arguments.length<=0||void 0===arguments[0]?1:arguments[0],r=arguments.length<=1||void 0===arguments[1]?null:arguments[1];_["default"].get(y["default"].get("USERNAME_CHANGES_API"),{user:this.props.profile.id,search:r,page:t||1},"search-username-history").then(function(r){1===t?k["default"].dispatch((0,g.hydrate)(r.results)):k["default"].dispatch((0,g.append)(r.results)),e.setState({isLoaded:!0,isBusy:!1,count:r.count,more:r.more,page:r.page,pages:r.pages})},function(e){w["default"].apiError(e)})}},{key:"componentDidMount",value:function(){j["default"].set({title:gettext("Username history"),parent:this.props.profile.username})}},{key:"getLabel",value:function(){if(this.state.isLoaded){if(this.state.search){var e=ngettext("Found %(changes)s username change.","Found %(changes)s username changes.",this.state.count);return interpolate(e,{changes:this.state.count},!0)}if(this.props.profile.id===this.props.user.id){var t=ngettext("Your username was changed %(changes)s time.","Your username was changed %(changes)s times.",this.state.count);return interpolate(t,{changes:this.state.count},!0)}var r=ngettext("%(username)s's username was changed %(changes)s time.","%(username)s's username was changed %(changes)s times.",this.state.count);return interpolate(r,{username:this.props.profile.username,changes:this.state.count},!0)}return gettext("Loading...")}},{key:"getEmptyMessage",value:function(){return this.state.search?gettext("Search returned no username changes matching specified criteria."):this.props.user.id===this.props.profile.id?gettext("No name changes have been recorded for your account."):interpolate(gettext("%(username)s's username was never changed."),{username:this.props.profile.username},!0)}},{key:"getMoreButton",value:function(){return this.state.more?u["default"].createElement("div",{className:"pager-more"},u["default"].createElement(f["default"],{loading:this.state.isBusy,onClick:this.loadMore},interpolate(gettext("Show older (%(more)s)"),{more:this.state.more},!0))):null}},{key:"render",value:function(){return u["default"].createElement("div",{className:"profile-username-history"},u["default"].createElement("nav",{className:"toolbar"},u["default"].createElement("h3",{className:"toolbar-left"},this.getLabel()),u["default"].createElement(p["default"],{className:"toolbar-right",value:this.state.search,onChange:this.search,placeholder:gettext("Search history...")})),u["default"].createElement(m["default"],{isLoaded:this.state.isLoaded,emptyMessage:this.getEmptyMessage(),changes:this.props["username-history"]}),this.getMoreButton())}}]),t}(u["default"].Component);r["default"]=x},{"../../index":119,"../../reducers/username-history":161,"../../services/ajax":163,"../../services/page-title":170,"../../services/snackbar":172,"../../services/store":173,"../button":4,"../search":56,"../username-history/root":101,react:"react"}],51:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("./loader"),f=a(c),d=e("./register.js"),p=a(d),h=e("../services/captcha"),m=a(h),b=e("../services/modal"),y=a(b),g=e("../services/snackbar"),v=a(g),_=e("../services/zxcvbn"),E=a(_),w=function(e){function t(e){n(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.showRegisterModal=function(){"closed"===misago.get("SETTINGS").account_activation?v["default"].info(gettext("New registrations are currently disabled.")):r.state.isLoaded?y["default"].show(p["default"]):(r.setState({isLoading:!0}),Promise.all([m["default"].load(),E["default"].load()]).then(function(){r.state.isLoaded||r.setState({isLoading:!1,isLoaded:!1}),y["default"].show(p["default"])}))},r.state={isLoading:!1,isLoaded:!1},r}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.className+(this.state.isLoading?" btn-loading":"")}},{key:"render",value:function(){return u["default"].createElement("button",{type:"button",onClick:this.showRegisterModal,className:"btn "+this.getClassName(),disabled:this.state.isLoaded},gettext("Register"),this.state.isLoading?u["default"].createElement(f["default"],null):null)}}]),t}(u["default"].Component);r["default"]=w},{"../services/captcha":165,"../services/modal":169,"../services/snackbar":172,"../services/zxcvbn":174,"./loader":22,"./register.js":52,react:"react"}],52:[function(e,t,r){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function n(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0}),r.RegisterComplete=r.RegisterForm=void 0;var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),u=e("react"),c=n(u),f=e("./button"),d=n(f),p=e("./form"),h=n(p),m=e("./form-group"),b=n(m),y=e("./password-strength"),g=n(y),v=e("../index"),_=n(v),E=e("../services/ajax"),w=n(E),O=e("../services/auth"),k=n(O),N=e("../services/captcha"),j=n(N),x=e("../services/modal"),P=n(x),C=e("../services/snackbar"),S=n(C),T=e("../utils/banned-page"),M=n(T),L=e("../utils/validators"),R=a(L),A=r.RegisterForm=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));return r.state={isLoading:!1,username:"",email:"",password:"",captcha:"",validators:{username:[R.usernameContent(),R.usernameMinLength(_["default"].get("SETTINGS")),R.usernameMaxLength(_["default"].get("SETTINGS"))],email:[R.email()],password:[R.passwordMinLength(_["default"].get("SETTINGS"))],captcha:j["default"].validator()},errors:{}},r}return i(t,e),l(t,[{key:"clean",value:function(){return this.isValid()?!0:(S["default"].error(gettext("Form contains errors.")),this.setState({errors:this.validate()}),!1)}},{key:"send",value:function(){return w["default"].post(_["default"].get("USERS_API"),{username:this.state.username,email:this.state.email,password:this.state.password,captcha:this.state.captcha})}},{key:"handleSuccess",value:function(e){this.props.callback(e)}},{key:"handleError",value:function(e){400===e.status?(this.setState({errors:Object.assign({},this.state.errors,e)}),S["default"].error(gettext("Form contains errors."))):403===e.status&&e.ban?((0,M["default"])(e.ban),P["default"].hide()):S["default"].apiError(e)}},{key:"getLegalFootNote",value:function(){return _["default"].get("TERMS_OF_SERVICE_URL")?c["default"].createElement("a",{href:_["default"].get("TERMS_OF_SERVICE_URL"),target:"_blank"},gettext("By registering you agree to site's terms and conditions.")):null}},{key:"render",value:function(){return c["default"].createElement("div",{className:"modal-dialog modal-register",role:"document"},c["default"].createElement("div",{className:"modal-content"},c["default"].createElement("div",{
+className:"modal-header"},c["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},c["default"].createElement("span",{"aria-hidden":"true"},"×")),c["default"].createElement("h4",{className:"modal-title"},gettext("Register"))),c["default"].createElement("form",{onSubmit:this.handleSubmit,className:"form-horizontal"},c["default"].createElement("input",{type:"type",style:{display:"none"}}),c["default"].createElement("input",{type:"password",style:{display:"none"}}),c["default"].createElement("div",{className:"modal-body"},c["default"].createElement(b["default"],{label:gettext("Username"),"for":"id_username",labelClass:"col-sm-4",controlClass:"col-sm-8",validation:this.state.errors.username},c["default"].createElement("input",{type:"text",id:"id_username",className:"form-control","aria-describedby":"id_username_status",disabled:this.state.isLoading,onChange:this.bindInput("username"),value:this.state.username})),c["default"].createElement(b["default"],{label:gettext("E-mail"),"for":"id_email",labelClass:"col-sm-4",controlClass:"col-sm-8",validation:this.state.errors.email},c["default"].createElement("input",{type:"text",id:"id_email",className:"form-control","aria-describedby":"id_email_status",disabled:this.state.isLoading,onChange:this.bindInput("email"),value:this.state.email})),c["default"].createElement(b["default"],{label:gettext("Password"),"for":"id_password",labelClass:"col-sm-4",controlClass:"col-sm-8",validation:this.state.errors.password,extra:c["default"].createElement(g["default"],{password:this.state.password,inputs:[this.state.username,this.state.email]})},c["default"].createElement("input",{type:"password",id:"id_password",className:"form-control","aria-describedby":"id_password_status",disabled:this.state.isLoading,onChange:this.bindInput("password"),value:this.state.password})),j["default"].component({form:this,labelClass:"col-sm-4",controlClass:"col-sm-8"})),c["default"].createElement("div",{className:"modal-footer"},this.getLegalFootNote(),c["default"].createElement(d["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Register account"))))))}}]),t}(h["default"]),I=r.RegisterComplete=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),l(t,[{key:"getLead",value:function(){return"user"===this.props.activation?gettext("%(username)s, your account has been created but you need to activate it before you will be able to sign in."):"admin"===this.props.activation?gettext("%(username)s, your account has been created but board administrator will have to activate it before you will be able to sign in."):void 0}},{key:"getSubscript",value:function(){return"user"===this.props.activation?gettext("We have sent an e-mail to %(email)s with link that you have to click to activate your account."):"admin"===this.props.activation?gettext("We will send an e-mail to %(email)s when this takes place."):void 0}},{key:"render",value:function(){return c["default"].createElement("div",{className:"modal-dialog modal-message modal-register",role:"document"},c["default"].createElement("div",{className:"modal-content"},c["default"].createElement("div",{className:"modal-header"},c["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},c["default"].createElement("span",{"aria-hidden":"true"},"×")),c["default"].createElement("h4",{className:"modal-title"},gettext("Registration complete"))),c["default"].createElement("div",{className:"modal-body"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"info_outline")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",{className:"lead"},interpolate(this.getLead(),{username:this.props.username},!0)),c["default"].createElement("p",null,interpolate(this.getSubscript(),{email:this.props.email},!0))))))}}]),t}(c["default"].Component),U=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));return r.completeRegistration=function(e){"active"===e.activation?(P["default"].hide(),k["default"].signIn(e)):r.setState({complete:e})},r.state={complete:!1},r}return i(t,e),l(t,[{key:"render",value:function(){return this.state.complete?c["default"].createElement(I,{activation:this.state.complete.activation,username:this.state.complete.username,email:this.state.complete.email}):c["default"].createElement(A,{callback:this.completeRegistration})}}]),t}(c["default"].Component);r["default"]=U},{"../index":119,"../services/ajax":163,"../services/auth":164,"../services/captcha":165,"../services/modal":169,"../services/snackbar":172,"../utils/banned-page":175,"../utils/validators":188,"./button":4,"./form":20,"./form-group":19,"./password-strength":38,react:"react"}],53:[function(e,t,r){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function n(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0}),r.LinkSent=r.RequestLinkForm=void 0;var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),u=e("react"),c=n(u),f=e("../index"),d=n(f),p=e("./button"),h=n(p),m=e("./form"),b=n(m),y=e("../services/ajax"),g=n(y),v=e("../services/snackbar"),_=n(v),E=e("../utils/validators"),w=a(E),O=e("../utils/banned-page"),k=n(O),N=r.RequestLinkForm=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));return r.state={isLoading:!1,email:"",validators:{email:[w.email()]}},r}return i(t,e),l(t,[{key:"clean",value:function(){return this.isValid()?!0:(_["default"].error(gettext("Enter a valid email address.")),!1)}},{key:"send",value:function(){return g["default"].post(d["default"].get("SEND_ACTIVATION_API"),{email:this.state.email})}},{key:"handleSuccess",value:function(e){this.props.callback(e)}},{key:"handleError",value:function(e){["already_active","inactive_admin"].indexOf(e.code)>-1?_["default"].info(e.detail):403===e.status&&e.ban?(0,k["default"])(e.ban):_["default"].apiError(e)}},{key:"render",value:function(){return c["default"].createElement("div",{className:"well well-form well-form-request-activation-link"},c["default"].createElement("form",{onSubmit:this.handleSubmit},c["default"].createElement("div",{className:"form-group"},c["default"].createElement("div",{className:"control-input"},c["default"].createElement("input",{type:"text",className:"form-control",placeholder:gettext("Your e-mail address"),disabled:this.state.isLoading,onChange:this.bindInput("email"),value:this.state.email}))),c["default"].createElement(h["default"],{className:"btn-primary btn-block",loading:this.state.isLoading},gettext("Send link"))))}}]),t}(b["default"]),j=r.LinkSent=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),l(t,[{key:"getMessage",value:function(){return interpolate(gettext("Activation link was sent to %(email)s"),{email:this.props.user.email},!0)}},{key:"render",value:function(){return c["default"].createElement("div",{className:"well well-form well-form-request-activation-link well-done"},c["default"].createElement("div",{className:"done-message"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"check")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",null,this.getMessage())),c["default"].createElement("button",{type:"button",className:"btn btn-primary btn-block",onClick:this.props.callback},gettext("Request another link"))))}}]),t}(c["default"].Component),x=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));return r.complete=function(e){r.setState({complete:e})},r.reset=function(){r.setState({complete:!1})},r.state={complete:!1},r}return i(t,e),l(t,[{key:"render",value:function(){return this.state.complete?c["default"].createElement(j,{user:this.state.complete,callback:this.reset}):c["default"].createElement(N,{callback:this.complete})}}]),t}(c["default"].Component);r["default"]=x},{"../index":119,"../services/ajax":163,"../services/snackbar":172,"../utils/banned-page":175,"../utils/validators":188,"./button":4,"./form":20,react:"react"}],54:[function(e,t,r){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function n(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0}),r.AccountInactivePage=r.LinkSent=r.RequestResetForm=void 0;var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),u=e("react"),c=n(u),f=e("react-dom"),d=n(f),p=e("../index"),h=n(p),m=e("./button"),b=n(m),y=e("./form"),g=n(y),v=e("../services/ajax"),_=n(v),E=e("../services/snackbar"),w=n(E),O=e("../utils/validators"),k=a(O),N=e("../utils/banned-page"),j=n(N),x=r.RequestResetForm=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));return r.state={isLoading:!1,email:"",validators:{email:[k.email()]}},r}return i(t,e),l(t,[{key:"clean",value:function(){return this.isValid()?!0:(w["default"].error(gettext("Enter a valid email address.")),!1)}},{key:"send",value:function(){return _["default"].post(h["default"].get("SEND_PASSWORD_RESET_API"),{email:this.state.email})}},{key:"handleSuccess",value:function(e){this.props.callback(e)}},{key:"handleError",value:function(e){["inactive_user","inactive_admin"].indexOf(e.code)>-1?this.props.showInactivePage(e):403===e.status&&e.ban?(0,j["default"])(e.ban):w["default"].apiError(e)}},{key:"render",value:function(){return c["default"].createElement("div",{className:"well well-form well-form-request-password-reset"},c["default"].createElement("form",{onSubmit:this.handleSubmit},c["default"].createElement("div",{className:"form-group"},c["default"].createElement("div",{className:"control-input"},c["default"].createElement("input",{type:"text",className:"form-control",placeholder:gettext("Your e-mail address"),disabled:this.state.isLoading,onChange:this.bindInput("email"),value:this.state.email}))),c["default"].createElement(b["default"],{className:"btn-primary btn-block",loading:this.state.isLoading},gettext("Send link"))))}}]),t}(g["default"]),P=r.LinkSent=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),l(t,[{key:"getMessage",value:function(){return interpolate(gettext("Reset password link was sent to %(email)s"),{email:this.props.user.email},!0)}},{key:"render",value:function(){return c["default"].createElement("div",{className:"well well-form well-form-request-password-reset well-done"},c["default"].createElement("div",{className:"done-message"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"check")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",null,this.getMessage())),c["default"].createElement("button",{type:"button",className:"btn btn-primary btn-block",onClick:this.props.callback},gettext("Request another link"))))}}]),t}(c["default"].Component),C=r.AccountInactivePage=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),l(t,[{key:"getActivateButton",value:function(){return"inactive_user"===this.props.activation?c["default"].createElement("p",null,c["default"].createElement("a",{href:h["default"].get("REQUEST_ACTIVATION_URL")},gettext("Activate your account."))):null}},{key:"render",value:function(){return c["default"].createElement("div",{className:"page page-message page-message-info page-forgotten-password-inactive"},c["default"].createElement("div",{className:"container"},c["default"].createElement("div",{className:"message-panel"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"info_outline")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",{className:"lead"},gettext("Your account is inactive.")),c["default"].createElement("p",null,this.props.message),this.getActivateButton()))))}}]),t}(c["default"].Component),S=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));return r.complete=function(e){r.setState({complete:e})},r.reset=function(){r.setState({complete:!1})},r.state={complete:!1},r}return i(t,e),l(t,[{key:"showInactivePage",value:function(e){d["default"].render(c["default"].createElement(C,{activation:e.code,message:e.detail}),document.getElementById("page-mount"))}},{key:"render",value:function(){return this.state.complete?c["default"].createElement(P,{user:this.state.complete,callback:this.reset}):c["default"].createElement(x,{callback:this.complete,showInactivePage:this.showInactivePage})}}]),t}(c["default"].Component);r["default"]=S},{"../index":119,"../services/ajax":163,"../services/snackbar":172,"../utils/banned-page":175,"../utils/validators":188,"./button":4,"./form":20,react:"react","react-dom":"react-dom"}],55:[function(e,t,r){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function n(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0}),r.PasswordChangedPage=r.ResetPasswordForm=void 0;var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),u=e("react"),c=n(u),f=e("react-dom"),d=n(f),p=e("../index"),h=n(p),m=e("./button"),b=n(m),y=e("./form"),g=n(y),v=e("./sign-in.js"),_=n(v),E=e("../services/ajax"),w=n(E),O=e("../services/auth"),k=n(O),N=e("../services/modal"),j=n(N),x=e("../services/snackbar"),P=n(x),C=e("../utils/validators"),S=a(C),T=e("../utils/banned-page"),M=n(T),L=r.ResetPasswordForm=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));return r.state={isLoading:!1,password:"",validators:{password:[S.passwordMinLength(h["default"].get("SETTINGS"))]}},r}return i(t,e),l(t,[{key:"clean",value:function(){return this.isValid()?!0:(this.state.password.trim().length?P["default"].error(this.state.errors.password[0]):P["default"].error(gettext("Enter new password.")),!1)}},{key:"send",value:function(){return w["default"].post(h["default"].get("CHANGE_PASSWORD_API"),{password:this.state.password})}},{key:"handleSuccess",value:function(e){this.props.callback(e)}},{key:"handleError",value:function(e){403===e.status&&e.ban?(0,M["default"])(e.ban):P["default"].apiError(e)}},{key:"render",value:function(){return c["default"].createElement("div",{className:"well well-form well-form-reset-password"},c["default"].createElement("form",{onSubmit:this.handleSubmit},c["default"].createElement("div",{className:"form-group"},c["default"].createElement("div",{className:"control-input"},c["default"].createElement("input",{type:"password",className:"form-control",placeholder:gettext("Enter new password"),disabled:this.state.isLoading,onChange:this.bindInput("password"),value:this.state.password}))),c["default"].createElement(b["default"],{className:"btn-primary btn-block",loading:this.state.isLoading},gettext("Change password"))))}}]),t}(g["default"]),R=r.PasswordChangedPage=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),l(t,[{key:"getMessage",value:function(){return interpolate(gettext("%(username)s, your password has been changed successfully."),{username:this.props.user.username},!0)}},{key:"showSignIn",value:function(){j["default"].show(_["default"])}},{key:"render",value:function(){return c["default"].createElement("div",{className:"page page-message page-message-success page-forgotten-password-changed"},c["default"].createElement("div",{className:"container"},c["default"].createElement("div",{className:"message-panel"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"check")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",{className:"lead"},this.getMessage()),c["default"].createElement("p",null,gettext("You will have to sign in using new password before continuing.")),c["default"].createElement("p",null,c["default"].createElement("button",{type:"button",className:"btn btn-primary",onClick:this.showSignIn},gettext("Sign in")))))))}}]),t}(c["default"].Component),A=function(e){function t(){var e,r,a,n;o(this,t);for(var i=arguments.length,l=Array(i),u=0;i>u;u++)l[u]=arguments[u];return r=a=s(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(l))),a.complete=function(e){k["default"].softSignOut(),$('#hidden-login-form input[name="redirect_to"]').remove(),d["default"].render(c["default"].createElement(R,{user:e}),document.getElementById("page-mount"))},n=r,s(a,n)}return i(t,e),l(t,[{key:"render",value:function(){return c["default"].createElement(L,{callback:this.complete})}}]),t}(c["default"].Component);r["default"]=A},{"../index":119,"../services/ajax":163,"../services/auth":164,"../services/modal":169,"../services/snackbar":172,"../utils/banned-page":175,"../utils/validators":188,"./button":4,"./form":20,"./sign-in.js":58,react:"react","react-dom":"react-dom"}],56:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.className?"form-search "+this.props.className:"form-search"}},{key:"render",value:function(){return u["default"].createElement("div",{className:this.getClassName()},u["default"].createElement("input",{type:"text",className:"form-control",value:this.props.value,onChange:this.props.onChange,placeholder:this.props.placeholder||gettext("Search...")}),u["default"].createElement("span",{className:"material-icon"},"search"))}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],57:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=function(e){function t(){var e,r,a,s;n(this,t);for(var i=arguments.length,l=Array(i),u=0;i>u;u++)l[u]=arguments[u];return r=a=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(l))),a.change=function(e){return function(){a.props.onChange({target:{value:e}})}},s=r,o(a,s)}return s(t,e),i(t,[{key:"getChoice",value:function(){var e=this,t=null;return this.props.choices.map(function(r){r.value===e.props.value&&(t=r)}),t}},{key:"getIcon",value:function(){return this.getChoice().icon}},{key:"getLabel",value:function(){return this.getChoice().label}},{key:"render",value:function(){var e=this;return u["default"].createElement("div",{className:"btn-group btn-select-group"},u["default"].createElement("button",{type:"button",className:"btn btn-select dropdown-toggle",id:this.props.id||null,"data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-describedby":this.props["aria-describedby"]||null,disabled:this.props.disabled||!1},u["default"].createElement("span",{className:"material-icon"},this.getIcon()),this.getLabel()),u["default"].createElement("ul",{className:"dropdown-menu"},this.props.choices.map(function(t,r){return u["default"].createElement("li",{key:r},u["default"].createElement("button",{type:"button",className:"btn-link",onClick:e.change(t.value)},u["default"].createElement("span",{className:"material-icon"},t.icon),t.label))})))}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],58:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("../index"),f=a(c),d=e("./button"),p=a(d),h=e("./form"),m=a(h),b=e("../services/ajax"),y=a(b),g=e("../services/modal"),v=a(g),_=e("../services/snackbar"),E=a(_),w=e("../utils/banned-page"),O=a(w),k=function(e){function t(e){n(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.state={isLoading:!1,showActivation:!1,username:"",password:"",validators:{username:[],password:[]}},r}return s(t,e),i(t,[{key:"clean",value:function(){return this.isValid()?!0:(E["default"].error(gettext("Fill out both fields.")),!1)}},{key:"send",value:function(){return y["default"].post(f["default"].get("AUTH_API"),{username:this.state.username,password:this.state.password})}},{key:"handleSuccess",value:function(){var e=$("#hidden-login-form");e.append('<input type="text" name="username" />'),e.append('<input type="password" name="password" />'),e.find('input[type="hidden"]').val(y["default"].getCsrfToken()),e.find('input[name="redirect_to"]').val(window.location.pathname),e.find('input[name="username"]').val(this.state.username),e.find('input[name="password"]').val(this.state.password),e.submit(),this.setState({isLoading:!0})}},{key:"handleError",value:function(e){400===e.status?"inactive_admin"===e.code?E["default"].info(e.detail):"inactive_user"===e.code?(E["default"].info(e.detail),this.setState({showActivation:!0})):"banned"===e.code?((0,O["default"])(e.detail),v["default"].hide()):E["default"].error(e.detail):403===e.status&&e.ban?((0,O["default"])(e.ban),v["default"].hide()):E["default"].apiError(e)}},{key:"getActivationButton",value:function(){return this.state.showActivation?u["default"].createElement("a",{href:f["default"].get("REQUEST_ACTIVATION_URL"),className:"btn btn-success btn-block"},gettext("Activate account")):null}},{key:"render",value:function(){return u["default"].createElement("div",{className:"modal-dialog modal-sm modal-sign-in",role:"document"},u["default"].createElement("div",{className:"modal-content"},u["default"].createElement("div",{className:"modal-header"},u["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},u["default"].createElement("span",{"aria-hidden":"true"},"×")),u["default"].createElement("h4",{className:"modal-title"},gettext("Sign in"))),u["default"].createElement("form",{onSubmit:this.handleSubmit},u["default"].createElement("div",{className:"modal-body"},u["default"].createElement("div",{className:"form-group"},u["default"].createElement("div",{className:"control-input"},u["default"].createElement("input",{id:"id_username",className:"form-control",type:"text",disabled:this.state.isLoading,placeholder:gettext("Username or e-mail"),onChange:this.bindInput("username"),value:this.state.username}))),u["default"].createElement("div",{className:"form-group"},u["default"].createElement("div",{className:"control-input"},u["default"].createElement("input",{id:"id_password",className:"form-control",type:"password",disabled:this.state.isLoading,placeholder:gettext("Password"),onChange:this.bindInput("password"),value:this.state.password})))),u["default"].createElement("div",{className:"modal-footer"},this.getActivationButton(),u["default"].createElement(p["default"],{className:"btn-primary btn-block",loading:this.state.isLoading},gettext("Sign in")),u["default"].createElement("a",{href:f["default"].get("FORGOTTEN_PASSWORD_URL"),className:"btn btn-default btn-block"},gettext("Forgot password?"))))))}}]),t}(m["default"]);r["default"]=k},{"../index":119,"../services/ajax":163,"../services/modal":169,"../services/snackbar":172,"../utils/banned-page":175,"./button":4,"./form":20,react:"react"}],59:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return e.snackbar}Object.defineProperty(r,"__esModule",{value:!0}),r.Snackbar=void 0;var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}();r.select=i;var u=e("react"),c=a(u),f={info:"alert-info",success:"alert-success",warning:"alert-warning",error:"alert-danger"};r.Snackbar=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),l(t,[{key:"getSnackbarClass",value:function(){var e="alerts-snackbar";return e+=this.props.isVisible?" in":" out"}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getSnackbarClass()},c["default"].createElement("p",{className:"alert "+f[this.props.type]},this.props.message))}}]),t}(c["default"].Component)},{react:"react"}],60:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getMessage",value:function(){var e=ngettext("There is %(threads)s new or updated thread. Click this message to show it.","There are %(threads)s new or updated threads. Click this message to show them.",this.props.diffSize);return interpolate(e,{threads:this.props.diffSize},!0)}},{key:"render",value:function(){return u["default"].createElement("li",{className:"list-group-item threads-diff-message"},u["default"].createElement("button",{type:"button",className:"btn btn-block btn-default",onClick:this.props.applyDiff},u["default"].createElement("span",{className:"material-icon"},"cached"),u["default"].createElement("span",{className:"diff-message"},this.getMessage())))}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],61:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e
+}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("./diff-message"),f=a(c),d=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getDiffMessage",value:function(){return this.props.diffSize>0?u["default"].createElement(f["default"],{diffSize:this.props.diffSize,applyDiff:this.props.applyDiff}):null}},{key:"render",value:function(){return u["default"].createElement("div",{className:"threads-list ui-ready"},u["default"].createElement("ul",{className:"list-group"},this.getDiffMessage(),this.props.children))}}]),t}(u["default"].Component);r["default"]=d},{"./diff-message":60,react:"react"}],62:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("../thread/preview"),f=a(c),d=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"render",value:function(){return u["default"].createElement("div",{className:"threads-list ui-preview"},u["default"].createElement("ul",{className:"list-group"},[0,1,2].map(function(e){return u["default"].createElement(f["default"],{hiddenOnMobile:e>0,key:e})})))}}]),t}(u["default"].Component);r["default"]=d},{"../thread/preview":71,react:"react"}],63:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("./diff-message"),f=a(c),d=e("../thread/ready"),p=a(d),h=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getDiffMessage",value:function(){return this.props.diffSize>0?u["default"].createElement(f["default"],{diffSize:this.props.diffSize,applyDiff:this.props.applyDiff}):null}},{key:"render",value:function(){var e=this;return u["default"].createElement("div",{className:"threads-list ui-ready"},u["default"].createElement("ul",{className:"list-group"},this.getDiffMessage(),this.props.threads.map(function(t){return u["default"].createElement(p["default"],{categories:e.props.categories,thread:t,list:e.props.list,showOptions:e.props.showOptions,isSelected:e.props.selection.indexOf(t.id)>=0,isBusy:e.props.busyThreads.indexOf(t.id)>=0,key:t.id})})))}}]),t}(u["default"].Component);r["default"]=h},{"../thread/ready":72,"./diff-message":60,react:"react"}],64:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("./list/empty"),f=a(c),d=e("./list/ready"),p=a(d),h=e("./list/preview"),m=a(h),b=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return this.props.isLoaded?this.props.threads.length>0?u["default"].createElement(p["default"],{threads:this.props.threads,categories:this.props.categories,list:this.props.list,diffSize:this.props.diffSize,applyDiff:this.props.applyDiff,showOptions:this.props.showOptions,selection:this.props.selection,busyThreads:this.props.busyThreads}):u["default"].createElement(f["default"],{diffSize:this.props.diffSize,applyDiff:this.props.applyDiff},this.props.children):u["default"].createElement(m["default"],null)}}]),t}(u["default"].Component);r["default"]=b},{"./list/empty":61,"./list/preview":62,"./list/ready":63,react:"react"}],65:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("react-router"),f=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getUrl",value:function(){return this.props.category.absolute_url+this.props.list.path}},{key:"getClassName",value:function(){return this.props.category.css_class?"thread-category thread-category-"+this.props.category.css_class:"thread-category"}},{key:"render",value:function(){return u["default"].createElement(c.Link,{to:this.getUrl(),className:this.getClassName()},this.props.category.name)}}]),t}(u["default"].Component);r["default"]=f},{react:"react","react-router":"react-router"}],66:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("../category"),f=a(c),d=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getPath",value:function(){var e=this.props.categories[this.props.thread.top_category],t=this.props.categories[this.props.thread.category];return e&&t&&e.id!==t.id?u["default"].createElement("li",{className:"thread-path"},u["default"].createElement(f["default"],{category:t,list:this.props.list})):e?u["default"].createElement("li",{className:"thread-path"},u["default"].createElement(f["default"],{category:e,list:this.props.list})):null}},{key:"getRepliesCount",value:function(){return u["default"].createElement("li",{className:"thread-replies-count"},u["default"].createElement("span",{className:"material-icon"},"forum"),u["default"].createElement("span",{className:"icon-legend"},this.props.thread.replies))}},{key:"getLastReply",value:function(){return u["default"].createElement("li",{className:"thread-last-reply-clock"},u["default"].createElement("span",{className:"material-icon"},"schedule"),u["default"].createElement("span",{className:"icon-legend"},this.props.thread.last_post_on.fromNow()))}},{key:"render",value:function(){return u["default"].createElement("ul",{className:"thread-details-compact list-inline"},this.getPath(),this.getRepliesCount(),this.getLastReply())}}]),t}(u["default"].Component);r["default"]=d},{"../category":65,react:"react"}],67:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("../category"),f=a(c),d=e("../../../../utils/escape-html"),p=a(d),h='<a href="%(url)s" class="poster-title">%(user)s</a>',m='<span class="poster-title">%(user)s</span>',b='<a href="%(url)s" class="last-title" title="%(absolute)s">%(relative)s</a>',y=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getNewLabel",value:function(){return this.props.thread.is_read?null:u["default"].createElement("li",{className:"thread-new-posts",title:gettext("Go to first unread post")},u["default"].createElement("a",{href:this.props.thread.new_post_url},u["default"].createElement("span",{className:"material-icon"},"comment"),u["default"].createElement("span",{className:"icon-legend"},gettext("New posts"))))}},{key:"getPinnedLabel",value:function(){return 2===this.props.thread.weight?u["default"].createElement("li",{className:"thread-pinned-globally"},u["default"].createElement("span",{className:"material-icon"},"bookmark"),u["default"].createElement("span",{className:"icon-legend"},gettext("Pinned globally"))):1===this.props.thread.weight?u["default"].createElement("li",{className:"thread-pinned-locally"},u["default"].createElement("span",{className:"material-icon"},"bookmark_border"),u["default"].createElement("span",{className:"icon-legend"},gettext("Pinned locally"))):null}},{key:"getUnapprovedLabel",value:function(){return this.props.thread.is_unapproved?u["default"].createElement("li",{className:"thread-unapproved"},u["default"].createElement("span",{className:"material-icon"},"remove_circle"),u["default"].createElement("span",{className:"icon-legend"},gettext("Unapproved"))):this.props.thread.has_unapproved_posts?u["default"].createElement("li",{className:"thread-unapproved-posts"},u["default"].createElement("span",{className:"material-icon"},"remove_circle_outline"),u["default"].createElement("span",{className:"icon-legend"},gettext("Unapproved posts"))):null}},{key:"getHiddenLabel",value:function(){return this.props.thread.is_hidden?u["default"].createElement("li",{className:"thread-hidden"},u["default"].createElement("span",{className:"material-icon"},"visibility_off"),u["default"].createElement("span",{className:"icon-legend"},gettext("Hidden"))):null}},{key:"getClosedLabel",value:function(){return this.props.thread.is_closed?u["default"].createElement("li",{className:"thread-closed"},u["default"].createElement("span",{className:"material-icon"},"lock_outline"),u["default"].createElement("span",{className:"icon-legend"},gettext("Closed"))):null}},{key:"getPath",value:function(){var e=this.props.categories[this.props.thread.top_category],t=this.props.categories[this.props.thread.category];return e&&t&&e.id!==t.id?u["default"].createElement("li",{className:"thread-path"},u["default"].createElement(f["default"],{category:e,list:this.props.list}),u["default"].createElement("span",{className:"path-separator material-icon"},"arrow_forward"),u["default"].createElement(f["default"],{category:t,list:this.props.list})):e?u["default"].createElement("li",{className:"thread-path"},u["default"].createElement(f["default"],{category:e,list:this.props.list})):null}},{key:"getRepliesCount",value:function(){var e=ngettext("%(replies)s reply","%(replies)s replies",this.props.thread.replies);return u["default"].createElement("li",{className:"thread-replies"},u["default"].createElement("span",{className:"material-icon"},"forum"),u["default"].createElement("span",{className:"icon-legend"},interpolate(e,{replies:this.props.thread.replies},!0)))}},{key:"getLastReplyDate",value:function(){return interpolate(b,{url:(0,p["default"])(this.props.thread.last_post_url),absolute:(0,p["default"])(this.props.thread.last_post_on.format("LLL")),relative:(0,p["default"])(this.props.thread.last_post_on.fromNow())},!0)}},{key:"getLastPoster",value:function(){return this.props.thread.last_poster_url?interpolate(h,{url:(0,p["default"])(this.props.thread.last_poster_url),user:(0,p["default"])(this.props.thread.last_poster_name)},!0):interpolate(m,{user:(0,p["default"])(this.props.thread.last_poster_name)},!0)}},{key:"getLastReply",value:function(){return u["default"].createElement("li",{className:"thread-last-reply",dangerouslySetInnerHTML:{__html:interpolate((0,p["default"])(gettext("last reply by %(user)s %(date)s")),{date:this.getLastReplyDate(),user:this.getLastPoster()},!0)}})}},{key:"render",value:function(){return u["default"].createElement("ul",{className:"thread-details-full list-inline"},this.getNewLabel(),this.getPinnedLabel(),this.getUnapprovedLabel(),this.getHiddenLabel(),this.getClosedLabel(),this.getPath(),this.getRepliesCount(),this.getLastReply())}}]),t}(u["default"].Component);r["default"]=y},{"../../../../utils/escape-html":179,"../category":65,react:"react"}],68:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getPinnedIcon",value:function(){return 2===this.props.thread.weight?u["default"].createElement("span",{className:"thread-pinned-globally"},u["default"].createElement("span",{className:"material-icon"},"bookmark")):1===this.props.thread.weight?u["default"].createElement("span",{className:"thread-pinned-locally"},u["default"].createElement("span",{className:"material-icon"},"bookmark_border")):null}},{key:"getUnapprovedIcon",value:function(){return this.props.thread.is_unapproved?u["default"].createElement("span",{className:"thread-unapproved"},u["default"].createElement("span",{className:"material-icon"},"remove_circle")):this.props.thread.has_unapproved_posts?u["default"].createElement("span",{className:"thread-unapproved-posts"},u["default"].createElement("span",{className:"material-icon"},"remove_circle_outline")):null}},{key:"getHiddenIcon",value:function(){return this.props.thread.is_hidden?u["default"].createElement("span",{className:"thread-hidden"},u["default"].createElement("span",{className:"material-icon"},"visibility_off")):null}},{key:"getClosedIcon",value:function(){return this.props.thread.is_closed?u["default"].createElement("span",{className:"thread-closed"},u["default"].createElement("span",{className:"material-icon"},"lock_outline")):null}},{key:"render",value:function(){return u["default"].createElement("div",{className:"thread-flags"},this.getPinnedIcon(),this.getUnapprovedIcon(),this.getHiddenIcon(),this.getClosedIcon())}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],69:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.thread.is_read?"read-status item-read":"read-status item-new"}},{key:"getTitle",value:function(){return this.props.thread.is_read?gettext("This thread has no new posts."):gettext("This thread has new posts.")}},{key:"getIcon",value:function(){return this.props.thread.is_read?"chat_bubble_outline":"chat_bubble"}},{key:"getUrl",value:function(){return this.props.thread.is_read?this.props.thread.last_post_url:this.props.thread.new_post_url}},{key:"render",value:function(){return u["default"].createElement("a",{className:this.getClassName(),href:this.getUrl(),title:this.getTitle()},u["default"].createElement("span",{className:"material-icon"},this.getIcon()))}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],70:[function(e,t,r){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function n(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),u=e("react"),c=n(u),f=e("./subscription/compact"),d=n(f),p=e("./subscription/full"),h=n(p),m=e("../../../reducers/selection"),b=a(m),y=e("../../../services/store"),g=n(y),v=function(e){function t(){var e,r,a,n;o(this,t);for(var i=arguments.length,l=Array(i),u=0;i>u;u++)l[u]=arguments[u];return r=a=s(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(l))),a.toggleSelection=function(){g["default"].dispatch(b.item(a.props.thread.id))},n=r,s(a,n)}return i(t,e),l(t,[{key:"getSelectToggle",value:function(){return this.props.thread.moderation.length?c["default"].createElement("li",null,c["default"].createElement("button",{className:"btn btn-default btn-checkbox",onClick:this.toggleSelection,disabled:this.props.disabled},c["default"].createElement("span",{className:"material-icon"},this.props.isSelected?"check_box":"check_box_outline_blank"),c["default"].createElement("span",{className:"icon-legend"},this.props.isSelected?gettext("Selected"):gettext("Select")))):null}},{key:"render",value:function(){return c["default"].createElement("div",{className:"thread-options"},c["default"].createElement("ul",{className:"list-inline"},this.getSelectToggle(),c["default"].createElement(h["default"],{thread:this.props.thread,disabled:this.props.disabled}),c["default"].createElement(d["default"],{thread:this.props.thread,disabled:this.props.disabled})))}}]),t}(c["default"].Component);r["default"]=v},{"../../../reducers/selection":157,"../../../services/store":173,"./subscription/compact":73,"./subscription/full":74,react:"react"}],71:[function(e,t,r){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function n(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),u=e("react"),c=n(u),f=e("../../../utils/random"),d=a(f),p=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),l(t,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"getClassName",value:function(){return this.props.hiddenOnMobile?"list-group-item thread-preview hidden-xs hidden-sm":"list-group-item thread-preview"}},{key:"render",value:function(){return c["default"].createElement("li",{className:this.getClassName()},c["default"].createElement("div",{className:"thread-icon"},c["default"].createElement("span",{className:"read-status item-read"},c["default"].createElement("span",{className:"material-icon"},"chat_bubble_outline"))),c["default"].createElement("div",{className:"thread-main"},c["default"].createElement("span",{className:"item-title thread-title"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:d["int"](60,200)+"px"}}," ")),c["default"].createElement("ul",{className:"thread-details-compact list-inline"},c["default"].createElement("li",null,c["default"].createElement("span",{className:"ui-preview-text",style:{width:d["int"](20,70)+"px"}}," ")),c["default"].createElement("li",null,c["default"].createElement("span",{className:"ui-preview-text",style:{width:d["int"](20,70)+"px"}}," ")),c["default"].createElement("li",null,c["default"].createElement("span",{className:"ui-preview-text",style:{width:d["int"](20,70)+"px"}}," "))),c["default"].createElement("ul",{className:"thread-details-full list-inline"},c["default"].createElement("li",null,c["default"].createElement("span",{className:"ui-preview-text",style:{width:d["int"](50,150)+"px"}}," ")),c["default"].createElement("li",null,c["default"].createElement("span",{className:"ui-preview-text",style:{width:d["int"](50,100)+"px"}}," ")),c["default"].createElement("li",null,c["default"].createElement("span",{className:"ui-preview-text",style:{width:d["int"](100,250)+"px"}}," ")))),c["default"].createElement("div",{className:"clearfix"}))}}]),t}(c["default"].Component);r["default"]=p},{"../../../utils/random":183,react:"react"}],72:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("../../loader"),f=a(c),d=e("./details/compact"),p=a(d),h=e("./details/full"),m=a(h),b=e("./flags"),y=a(b),g=e("./icon"),v=a(g),_=e("./options"),E=a(_),w=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getIcon",value:function(){return this.props.isBusy?u["default"].createElement(f["default"],null):u["default"].createElement(v["default"],{thread:this.props.thread})}},{key:"getOptions",value:function(){return this.props.showOptions?u["default"].createElement(E["default"],{thread:this.props.thread,disabled:this.props.isBusy,isSelected:this.props.isSelected}):null}},{key:"getClassName",value:function(){var e=["list-group-item"];return this.props.thread.is_read?e.push("thread-read"):e.push("thread-new"),this.props.isBusy?e.push("thread-busy"):this.props.isSelected&&e.push("thread-selected"),this.props.showOptions&&(this.props.thread.moderation.length?e.push("thread-ops-two"):e.push("thread-ops-one")),e.join(" ")}},{key:"render",value:function(){return u["default"].createElement("li",{className:this.getClassName()},u["default"].createElement("div",{className:"thread-icon"},this.getIcon(),u["default"].createElement(y["default"],{thread:this.props.thread})),this.getOptions(),u["default"].createElement("div",{className:"thread-main"},u["default"].createElement("a",{href:this.props.thread.absolute_url,className:"item-title thread-title"},this.props.thread.title),u["default"].createElement(m["default"],{categories:this.props.categories,list:this.props.list,thread:this.props.thread}),u["default"].createElement(p["default"],{categories:this.props.categories,list:this.props.list,thread:this.props.thread})),u["default"].createElement("div",{className:"clearfix"}))}}]),t}(u["default"].Component);r["default"]=w},{"../../loader":22,"./details/compact":66,"./details/full":67,"./flags":68,"./icon":69,"./options":70,react:"react"}],73:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("./full"),f=a(c),d=e("./modal"),p=a(d),h=e("../../../../services/modal"),m=a(h),b=function(e){function t(){var e,r,a,s;n(this,t);for(var i=arguments.length,l=Array(i),c=0;i>c;c++)l[c]=arguments[c];return r=a=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(l))),a.showOptions=function(){m["default"].show(u["default"].createElement(p["default"],{thread:a.props.thread}))},s=r,o(a,s)}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("li",{className:"hidden-md hidden-lg"},u["default"].createElement("button",{type:"button",className:this.getClassName(),disabled:this.props.disabled,onClick:this.showOptions},u["default"].createElement("span",{className:"material-icon"},this.getIcon()),u["default"].createElement("span",{className:"icon-legend"},this.getLegend())))}}]),t}(f["default"]);r["default"]=b},{"../../../../services/modal":169,"./full":74,"./modal":75,react:"react"}],74:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("./options"),f=a(c),d=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getIcon",value:function(){return this.props.thread.subscription===!0?"star":this.props.thread.subscription===!1?"star_half":"star_border"}},{key:"getLegend",value:function(){return this.props.thread.subscription===!0?gettext("E-mail"):this.props.thread.subscription===!1?gettext("Enabled"):gettext("Disabled")}},{key:"getClassName",value:function(){return this.props.thread.subscription===!0?"btn btn-default btn-subscribe btn-subscribe-full dropdown-toggle":this.props.thread.subscription===!1?"btn btn-default btn-subscribe btn-subscribe-half dropdown-toggle":"btn btn-default btn-subscribe dropdown-toggle"}},{key:"render",value:function(){return u["default"].createElement("li",{className:"hidden-xs hidden-sm"},u["default"].createElement("div",{className:"btn-group"},u["default"].createElement("button",{type:"button",className:this.getClassName(),disabled:this.props.disabled,"data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},u["default"].createElement("span",{className:"material-icon"},this.getIcon()),u["default"].createElement("span",{className:"icon-legend"},this.getLegend())),u["default"].createElement(f["default"],{className:"dropdown-menu dropdown-menu-right",thread:this.props.thread})))}}]),t}(u["default"].Component);r["default"]=d},{"./options":76,react:"react"}],75:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("./options"),f=a(c),d=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("div",{className:"modal-dialog modal-sm",role:"document"},u["default"].createElement("div",{className:"modal-content"},u["default"].createElement("div",{className:"modal-header"},u["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},u["default"].createElement("span",{"aria-hidden":"true"},"×")),u["default"].createElement("h4",{className:"modal-title"},gettext("Change subscription"))),u["default"].createElement(f["default"],{className:"modal-menu",thread:this.props.thread})))}}]),t}(u["default"].Component);r["default"]=d},{"./options":76,react:"react"}],76:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("../../../button"),f=(a(c),e("../../../../reducers/threads")),d=e("../../../../services/ajax"),p=a(d),h=e("../../../../services/modal"),m=a(h),b=e("../../../../services/snackbar"),y=a(b),g=e("../../../../services/store"),v=a(g),_={unsubscribe:null,notify:!1,email:!0},E=function(e){function t(e){n(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.setSubscription=function(e){m["default"].hide(),r.setState({isLoading:!0});var t=r.props.thread.subscription;v["default"].dispatch((0,f.patch)(r.props.thread,{subscription:_[e]})),p["default"].patch(r.props.thread.api_url,[{op:"replace",path:"subscription",value:e}]).then(function(){r.setState({isLoading:!1})},function(e){r.setState({isLoading:!1}),v["default"].dispatch((0,f.patch)(r.props.thread,{subscription:_[t]})),y["default"].apiError(e)})},r.unsubscribe=function(){r.setSubscription("unsubscribe")},r.notify=function(){r.setSubscription("notify")},r.email=function(){r.setSubscription("email")},r.state={isLoading:!1},r}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("ul",{className:this.props.className},u["default"].createElement("li",null,u["default"].createElement("button",{className:"btn-link",onClick:this.unsubscribe},u["default"].createElement("span",{className:"material-icon"},"star_border"),gettext("Unsubscribe"))),u["default"].createElement("li",null,u["default"].createElement("button",{className:"btn-link",onClick:this.notify},u["default"].createElement("span",{className:"material-icon"},"star_half"),gettext("Subscribe"))),u["default"].createElement("li",null,u["default"].createElement("button",{className:"btn-link",onClick:this.email},u["default"].createElement("span",{className:"material-icon"},"star"),gettext("Subscribe with e-mail"))))}}]),t}(u["default"].Component);r["default"]=E},{"../../../../reducers/threads":159,"../../../../services/ajax":163,"../../../../services/modal":169,"../../../../services/snackbar":172,"../../../../services/store":173,"../../../button":4,react:"react"}],77:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0}),r.Subcategory=void 0;var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("react-router"),f=r.Subcategory=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getUrl",value:function(){return this.props.listPath?this.props.category.absolute_url+this.props.listPath:this.props.category.absolute_url}},{key:"render",value:function(){return u["default"].createElement("li",null,u["default"].createElement(c.Link,{to:this.getUrl(),className:"btn btn-link"},this.props.category.name))}}]),t}(u["default"].Component),d=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){var e=this;return u["default"].createElement("div",{className:"btn-group category-picker"},u["default"].createElement("button",{type:"button",className:"btn btn-default dropdown-toggle","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},u["default"].createElement("span",{className:"material-icon"},"more_vert"),gettext("Go to")),u["default"].createElement("ul",{className:"dropdown-menu categories-menu"},this.props.choices.map(function(t){return e.props.categories[t]?u["default"].createElement(f,{category:e.props.categories[t],listPath:e.props.list.path,key:t}):null})))}}]),t}(u["default"].Component);r["default"]=d},{react:"react","react-router":"react-router"}],78:[function(e,t,r){"use strict";function a(e,t){return e.last_post>t.last_post?-1:e.last_post<t.last_post?1:0}function n(e,t){return 2===e.weight&&e.weight>t.weight?-1:2===t.weight&&e.weight<t.weight?1:a(e,t)}function o(e,t){return e.weight>t.weight?-1:e.weight<t.weight?1:a(e,t)}Object.defineProperty(r,"__esModule",{value:!0}),r.compareLastPostAge=a,r.compareGlobalWeight=n,r.compareWeight=o},{}],79:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("../page-lead"),f=a(c),d=e("./toolbar"),p=a(d),h=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getCategoryDescription",value:function(){return this.props.route.category.description?u["default"].createElement("div",{className:"category-description"},u["default"].createElement(f["default"],{copy:this.props.route.category.description.html})):null}},{key:"getToolbarLabel",value:function(){if(this.props.isLoaded){var e=null;return e=this.props.route.list.path?ngettext("%(threads)s thread found.","%(threads)s threads found.",this.props.threadsCount):this.props.route.category.parent?ngettext("There is %(threads)s thread in this category.","There are %(threads)s threads in this category.",this.props.threadsCount):ngettext("There is %(threads)s thread on our forums.","There are %(threads)s threads on our forums.",this.props.threadsCount),interpolate(e,{threads:this.props.threadsCount},!0)}return gettext("Loading threads...")}},{key:"getDisableToolbar",value:function(){return!this.props.isLoaded||this.props.isBusy||this.props.busyThreads.length}},{key:"getToolbar",value:function(){return this.props.subcategories.length||this.props.user.id?u["default"].createElement(p["default"],{subcategories:this.props.subcategories,categories:this.props.route.categories,categoriesMap:this.props.route.categoriesMap,list:this.props.route.list,threads:this.props.threads,moderation:this.props.moderation,selection:this.props.selection,selectAllThreads:this.props.selectAllThreads,selectNoneThreads:this.props.selectNoneThreads,addThreads:this.props.addThreads,freezeThread:this.props.freezeThread,deleteThread:this.props.deleteThread,updateThread:this.props.updateThread,route:this.props.route,disabled:this.getDisableToolbar(),user:this.props.user},this.getToolbarLabel()):null}},{key:"render",value:function(){return u["default"].createElement("div",{className:"container"},this.getCategoryDescription(),this.getToolbar(),this.props.children)}}]),t}(u["default"].Component);r["default"]=h},{"../page-lead":35,"./toolbar":90,react:"react"}],80:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("react-router"),f=e("../button"),d=a(f),p=e("../dropdown-toggle"),h=a(p),m=e("./navs"),b=e("../../reducers/threads"),y=e("../../services/ajax"),g=a(y),v=e("../../services/snackbar"),_=a(v),E=e("../../services/store"),w=a(E),O=function(e){function t(e){n(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.markAsRead=function(){r.setState({isBusy:!0}),g["default"].post(r.props.route.category.api_url.read).then(function(){w["default"].dispatch((0,b.read)()),r.setState({isBusy:!1}),_["default"].success(gettext("Threads have been marked as read."))},function(e){r.setState({isBusy:!1}),_["default"].apiError(e)})},r.startThread=function(){console.log("TODO: Start thread form!")},r.state={isBusy:!1},r}return s(t,e),i(t,[{key:"getGoBackButton",value:function(){if(this.props.route.category.parent){var e=this.props.categories[this.props.route.category.parent];return u["default"].createElement(c.Link,{className:"btn btn-default btn-aligned btn-icon btn-go-back pull-left",to:e.absolute_url+this.props.route.list.path},u["default"].createElement("span",{className:"material-icon"},"keyboard_arrow_left"))}return null}},{key:"getStartThreadButton",value:function(){return this.props.user.id?u["default"].createElement(d["default"],{className:"btn btn-success btn-aligned hidden-xs hidden-sm",onClick:this.startThread,disabled:this.props.disabled},u["default"].createElement("span",{className:"material-icon"},"chat"),gettext("Start thread")):null}},{key:"getMarkAsReadButton",value:function(){return this.props.user.id?u["default"].createElement(d["default"],{className:"btn btn-default btn-aligned hidden-xs hidden-sm",onClick:this.markAsRead,loading:this.state.isBusy,disabled:this.props.disabled},u["default"].createElement("span",{className:"material-icon"},"playlist_add_check"),gettext("Mark as read")):null}},{key:"getCompactNavToggle",value:function(){return this.props.route.lists.length>1?u["default"].createElement(h["default"],{toggleNav:this.props.toggleNav,dropdown:this.props.dropdown}):null}},{key:"getTabsNav",value:function(){return this.props.route.lists.length>1?u["default"].createElement(m.TabsNav,{baseUrl:this.props.route.category.absolute_url,list:this.props.route.list,lists:this.props.route.lists}):null}},{key:"getClassName",value:function(){return this.props.route.lists.length>1?"page-header tabbed":"page-header"}},{key:"render",value:function(){return u["default"].createElement("div",{className:this.getClassName()},u["default"].createElement("div",{className:"container"},this.getGoBackButton(),u["default"].createElement("h1",{className:"pull-left"},this.props.title),this.getStartThreadButton(),this.getMarkAsReadButton(),this.getCompactNavToggle()),this.getTabsNav())}}]),t}(u["default"].Component);r["default"]=O},{"../../reducers/threads":159,"../../services/ajax":163,"../../services/snackbar":172,"../../services/store":173,"../button":4,"../dropdown-toggle":18,"./navs":87,react:"react","react-router":"react-router"}],81:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return"all"===this.props.list.type?u["default"].createElement("li",{className:"list-group-item empty-message"},u["default"].createElement("p",{className:"lead"},this.props.category.special_role?gettext("There are no threads on this forum... yet!"):gettext("There are no threads in this category.")),u["default"].createElement("p",null,gettext("Why not start one yourself?"))):u["default"].createElement("li",{className:"list-group-item empty-message"},gettext("No threads matching specified criteria were found."))}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],82:[function(e,t,r){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function n(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),u=e("react"),c=n(u),f=e("./errors-list"),d=n(f),p=e("./merge"),h=n(p),m=e("./move"),b=n(m),y=e("../../../reducers/selection"),g=a(y),v=e("../../../services/ajax"),_=n(v),E=e("../../../services/modal"),w=n(E),O=e("../../../services/snackbar"),k=n(O),N=e("../../../services/store"),j=n(N),x=e("../../../utils/countdown"),P=n(x),C=function(e){function t(){var e,r,a,n;o(this,t);for(var i=arguments.length,l=Array(i),u=0;i>u;u++)l[u]=arguments[u];return r=a=s(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(l))),a.callApi=function(e,t){var r=arguments.length<=2||void 0===arguments[2]?null:arguments[2],n=[],o=new P["default"](function(){a.props.threads.forEach(function(e){a.props.freezeThread(e.id)}),n.length?w["default"].show(c["default"].createElement(d["default"],{errors:n})):(k["default"].success(t),r&&r())},a.props.threads.length);a.props.threads.forEach(function(t){a.props.freezeThread(t.id),_["default"].patch(t.api_url,e).then(function(e){a.props.updateThread(e),o.count()},function(e){n.push({thread:t,errors:[e.detail]}),o.count()})})},a.pinGlobally=function(){a.callApi([{op:"replace",path:"weight",value:2}],gettext("Selected threads were pinned globally."))},a.pinLocally=function(){a.callApi([{op:"replace",path:"weight",value:1}],gettext("Selected threads were pinned locally."))},a.unpin=function(){a.callApi([{op:"replace",path:"weight",value:0}],gettext("Selected threads were unpinned."))},a.approve=function(){a.callApi([{op:"replace",path:"is-unapproved",value:!1}],gettext("Selected threads were approved."))},a.open=function(){a.callApi([{op:"replace",path:"is-closed",value:!1}],gettext("Selected threads were opened."))},a.close=function(){a.callApi([{op:"replace",path:"is-closed",value:!0}],gettext("Selected threads were closed."))},a.unhide=function(){a.callApi([{op:"replace",path:"is-hidden",value:!1}],gettext("Selected threads were unhidden."))},a.hide=function(){a.callApi([{op:"replace",path:"is-hidden",value:!0}],gettext("Selected threads were hidden."))},a.move=function(){w["default"].show(c["default"].createElement(b["default"],{callApi:a.callApi,categories:a.props.categories,categoriesMap:a.props.categoriesMap,route:a.props.route,user:a.props.user}))},a.merge=function(){var e=[];if(a.props.threads.forEach(function(t){t.acl.can_merge||e.append({id:t.id,title:t.title,errors:[gettext("You don't have permission to merge this thread with others.")]})}),a.props.threads.length<2)k["default"].info(gettext("You have to select at least two threads to merge."));else{if(e.length)return void w["default"].show(c["default"].createElement(d["default"],{errors:e}));w["default"].show(c["default"].createElement(h["default"],a.props))}},a["delete"]=function(){if(confirm(gettext("Are you sure you want to delete selected threads?"))){var e=[],t=new P["default"](function(){e.length?w["default"].show(c["default"].createElement(d["default"],{errors:e})):k["default"].success(gettext("Selected threads were deleted.")),a.props.threads.forEach(function(e){a.props.freezeThread(e.id)}),j["default"].dispatch(g.all(a.props.threads.map(function(e){return e.id})))},a.props.threads.length);a.props.threads.forEach(function(r){a.props.freezeThread(r.id),_["default"]["delete"](r.api_url).then(function(e){a.props.freezeThread(r.id),a.props.deleteThread(r),t.count()},function(a){e.push({thread:r,errors:[a.detail]}),t.count()})})}},n=r,s(a,n)}return i(t,e),l(t,[{key:"getPinGloballyButton",value:function(){return 2==this.props.moderation.can_pin?c["default"].createElement("li",null,c["default"].createElement("button",{type:"button",className:"btn btn-link",onClick:this.pinGlobally},gettext("Pin threads globally"))):null}},{key:"getPinLocallyButton",value:function(){return this.props.moderation.can_pin>0?c["default"].createElement("li",null,c["default"].createElement("button",{type:"button",className:"btn btn-link",onClick:this.pinLocally},gettext("Pin threads locally"))):null}},{key:"getUnpinButton",value:function(){return this.props.moderation.can_pin>0?c["default"].createElement("li",null,c["default"].createElement("button",{type:"button",className:"btn btn-link",onClick:this.unpin},gettext("Unpin threads"))):null}},{key:"getMoveButton",value:function(){return this.props.moderation.can_move?c["default"].createElement("li",null,c["default"].createElement("button",{type:"button",className:"btn btn-link",onClick:this.move},gettext("Move threads"))):null}},{key:"getMergeButton",value:function(){return this.props.moderation.can_merge?c["default"].createElement("li",null,c["default"].createElement("button",{type:"button",className:"btn btn-link",onClick:this.merge},gettext("Merge threads"))):null}},{key:"getApproveButton",value:function(){return this.props.moderation.can_approve?c["default"].createElement("li",null,c["default"].createElement("button",{type:"button",className:"btn btn-link",onClick:this.approve},gettext("Approve threads"))):null}},{key:"getOpenButton",value:function(){return this.props.moderation.can_close?c["default"].createElement("li",null,c["default"].createElement("button",{type:"button",className:"btn btn-link",onClick:this.open},gettext("Open threads"))):null}},{key:"getCloseButton",value:function(){return this.props.moderation.can_close?c["default"].createElement("li",null,c["default"].createElement("button",{type:"button",className:"btn btn-link",onClick:this.close},gettext("Close threads"))):null}},{key:"getUnhideButton",value:function(){return this.props.moderation.can_hide?c["default"].createElement("li",null,c["default"].createElement("button",{type:"button",className:"btn btn-link",onClick:this.unhide},gettext("Unhide threads"))):null}},{key:"getHideButton",value:function(){return this.props.moderation.can_hide?c["default"].createElement("li",null,c["default"].createElement("button",{type:"button",className:"btn btn-link",onClick:this.hide},gettext("Hide threads"))):null}},{key:"getDeleteButton",value:function(){return 2==this.props.moderation.can_hide?c["default"].createElement("li",null,c["default"].createElement("button",{type:"button",className:"btn btn-link",onClick:this["delete"]},gettext("Delete threads"))):null}},{key:"render",value:function(){return c["default"].createElement("ul",{className:this.props.className},this.getPinGloballyButton(),this.getPinLocallyButton(),this.getUnpinButton(),this.getMoveButton(),this.getMergeButton(),this.getApproveButton(),this.getOpenButton(),this.getCloseButton(),this.getUnhideButton(),this.getHideButton(),this.getDeleteButton())}}]),t}(c["default"].Component);r["default"]=C},{"../../../reducers/selection":157,"../../../services/ajax":163,"../../../services/modal":169,"../../../services/snackbar":172,"../../../services/store":173,"../../../utils/countdown":178,"./errors-list":83,"./merge":84,"./move":85,react:"react"}],83:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return c["default"].createElement("li",null,c["default"].createElement("h5",null,e.thread.title),c["default"].createElement("ul",{className:"list-unstyled list-item-errors"},e.errors.map(function(e,t){return c["default"].createElement("li",{key:t},e)})))}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}();r.ThreadErrors=i;var u=e("react"),c=a(u),f=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),l(t,[{key:"render",value:function(){return c["default"].createElement("div",{className:"modal-dialog",role:"document"},c["default"].createElement("div",{className:"modal-content"},c["default"].createElement("div",{className:"modal-header"},c["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},c["default"].createElement("span",{"aria-hidden":"true"},"×")),c["default"].createElement("h4",{className:"modal-title"},gettext("Threads moderation"))),c["default"].createElement("div",{className:"modal-body"},c["default"].createElement("p",{className:"lead"},gettext("Errors were encountered when performing moderation action on one or more threads:")),c["default"].createElement("ul",{className:"list-unstyled list-errored-items"},this.props.errors.map(function(e){return c["default"].createElement(i,{errors:e.errors,key:e.thread.id,thread:e.thread})})))))}}]),t}(c["default"].Component);r["default"]=f},{react:"react"}],84:[function(e,t,r){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function n(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),u=e("react"),c=n(u),f=e("../../button"),d=n(f),p=e("../../form"),h=n(p),m=e("../../form-group"),b=n(m),y=e("../../category-select"),g=n(y),v=e("../../select"),_=n(v),E=e("../../../index"),w=n(E),O=e("../../../reducers/threads"),k=e("../../../reducers/selection"),N=a(k),j=e("./errors-list"),x=n(j),P=e("../../../services/ajax"),C=n(P),S=e("../../../services/modal"),T=n(S),M=e("../../../services/snackbar"),L=n(M),R=e("../../../services/store"),A=n(R),I=e("../../../utils/validators"),U=a(I),D=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));r.onCategoryChange=function(e){var t=e.target.value,a={category:t};r.acl[t].can_pin_threads<a.weight&&(a.weight=0),r.acl[t].can_close_threads||(a.is_closed=!1),r.setState(a)},r.state={isLoading:!1,title:"",category:null,weight:0,is_closed:!1,validators:{title:[U.required()]},errors:{}},r.acl={};for(var a in e.user.acl.categories)if(e.user.acl.categories.hasOwnProperty(a)){var n=e.user.acl.categories[a];r.acl[n.id]=n}return r.categoryChoices=[],e.categories.forEach(function(e){if(e.level>0){var t=r.acl[e.id],a=!t.can_start_threads||e.is_closed&&!t.can_close_threads;r.categoryChoices.push({value:e.id,disabled:a,level:e.level-1,label:e.name}),a||r.state.category||(r.state.category=e.id)}}),r.isClosedChoices=[{value:!1,icon:"lock_outline",label:gettext("No")},{value:!0,icon:"lock",label:gettext("Yes")}],r}return i(t,e),l(t,[{key:"clean",value:function(){return this.isValid()?!0:(L["default"].error(gettext("Form contains errors.")),this.setState({errors:this.validate()}),!1)}},{key:"send",value:function(){return C["default"].post(w["default"].get("MERGE_THREADS_API"),{top_category:this.props.route.category.id,threads:this.props.threads.map(function(e){return e.id}),title:this.state.title,category:this.state.category,weight:this.state.weight,is_closed:this.state.is_closed})}},{key:"handleSuccess",value:function(e){var t=this;this.props.threads.forEach(function(e){t.props.freezeThread(e.id),t.props.deleteThread(e)}),A["default"].dispatch(N.none()),this.props.addThreads([e]),A["default"].dispatch((0,O.filterThreads)(this.props.route.category,this.props.categoriesMap)),
+T["default"].hide()}},{key:"handleError",value:function(e){400===e.status?(this.setState({errors:Object.assign({},this.state.errors,e)}),L["default"].error(gettext("Form contains errors."))):403===e.status&&Array.isArray(e)?T["default"].show(c["default"].createElement(x["default"],{errors:e})):L["default"].apiError(e)}},{key:"getWeightChoices",value:function(){var e=[];return 2==this.acl[this.state.category].can_pin_threads&&e.push({value:2,icon:"bookmark",label:gettext("Pinned globally")}),e.push({value:1,icon:"bookmark_border",label:gettext("Pinned locally")}),e.push({value:0,icon:"remove",label:gettext("Not pinned")}),e}},{key:"renderWeightField",value:function(){return this.acl[this.state.category].can_pin_threads?c["default"].createElement(b["default"],{label:gettext("Thread weight"),"for":"id_weight",labelClass:"col-sm-4",controlClass:"col-sm-8"},c["default"].createElement(_["default"],{id:"id_weight",onChange:this.bindInput("weight"),value:this.state.weight,choices:this.getWeightChoices()})):null}},{key:"renderClosedField",value:function(){return this.acl[this.state.category].can_close_threads?c["default"].createElement(b["default"],{label:gettext("Close thread"),"for":"id_is_closed",labelClass:"col-sm-4",controlClass:"col-sm-8"},c["default"].createElement(_["default"],{id:"id_is_closed",onChange:this.bindInput("is_closed"),value:this.state.is_closed,choices:this.isClosedChoices})):null}},{key:"renderForm",value:function(){return c["default"].createElement("form",{onSubmit:this.handleSubmit},c["default"].createElement("div",{className:"modal-body"},c["default"].createElement(b["default"],{label:gettext("Thread title"),"for":"id_title",labelClass:"col-sm-4",controlClass:"col-sm-8",validation:this.state.errors.title},c["default"].createElement("input",{id:"id_title",className:"form-control",type:"text",onChange:this.bindInput("title"),value:this.state.title})),c["default"].createElement("div",{className:"clearfix"}),c["default"].createElement(b["default"],{label:gettext("Category"),"for":"id_category",labelClass:"col-sm-4",controlClass:"col-sm-8",validation:this.state.errors.category},c["default"].createElement(g["default"],{id:"id_category",onChange:this.onCategoryChange,value:this.state.category,choices:this.categoryChoices})),c["default"].createElement("div",{className:"clearfix"}),this.renderWeightField(),this.renderClosedField()),c["default"].createElement("div",{className:"modal-footer"},c["default"].createElement(d["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Merge threads"))))}},{key:"renderCantMergeMessage",value:function(){return c["default"].createElement("div",{className:"modal-body"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"info_outline")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",{className:"lead"},gettext("You can't move threads because there are no categories you are allowed to move them to.")),c["default"].createElement("p",null,gettext("You need permission to start threads in category to be able to merge threads to it."))))}},{key:"getClassName",value:function(){return this.state.category?"modal-dialog":"modal-dialog modal-message"}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getClassName(),role:"document"},c["default"].createElement("div",{className:"modal-content"},c["default"].createElement("div",{className:"modal-header"},c["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},c["default"].createElement("span",{"aria-hidden":"true"},"×")),c["default"].createElement("h4",{className:"modal-title"},gettext("Merge threads"))),this.state.category?this.renderForm():this.renderCantMergeMessage()))}}]),t}(h["default"]);r["default"]=D},{"../../../index":119,"../../../reducers/selection":157,"../../../reducers/threads":159,"../../../services/ajax":163,"../../../services/modal":169,"../../../services/snackbar":172,"../../../services/store":173,"../../../utils/validators":188,"../../button":4,"../../category-select":12,"../../form":20,"../../form-group":19,"../../select":57,"./errors-list":83,react:"react"}],85:[function(e,t,r){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function n(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),u=e("react"),c=n(u),f=e("../../form"),d=n(f),p=e("../../form-group"),h=n(p),m=e("../../category-select"),b=n(m),y=e("../../../reducers/selection"),g=a(y),v=e("../../../reducers/threads"),_=e("../../../services/modal"),E=n(_),w=e("../../../services/store"),O=n(w),k=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));r.handleSubmit=function(e){e.preventDefault(),E["default"].hide();var t=function(){O["default"].dispatch((0,v.filterThreads)(r.props.route.category,r.props.categoriesMap));var e=O["default"].getState(),t=e.threads.map(function(e){return e.id});O["default"].dispatch(g.all(e.selection.filter(function(e){return-1!==t.indexOf(e)})))};r.props.callApi([{op:"replace",path:"category",value:r.state.category},{op:"add",path:"top-category",value:r.props.route.category.id},{op:"replace",path:"flatten-categories",value:null}],gettext("Selected threads were moved."),t)},r.state={category:null};var a={};for(var n in e.user.acl.categories)if(e.user.acl.categories.hasOwnProperty(n)){var i=e.user.acl.categories[n];a[i.id]=i}return r.categoryChoices=[],e.categories.forEach(function(e){if(e.level>0){var t=a[e.id],n=!t.can_start_threads||e.is_closed&&!t.can_close_threads;r.categoryChoices.push({value:e.id,disabled:n,level:e.level-1,label:e.name}),n||r.state.category||(r.state.category=e.id)}}),r}return i(t,e),l(t,[{key:"getClassName",value:function(){return this.state.category?"modal-dialog":"modal-dialog modal-message"}},{key:"renderForm",value:function(){return c["default"].createElement("form",{onSubmit:this.handleSubmit},c["default"].createElement("div",{className:"modal-body"},c["default"].createElement(h["default"],{label:gettext("New category"),"for":"id_new_category",labelClass:"col-sm-4",controlClass:"col-sm-8"},c["default"].createElement(b["default"],{id:"id_new_category",onChange:this.bindInput("category"),value:this.state.category,choices:this.categoryChoices}))),c["default"].createElement("div",{className:"modal-footer"},c["default"].createElement("button",{className:"btn btn-primary"},gettext("Move threads"))))}},{key:"renderCantMoveMessage",value:function(){return c["default"].createElement("div",{className:"modal-body"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"info_outline")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",{className:"lead"},gettext("You can't move threads because there are no categories you are allowed to move them to.")),c["default"].createElement("p",null,gettext("You need permission to start threads in category to be able to move threads to it."))))}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getClassName(),role:"document"},c["default"].createElement("div",{className:"modal-content"},c["default"].createElement("div",{className:"modal-header"},c["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},c["default"].createElement("span",{"aria-hidden":"true"},"×")),c["default"].createElement("h4",{className:"modal-title"},gettext("Move threads"))),this.state.category?this.renderForm():this.renderCantMoveMessage()))}}]),t}(d["default"]);r["default"]=k},{"../../../reducers/selection":157,"../../../reducers/threads":159,"../../../services/modal":169,"../../../services/store":173,"../../category-select":12,"../../form":20,"../../form-group":19,react:"react"}],86:[function(e,t,r){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function n(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),u=e("react"),c=n(u),f=e("../../../reducers/selection"),d=a(f),p=e("../../../services/store"),h=n(p),m=function(e){function t(){var e,r,a,n;o(this,t);for(var i=arguments.length,l=Array(i),u=0;i>u;u++)l[u]=arguments[u];return r=a=s(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(l))),a.selectAll=function(){h["default"].dispatch(d.all(a.props.threads.map(function(e){return e.id})))},a.selectNone=function(){h["default"].dispatch(d.none())},n=r,s(a,n)}return i(t,e),l(t,[{key:"render",value:function(){return c["default"].createElement("ul",{className:this.props.className},c["default"].createElement("li",null,c["default"].createElement("button",{className:"btn btn-link",type:"button",onClick:this.selectAll},c["default"].createElement("span",{className:"material-icon"},"check_box"),gettext("Select all"))),c["default"].createElement("li",null,c["default"].createElement("button",{className:"btn btn-link",type:"button",onClick:this.selectNone},c["default"].createElement("span",{className:"material-icon"},"check_box_outline_blank"),gettext("Select none"))))}}]),t}(c["default"].Component);r["default"]=m},{"../../../reducers/selection":157,"../../../services/store":173,react:"react"}],87:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0}),r.CompactNav=r.TabsNav=void 0;var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("react-router"),f=e("../li"),d=a(f),p=function(e,t,r,a){return r.map(function(r){return u["default"].createElement(d["default"],{isControlled:!0,isActive:r.path===t.path,key:e+r.path},u["default"].createElement(c.Link,{to:e+r.path,onClick:a},u["default"].createElement("span",{className:"hidden-xs hidden-sm"},r.name),u["default"].createElement("span",{className:"hidden-md hidden-lg"},r.longName)))})};r.TabsNav=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("div",{className:"page-tabs hidden-xs hidden-sm"},u["default"].createElement("div",{className:"container"},u["default"].createElement("ul",{className:"nav nav-pills"},p(this.props.baseUrl,this.props.list,this.props.lists,this.props.hideNav))))}}]),t}(u["default"].Component),r.CompactNav=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("ul",{className:"dropdown-menu",role:"menu"},p(this.props.baseUrl,this.props.list,this.props.lists,this.props.hideNav))}}]),t}(u["default"].Component)},{"../li":21,react:"react","react-router":"react-router"}],88:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e){return{selection:e.selection,threads:e.threads,tick:e.tick.tick,user:e.auth.user}}function o(e){var t=[{type:"all",path:"",name:gettext("All"),longName:gettext("All threads")}];return e.id&&(t.push({type:"my",path:"my/",name:gettext("My"),longName:gettext("My threads")}),t.push({type:"new",path:"new/",name:gettext("New"),longName:gettext("New threads")}),t.push({type:"unread",path:"unread/",name:gettext("Unread"),longName:gettext("Unread threads")}),t.push({type:"subscribed",path:"subscribed/",name:gettext("Subscribed"),longName:gettext("Subscribed threads")}),e.acl.can_see_unapproved_content_lists&&t.push({type:"unapproved",path:"unapproved/",name:gettext("Unapproved"),longName:gettext("Unapproved content")})),t}function s(e){var t=o(e),r=[],a={};return f["default"].get("CATEGORIES").forEach(function(e){t.forEach(function(o){a[e.id]=e,r.push({path:e.absolute_url+o.path,component:(0,i.connect)(n)(u["default"]),categories:f["default"].get("CATEGORIES"),categoriesMap:a,category:e,lists:t,list:o})})}),r}Object.defineProperty(r,"__esModule",{value:!0}),r.select=n,r.getLists=o,r.paths=s;var i=e("react-redux"),l=e("./route"),u=a(l),c=e("../../index"),f=a(c)},{"../../index":119,"./route":89,"react-redux":"react-redux"}],89:[function(e,t,r){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function n(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),u=e("react"),c=n(u),f=e("../button"),d=n(f),p=e("./compare"),h=e("./container"),m=n(h),b=e("./navs"),y=e("./header"),g=n(y),v=e("./utils"),_=e("../threads-list/root"),E=n(_),w=e("./list-empty"),O=n(w),k=e("../with-dropdown"),N=n(k),j=e("../../index"),x=n(j),P=e("../../reducers/selection"),C=a(P),S=e("../../reducers/threads"),T=e("../../services/ajax"),M=n(T),L=e("../../services/polls"),R=n(L),A=e("../../services/snackbar"),I=n(A),U=e("../../services/store"),D=n(U),B=e("../../services/page-title"),z=n(B),F=e("../../utils/sets"),H=a(F),G=function(e){function t(e){o(this,t);var r=s(this,Object.getPrototypeOf(t).call(this,e));r.loadMore=function(){r.setState({isBusy:!0}),r.loadThreads(r.getCategory(),r.state.page+1)},r.pollResponse=function(e){r.setState({diff:Object.assign({},e,{results:(0,v.diffThreads)(r.props.threads,e.results)})})},r.addThreads=function(e){D["default"].dispatch((0,S.append)(e,r.getSorting()))},r.applyDiff=function(){r.addThreads(r.state.diff.results),r.setState(Object.assign({},r.state.diff,{moderation:(0,v.getModerationActions)(D["default"].getState().threads),diff:{results:[]}}))},r.freezeThread=function(e){r.setState(function(t){return{busyThreads:H.toggle(t.busyThreads,e)}})},r.updateThread=function(e){D["default"].dispatch((0,S.patch)(e,e,r.getSorting()))},r.deleteThread=function(e){D["default"].dispatch((0,S.deleteThread)(e))},r.state={isMounted:!0,isLoaded:!1,isBusy:!1,diff:{results:[]},moderation:[],busyThreads:[],dropdown:!1,subcategories:[],count:0,more:0,page:1,pages:1};var a=r.getCategory();return x["default"].has("THREADS")?r.initWithPreloadedData(a,x["default"].get("THREADS")):r.initWithoutPreloadedData(a),r}return i(t,e),l(t,[{key:"getCategory",value:function(){return this.props.route.category.special_role?null:this.props.route.category.id}},{key:"initWithPreloadedData",value:function(e,t){this.state=Object.assign(this.state,{moderation:(0,v.getModerationActions)(t.results),subcategories:t.subcategories,count:t.count,more:t.more,page:t.page,pages:t.pages}),this.startPolling(e)}},{key:"initWithoutPreloadedData",value:function(e){this.loadThreads(e)}},{key:"loadThreads",value:function(e){var t=this,r=arguments.length<=1||void 0===arguments[1]?1:arguments[1];M["default"].get(x["default"].get("THREADS_API"),{category:e,list:this.props.route.list.type,page:r||1},"threads").then(function(a){t.state.isMounted&&(1===r?D["default"].dispatch((0,S.hydrate)(a.results)):D["default"].dispatch((0,S.append)(a.results,t.getSorting())),t.setState({isLoaded:!0,isBusy:!1,moderation:(0,v.getModerationActions)(D["default"].getState().threads),subcategories:a.subcategories,count:a.count,more:a.more,page:a.page,pages:a.pages}),t.startPolling(e))},function(e){I["default"].apiError(e)})}},{key:"startPolling",value:function(e){R["default"].start({poll:"threads",url:x["default"].get("THREADS_API"),data:{category:e,list:this.props.route.list.type},frequency:12e4,update:this.pollResponse})}},{key:"componentDidMount",value:function(){z["default"].set((0,v.getPageTitle)(this.props.route)),x["default"].has("THREADS")&&(D["default"].dispatch((0,S.hydrate)(x["default"].pop("THREADS").results)),this.setState({isLoaded:!0})),D["default"].dispatch(C.none())}},{key:"componentWillUnmount",value:function(){this.state.isMounted=!1,R["default"].stop("threads")}},{key:"getTitle",value:function(){return(0,v.getTitle)(this.props.route)}},{key:"getSorting",value:function(){return this.props.route.category.special_role?p.compareGlobalWeight:p.compareWeight}},{key:"getCompactNav",value:function(){return this.props.route.lists.length>1?c["default"].createElement("div",{className:this.getCompactNavClassName()},c["default"].createElement(b.CompactNav,{baseUrl:this.props.route.category.absolute_url,list:this.props.route.list,lists:this.props.route.lists,hideNav:this.hideNav})):null}},{key:"getMoreButton",value:function(){return this.state.more?c["default"].createElement("div",{className:"pager-more"},c["default"].createElement(d["default"],{loading:this.state.isBusy||this.state.busyThreads.length,onClick:this.loadMore},gettext("Show more"))):null}},{key:"getClassName",value:function(){var e="page page-threads";return e+=" page-threads-"+this.props.route.list,this.props.route.category.css_class&&(e+=" page-"+this.props.route.category.css_class),e}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getClassName()},c["default"].createElement(g["default"],{categories:this.props.route.categoriesMap,disabled:!this.state.isLoaded,threads:this.props.threads,title:this.getTitle(),toggleNav:this.toggleNav,route:this.props.route,user:this.props.user}),this.getCompactNav(),c["default"].createElement(m["default"],{route:this.props.route,subcategories:this.state.subcategories,user:this.props.user,threads:this.props.threads,threadsCount:this.state.count,moderation:this.state.moderation,selection:this.props.selection,busyThreads:this.state.busyThreads,addThreads:this.addThreads,freezeThread:this.freezeThread,deleteThread:this.deleteThread,updateThread:this.updateThread,isLoaded:this.state.isLoaded,isBusy:this.state.isBusy},c["default"].createElement(E["default"],{categories:this.props.route.categoriesMap,list:this.props.route.list,selection:this.props.selection,threads:this.props.threads,diffSize:this.state.diff.results.length,applyDiff:this.applyDiff,showOptions:!!this.props.user.id,isLoaded:this.state.isLoaded,busyThreads:this.state.busyThreads},c["default"].createElement(O["default"],{category:this.props.route.category,list:this.props.route.list})),this.getMoreButton()))}}]),t}(N["default"]);r["default"]=G},{"../../index":119,"../../reducers/selection":157,"../../reducers/threads":159,"../../services/ajax":163,"../../services/page-title":170,"../../services/polls":171,"../../services/snackbar":172,"../../services/store":173,"../../utils/sets":186,"../button":4,"../threads-list/root":64,"../with-dropdown":117,"./compare":78,"./container":79,"./header":80,"./list-empty":81,"./navs":87,"./utils":91,react:"react"}],90:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("./category-picker"),f=a(c),d=e("./moderation/controls"),p=a(d),h=e("./moderation/selection"),m=a(h),b=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getCategoryPicker",value:function(){return this.props.subcategories.length?u["default"].createElement("div",{className:"toolbar-left"},u["default"].createElement(f["default"],{choices:this.props.subcategories,categories:this.props.categoriesMap,list:this.props.list})):null}},{key:"showModerationOptions",value:function(){return this.props.user.id&&this.props.moderation.allow}},{key:"getSelectionButton",value:function(){return this.showModerationOptions()?u["default"].createElement("div",{className:"toolbar-right dropdown"},u["default"].createElement("button",{type:"button",className:"btn btn-default btn-icon dropdown-toggle","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",disabled:this.props.disabled},u["default"].createElement("span",{className:"material-icon"},"select_all")),u["default"].createElement(m["default"],{className:"dropdown-menu dropdown-menu-right",threads:this.props.threads})):null}},{key:"getSelectedThreads",value:function(){var e=this;return this.props.threads.filter(function(t){return e.props.selection.indexOf(t.id)>=0})}},{key:"getModerationButton",value:function(){return this.showModerationOptions()?u["default"].createElement("div",{className:"toolbar-right dropdown"},u["default"].createElement("button",{type:"button",className:"btn btn-default dropdown-toggle","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",disabled:this.props.disabled||!this.props.selection.length},u["default"].createElement("span",{className:"material-icon"},"settings"),gettext("Moderation")),u["default"].createElement(p["default"],{addThreads:this.props.addThreads,categories:this.props.categories,categoriesMap:this.props.categoriesMap,className:"dropdown-menu dropdown-menu-right",deleteThread:this.props.deleteThread,freezeThread:this.props.freezeThread,moderation:this.props.moderation,route:this.props.route,threads:this.getSelectedThreads(),updateThread:this.props.updateThread,user:this.props.user})):null}},{key:"render",value:function(){return u["default"].createElement("div",{className:"toolbar with-js"},this.getCategoryPicker(),u["default"].createElement("p",{className:"toolbar-left hidden-xs hidden-sm"},this.props.children),this.getSelectionButton(),this.getModerationButton())}}]),t}(u["default"].Component);r["default"]=b},{"./category-picker":77,"./moderation/controls":82,"./moderation/selection":86,react:"react"}],91:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e){return e.category.level?e.list.path?{title:e.list.longName,parent:e.category.name}:{title:e.category.name}:c["default"].get("CATEGORIES_ON_INDEX")?e.list.path?{title:e.list.longName,parent:gettext("Threads")}:{title:gettext("Threads")}:e.list.path?{title:e.list.longName}:null}function o(e){return e.category.special_role?c["default"].get("CATEGORIES_ON_INDEX")?gettext("Threads"):c["default"].get("SETTINGS").forum_index_title?c["default"].get("SETTINGS").forum_index_title:c["default"].get("SETTINGS").forum_name:e.category.name}function s(e,t){return[e.title===t.title,e.weight===t.weight,e.category===t.category,e.top_category===t.top_category,e.last_post===t.last_post,e.last_poster_name===t.last_poster_name].indexOf(!1)>=0}function i(e,t){var r={};return e.forEach(function(e){r[e.id]=e}),t.filter(function(e){return r[e.id]?s(r[e.id],e):!0})}function l(e){var t={allow:!1,can_approve:0,can_close:0,can_hide:0,can_merge:0,can_move:0,can_pin:0};return e.forEach(function(e){e.is_unapproved&&e.acl.can_approve>t.can_approve&&(t.can_approve=e.acl.can_approve),e.acl.can_close>t.can_close&&(t.can_close=e.acl.can_close),e.acl.can_hide>t.can_hide&&(t.can_hide=e.acl.can_hide),e.acl.can_merge>t.can_merge&&(t.can_merge=e.acl.can_merge),e.acl.can_move>t.can_move&&(t.can_move=e.acl.can_move),e.acl.can_pin>t.can_pin&&(t.can_pin=e.acl.can_pin),t.allow=t.can_approve||t.can_close||t.can_hide||t.can_merge||t.can_move||t.can_pin}),t}Object.defineProperty(r,"__esModule",{value:!0}),r.getPageTitle=n,r.getTitle=o,r.isThreadChanged=s,r.diffThreads=i,r.getModerationActions=l;var u=e("../../index"),c=a(u)},{"../../index":119}],92:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0}),r.CompactGuestNav=r.GuestNav=r.GuestMenu=void 0;var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("../avatar"),f=a(c),d=e("../register-button"),p=a(d),h=e("../sign-in.js"),m=a(h),b=e("../../services/mobile-navbar-dropdown"),y=a(b),g=e("../../services/modal"),v=a(g),_=r.GuestMenu=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"showSignInModal",value:function(){v["default"].show(m["default"])}},{key:"render",value:function(){return u["default"].createElement("ul",{className:"dropdown-menu user-dropdown dropdown-menu-right",role:"menu"},u["default"].createElement("li",{className:"guest-preview"},u["default"].createElement("h4",null,gettext("You are browsing as guest.")),u["default"].createElement("p",null,gettext("Sign in or register to start and participate in discussions.")),u["default"].createElement("div",{className:"row"},u["default"].createElement("div",{className:"col-xs-6"},u["default"].createElement("button",{type:"button",className:"btn btn-default btn-block",onClick:this.showSignInModal},gettext("Sign in"))),u["default"].createElement("div",{className:"col-xs-6"},u["default"].createElement(p["default"],{className:"btn-primary btn-block"},gettext("Register"))))))}}]),t}(u["default"].Component);r.GuestNav=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("div",{className:"nav nav-guest"},u["default"].createElement("button",{type:"button",className:"btn navbar-btn btn-default",onClick:this.showSignInModal},gettext("Sign in")),u["default"].createElement(p["default"],{className:"navbar-btn btn-primary"},gettext("Register")))}}]),t}(_),r.CompactGuestNav=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"showGuestMenu",value:function(){y["default"].show(_)}},{key:"render",value:function(){return u["default"].createElement("button",{type:"button",onClick:this.showGuestMenu},u["default"].createElement(f["default"],{size:"64"}))}}]),t}(u["default"].Component)},{"../../services/mobile-navbar-dropdown":168,"../../services/modal":169,"../avatar":2,"../register-button":51,"../sign-in.js":58,react:"react"}],93:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return e.auth}Object.defineProperty(r,"__esModule",{value:!0}),r.CompactUserMenu=r.UserMenu=void 0;var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}();r.select=i;var u=e("react"),c=a(u),f=e("./guest-nav"),d=e("./user-nav");r.UserMenu=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),l(t,[{key:"render",value:function(){return this.props.isAuthenticated?c["default"].createElement(d.UserNav,{user:this.props.user}):c["default"].createElement(f.GuestNav,null)}}]),t}(c["default"].Component),r.CompactUserMenu=function(e){function t(){return n(this,t),
+o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),l(t,[{key:"render",value:function(){return this.props.isAuthenticated?c["default"].createElement(d.CompactUserNav,{user:this.props.user}):c["default"].createElement(f.CompactGuestNav,null)}}]),t}(c["default"].Component)},{"./guest-nav":92,"./user-nav":94,react:"react"}],94:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{user:e.auth.user}}Object.defineProperty(r,"__esModule",{value:!0}),r.CompactUserNav=r.UserNav=r.UserMenu=void 0;var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}();r.selectUserMenu=i;var u=e("react"),c=a(u),f=e("react-redux"),d=e("../avatar"),p=a(d),h=e("../change-avatar/root"),m=a(h),b=e("../../index"),y=a(b),g=e("../../services/mobile-navbar-dropdown"),v=a(g),_=e("../../services/modal"),E=a(_),w=r.UserMenu=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),l(t,[{key:"logout",value:function(){var e=confirm(gettext("Are you sure you want to sign out?"));e&&$("#hidden-logout-form").submit()}},{key:"changeAvatar",value:function(){E["default"].show((0,f.connect)(h.select)(m["default"]))}},{key:"render",value:function(){return c["default"].createElement("ul",{className:"dropdown-menu user-dropdown dropdown-menu-right",role:"menu"},c["default"].createElement("li",{className:"dropdown-header"},c["default"].createElement("strong",null,this.props.user.username)),c["default"].createElement("li",{className:"divider"}),c["default"].createElement("li",null,c["default"].createElement("a",{href:this.props.user.absolute_url},c["default"].createElement("span",{className:"material-icon"},"account_circle"),gettext("See your profile"))),c["default"].createElement("li",null,c["default"].createElement("a",{href:y["default"].get("USERCP_URL")},c["default"].createElement("span",{className:"material-icon"},"done_all"),gettext("Change options"))),c["default"].createElement("li",null,c["default"].createElement("button",{type:"button",className:"btn-link",onClick:this.changeAvatar},c["default"].createElement("span",{className:"material-icon"},"portrait"),gettext("Change avatar"))),c["default"].createElement("li",{className:"divider"}),c["default"].createElement("li",{className:"dropdown-buttons"},c["default"].createElement("button",{type:"button",className:"btn btn-default btn-block",onClick:this.logout},gettext("Log out"))))}}]),t}(c["default"].Component);r.UserNav=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),l(t,[{key:"render",value:function(){return c["default"].createElement("ul",{className:"ul nav navbar-nav nav-user"},c["default"].createElement("li",{className:"dropdown"},c["default"].createElement("a",{href:this.props.user.absolute_url,className:"dropdown-toggle","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",role:"button"},c["default"].createElement(p["default"],{user:this.props.user,size:"64"})),c["default"].createElement(w,{user:this.props.user})))}}]),t}(c["default"].Component),r.CompactUserNav=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),l(t,[{key:"showUserMenu",value:function(){v["default"].showConnected("user-menu",(0,f.connect)(i)(w))}},{key:"render",value:function(){return c["default"].createElement("button",{type:"button",onClick:this.showUserMenu},c["default"].createElement(p["default"],{user:this.props.user,size:"64"}))}}]),t}(c["default"].Component)},{"../../index":119,"../../services/mobile-navbar-dropdown":168,"../../services/modal":169,"../avatar":2,"../change-avatar/root":16,react:"react","react-redux":"react-redux"}],95:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0}),r.StatusLabel=r.StatusIcon=void 0;var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getClass",value:function(){var e="";return this.props.status.is_banned?e="banned":this.props.status.is_hidden?e="offline":this.props.status.is_online_hidden?e="online":this.props.status.is_offline_hidden?e="offline":this.props.status.is_online?e="online":this.props.status.is_offline&&(e="offline"),"user-status user-"+e}},{key:"render",value:function(){return u["default"].createElement("span",{className:this.getClass()},this.props.children)}}]),t}(u["default"].Component);r["default"]=c;r.StatusIcon=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getIcon",value:function(){return this.props.status.is_banned?"remove_circle_outline":this.props.status.is_hidden?"help_outline":this.props.status.is_online_hidden?"label":this.props.status.is_offline_hidden?"label_outline":this.props.status.is_online?"lens":this.props.status.is_offline?"panorama_fish_eye":void 0}},{key:"render",value:function(){return u["default"].createElement("span",{className:"material-icon status-icon"},this.getIcon())}}]),t}(u["default"].Component),r.StatusLabel=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getHelp",value:function(){return this.props.status.is_banned?this.props.status.banned_until?interpolate(gettext("%(username)s is banned until %(ban_expires)s"),{username:this.props.user.username,ban_expires:this.props.status.banned_until.format("LL, LT")},!0):interpolate(gettext("%(username)s is banned"),{username:this.props.user.username},!0):this.props.status.is_hidden?interpolate(gettext("%(username)s is hiding presence"),{username:this.props.user.username},!0):this.props.status.is_online_hidden?interpolate(gettext("%(username)s is online (hidden)"),{username:this.props.user.username},!0):this.props.status.is_offline_hidden?interpolate(gettext("%(username)s was last seen %(last_click)s (hidden)"),{username:this.props.user.username,last_click:this.props.status.last_click.fromNow()},!0):this.props.status.is_online?interpolate(gettext("%(username)s is online"),{username:this.props.user.username},!0):this.props.status.is_offline?interpolate(gettext("%(username)s was last seen %(last_click)s"),{username:this.props.user.username,last_click:this.props.status.last_click.fromNow()},!0):void 0}},{key:"getLabel",value:function(){return this.props.status.is_banned?gettext("Banned"):this.props.status.is_hidden?gettext("Hidden"):this.props.status.is_online_hidden?gettext("Online (hidden)"):this.props.status.is_offline_hidden?gettext("Offline (hidden)"):this.props.status.is_online?gettext("Online"):this.props.status.is_offline?gettext("Offline"):void 0}},{key:"render",value:function(){return u["default"].createElement("span",{className:this.props.className||"status-label",title:this.getHelp()},this.getLabel())}}]),t}(u["default"].Component)},{react:"react"}],96:[function(e,t,r){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function n(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),u=e("react"),c=n(u),f=e("../avatar"),d=n(f),p=e("../../utils/random"),h=a(p),m=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),l(t,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"getClassName",value:function(){return this.props.hiddenOnMobile?"list-group-item hidden-xs hidden-sm":"list-group-item"}},{key:"render",value:function(){return c["default"].createElement("li",{className:this.getClassName()},c["default"].createElement("div",{className:"change-avatar"},c["default"].createElement("span",{className:"user-avatar"},c["default"].createElement(d["default"],{size:"100"}))),c["default"].createElement("div",{className:"change-author"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](30,100)+"px"}}," ")),c["default"].createElement("div",{className:"change"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](30,70)+"px"}}," "),c["default"].createElement("span",{className:"material-icon"},"arrow_forward"),c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](30,70)+"px"}}," ")),c["default"].createElement("div",{className:"change-date"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](80,140)+"px"}}," ")))}}]),t}(c["default"].Component);r["default"]=m},{"../../utils/random":183,"../avatar":2,react:"react"}],97:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("../avatar"),f=a(c),d=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"renderUserAvatar",value:function(){return this.props.change.changed_by?u["default"].createElement("a",{href:this.props.change.changed_by.absolute_url,className:"user-avatar-wrapper"},u["default"].createElement(f["default"],{user:this.props.change.changed_by,size:"100"})):u["default"].createElement("span",{className:"user-avatar-wrapper"},u["default"].createElement(f["default"],{size:"100"}))}},{key:"renderUsername",value:function(){return this.props.change.changed_by?u["default"].createElement("a",{href:this.props.change.changed_by.absolute_url,className:"item-title"},this.props.change.changed_by.username):u["default"].createElement("span",{className:"item-title"},this.props.change.changed_by_username)}},{key:"render",value:function(){return u["default"].createElement("li",{className:"list-group-item",key:this.props.change.id},u["default"].createElement("div",{className:"change-avatar"},this.renderUserAvatar()),u["default"].createElement("div",{className:"change-author"},this.renderUsername()),u["default"].createElement("div",{className:"change"},u["default"].createElement("span",{className:"old-username"},this.props.change.old_username),u["default"].createElement("span",{className:"material-icon"},"arrow_forward"),u["default"].createElement("span",{className:"new-username"},this.props.change.new_username)),u["default"].createElement("div",{className:"change-date"},u["default"].createElement("abbr",{title:this.props.change.changed_on.format("LLL")},this.props.change.changed_on.fromNow())))}}]),t}(u["default"].Component);r["default"]=d},{"../avatar":2,react:"react"}],98:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getEmptyMessage",value:function(){return this.props.emptyMessage?this.props.emptyMessage:gettext("No name changes have been recorded for your account.")}},{key:"render",value:function(){return u["default"].createElement("div",{className:"username-history ui-ready"},u["default"].createElement("ul",{className:"list-group"},u["default"].createElement("li",{className:"list-group-item empty-message"},this.getEmptyMessage())))}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],99:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("./change-preview"),f=a(c),d=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"render",value:function(){return u["default"].createElement("div",{className:"username-history ui-preview"},u["default"].createElement("ul",{className:"list-group"},[0,1,2].map(function(e){return u["default"].createElement(f["default"],{hiddenOnMobile:e>0,key:e})})))}}]),t}(u["default"].Component);r["default"]=d},{"./change-preview":96,react:"react"}],100:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("./change"),f=a(c),d=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("div",{className:"username-history ui-ready"},u["default"].createElement("ul",{className:"list-group"},this.props.changes.map(function(e){return u["default"].createElement(f["default"],{change:e,key:e.id})})))}}]),t}(u["default"].Component);r["default"]=d},{"./change":97,react:"react"}],101:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("./list-empty"),f=a(c),d=e("./list-ready"),p=a(d),h=e("./list-preview"),m=a(h),b=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return this.props.isLoaded?this.props.changes.length?u["default"].createElement(p["default"],{changes:this.props.changes}):u["default"].createElement(f["default"],{emptyMessage:this.props.emptyMessage}):u["default"].createElement(m["default"],null)}}]),t}(u["default"].Component);r["default"]=b},{"./list-empty":98,"./list-preview":99,"./list-ready":100,react:"react"}],102:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("./user-card"),f=a(c),d=e("./user-preview"),p=a(d),h=e("../../utils/batch"),m=a(h),b=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"shouldComponentUpdate",value:function(e){return e.isLoaded}},{key:"getPager",value:function(){return this.props.pages>1?u["default"].createElement(Pager,this.props):null}},{key:"getClassName",value:function(){return this.props.className?"users-cards-list "+this.props.className+" ui-ready":"users-cards-list ui-ready"}},{key:"getColClassName",value:function(){return"col-md-"+12/this.props.cols}},{key:"getBody",value:function(){var e=this;if(this.props.isLoaded)return(0,m["default"])(this.props.users,this.props.cols).map(function(t,r){return u["default"].createElement("div",{className:"row",key:r},t.map(function(t){return u["default"].createElement("div",{className:e.getColClassName(),key:t.id},u["default"].createElement(f["default"],{user:t,showStatus:e.props.showStatus,showRank:e.props.showRank}))}))});for(var t=[],r=0;r<this.props.cols;r++)0===r?t.push(this.getColClassName()):t.push(this.getColClassName()+" hidden-xs hidden-sm");return u["default"].createElement("div",{className:"row"},t.map(function(t,r){return u["default"].createElement("div",{className:t,key:r},u["default"].createElement(p["default"],{showStatus:e.props.showStatus}))}))}},{key:"render",value:function(){return u["default"].createElement("div",{className:"users-cards-list ui-ready"},this.getBody())}}]),t}(u["default"].Component);r["default"]=b},{"../../utils/batch":176,"./user-card":103,"./user-preview":104,react:"react"}],103:[function(e,t,r){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function n(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),u=e("react"),c=n(u),f=e("../avatar"),d=n(f),p=e("../user-status"),h=n(p),m=e("../../utils/random"),b=a(m),y=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),l(t,[{key:"getUserStatus",value:function(){return this.props.showStatus?this.props.user.status?c["default"].createElement(h["default"],{user:this.props.user,status:this.props.user.status},c["default"].createElement(p.StatusIcon,{user:this.props.user,status:this.props.user.status}),c["default"].createElement(p.StatusLabel,{user:this.props.user,status:this.props.user.status,className:"status-label"})):c["default"].createElement("span",{className:"user-status"},c["default"].createElement("span",{className:"status-icon ui-preview-text"}," "),c["default"].createElement("span",{className:"status-label ui-preview-text",style:{width:b["int"](30,50)+"px"}}," ")):null}},{key:"getRankName",value:function(){return this.props.showRank?this.props.user.rank.is_tab?c["default"].createElement("a",{href:this.props.user.rank.absolute_url,className:"item-title rank-name"},this.props.user.rank.name):c["default"].createElement("span",{className:"item-title rank-name"},this.props.user.rank.name):null}},{key:"getUserTitle",value:function(){return this.props.user.title?c["default"].createElement("span",{className:"user-title"},this.props.user.title):null}},{key:"getUserJoinedOn",value:function(){var e=interpolate(gettext("Joined on %(joined_on)s"),{joined_on:this.props.user.joined_on.format("LL, LT")},!0),t=interpolate(gettext("Joined %(joined_on)s"),{joined_on:this.props.user.joined_on.fromNow()},!0);return c["default"].createElement("span",{className:"user-joined-on",title:e},t)}},{key:"getPostsCount",value:function(){var e=ngettext("%(posts)s post","%(posts)s posts",this.props.user.posts);return interpolate(e,{posts:this.props.user.posts},!0)}},{key:"getThreadsCount",value:function(){var e=ngettext("%(threads)s thread","%(threads)s threads",this.props.user.threads);return interpolate(e,{threads:this.props.user.threads},!0)}},{key:"getFollowersCount",value:function(){var e=ngettext("%(followers)s follower","%(followers)s followers",this.props.user.followers);return interpolate(e,{followers:this.props.user.followers},!0)}},{key:"getClassName",value:function(){return this.props.user.rank.css_class?"user-card user-card-"+this.props.user.rank.css_class+" ui-ready":"user-card ui-ready"}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getClassName()},c["default"].createElement("div",{className:"user-card-bg-image"},c["default"].createElement(d["default"],{user:this.props.user,size:"400",className:"bg-image"}),c["default"].createElement("div",{className:"user-card-bg"},c["default"].createElement("div",{className:"user-details"},c["default"].createElement("div",{className:"user-avatar"},c["default"].createElement("a",{href:this.props.user.absolute_url},c["default"].createElement(d["default"],{user:this.props.user,size:"400"}))),c["default"].createElement("h4",{className:"user-name"},c["default"].createElement("a",{href:this.props.user.absolute_url,className:"item-title"},this.props.user.username)),c["default"].createElement("p",{className:"user-subscript"},this.getUserStatus(),this.getRankName(),this.getUserTitle(),this.getUserJoinedOn())),c["default"].createElement("div",{className:"user-card-stats"},c["default"].createElement("ul",{className:"list-unstyled"},c["default"].createElement("li",{className:"user-posts-count"},this.getPostsCount()),c["default"].createElement("li",{className:"user-threads-count"},this.getThreadsCount()),c["default"].createElement("li",{className:"user-followers-count"},this.getFollowersCount()))))))}}]),t}(c["default"].Component);r["default"]=y},{"../../utils/random":183,"../avatar":2,"../user-status":95,react:"react"}],104:[function(e,t,r){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function n(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),u=e("react"),c=n(u),f=e("../avatar"),d=n(f),p=e("../../utils/random"),h=a(p),m=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),l(t,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"getUserStatus",value:function(){return this.props.showStatus?c["default"].createElement("span",{className:"user-status"},c["default"].createElement("span",{className:"status-icon ui-preview-text"}," "),c["default"].createElement("span",{className:"status-label ui-preview-text",style:{width:h["int"](30,50)+"px"}}," ")):null}},{key:"render",value:function(){return c["default"].createElement("div",{className:"user-card ui-preview"},c["default"].createElement("div",{className:"user-card-bg-image"},c["default"].createElement(d["default"],{size:"400",className:"bg-image"}),c["default"].createElement("div",{className:"user-card-bg"},c["default"].createElement("div",{className:"user-details"},c["default"].createElement("div",{className:"user-avatar"},c["default"].createElement(d["default"],{size:"400"})),c["default"].createElement("h4",{className:"user-name"},c["default"].createElement("span",{className:"item-title"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](60,150)+"px"}}," "))),c["default"].createElement("p",{className:"user-subscript"},this.getUserStatus(),c["default"].createElement("span",{className:"user-joined-on"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](30,50)+"px"}}," ")))),c["default"].createElement("div",{className:"user-card-stats"},c["default"].createElement("ul",{className:"list-unstyled"},c["default"].createElement("li",{className:"user-posts-count"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](40,70)+"px"}}," ")),c["default"].createElement("li",{className:"user-threads-count"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](40,70)+"px"}}," ")),c["default"].createElement("li",{className:"user-followers-count"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](40,70)+"px"}}," ")))))))}}]),t}(c["default"].Component);r["default"]=m},{"../../utils/random":183,"../avatar":2,react:"react"}],105:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments));
+}return s(t,e),i(t,[{key:"getEmptyMessage",value:function(){return interpolate(gettext("No users have posted any new messages during last %(days)s days."),{days:this.props.trackedPeriod},!0)}},{key:"render",value:function(){return u["default"].createElement("div",{className:"active-posters-list"},u["default"].createElement("div",{className:"container"},u["default"].createElement("p",{className:"lead"},this.getEmptyMessage())))}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],106:[function(e,t,r){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function n(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),u=e("react"),c=n(u),f=e("../../avatar"),d=n(f),p=e("../../../utils/random"),h=a(p),m=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),l(t,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"getClassName",value:function(){return this.props.hiddenOnMobile?"list-group-item hidden-xs hidden-sm":"list-group-item"}},{key:"render",value:function(){return c["default"].createElement("li",{className:this.getClassName()},c["default"].createElement("div",{className:"rank-user-avatar"},c["default"].createElement("span",null,c["default"].createElement(d["default"],{size:"50"}))),c["default"].createElement("div",{className:"rank-user"},c["default"].createElement("div",{className:"user-name"},c["default"].createElement("span",{className:"item-title"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](30,80)+"px"}}," "))),c["default"].createElement("div",{className:"user-details"},c["default"].createElement("span",{className:"user-status"},c["default"].createElement("span",{className:"status-icon ui-preview-text"}," "),c["default"].createElement("span",{className:"status-label ui-preview-text hidden-xs hidden-sm",style:{width:h["int"](30,50)+"px"}}," ")),c["default"].createElement("span",{className:"rank-name"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](30,50)+"px"}}," ")),c["default"].createElement("span",{className:"user-title hidden-xs hidden-sm"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](30,50)+"px"}}," ")))),c["default"].createElement("div",{className:"rank-position"},c["default"].createElement("strong",null,c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](20,30)+"px"}}," ")),c["default"].createElement("small",null,gettext("Rank"))),c["default"].createElement("div",{className:"rank-posts-counted"},c["default"].createElement("strong",null,c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](20,30)+"px"}}," ")),c["default"].createElement("small",null,gettext("Ranked posts"))),c["default"].createElement("div",{className:"rank-posts-total"},c["default"].createElement("strong",null,c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](20,30)+"px"}}," ")),c["default"].createElement("small",null,gettext("Total posts"))))}}]),t}(c["default"].Component);r["default"]=m},{"../../../utils/random":183,"../../avatar":2,react:"react"}],107:[function(e,t,r){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function n(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),u=e("react"),c=n(u),f=e("react-router"),d=e("../../avatar"),p=n(d),h=e("../../user-status"),m=n(h),b=e("../../../index"),y=n(b),g=e("../../../utils/random"),v=a(g),_=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),l(t,[{key:"getClassName",value:function(){return this.props.rank.css_class?"list-group-item list-group-rank-"+this.props.rank.css_class:"list-group-item"}},{key:"getUserStatus",value:function(){return this.props.user.status?c["default"].createElement(m["default"],{user:this.props.user,status:this.props.user.status},c["default"].createElement(h.StatusIcon,{user:this.props.user,status:this.props.user.status}),c["default"].createElement(h.StatusLabel,{user:this.props.user,status:this.props.user.status,className:"status-label hidden-xs hidden-sm"})):c["default"].createElement("span",{className:"user-status"},c["default"].createElement("span",{className:"status-icon ui-preview-text"}," "),c["default"].createElement("span",{className:"status-label ui-preview-text hidden-xs hidden-sm",style:{width:v["int"](30,50)+"px"}}," "))}},{key:"getRankName",value:function(){if(this.props.rank.is_tab){var e=y["default"].get("USERS_LIST_URL")+this.props.rank.slug+"/";return c["default"].createElement(f.Link,{to:e,className:"rank-name item-title"},this.props.rank.name)}return c["default"].createElement("span",{className:"rank-name item-title"},this.props.rank.name)}},{key:"getUserTitle",value:function(){return this.props.user.title?c["default"].createElement("span",{className:"user-title hidden-xs hidden-sm"},this.props.user.title):null}},{key:"render",value:function(){return c["default"].createElement("li",{className:this.getClassName()},c["default"].createElement("div",{className:"rank-user-avatar"},c["default"].createElement("a",{href:this.props.user.absolute_url},c["default"].createElement(p["default"],{user:this.props.user,size:"50"}))),c["default"].createElement("div",{className:"rank-user"},c["default"].createElement("div",{className:"user-name"},c["default"].createElement("a",{href:this.props.user.absolute_url,className:"item-title"},this.props.user.username)),c["default"].createElement("div",{className:"user-details"},this.getUserStatus(),this.getRankName(),this.getUserTitle())),c["default"].createElement("div",{className:"rank-position"},c["default"].createElement("strong",null,"#",this.props.counter),c["default"].createElement("small",null,gettext("Rank"))),c["default"].createElement("div",{className:"rank-posts-counted"},c["default"].createElement("strong",null,this.props.user.meta.score),c["default"].createElement("small",null,gettext("Ranked posts"))),c["default"].createElement("div",{className:"rank-posts-total"},c["default"].createElement("strong",null,this.props.user.posts),c["default"].createElement("small",null,gettext("Total posts"))))}}]),t}(c["default"].Component);r["default"]=_},{"../../../index":119,"../../../utils/random":183,"../../avatar":2,"../../user-status":95,react:"react","react-router":"react-router"}],108:[function(e,t,r){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function n(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),u=e("react"),c=n(u),f=e("./list-item-preview"),d=n(f),p=e("../../../utils/random"),h=a(p),m=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),l(t,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"render",value:function(){return c["default"].createElement("div",{className:"active-posters-list"},c["default"].createElement("div",{className:"container"},c["default"].createElement("p",{className:"lead ui-preview"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:h["int"](50,220)+"px"}}," ")),c["default"].createElement("div",{className:"active-posters ui-preview"},c["default"].createElement("ul",{className:"list-group"},[0,1,2].map(function(e){return c["default"].createElement(d["default"],{hiddenOnMobile:e>0,key:e})})))))}}]),t}(c["default"].Component);r["default"]=m},{"../../../utils/random":183,"./list-item-preview":106,react:"react"}],109:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("./list-item"),f=a(c),d=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getLeadMessage",value:function(){var e=ngettext("%(posters)s most active poster from last %(days)s days.","%(posters)s most active posters from last %(days)s days.",this.props.count);return interpolate(e,{posters:this.props.count,days:this.props.trackedPeriod},!0)}},{key:"render",value:function(){return u["default"].createElement("div",{className:"active-posters-list"},u["default"].createElement("div",{className:"container"},u["default"].createElement("p",{className:"lead"},this.getLeadMessage()),u["default"].createElement("div",{className:"active-posters ui-ready"},u["default"].createElement("ul",{className:"list-group"},this.props.users.map(function(e,t){return u["default"].createElement(f["default"],{user:e,rank:e.rank,counter:t+1,key:e.id})})))))}}]),t}(u["default"].Component);r["default"]=d},{"./list-item":107,react:"react"}],110:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("./list-empty"),f=a(c),d=e("./list-preview"),p=a(d),h=e("./list-ready"),m=a(h),b=e("../../../index"),y=a(b),g=e("../../../reducers/users"),v=e("../../../services/polls"),_=a(v),E=e("../../../services/store"),w=a(E),O=e("../../../services/page-title"),k=a(O),N=function(e){function t(e){n(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.update=function(e){w["default"].dispatch((0,g.hydrate)(e.results)),r.setState({isLoaded:!0,trackedPeriod:e.tracked_period,count:e.count})},y["default"].has("USERS")?r.initWithPreloadedData(y["default"].pop("USERS")):r.initWithoutPreloadedData(),r.startPolling(),r}return s(t,e),i(t,[{key:"initWithPreloadedData",value:function(e){this.state={isLoaded:!0,trackedPeriod:e.tracked_period,count:e.count},w["default"].dispatch((0,g.hydrate)(e.results))}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1}}},{key:"startPolling",value:function(){_["default"].start({poll:"active-posters",url:y["default"].get("USERS_API"),data:{list:"active"},frequency:9e4,update:this.update})}},{key:"componentDidMount",value:function(){k["default"].set({title:this.props.route.extra.name,parent:gettext("Users")})}},{key:"componentWillUnmount",value:function(){_["default"].stop("active-posters")}},{key:"render",value:function(){return this.state.isLoaded?this.state.count>0?u["default"].createElement(m["default"],{users:this.props.users,trackedPeriod:this.state.trackedPeriod,count:this.state.count}):u["default"].createElement(f["default"],{trackedPeriod:this.state.trackedPeriod}):u["default"].createElement(p["default"],null)}}]),t}(u["default"].Component);r["default"]=N},{"../../../index":119,"../../../reducers/users":162,"../../../services/page-title":170,"../../../services/polls":171,"../../../services/store":173,"./list-empty":105,"./list-preview":108,"./list-ready":109,react:"react"}],111:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0}),r.CompactNav=r.TabsNav=void 0;var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("react-router"),f=e("../li"),d=a(f),p=e("../../index"),h=(a(p),function(e,t){var r=e;return r+="rank"===t.component?t.slug:t.component,r+"/"}),m=function(e,t,r){return t.map(function(t){var a=h(e,t);return u["default"].createElement(d["default"],{path:a,key:a},u["default"].createElement(c.Link,{to:a,onClick:r},t.name))})};r.TabsNav=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("ul",{className:"nav nav-pills"},m(this.props.baseUrl,this.props.lists))}}]),t}(u["default"].Component),r.CompactNav=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return u["default"].createElement("ul",{className:"dropdown-menu",role:"menu"},m(this.props.baseUrl,this.props.lists,this.props.hideNav))}}]),t}(u["default"].Component)},{"../../index":119,"../li":21,react:"react","react-router":"react-router"}],112:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("../../users-list/root"),f=a(c),d=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"render",value:function(){return u["default"].createElement("div",null,u["default"].createElement(f["default"],{isLoaded:!1,cols:3,showStatus:!0}))}}]),t}(u["default"].Component);r["default"]=d},{"../../users-list/root":102,react:"react"}],113:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("./pager"),f=a(c),d=e("../../users-list/root"),p=a(d),h=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getPager",value:function(){return this.props.pages>1?u["default"].createElement(f["default"],this.props):null}},{key:"render",value:function(){return u["default"].createElement("div",null,u["default"].createElement(p["default"],{users:this.props.users,showStatus:!0,cols:3,isLoaded:!0}),this.getPager())}}]),t}(u["default"].Component);r["default"]=h},{"../../users-list/root":102,"./pager":114,react:"react"}],114:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("react-router"),f=e("../../../utils/reset-scroll"),d=a(f),p=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getPreviousPage",value:function(){if(this.props.previous||this.props.first){var e=this.props.baseUrl;return this.props.previous&&(e+=this.props.previous+"/"),u["default"].createElement("li",{className:"previous"},u["default"].createElement(c.Link,{to:e,onClick:d["default"]},u["default"].createElement("span",{"aria-hidden":"true",className:"material-icon"},"arrow_back")))}return null}},{key:"getNextPage",value:function(){if(this.props.next){var e=this.props.baseUrl+this.props.next+"/";return u["default"].createElement("li",{className:"next"},u["default"].createElement(c.Link,{to:e,onClick:d["default"]},u["default"].createElement("span",{"aria-hidden":"true",className:"material-icon"},"arrow_forward")))}return null}},{key:"getProgessBar",value:function(){var e=this;return u["default"].createElement("ul",{className:"pager-progress-bar"},this.props.page_range.map(function(t){var r=t===e.props.page?"active":null,a=e.props.baseUrl;return t>1&&(a+=t+"/"),u["default"].createElement("li",{key:t,className:r},u["default"].createElement(c.Link,{to:a,onClick:d["default"]},t))}))}},{key:"render",value:function(){return u["default"].createElement("div",{className:"pager-undercontent"},u["default"].createElement("nav",null,u["default"].createElement("ul",{className:"pager"},this.getPreviousPage(),this.getNextPage()),this.getProgessBar()))}}]),t}(u["default"].Component);r["default"]=p},{"../../../utils/reset-scroll":184,react:"react","react-router":"react-router"}],115:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(e[a]=r[a])}return e},l=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),u=e("react"),c=a(u),f=e("../../page-lead"),d=a(f),p=e("./list"),h=a(p),m=e("./list-loading"),b=a(m),y=e("../../../index"),g=a(y),v=e("../../../reducers/users"),_=e("../../../services/polls"),E=a(_),w=e("../../../services/store"),O=a(w),k=e("../../../services/page-title"),N=a(k),j=function(e){function t(e){n(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.update=function(e){O["default"].dispatch((0,v.hydrate)(e.results)),e.isLoaded=!0,r.setState(e)},g["default"].has("USERS")?r.initWithPreloadedData(g["default"].pop("USERS")):r.initWithoutPreloadedData(),r.startPolling(e.params.page||1),r}return s(t,e),l(t,[{key:"initWithPreloadedData",value:function(e){this.state=Object.assign(e,{isLoaded:!0}),O["default"].dispatch((0,v.hydrate)(e.results))}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1}}},{key:"startPolling",value:function(e){E["default"].start({poll:"rank-users",url:g["default"].get("USERS_API"),data:{rank:this.props.route.rank.id,page:e},frequency:9e4,update:this.update})}},{key:"componentDidMount",value:function(){N["default"].set({title:this.props.route.rank.name,page:this.props.params.page||null,parent:gettext("Users")})}},{key:"componentWillUnmount",value:function(){E["default"].stop("rank-users")}},{key:"componentWillReceiveProps",value:function(e){this.props.params.page!==e.params.page&&(N["default"].set({title:this.props.route.rank.name,page:e.params.page||null,parent:gettext("Users")}),this.setState({isLoaded:!1}),E["default"].stop("rank-users"),this.startPolling(e.params.page))}},{key:"getClassName",value:function(){return this.props.route.rank.css_class?"rank-users-list rank-users-"+this.props.route.rank.css_class:"rank-users-list"}},{key:"getRankDescription",value:function(){return this.props.route.rank.description?c["default"].createElement("div",{className:"rank-description"},c["default"].createElement(d["default"],{copy:this.props.route.rank.description.html})):null}},{key:"getComponent",value:function(){if(this.state.isLoaded){if(this.state.count>0){var e=g["default"].get("USERS_LIST_URL")+this.props.route.rank.slug+"/";return c["default"].createElement(h["default"],i({baseUrl:e,users:this.props.users},this.state))}return c["default"].createElement("p",{className:"lead"},gettext("There are no users with this rank at the moment."))}return c["default"].createElement(b["default"],null)}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getClassName()},c["default"].createElement("div",{className:"container"},this.getRankDescription(),this.getComponent()))}}]),t}(c["default"].Component);r["default"]=j},{"../../../index":119,"../../../reducers/users":162,"../../../services/page-title":170,"../../../services/polls":171,"../../../services/store":173,"../../page-lead":35,"./list":113,"./list-loading":112,react:"react"}],116:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{tick:e.tick.tick,user:e.auth.user,users:e.users}}function l(){var e=[];return O["default"].get("USERS_LISTS").forEach(function(t){"rank"===t.component?(e.push({path:O["default"].get("USERS_LIST_URL")+t.slug+"/:page/",component:(0,d.connect)(i)(v["default"]),rank:t}),e.push({path:O["default"].get("USERS_LIST_URL")+t.slug+"/",component:(0,d.connect)(i)(v["default"]),rank:t})):"active-posters"===t.component&&e.push({path:O["default"].get("USERS_LIST_URL")+t.component+"/",component:(0,d.connect)(i)(y["default"]),extra:{name:t.name}})}),e}Object.defineProperty(r,"__esModule",{value:!0});var u=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}();r.select=i,r.paths=l;var c=e("react"),f=a(c),d=e("react-redux"),p=e("../dropdown-toggle"),h=a(p),m=e("./navs"),b=e("./active-posters/root"),y=a(b),g=e("./rank/root"),v=a(g),_=e("../with-dropdown"),E=a(_),w=e("../../index"),O=a(w),k=function(e){function t(){return n(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(t,[{key:"render",value:function(){return f["default"].createElement("div",{className:"page page-users-lists"},f["default"].createElement("div",{className:"page-header tabbed"},f["default"].createElement("div",{className:"container"},f["default"].createElement("h1",{className:"pull-left"},gettext("Users")),f["default"].createElement(h["default"],{toggleNav:this.toggleNav,dropdown:this.state.dropdown})),f["default"].createElement("div",{className:"page-tabs hidden-xs hidden-sm"},f["default"].createElement("div",{className:"container"},f["default"].createElement(m.TabsNav,{lists:O["default"].get("USERS_LISTS"),baseUrl:O["default"].get("USERS_LIST_URL")})))),f["default"].createElement("div",{className:this.getCompactNavClassName()},f["default"].createElement(m.CompactNav,{lists:O["default"].get("USERS_LISTS"),baseUrl:O["default"].get("USERS_LIST_URL"),hideNav:this.hideNav})),this.props.children)}}]),t}(E["default"]);r["default"]=k},{"../../index":119,"../dropdown-toggle":18,"../with-dropdown":117,"./active-posters/root":110,"./navs":111,"./rank/root":115,react:"react","react-redux":"react-redux"}],117:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=function(e){function t(e){n(this,t);var r=o(this,Object.getPrototypeOf(t).call(this,e));return r.toggleNav=function(){r.setState({dropdown:!r.state.dropdown})},r.hideNav=function(){r.setState({dropdown:!1})},r.state={dropdown:!1},r}return s(t,e),i(t,[{key:"getCompactNavClassName",value:function(){return this.state.dropdown?"compact-nav open":"compact-nav"}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],118:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,
+a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=function(e){function t(){var e,r,a,s;n(this,t);for(var i=arguments.length,l=Array(i),u=0;i>u;u++)l[u]=arguments[u];return r=a=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(l))),a.toggle=function(){a.props.onChange({target:{value:!a.props.value}})},s=r,o(a,s)}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.value?"btn btn-yes-no btn-yes-no-on":"btn btn-yes-no btn-yes-no-off"}},{key:"getIcon",value:function(){return this.props.value?this.props.iconOn||"check_box":this.props.iconOff||"check_box_outline_blank"}},{key:"getLabel",value:function(){return this.props.value?this.props.labelOn||gettext("yes"):this.props.labelOff||gettext("no")}},{key:"render",value:function(){return u["default"].createElement("button",{type:"button",onClick:this.toggle,className:this.getClassName(),id:this.props.id||null,"aria-describedby":this.props["aria-describedby"]||null,disabled:this.props.disabled||!1},u["default"].createElement("span",{className:"material-icon"},this.getIcon()),this.getLabel())}}]),t}(u["default"].Component);r["default"]=c},{react:"react"}],119:[function(e,t,r){(function(t){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0}),r.Misago=void 0;var o=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),s=e("./utils/ordered-list"),i=a(s),l=r.Misago=function(){function e(){n(this,e),this._initializers=[],this._context={}}return o(e,[{key:"addInitializer",value:function(e){this._initializers.push({key:e.name,item:e.initializer,after:e.after,before:e.before})}},{key:"init",value:function(e){var t=this;this._context=e;var r=new i["default"](this._initializers).orderedValues();r.forEach(function(e){e(t)})}},{key:"has",value:function(e){return!!this._context[e]}},{key:"get",value:function(e,t){return this.has(e)?this._context[e]:t||void 0}},{key:"pop",value:function(e){if(this.has(e)){var t=this._context[e];return this._context[e]=null,t}}}]),e}(),u=new l;t.misago=u,r["default"]=u}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./utils/ordered-list":182}],120:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(){l["default"].init(s["default"].get("CSRF_COOKIE_NAME"))}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../index"),s=a(o),i=e("../services/ajax"),l=a(i);s["default"].addInitializer({name:"ajax",initializer:n})},{"../index":119,"../services/ajax":163}],121:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(){l["default"].init(d["default"],h["default"],c["default"])}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../index"),s=a(o),i=e("../services/auth"),l=a(i),u=e("../services/modal"),c=a(u),f=e("../services/store"),d=a(f),p=e("../services/local-storage"),h=a(p);s["default"].addInitializer({name:"auth",initializer:n,after:"store"})},{"../index":119,"../services/auth":164,"../services/local-storage":167,"../services/modal":169,"../services/store":173}],122:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e){c["default"].init(e,l["default"],d["default"],h["default"])}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../index"),s=a(o),i=e("../services/ajax"),l=a(i),u=e("../services/captcha"),c=a(u),f=e("../services/include"),d=a(f),p=e("../services/snackbar"),h=a(p);s["default"].addInitializer({name:"captcha",initializer:n})},{"../index":119,"../services/ajax":163,"../services/captcha":165,"../services/include":166,"../services/snackbar":172}],123:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(){(0,f["default"])((0,o.connect)(l.select)(u["default"]),"auth-message-mount")}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("react-redux"),s=e("../../index"),i=a(s),l=e("../../components/auth-message"),u=a(l),c=e("../../utils/mount-component"),f=a(c);i["default"].addInitializer({name:"component:auth-message",initializer:n,after:"store"})},{"../../components/auth-message":1,"../../index":119,"../../utils/mount-component":181,"react-redux":"react-redux"}],124:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e){e.has("BAN_MESSAGE")&&(0,l["default"])(e.get("BAN_MESSAGE"),!1)}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../../index"),s=a(o),i=e("../../utils/banned-page"),l=a(i);s["default"].addInitializer({name:"component:baned-page",initializer:n,after:"store"})},{"../../index":119,"../../utils/banned-page":175}],125:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(){document.getElementById("categories-mount")&&(0,f["default"])((0,o.connect)(s.select)(i["default"]),"categories-mount")}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("react-redux"),s=e("../../components/categories/root"),i=a(s),l=e("../../index"),u=a(l),c=e("../../utils/mount-component"),f=a(c);u["default"].addInitializer({name:"component:reset-password-form",initializer:n,after:"store"})},{"../../components/categories/root":9,"../../index":119,"../../utils/mount-component":181,"react-redux":"react-redux"}],126:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e){e.has("USER_OPTIONS")&&(0,c["default"])({root:l["default"].get("USERCP_URL"),component:s["default"],paths:(0,o.paths)()})}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../../components/options/root"),s=a(o),i=e("../../index"),l=a(i),u=e("../../utils/routed-component"),c=a(u);l["default"].addInitializer({name:"component:options",initializer:n,after:"store"})},{"../../components/options/root":31,"../../index":119,"../../utils/routed-component":185}],127:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e){e.has("PROFILE")&&e.has("PROFILE_PAGES")&&(0,f["default"])({root:u["default"].get("PROFILE").absolute_url,component:(0,o.connect)(s.select)(i["default"]),paths:(0,s.paths)()})}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("react-redux"),s=e("../../components/profile/root"),i=a(s),l=e("../../index"),u=a(l),c=e("../../utils/routed-component"),f=a(c);u["default"].addInitializer({name:"component:profile",initializer:n,after:"reducer:profile-hydrate"})},{"../../components/profile/root":49,"../../index":119,"../../utils/routed-component":185,"react-redux":"react-redux"}],128:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(){document.getElementById("request-activation-link-mount")&&(0,c["default"])(l["default"],"request-activation-link-mount",!1)}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../../index"),s=a(o),i=e("../../components/request-activation-link"),l=a(i),u=e("../../utils/mount-component"),c=a(u);s["default"].addInitializer({name:"component:request-activation-link",initializer:n,after:"store"})},{"../../components/request-activation-link":53,"../../index":119,"../../utils/mount-component":181}],129:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(){document.getElementById("request-password-reset-mount")&&(0,c["default"])(l["default"],"request-password-reset-mount",!1)}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../../index"),s=a(o),i=e("../../components/request-password-reset"),l=a(i),u=e("../../utils/mount-component"),c=a(u);s["default"].addInitializer({name:"component:request-password-reset",initializer:n,after:"store"})},{"../../components/request-password-reset":54,"../../index":119,"../../utils/mount-component":181}],130:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(){document.getElementById("reset-password-form-mount")&&(0,c["default"])(l["default"],"reset-password-form-mount",!1)}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../../index"),s=a(o),i=e("../../components/reset-password-form"),l=a(i),u=e("../../utils/mount-component"),c=a(u);s["default"].addInitializer({name:"component:reset-password-form",initializer:n,after:"store"})},{"../../components/reset-password-form":55,"../../index":119,"../../utils/mount-component":181}],131:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(){(0,c["default"])((0,o.connect)(l.select)(l.Snackbar),"snackbar-mount")}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("react-redux"),s=e("../../index"),i=a(s),l=e("../../components/snackbar"),u=e("../../utils/mount-component"),c=a(u);i["default"].addInitializer({name:"component:snackbar",initializer:n,after:"snackbar"})},{"../../components/snackbar":59,"../../index":119,"../../utils/mount-component":181,"react-redux":"react-redux"}],132:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e){e.has("THREADS")&&e.has("CATEGORIES")&&(0,u["default"])({paths:(0,o.paths)(e.get("user"))})}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../../components/threads/root"),s=e("../../index"),i=a(s),l=e("../../utils/routed-component"),u=a(l);i["default"].addInitializer({name:"component:threads",initializer:n,after:"store"})},{"../../components/threads/root":88,"../../index":119,"../../utils/routed-component":185}],133:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(){(0,c["default"])((0,o.connect)(l.select)(l.UserMenu),"user-menu-mount"),(0,c["default"])((0,o.connect)(l.select)(l.CompactUserMenu),"user-menu-compact-mount")}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("react-redux"),s=e("../../index"),i=a(s),l=e("../../components/user-menu/root"),u=e("../../utils/mount-component"),c=a(u);i["default"].addInitializer({name:"component:user-menu",initializer:n,after:"store"})},{"../../components/user-menu/root":93,"../../index":119,"../../utils/mount-component":181,"react-redux":"react-redux"}],134:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e){e.has("USERS_LISTS")&&(0,c["default"])({root:l["default"].get("USERS_LIST_URL"),component:s["default"],paths:(0,o.paths)()})}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../../components/users/root"),s=a(o),i=e("../../index"),l=a(i),u=e("../../utils/routed-component"),c=a(u);l["default"].addInitializer({name:"component:users",initializer:n,after:"store"})},{"../../components/users/root":116,"../../index":119,"../../utils/routed-component":185}],135:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e){l["default"].init(e.get("STATIC_URL"))}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../index"),s=a(o),i=e("../services/include"),l=a(i);s["default"].addInitializer({name:"include",initializer:n})},{"../index":119,"../services/include":166}],136:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(){l["default"].init("misago_")}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../index"),s=a(o),i=e("../services/local-storage"),l=a(i);s["default"].addInitializer({name:"local-storage",initializer:n})},{"../index":119,"../services/local-storage":167}],137:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(){var e=document.getElementById("mobile-navbar-dropdown-mount");e&&l["default"].init(e)}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../index"),s=a(o),i=e("../services/mobile-navbar-dropdown"),l=a(i);s["default"].addInitializer({name:"dropdown",initializer:n,before:"store"})},{"../index":119,"../services/mobile-navbar-dropdown":168}],138:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(){var e=document.getElementById("modal-mount");e&&l["default"].init(e)}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../index"),s=a(o),i=e("../services/modal"),l=a(i);s["default"].addInitializer({name:"modal",initializer:n,before:"store"})},{"../index":119,"../services/modal":169}],139:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(){s["default"].locale($("html").attr("lang"))}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("moment"),s=a(o),i=e("../index"),l=a(i);l["default"].addInitializer({name:"moment",initializer:n})},{"../index":119,moment:"moment"}],140:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e){l["default"].init(e.get("SETTINGS").forum_index_title,e.get("SETTINGS").forum_name)}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../index"),s=a(o),i=e("../services/page-title"),l=a(i);s["default"].addInitializer({name:"page-title",initializer:n})},{"../index":119,"../services/page-title":170}],141:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(){d["default"].init(l["default"],c["default"])}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../index"),s=a(o),i=e("../services/ajax"),l=a(i),u=e("../services/snackbar"),c=a(u),f=e("../services/polls"),d=a(f);s["default"].addInitializer({name:"polls",initializer:n})},{"../index":119,"../services/ajax":163,"../services/polls":171,"../services/snackbar":172}],142:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e){c["default"].addReducer("auth",l["default"],Object.assign({isAuthenticated:e.get("isAuthenticated"),isAnonymous:!e.get("isAuthenticated"),user:e.get("user")},i.initialState))}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../../index"),s=a(o),i=e("../../reducers/auth"),l=a(i),u=e("../../services/store"),c=a(u);s["default"].addInitializer({name:"reducer:auth",initializer:n,before:"store"})},{"../../index":119,"../../reducers/auth":155,"../../services/store":173}],143:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(){s["default"].has("PROFILE")&&u["default"].dispatch((0,i.hydrate)(s["default"].get("PROFILE")))}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../../index"),s=a(o),i=e("../../reducers/profile"),l=e("../../services/store"),u=a(l);s["default"].addInitializer({name:"reducer:profile-hydrate",initializer:n,after:"store"})},{"../../index":119,"../../reducers/profile":156,"../../services/store":173}],144:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(){c["default"].addReducer("profile",l["default"],{})}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../../index"),s=a(o),i=e("../../reducers/profile"),l=a(i),u=e("../../services/store"),c=a(u);s["default"].addInitializer({name:"reducer:profile",initializer:n,before:"store"})},{"../../index":119,"../../reducers/profile":156,"../../services/store":173}],145:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(){c["default"].addReducer("selection",l["default"],[])}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../../index"),s=a(o),i=e("../../reducers/selection"),l=a(i),u=e("../../services/store"),c=a(u);s["default"].addInitializer({name:"reducer:selection",initializer:n,before:"store"})},{"../../index":119,"../../reducers/selection":157,"../../services/store":173}],146:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(){c["default"].addReducer("snackbar",l["default"],i.initialState)}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../../index"),s=a(o),i=e("../../reducers/snackbar"),l=a(i),u=e("../../services/store"),c=a(u);s["default"].addInitializer({name:"reducer:snackbar",initializer:n,before:"store"})},{"../../index":119,"../../reducers/snackbar":158,"../../services/store":173}],147:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(){c["default"].addReducer("threads",l["default"],[])}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../../index"),s=a(o),i=e("../../reducers/threads"),l=a(i),u=e("../../services/store"),c=a(u);s["default"].addInitializer({name:"reducer:threads",initializer:n,before:"store"})},{"../../index":119,"../../reducers/threads":159,"../../services/store":173}],148:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(){c["default"].addReducer("tick",l["default"],i.initialState)}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../../index"),s=a(o),i=e("../../reducers/tick"),l=a(i),u=e("../../services/store"),c=a(u);s["default"].addInitializer({name:"reducer:tick",initializer:n,before:"store"})},{"../../index":119,"../../reducers/tick":160,"../../services/store":173}],149:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(){c["default"].addReducer("username-history",l["default"],[])}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../../index"),s=a(o),i=e("../../reducers/username-history"),l=a(i),u=e("../../services/store"),c=a(u);s["default"].addInitializer({name:"reducer:username-history",initializer:n,before:"store"})},{"../../index":119,"../../reducers/username-history":161,"../../services/store":173}],150:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(){c["default"].addReducer("users",l["default"],[])}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../../index"),s=a(o),i=e("../../reducers/users"),l=a(i),u=e("../../services/store"),c=a(u);s["default"].addInitializer({name:"reducer:users",initializer:n,before:"store"})},{"../../index":119,"../../reducers/users":162,"../../services/store":173}],151:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(){l["default"].init(c["default"])}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../index"),s=a(o),i=e("../services/snackbar"),l=a(i),u=e("../services/store"),c=a(u);s["default"].addInitializer({name:"snackbar",initializer:n,after:"store"})},{"../index":119,"../services/snackbar":172,"../services/store":173}],152:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(){l["default"].init()}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../index"),s=a(o),i=e("../services/store"),l=a(i);s["default"].addInitializer({name:"store",initializer:n,before:"_end"})},{"../index":119,"../services/store":173}],153:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(){window.setInterval(function(){u["default"].dispatch((0,i.doTick)())},c)}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../index"),s=a(o),i=e("../reducers/tick"),l=e("../services/store"),u=a(l),c=5e4;s["default"].addInitializer({name:"tick-start",initializer:n,after:"store"})},{"../index":119,"../reducers/tick":160,"../services/store":173}],154:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(){c["default"].init(l["default"])}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=n;var o=e("../index"),s=a(o),i=e("../services/include"),l=a(i),u=e("../services/zxcvbn"),c=a(u);s["default"].addInitializer({name:"zxcvbn",initializer:n})},{"../index":119,"../services/include":166,"../services/zxcvbn":174}],155:[function(e,t,r){"use strict";function a(e){return{type:u,patch:e}}function n(e){return{type:c,user:e}}function o(){var e=arguments.length<=0||void 0===arguments[0]?!1:arguments[0];return{type:f,soft:e}}function s(){var e=arguments.length<=0||void 0===arguments[0]?l:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];switch(t.type){case u:var r=Object.assign({},e);return r.user=Object.assign({},e.user,t.patch),r;case c:return Object.assign({},e,{signedIn:t.user});case f:return Object.assign({},e,{isAuthenticated:!1,isAnonymous:!0,signedOut:!t.soft});case i.UPDATE_AVATAR:if(e.isAuthenticated&&e.user.id===t.userId){var a=Object.assign({},e);return a.user=Object.assign({},e.user,{avatar_hash:t.avatarHash}),a}return e;case i.UPDATE_USERNAME:if(e.isAuthenticated&&e.user.id===t.userId){var n=Object.assign({},e);return n.user=Object.assign({},e.user,{username:t.username,slug:t.slug}),n}return e;default:return e}}Object.defineProperty(r,"__esModule",{value:!0}),r.SIGN_OUT=r.SIGN_IN=r.PATCH_USER=r.initialState=void 0,r.patch=a,r.signIn=n,r.signOut=o,r["default"]=s;var i=e("./users"),l=r.initialState={signedIn:!1,signedOut:!1},u=r.PATCH_USER="PATCH_USER",c=r.SIGN_IN="SIGN_IN",f=r.SIGN_OUT="SIGN_OUT"},{"./users":162}],156:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e){return{type:c,profile:e}}function o(e){return{type:f,patch:e}}function s(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];switch(t.type){case c:return Object.assign({},t.profile,{joined_on:(0,l["default"])(t.profile.joined_on),status:(0,u.hydrateStatus)(t.profile.status)});case f:return Object.assign({},e,t.patch);case u.UPDATE_AVATAR:return e.id===t.userId?Object.assign({},e,{avatar_hash:t.avatarHash}):e;case u.UPDATE_USERNAME:return e.id===t.userId?Object.assign({},e,{username:t.username,slug:t.slug}):e;default:return e}}Object.defineProperty(r,"__esModule",{value:!0}),r.PATCH_PROFILE=r.HYDRATE_PROFILE=void 0,r.hydrate=n,r.patch=o,r["default"]=s;var i=e("moment"),l=a(i),u=e("./users"),c=r.HYDRATE_PROFILE="HYDRATE_PROFILE",f=r.PATCH_PROFILE="PATCH_PROFILE"},{"./users":162,moment:"moment"}],157:[function(e,t,r){"use strict";function a(e){return{type:l,items:e}}function n(){return{type:u}}function o(e){return{type:c,item:e}}function s(){var e=arguments.length<=0||void 0===arguments[0]?[]:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];switch(t.type){case l:return t.items;case u:return[];case c:return(0,i.toggle)(e,t.item);default:return e}}Object.defineProperty(r,"__esModule",{value:!0}),r.SELECT_ITEM=r.SELECT_NONE=r.SELECT_ALL=void 0,r.all=a,r.none=n,r.item=o,r["default"]=s;var i=e("../utils/sets"),l=r.SELECT_ALL="SELECT_ALL",u=r.SELECT_NONE="SELECT_NONE",c=r.SELECT_ITEM="SELECT_ITEM"},{"../utils/sets":186}],158:[function(e,t,r){"use strict";function a(e,t){return{type:i,message:e,messageType:t}}function n(){return{type:l}}function o(){var e=arguments.length<=0||void 0===arguments[0]?s:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return t.type===i?{type:t.messageType,message:t.message,isVisible:!0}:t.type===l?Object.assign({},e,{isVisible:!1}):e}Object.defineProperty(r,"__esModule",{value:!0}),r.showSnackbar=a,r.hideSnackbar=n,r["default"]=o;var s=r.initialState={type:"info",message:"",isVisible:!1},i=r.SHOW_SNACKBAR="SHOW_SNACKBAR",l=r.HIDE_SNACKBAR="HIDE_SNACKBAR"},{}],159:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){return{type:g,items:e,sorting:t}}function o(e){return{type:v,thread:e}}function s(e,t){return{type:_,category:e,categoriesMap:t}}function i(e){return{type:E,items:e}}function l(e,t){var r=arguments.length<=2||void 0===arguments[2]?null:arguments[2];return{type:w,thread:e,patch:t,sorting:r}}function u(){return{type:O}}function c(e){return{type:k,sorting:e}}function f(e){var t=[];return N.forEach(function(r){e[r]&&t.push(r)}),t}function d(e){return Object.assign({},e,{started_on:(0,m["default"])(e.started_on),last_post_on:(0,m["default"])(e.last_post_on),moderation:f(e.acl)})}function p(){var e=arguments.length<=0||void 0===arguments[0]?[]:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];switch(t.type){case g:var r=(0,y["default"])(t.items.map(d),e);return r.sort(t.sorting);case v:return e.filter(function(e){return e.id!==t.thread.id});case _:return e.filter(function(e){var r=t.categoriesMap[e.category];return r.lft>=t.category.lft&&r.rght<=t.category.rght?!0:2==e.weight});case E:return t.items.map(d);case w:var a=e.map(function(e){return e.id===t.thread.id?Object.assign({},e,t.patch):e});return t.sorting?a.sort(t.sorting):a;case O:return e.map(function(e){return Object.assign({},e,{is_read:!0})});case k:return e.sort(t.sorting);default:return e}}Object.defineProperty(r,"__esModule",{value:!0}),r.MODERATION_PERMISSIONS=r.SORT_THREADS=r.READ_THREADS=r.PATCH_THREAD=r.HYDRATE_THREADS=r.FILTER_THREADS=r.DELETE_THREAD=r.APPEND_THREADS=void 0,r.append=n,r.deleteThread=o,r.filterThreads=s,r.hydrate=i,r.patch=l,r.read=u,r.sort=c,r.getThreadModerationOptions=f,r.hydrateThread=d,r["default"]=p;var h=e("moment"),m=a(h),b=e("../utils/concat-unique"),y=a(b),g=r.APPEND_THREADS="APPEND_THREADS",v=r.DELETE_THREAD="DELETE_THREAD",_=r.FILTER_THREADS="FILTER_THREADS",E=r.HYDRATE_THREADS="HYDRATE_THREADS",w=r.PATCH_THREAD="PATCH_THREAD",O=r.READ_THREADS="READ_THREADS",k=r.SORT_THREADS="SORT_THREADS",N=r.MODERATION_PERMISSIONS=["can_announce","can_approve","can_close","can_hide","can_move","can_merge","can_pin","can_review"]},{"../utils/concat-unique":177,moment:"moment"}],160:[function(e,t,r){"use strict";function a(){return{type:s}}function n(){var e=arguments.length<=0||void 0===arguments[0]?o:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return t.type===s?Object.assign({},e,{tick:e.tick+1}):e}Object.defineProperty(r,"__esModule",{value:!0}),r.doTick=a,r["default"]=n;var o=r.initialState={tick:0},s=r.TICK="TICK"},{}],161:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t,r){return{type:h,change:e,user:t,changedBy:r}}function o(e){return{type:m,items:e}}function s(e){return{type:b,items:e}}function i(e){return Object.assign({},e,{changed_on:(0,c["default"])(e.changed_on)})}function l(){var e=arguments.length<=0||void 0===arguments[0]?[]:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];switch(t.type){case h:var r=e.slice();return r.unshift({id:Math.floor(Date.now()/1e3),changed_by:t.changedBy,changed_by_username:t.changedBy.username,changed_on:(0,c["default"])(),new_username:t.change.username,old_username:t.user.username}),r;case m:return(0,p["default"])(e,t.items.map(i));case b:return t.items.map(i);case f.UPDATE_AVATAR:return e.map(function(e){return e=Object.assign({},e),e.changed_by&&e.changed_by.id===t.userId&&(e.changed_by=Object.assign({},e.changed_by,{avatar_hash:t.avatarHash})),e});case f.UPDATE_USERNAME:return e.map(function(e){return e=Object.assign({},e),e.changed_by&&e.changed_by.id===t.userId&&(e.changed_by=Object.assign({},e.changed_by,{username:t.username,slug:t.slug})),Object.assign({},e)});default:return e}}Object.defineProperty(r,"__esModule",{value:!0}),r.HYDRATE_HISTORY=r.APPEND_HISTORY=r.ADD_NAME_CHANGE=void 0,r.addNameChange=n,r.append=o,r.hydrate=s,r.hydrateNamechange=i,r["default"]=l;var u=e("moment"),c=a(u),f=e("./users"),d=e("../utils/concat-unique"),p=a(d),h=r.ADD_NAME_CHANGE="ADD_NAME_CHANGE",m=r.APPEND_HISTORY="APPEND_HISTORY",b=r.HYDRATE_HISTORY="HYDRATE_HISTORY"},{"../utils/concat-unique":177,"./users":162,moment:"moment"}],162:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e){return{type:m,items:e}}function o(e){return{type:b,items:e}}function s(e){return e?Object.assign({},e,{last_click:e.last_click?(0,d["default"])(e.last_click):null,banned_until:e.banned_until?(0,d["default"])(e.banned_until):null}):null}function i(e){return Object.assign({},e,{joined_on:(0,d["default"])(e.joined_on),status:s(e.status)})}function l(e,t){return{type:y,userId:e.id,avatarHash:t}}function u(e,t,r){return{type:g,userId:e.id,username:t,slug:r}}function c(){var e=arguments.length<=0||void 0===arguments[0]?[]:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];switch(t.type){case m:var r=(0,h["default"])(e,t.items.map(i));return r.sort(function(e,t){return e.username<t.username?-1:e.username>t.username?1:0});case b:return t.items.map(i);case y:return e.map(function(e){return e=Object.assign({},e),e.id===t.userId&&(e.avatar_hash=t.avatarHash),e});default:return e}}Object.defineProperty(r,"__esModule",{value:!0}),r.UPDATE_USERNAME=r.UPDATE_AVATAR=r.HYDRATE_USERS=r.APPEND_USERS=void 0,r.append=n,r.hydrate=o,r.hydrateStatus=s,r.hydrateUser=i,r.updateAvatar=l,r.updateUsername=u,r["default"]=c;var f=e("moment"),d=a(f),p=e("../utils/concat-unique"),h=a(p),m=r.APPEND_USERS="APPEND_USERS",b=r.HYDRATE_USERS="HYDRATE_USERS",y=r.UPDATE_AVATAR="UPDATE_AVATAR",g=r.UPDATE_USERNAME="UPDATE_USERNAME"},{"../utils/concat-unique":177,moment:"moment"}],163:[function(e,t,r){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},o=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),s=r.Ajax=function(){function e(){a(this,e),this._cookieName=null,this._csrfToken=null,this._locks={}}return o(e,[{key:"init",value:function(e){this._cookieName=e,this._csrfToken=this.getCsrfToken()}},{key:"getCsrfToken",value:function(){if(-1!==document.cookie.indexOf(this._cookieName)){var e=new RegExp(this._cookieName+"=([^;]*)"),t=document.cookie.match(e)[0];return t?t.split("=")[1]:null}return null}},{key:"request",value:function(e,t,r){var a=this;return new Promise(function(n,o){var s={url:t,method:e,headers:{"X-CSRFToken":a._csrfToken},data:r?JSON.stringify(r):null,contentType:"application/json; charset=utf-8",dataType:"json",success:function(e){n(e)},error:function(e){var t=e.responseJSON||{};t.status=e.status,0===t.status&&(t.detail=gettext("Lost connection with application.")),404===t.status&&(t.detail&&"NOT FOUND"!==t.detail||(t.detail=gettext("Action link is invalid."))),500!==t.status||t.detail||(t.detail=gettext("Unknown error has occured.")),t.statusText=e.statusText,o(t)}};$.ajax(s)})}},{key:"get",value:function(e,t,r){var a=this;if(t&&(e+="?"+$.param(t)),!r)return this.request("GET",e);var o=function(){var t=a;return a._locks[r]&&(a._locks[r].url=e),a._locks[r]&&a._locks[r].waiter?{v:{then:function(){}}}:a._locks[r]&&a._locks[r].wait?(a._locks[r].waiter=!0,{v:new Promise(function(a,n){var o=function s(e){t._locks[r].wait?window.setTimeout(function(){s(e)},300):t._locks[r].url!==e?s(t._locks[r].url):(t._locks[r].waiter=!1,t.request("GET",t._locks[r].url).then(function(n){t._locks[r].url===e?a(n):(t._locks[r].waiter=!0,s(t._locks[r].url))},function(a){t._locks[r].url===e?n(a):(t._locks[r].waiter=!0,s(t._locks[r].url))}))};window.setTimeout(function(){o(e)},300)})}):(a._locks[r]={url:e,wait:!0,waiter:!1},{v:new Promise(function(a,n){t.request("GET",e).then(function(n){t._locks[r].wait=!1,t._locks[r].url===e&&a(n)},function(a){
+t._locks[r].wait=!1,t._locks[r].url===e&&n(a)})})})}();return"object"===("undefined"==typeof o?"undefined":n(o))?o.v:void 0}},{key:"post",value:function(e,t){return this.request("POST",e,t)}},{key:"patch",value:function(e,t){return this.request("PATCH",e,t)}},{key:"put",value:function(e,t){return this.request("PUT",e,t)}},{key:"delete",value:function(e){return this.request("DELETE",e)}},{key:"upload",value:function(e,t,r){var a=this;return new Promise(function(n,o){var s={url:e,method:"POST",headers:{"X-CSRFToken":a._csrfToken},data:t,contentType:!1,processData:!1,xhr:function i(){var i=new window.XMLHttpRequest;return i.upload.addEventListener("progress",function(e){e.lengthComputable&&r(Math.round(e.loaded/e.total*100))},!1),i},success:function(e){n(e)},error:function(e){var t=e.responseJSON||{};t.status=e.status,0===t.status&&(t.detail=gettext("Lost connection with application.")),404===t.status&&(t.detail&&"NOT FOUND"!==t.detail||(t.detail=gettext("Action link is invalid."))),500!==t.status||t.detail||(t.detail=gettext("Unknown error has occured.")),t.statusText=e.statusText,o(t)}};$.ajax(s)})}}]),e}();r["default"]=new s},{}],164:[function(e,t,r){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0}),r.Auth=void 0;var n=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),o=e("../reducers/auth"),s=r.Auth=function(){function e(){a(this,e)}return n(e,[{key:"init",value:function(e,t,r){this._store=e,this._local=t,this._modal=r,this.syncSession(),this.watchState()}},{key:"syncSession",value:function(){var e=this._store.getState().auth;e.isAuthenticated?this._local.set("auth",{isAuthenticated:!0,username:e.user.username}):this._local.set("auth",{isAuthenticated:!1})}},{key:"watchState",value:function(){var e=this;this._local.watch("auth",function(t){t.isAuthenticated?e._store.dispatch((0,o.signIn)({username:t.username})):e._store.dispatch((0,o.signOut)())}),this._modal.hide()}},{key:"signIn",value:function(e){this._store.dispatch((0,o.signIn)(e)),this._local.set("auth",{isAuthenticated:!0,username:e.username}),this._modal.hide()}},{key:"signOut",value:function(){this._store.dispatch((0,o.signOut)()),this._local.set("auth",{isAuthenticated:!1}),this._modal.hide()}},{key:"softSignOut",value:function(){this._store.dispatch((0,o.signOut)(!0)),this._local.set("auth",{isAuthenticated:!1}),this._modal.hide()}}]),e}();r["default"]=new s},{"../reducers/auth":155}],165:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0}),r.Captcha=r.ReCaptcha=r.ReCaptchaComponent=r.QACaptcha=r.NoCaptcha=r.BaseCaptcha=void 0;var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),l=e("react"),u=a(l),c=e("../components/form-group"),f=a(c),d=r.BaseCaptcha=function(){function e(){s(this,e)}return i(e,[{key:"init",value:function(e,t,r,a){this._context=e,this._ajax=t,this._include=r,this._snackbar=a}}]),e}(),p=r.NoCaptcha=function(e){function t(){return s(this,t),n(this,Object.getPrototypeOf(t).apply(this,arguments))}return o(t,e),i(t,[{key:"load",value:function(){return new Promise(function(e){e()})}},{key:"validator",value:function(){return null}},{key:"component",value:function(){return null}}]),t}(d),h=r.QACaptcha=function(e){function t(){return s(this,t),n(this,Object.getPrototypeOf(t).apply(this,arguments))}return o(t,e),i(t,[{key:"load",value:function(){var e=this;return new Promise(function(t,r){e._ajax.get(e._context.get("CAPTCHA_API")).then(function(r){e.question=r.question,e.helpText=r.help_text,t()},function(){e._snackbar.error(gettext("Failed to load CAPTCHA.")),r()})})}},{key:"validator",value:function(){return[]}},{key:"component",value:function(e){return u["default"].createElement(f["default"],{label:this.question,"for":"id_captcha",labelClass:e.labelClass||"col-sm-4",controlClass:e.controlClass||"col-sm-8",validation:e.form.state.errors.captcha,helpText:this.helpText||null},u["default"].createElement("input",{type:"text",id:"id_captcha",className:"form-control","aria-describedby":"id_captcha_status",disabled:e.form.state.isLoading,onChange:e.form.bindInput("captcha"),value:e.form.state.captcha}))}}]),t}(d),m=r.ReCaptchaComponent=function(e){function t(){return s(this,t),n(this,Object.getPrototypeOf(t).apply(this,arguments))}return o(t,e),i(t,[{key:"componentDidMount",value:function(){var e=this;grecaptcha.render("recaptcha",{sitekey:this.props.siteKey,callback:function(t){e.props.binding({target:{value:t}})}})}},{key:"render",value:function(){return u["default"].createElement("div",{id:"recaptcha"})}}]),t}(u["default"].Component),b=r.ReCaptcha=function(e){function t(){return s(this,t),n(this,Object.getPrototypeOf(t).apply(this,arguments))}return o(t,e),i(t,[{key:"load",value:function(){return this._include.include("https://www.google.com/recaptcha/api.js",!0),new Promise(function(e){var t=function r(){"undefined"==typeof grecaptcha?window.setTimeout(function(){r()},200):e()};t()})}},{key:"validator",value:function(){return[]}},{key:"component",value:function(e){return u["default"].createElement(f["default"],{label:gettext("Captcha"),"for":"id_captcha",labelClass:e.labelClass||"col-sm-4",controlClass:e.controlClass||"col-sm-8",validation:e.form.state.errors.captcha,helpText:gettext("Please solve the quick test.")},u["default"].createElement(m,{siteKey:this._context.get("SETTINGS").recaptcha_site_key,binding:e.form.bindInput("captcha")}))}}]),t}(d),y=r.Captcha=function(){function e(){s(this,e)}return i(e,[{key:"init",value:function(e,t,r,a){switch(e.get("SETTINGS").captcha_type){case"no":this._captcha=new p;break;case"qa":this._captcha=new h;break;case"re":this._captcha=new b}this._captcha.init(e,t,r,a)}},{key:"load",value:function(){return this._captcha.load()}},{key:"validator",value:function(){return this._captcha.validator()}},{key:"component",value:function(e){return this._captcha.component(e)}}]),e}();r["default"]=new y},{"../components/form-group":19,react:"react"}],166:[function(e,t,r){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),o=r.Include=function(){function e(){a(this,e)}return n(e,[{key:"init",value:function(e){this._staticUrl=e,this._included=[]}},{key:"include",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?!1:arguments[1];-1===this._included.indexOf(e)&&(this._included.push(e),this._include(e,t))}},{key:"_include",value:function(e,t){$.ajax({url:(t?"":this._staticUrl)+e,cache:!0,dataType:"script"})}}]),e}();r["default"]=new o},{}],167:[function(e,t,r){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),o=window.localStorage,s=r.LocalStorage=function(){function e(){a(this,e)}return n(e,[{key:"init",value:function(e){var t=this;this._prefix=e,this._watchers=[],window.addEventListener("storage",function(e){var r=JSON.parse(e.newValue);t._watchers.forEach(function(t){t.key===e.key&&e.oldValue!==e.newValue&&t.callback(r)})})}},{key:"set",value:function(e,t){o.setItem(this._prefix+e,JSON.stringify(t))}},{key:"get",value:function(e){var t=o.getItem(this._prefix+e);return t?JSON.parse(t):null}},{key:"watch",value:function(e,t){this._watchers.push({key:this._prefix+e,callback:t})}}]),e}();r["default"]=new s},{}],168:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0}),r.MobileNavbarDropdown=void 0;var o=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),s=e("../utils/mount-component"),i=a(s),l=r.MobileNavbarDropdown=function(){function e(){n(this,e)}return o(e,[{key:"init",value:function(e){this._element=e,this._component=null}},{key:"show",value:function(e){this._component===e?this.hide():(this._component=e,(0,i["default"])(e,this._element.id),$(this._element).addClass("open"))}},{key:"showConnected",value:function(e,t){this._component===e?this.hide():(this._component=e,(0,i["default"])(t,this._element.id,!0),$(this._element).addClass("open"))}},{key:"hide",value:function(){$(this._element).removeClass("open"),this._component=null}}]),e}();r["default"]=new l},{"../utils/mount-component":181}],169:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0}),r.Modal=void 0;var o=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),s=e("react-dom"),i=a(s),l=e("../utils/mount-component"),u=a(l),c=r.Modal=function(){function e(){n(this,e)}return o(e,[{key:"init",value:function(e){var t=this;this._element=e,this._modal=$(e).modal({show:!1}),this._modal.on("hidden.bs.modal",function(){i["default"].unmountComponentAtNode(t._element)})}},{key:"show",value:function(e){(0,u["default"])(e,this._element.id),this._modal.modal("show")}},{key:"hide",value:function(){this._modal.modal("hide")}}]),e}();r["default"]=new c},{"../utils/mount-component":181,"react-dom":"react-dom"}],170:[function(e,t,r){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),o=r.PageTitle=function(){function e(){a(this,e)}return n(e,[{key:"init",value:function(e,t){this._indexTitle=e,this._forumName=t}},{key:"set",value:function(e){if(!e)return void(document.title=this._indexTitle||this._forumName);"string"==typeof e&&(e={title:e});var t=e.title;if(e.page){var r=interpolate(gettext("page: %(page)s"),{page:e.page},!0);t+=" ("+r+")"}e.parent&&(t+=" | "+e.parent),document.title=t+" | "+this._forumName}}]),e}();r["default"]=new o},{}],171:[function(e,t,r){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),o=r.Polls=function(){function e(){a(this,e)}return n(e,[{key:"init",value:function(e,t){this._ajax=e,this._snackbar=t,this._polls={}}},{key:"start",value:function(e){var t=this,r=function a(){t._polls[e.poll]=e,t._ajax.get(e.url,e.data||null).then(function(r){t._polls[e.poll]._stopped||(e.update(r),t._polls[e.poll].timeout=window.setTimeout(a,e.frequency))},function(r){t._polls[e.poll]._stopped||(e.error?e.error(r):t._snackbar.apiError(r))})};r()}},{key:"stop",value:function(e){this._polls[e]&&(window.clearTimeout(this._polls[e].timeout),this._polls[e]._stopped=!0)}}]),e}();r["default"]=new o},{}],172:[function(e,t,r){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0}),r.Snackbar=void 0;var n=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),o=e("../reducers/snackbar"),s=300,i=5e3,l=r.Snackbar=function(){function e(){a(this,e)}return n(e,[{key:"init",value:function(e){this._store=e,this._timeout=null}},{key:"alert",value:function(e,t){var r=this;this._timeout?(window.clearTimeout(this._timeout),this._store.dispatch((0,o.hideSnackbar)()),this._timeout=window.setTimeout(function(){r._timeout=null,r.alert(e,t)},s)):(this._store.dispatch((0,o.showSnackbar)(e,t)),this._timeout=window.setTimeout(function(){r._store.dispatch((0,o.hideSnackbar)()),r._timeout=null},i))}},{key:"info",value:function(e){this.alert(e,"info")}},{key:"success",value:function(e){this.alert(e,"success")}},{key:"warning",value:function(e){this.alert(e,"warning")}},{key:"error",value:function(e){this.alert(e,"error")}},{key:"apiError",value:function(e){var t=e.detail;t||(t=404===e.status?gettext("Action link is invalid."):gettext("Unknown error has occured.")),403===e.status&&"Permission denied"===t&&(t=gettext("You don't have permission to perform this action.")),this.error(t)}}]),e}();r["default"]=new l},{"../reducers/snackbar":158}],173:[function(e,t,r){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0}),r.StoreWrapper=void 0;var n=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),o=e("redux"),s=r.StoreWrapper=function(){function e(){a(this,e),this._store=null,this._reducers={},this._initialState={}}return n(e,[{key:"addReducer",value:function(e,t,r){this._reducers[e]=t,this._initialState[e]=r}},{key:"init",value:function(){this._store=(0,o.createStore)((0,o.combineReducers)(this._reducers),this._initialState)}},{key:"getStore",value:function(){return this._store}},{key:"getState",value:function(){return this._store.getState()}},{key:"dispatch",value:function(e){return this._store.dispatch(e)}}]),e}();r["default"]=new s},{redux:"redux"}],174:[function(e,t,r){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),o=r.Zxcvbn=function(){function e(){a(this,e)}return n(e,[{key:"init",value:function(e){this._include=e}},{key:"scorePassword",value:function(e,t){return zxcvbn(e,t).score}},{key:"load",value:function(){return"undefined"==typeof zxcvbn?(this._include.include("misago/js/zxcvbn.js"),this._loadingPromise()):this._loadedPromise()}},{key:"_loadingPromise",value:function(){return new Promise(function(e){var t=function r(){"undefined"==typeof zxcvbn?window.setTimeout(function(){r()},200):e()};t()})}},{key:"_loadedPromise",value:function(){return new Promise(function(e){e()})}}]),e}();r["default"]=new o},{}],175:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=function(e,t){if(u["default"].render(i["default"].createElement(c.Provider,{store:b["default"].getStore()},i["default"].createElement(g,{message:e.message,expires:e.expires_on?(0,o["default"])(e.expires_on):null})),document.getElementById("page-mount")),"undefined"==typeof t||t){var r=h["default"].get("SETTINGS").forum_name;document.title=gettext("You are banned")+" | "+r,window.history.pushState({},"",h["default"].get("BANNED_URL"))}};var n=e("moment"),o=a(n),s=e("react"),i=a(s),l=e("react-dom"),u=a(l),c=e("react-redux"),f=e("../components/banned-page"),d=a(f),p=e("../index"),h=a(p),m=e("../services/store"),b=a(m),y=function(e){return e.tick},g=(0,c.connect)(y)(d["default"])},{"../components/banned-page":3,"../index":119,"../services/store":173,moment:"moment",react:"react","react-dom":"react-dom","react-redux":"react-redux"}],176:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=function(e,t){var r=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],a=[],n=[];if(e.forEach(function(e){n.push(e),n.length===t&&(a.push(n),n=[])}),r!==!1&&n.length>0&&n.length<t)for(var o=n.length;t>o;o++)n.push(r);return n.length&&a.push(n),a}},{}],177:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=function(e,t){var r=[];return e.concat(t).filter(function(e){return-1===r.indexOf(e.id)?(r.push(e.id),!0):!1})}},{}],178:[function(e,t,r){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),o=function(){function e(t,r){a(this,e),this._callback=t,this._count=r}return n(e,[{key:"count",value:function(){this._count-=1,0===this._count&&this._callback()}}]),e}();r["default"]=o},{}],179:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=function(e){return e.replace(/[&<>"']/g,function(e){return a[e]})};var a={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"}},{}],180:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=function(e){return e>1e9?Math.round(100*e/1e9)/100+" GB":e>1e6?Math.round(100*e/1e6)/100+" MB":e>1e3?Math.round(100*e/1e3)/100+" KB":Math.round(100*e)/100+" B"}},{}],181:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=function(e,t){var r=arguments.length<=2||void 0===arguments[2]?!0:arguments[2],a=document.getElementById(t),n=e.props?e:o["default"].createElement(e,null);a&&(r?i["default"].render(o["default"].createElement(l.Provider,{store:c["default"].getStore()},n),a):i["default"].render(n,a))};var n=e("react"),o=a(n),s=e("react-dom"),i=a(s),l=e("react-redux"),u=e("../services/store"),c=a(u)},{"../services/store":173,react:"react","react-dom":"react-dom","react-redux":"react-redux"}],182:[function(e,t,r){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),o=function(){function e(t){a(this,e),this.isOrdered=!1,this._items=t||[]}return n(e,[{key:"add",value:function(e,t,r){this._items.push({key:e,item:t,after:r?r.after||null:null,before:r?r.before||null:null})}},{key:"get",value:function(e,t){for(var r=0;r<this._items.length;r++)if(this._items[r].key===e)return this._items[r].item;return t}},{key:"has",value:function(e){return void 0!==this.get(e)}},{key:"values",value:function t(){for(var t=[],e=0;e<this._items.length;e++)t.push(this._items[e].item);return t}},{key:"order",value:function(e){return this.isOrdered||(this._items=this._order(this._items),this.isOrdered=!0),e||"undefined"==typeof e?this.values():this._items}},{key:"orderedValues",value:function(){return this.order(!0)}},{key:"_order",value:function(e){function t(e){var t=-1;-1===n.indexOf(e.key)&&(e.after?(t=n.indexOf(e.after),-1!==t&&(t+=1)):e.before&&(t=n.indexOf(e.before)),-1!==t&&(a.splice(t,0,e),n.splice(t,0,e.key)))}var r=[];e.forEach(function(e){r.push(e.key)});var a=[],n=[];e.forEach(function(e){e.after||e.before||(a.push(e),n.push(e.key))}),e.forEach(function(e){"_end"===e.before&&(a.push(e),n.push(e.key))});for(var o=200;o>0&&r.length!==n.length;)o-=1,e.forEach(t);return a}}]),e}();r["default"]=o},{}],183:[function(e,t,r){"use strict";function a(e,t){return Math.floor(Math.random()*(t-e+1))+e}function n(e,t){for(var r=new Array(a(e,t)),n=0;n<r.length;n++)r[n]=n;return r}Object.defineProperty(r,"__esModule",{value:!0}),r["int"]=a,r.range=n},{}],184:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=function(){window.scrollTo(0,0)}},{}],185:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=function(e){var t={component:e.component||null,childRoutes:[]};e.root?t.childRoutes=[{path:e.root,onEnter:function(t,r){r(null,e.paths[0].path)}}].concat(e.paths):t.childRoutes=e.paths,i["default"].render(o["default"].createElement(l.Provider,{store:f["default"].getStore()},o["default"].createElement(u.Router,{routes:t,history:u.browserHistory})),d)};var n=e("react"),o=a(n),s=e("react-dom"),i=a(s),l=e("react-redux"),u=e("react-router"),c=e("../services/store"),f=a(c),d=document.getElementById("page-mount")},{"../services/store":173,react:"react","react-dom":"react-dom","react-redux":"react-redux","react-router":"react-router"}],186:[function(e,t,r){"use strict";function a(e,t){if(-1===e.indexOf(t)){var r=e.slice();return r.push(t),r}return e}function n(e,t){return e.indexOf(t)>=0?e.filter(function(e){return e!==t}):e}function o(e,t){if(-1===e.indexOf(t)){var r=e.slice();return r.push(t),r}return e.filter(function(e){return e!==t})}Object.defineProperty(r,"__esModule",{value:!0}),r.push=a,r.remove=n,r.toggle=o},{}],187:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r["default"]=function(e,t){if(e=(e+"").toLowerCase(),t=(t+"").toLowerCase(),t.length<=0)return 0;for(var r=0,a=0,n=t.length;;){if(a=e.indexOf(t,a),!(a>=0))break;r+=1,a+=n}return r}},{}],188:[function(e,t,r){"use strict";function a(){return function(e){return 0===$.trim(e).length?gettext("This field is required."):void 0}}function n(e){return function(t){return f.test(t)?void 0:e||gettext("Enter a valid email address.")}}function o(e,t){return function(r){var a="",n=$.trim(r).length;return e>n?(a=t?t(e,n):ngettext("Ensure this value has at least %(limit_value)s character (it has %(show_value)s).","Ensure this value has at least %(limit_value)s characters (it has %(show_value)s).",e),interpolate(a,{limit_value:e,show_value:n},!0)):void 0}}function s(e,t){return function(r){var a="",n=$.trim(r).length;return n>e?(a=t?t(e,n):ngettext("Ensure this value has at most %(limit_value)s character (it has %(show_value)s).","Ensure this value has at most %(limit_value)s characters (it has %(show_value)s).",e),interpolate(a,{limit_value:e,show_value:n},!0)):void 0}}function i(e){var t=function(e){return ngettext("Username must be at least %(limit_value)s character long.","Username must be at least %(limit_value)s characters long.",e)};return this.minLength(e.username_length_min,t)}function l(e){var t=function(e){return ngettext("Username cannot be longer than %(limit_value)s character.","Username cannot be longer than %(limit_value)s characters.",e)};return this.maxLength(e.username_length_max,t)}function u(){return function(e){return d.test($.trim(e))?void 0:gettext("Username can only contain latin alphabet letters and digits.")}}function c(e){var t=function(e){return ngettext("Valid password must be at least %(limit_value)s character long.","Valid password must be at least %(limit_value)s characters long.",e)};return this.minLength(e.password_length_min,t)}Object.defineProperty(r,"__esModule",{value:!0}),r.required=a,r.email=n,r.minLength=o,r.maxLength=s,r.usernameMinLength=i,r.usernameMaxLength=l,r.usernameContent=u,r.passwordMinLength=c;var f=/^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i,d=new RegExp("^[0-9a-z]+$","i")},{}]},{},[119,120,121,122,135,136,137,138,139,140,141,151,152,153,154,123,124,125,126,127,128,129,130,131,132,133,134,142,143,144,145,146,147,148,149,150]);
 //# sourceMappingURL=misago.js.map

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
misago/static/misago/js/misago.js.map


+ 2 - 2
misago/templates/misago/threadslist/base.html

@@ -13,10 +13,10 @@
   <div class="container">
 
     {% block list-container %}
-      {% if category.subcategories %}
+      {% if subcategories %}
       <div class="toolbar">
         <ul class="list-inline subcategories-list">
-          {% for subcategory in category.subcategories %}
+          {% for subcategory in subcategories %}
           <li>
             <a href="{{ subcategory.get_absolute_url }}{% if list_type != 'all' %}{{ list_type }}/{% endif %}" class="subcategory {% if subcategory.css_class %}subcategory-{{ subcategory.css_class }}{% endif %}">
               {{ subcategory.name }}

+ 45 - 0
misago/threads/api/threadendpoints/list.py

@@ -0,0 +1,45 @@
+from django.http import Http404
+from rest_framework.response import Response
+
+from misago.threads.viewmodels.category import ThreadsRootCategory, ThreadsCategory
+from misago.threads.viewmodels.threads import ForumThreads
+
+
+class ListEndpointBase(object):
+    category = None
+    threads = None
+
+    template_name = None
+
+    def __call__(self, request, **kwargs):
+        try:
+            page = int(request.query_params.get('page', 0))
+            if page == 1:
+                page = 0 # api allows explicit first page
+        except (ValueError, TypeError):
+            raise Http404()
+
+        list_type = request.query_params.get('list', 'all')
+
+        category = self.get_category(request, pk=request.query_params.get('category'))
+        threads = self.get_threads(request, category, list_type, page)
+
+        return Response(self.get_response_json(request, category, threads)['THREADS'])
+
+    def get_threads(self, request, category, list_type, page):
+        return self.threads(request, category, list_type, page)
+
+    def get_response_json(self, request, category, threads):
+        return threads.get_frontend_context()
+
+
+class ForumThreads(ListEndpointBase):
+    threads = ForumThreads
+
+    def get_category(self, request, pk=None):
+        if pk:
+            return ThreadsCategory(request, pk=pk)
+        else:
+            return ThreadsRootCategory(request)
+
+threads_list_endpoint = ForumThreads()

+ 1 - 1
misago/threads/api/threads.py

@@ -15,7 +15,7 @@ from misago.core.shortcuts import get_int_or_404, get_object_or_404
 from misago.readtracker.categoriestracker import read_category
 from misago.users.rest_permissions import IsAuthenticatedOrReadOnly
 
-from misago.threads.api.threadendpoints.lists import threads_list_endpoint
+from misago.threads.api.threadendpoints.list import threads_list_endpoint
 from misago.threads.api.threadendpoints.merge import threads_merge_endpoint
 from misago.threads.api.threadendpoints.patch import thread_patch_endpoint
 from misago.threads.models import Thread, Subscription

+ 1 - 1
misago/threads/mixins/threadslist.py

@@ -89,7 +89,7 @@ def filter_threads_queryset(user, categories, list_type, queryset):
 def filter_read_threads_queryset(user, categories, list_type, queryset):
     # grab cutoffs for categories
     cutoff_date = timezone.now() - timedelta(
-        days=settings.MISAGO_FRESH_CONTENT_PERIOD
+        days=settings.MISAGO_READTRACKER_CUTOFF
     )
 
     if cutoff_date < user.joined_on:

+ 114 - 187
misago/threads/tests/test_threadslists.py

@@ -111,21 +111,23 @@ class ThreadsListTestCase(AuthenticatedUserTestCase):
         categories_acl = {
             'categories': {},
             'visible_categories': [],
-            'can_approve_content': [],
+            'browseable_categories': [],
+            'can_approve_content': []
         }
 
         if base_acl:
             categories_acl.update(base_acl)
 
-        for category in Category.objects.all_categories(include_root=True):
+        for category in Category.objects.all_categories():
             categories_acl['visible_categories'].append(category.pk)
+            categories_acl['browseable_categories'].append(category.pk)
             categories_acl['categories'][category.pk] = {
                 'can_see': 1,
                 'can_browse': 1,
                 'can_see_all_threads': 1,
                 'can_see_own_threads': 0,
                 'can_hide_threads': 0,
-                'can_approve_content': 0,
+                'can_approve_content': 0
             }
 
             if category_acl:
@@ -137,6 +139,24 @@ class ThreadsListTestCase(AuthenticatedUserTestCase):
         return categories_acl
 
 
+class ApiTests(ThreadsListTestCase):
+    def test_root_category(self):
+        """its possible to access threads endpoint with category=ROOT_ID"""
+        response = self.client.get('%s?category=%s' % (
+            self.api_link,
+            self.root.pk,
+        ))
+        self.assertEqual(response.status_code, 200)
+
+    def test_explicit_first_page(self):
+        """its possible to access threads endpoint with explicit first page"""
+        response = self.client.get('%s?category=%s&page=1' % (
+            self.api_link,
+            self.root.pk,
+        ))
+        self.assertEqual(response.status_code, 200)
+
+
 class AllThreadsListTests(ThreadsListTestCase):
     def test_list_renders_empty(self):
         """empty threads list renders"""
@@ -156,8 +176,7 @@ class AllThreadsListTests(ThreadsListTestCase):
 
             self.access_all_categories()
 
-            response = self.client.get(
-                '%s?list=%s' % (self.api_link, url.strip('/')))
+            response = self.client.get('%s?list=%s' % (self.api_link, url.strip('/')))
             self.assertEqual(response.status_code, 200)
 
             response_json = json_loads(response.content)
@@ -207,37 +226,6 @@ class AllThreadsListTests(ThreadsListTestCase):
             ))
             self.assertEqual(response.status_code, 403)
 
-    def test_empty_list_hides_categories_picker(self):
-        """categories picker is hidden on empty list"""
-        Category(
-            name='Hidden Category',
-            slug='hidden-category',
-        ).insert_at(self.root, position='last-child', save=True)
-        test_category = Category.objects.get(slug='hidden-category')
-
-        self.access_all_categories()
-        response = self.client.get('/')
-        self.assertEqual(response.status_code, 200)
-
-        self.assertNotIn(
-            'subcategory-%s' % self.category_a.css_class, response.content)
-        self.assertNotIn(
-            'subcategory-%s' % self.category_e.css_class, response.content)
-
-        self.access_all_categories()
-        response = self.client.get(self.category_a.get_absolute_url())
-        self.assertEqual(response.status_code, 200)
-
-        self.assertNotIn(
-            'subcategory-%s' % self.category_b.css_class, response.content)
-
-        self.access_all_categories()
-        response = self.client.get(self.api_link)
-        self.assertEqual(response.status_code, 200)
-
-        response_json = json_loads(response.content)
-        self.assertEqual(len(response_json['subcategories']), 0)
-
     def test_list_renders_categories_picker(self):
         """categories picker renders valid categories"""
         Category(
@@ -253,30 +241,24 @@ class AllThreadsListTests(ThreadsListTestCase):
         response = self.client.get('/')
         self.assertEqual(response.status_code, 200)
 
-        self.assertIn(
-            'subcategory-%s' % self.category_a.css_class, response.content)
+        self.assertIn('subcategory-%s' % self.category_a.css_class, response.content)
 
         # readable categories, but non-accessible directly
-        self.assertNotIn(
-            'subcategory-%s' % self.category_b.css_class, response.content)
-        self.assertNotIn(
-            'subcategory-%s' % self.category_c.css_class, response.content)
-        self.assertNotIn(
-            'subcategory-%s' % self.category_d.css_class, response.content)
-        self.assertNotIn(
-            'subcategory-%s' % self.category_f.css_class, response.content)
+        self.assertNotIn('subcategory-%s' % self.category_b.css_class, response.content)
+        self.assertNotIn('subcategory-%s' % self.category_c.css_class, response.content)
+        self.assertNotIn('subcategory-%s' % self.category_d.css_class, response.content)
+        self.assertNotIn('subcategory-%s' % self.category_f.css_class, response.content)
 
         # hidden category
-        self.assertNotIn(
-            'subcategory-%s' % test_category.css_class, response.content)
+        self.assertNotIn('subcategory-%s' % test_category.css_class, response.content)
 
         self.access_all_categories()
         response = self.client.get(self.api_link)
         self.assertEqual(response.status_code, 200)
 
         response_json = json_loads(response.content)
-        self.assertEqual(
-            response_json['subcategories'][0], self.category_a.pk)
+        self.assertIn(self.category_a.pk, response_json['subcategories'])
+        self.assertNotIn(self.category_b.pk, response_json['subcategories'])
 
         # test category view
         self.access_all_categories()
@@ -284,20 +266,15 @@ class AllThreadsListTests(ThreadsListTestCase):
         response = self.client.get(self.category_a.get_absolute_url())
         self.assertEqual(response.status_code, 200)
 
-        self.assertIn(
-            'subcategory-%s' % self.category_b.css_class, response.content)
+        self.assertIn('subcategory-%s' % self.category_b.css_class, response.content)
 
         # readable categories, but non-accessible directly
-        self.assertNotIn(
-            'subcategory-%s' % self.category_c.css_class, response.content)
-        self.assertNotIn(
-            'subcategory-%s' % self.category_d.css_class, response.content)
-        self.assertNotIn(
-            'subcategory-%s' % self.category_f.css_class, response.content)
+        self.assertNotIn('subcategory-%s' % self.category_c.css_class, response.content)
+        self.assertNotIn('subcategory-%s' % self.category_d.css_class, response.content)
+        self.assertNotIn('subcategory-%s' % self.category_f.css_class, response.content)
 
         self.access_all_categories()
-        response = self.client.get(
-            '%s?category=%s' % (self.api_link, self.category_a.pk))
+        response = self.client.get('%s?category=%s' % (self.api_link, self.category_a.pk))
         self.assertEqual(response.status_code, 200)
 
         response_json = json_loads(response.content)
@@ -319,7 +296,9 @@ class AllThreadsListTests(ThreadsListTestCase):
             is_pinned=True,
         )
 
-        standard = testutils.post_thread(category=self.first_category)
+        standard = testutils.post_thread(
+            category=self.first_category
+        )
 
         response = self.client.get('/')
         self.assertEqual(response.status_code, 200)
@@ -367,18 +346,20 @@ class AllThreadsListTests(ThreadsListTestCase):
     def test_noscript_pagination(self):
         """threads list is paginated for users with js disabled"""
         threads = []
-        for i in xrange(24 * 3):
-            threads.append(testutils.post_thread(category=self.first_category))
+        for i in xrange(settings.MISAGO_THREADS_PER_PAGE * 3):
+            threads.append(testutils.post_thread(
+                category=self.first_category
+            ))
 
         # secondary page renders
         response = self.client.get('/?page=2')
         self.assertEqual(response.status_code, 200)
 
-        for thread in threads[:24]:
+        for thread in threads[:settings.MISAGO_THREADS_PER_PAGE]:
             self.assertNotIn(thread.get_absolute_url(), response.content)
-        for thread in threads[24:48]:
+        for thread in threads[settings.MISAGO_THREADS_PER_PAGE:settings.MISAGO_THREADS_PER_PAGE * 2]:
             self.assertIn(thread.get_absolute_url(), response.content)
-        for thread in threads[48:]:
+        for thread in threads[settings.MISAGO_THREADS_PER_PAGE * 2:]:
             self.assertNotIn(thread.get_absolute_url(), response.content)
 
         self.assertNotIn('/?page=1', response.content)
@@ -388,9 +369,9 @@ class AllThreadsListTests(ThreadsListTestCase):
         response = self.client.get('/?page=3')
         self.assertEqual(response.status_code, 200)
 
-        for thread in threads[24:]:
+        for thread in threads[settings.MISAGO_THREADS_PER_PAGE:]:
             self.assertNotIn(thread.get_absolute_url(), response.content)
-        for thread in threads[:24]:
+        for thread in threads[:settings.MISAGO_THREADS_PER_PAGE]:
             self.assertIn(thread.get_absolute_url(), response.content)
 
         self.assertIn('/?page=2', response.content)
@@ -414,8 +395,7 @@ class CategoryThreadsListTests(ThreadsListTestCase):
             response = self.client.get(test_category.get_absolute_url() + url)
             self.assertEqual(response.status_code, 404)
 
-            response = self.client.get(
-                '%s?category=%s' % (self.api_link, test_category.pk))
+            response = self.client.get('%s?category=%s' % (self.api_link, test_category.pk))
             self.assertEqual(response.status_code, 404)
 
     def test_access_protected_category(self):
@@ -429,6 +409,7 @@ class CategoryThreadsListTests(ThreadsListTestCase):
         for url in LISTS_URLS:
             override_acl(self.user, {
                 'visible_categories': [test_category.pk],
+                'browseable_categories': [test_category.pk],
                 'categories': {
                     test_category.pk: {
                         'can_see': 1,
@@ -442,6 +423,7 @@ class CategoryThreadsListTests(ThreadsListTestCase):
 
             override_acl(self.user, {
                 'visible_categories': [test_category.pk],
+                'browseable_categories': [test_category.pk],
                 'categories': {
                     test_category.pk: {
                         'can_see': 1,
@@ -472,7 +454,9 @@ class CategoryThreadsListTests(ThreadsListTestCase):
             is_pinned=True,
         )
 
-        standard = testutils.post_thread(category=self.first_category)
+        standard = testutils.post_thread(
+            category=self.first_category
+        )
 
         response = self.client.get(self.first_category.get_absolute_url())
         self.assertEqual(response.status_code, 200)
@@ -496,8 +480,7 @@ class CategoryThreadsListTests(ThreadsListTestCase):
         self.assertTrue(positions['s'] > positions['g'])
 
         # API behaviour is identic
-        response = self.client.get(
-            '/api/threads/?category=%s' % self.first_category.pk)
+        response = self.client.get('/api/threads/?category=%s' % self.first_category.pk)
         self.assertEqual(response.status_code, 200)
 
         positions = {
@@ -531,16 +514,10 @@ class ThreadsVisibilityTests(ThreadsListTestCase):
 
         self.assertIn(test_thread.get_absolute_url(), response.content)
 
-        self.assertIn(
-            'subcategory-%s' % self.category_a.css_class, response.content)
-        self.assertIn(
-            'thread-category-%s' % self.category_a.css_class, response.content)
-        self.assertIn(
-            'thread-category-%s' % self.category_c.css_class, response.content)
-
-        # other top category is hidden from user
-        self.assertNotIn(
-            'subcategory-%s' % self.category_e.css_class, response.content)
+        self.assertIn('subcategory-%s' % self.category_a.css_class, response.content)
+        self.assertIn('subcategory-%s' % self.category_e.css_class, response.content)
+        self.assertIn('thread-category-%s' % self.category_a.css_class, response.content)
+        self.assertIn('thread-category-%s' % self.category_c.css_class, response.content)
 
         # api displays same data
         self.access_all_categories()
@@ -549,9 +526,8 @@ class ThreadsVisibilityTests(ThreadsListTestCase):
 
         response_json = json_loads(response.content)
         self.assertEqual(response_json['results'][0]['id'], test_thread.pk)
-        self.assertEqual(len(response_json['subcategories']), 1)
-        self.assertEqual(
-            response_json['subcategories'][0], self.category_a.pk)
+        self.assertEqual(len(response_json['subcategories']), 3)
+        self.assertIn(self.category_a.pk, response_json['subcategories'])
 
         # test category view
         self.access_all_categories()
@@ -561,28 +537,18 @@ class ThreadsVisibilityTests(ThreadsListTestCase):
         # thread displays
         self.assertIn(test_thread.get_absolute_url(), response.content)
 
-        self.assertNotIn(
-            'thread-category-%s' % self.category_b.css_class, response.content)
-        self.assertIn(
-            'thread-category-%s' % self.category_c.css_class, response.content)
-
-        # category picker was changed
-        self.assertIn(
-            'subcategory-%s' % self.category_c.css_class, response.content)
-        self.assertNotIn(
-            'subcategory-%s' % self.category_d.css_class, response.content)
+        self.assertNotIn('thread-category-%s' % self.category_b.css_class, response.content)
+        self.assertIn('thread-category-%s' % self.category_c.css_class, response.content)
 
         # api displays same data
         self.access_all_categories()
-        response = self.client.get(
-            '%s?category=%s' % (self.api_link, self.category_b.pk))
+        response = self.client.get('%s?category=%s' % (self.api_link, self.category_b.pk))
         self.assertEqual(response.status_code, 200)
 
         response_json = json_loads(response.content)
         self.assertEqual(response_json['results'][0]['id'], test_thread.pk)
-        self.assertEqual(len(response_json['subcategories']), 1)
-        self.assertEqual(
-            response_json['subcategories'][0], self.category_c.pk)
+        self.assertEqual(len(response_json['subcategories']), 2)
+        self.assertEqual(response_json['subcategories'][0], self.category_c.pk)
 
     def test_list_hides_hidden_thread(self):
         """list renders empty due to no permission to see thread"""
@@ -593,7 +559,7 @@ class ThreadsVisibilityTests(ThreadsListTestCase):
         test_category = Category.objects.get(slug='hidden-category')
 
         test_thread = testutils.post_thread(
-            category=test_category,
+            category=test_category
         )
 
         response = self.client.get('/')
@@ -804,8 +770,7 @@ class MyThreadsListTests(ThreadsListTestCase):
         self.assertEqual(len(response_json['results']), 0)
 
         self.access_all_categories()
-        response = self.client.get(
-            '%s?list=my&category=%s' % (self.api_link, self.category_a.pk))
+        response = self.client.get('%s?list=my&category=%s' % (self.api_link, self.category_a.pk))
 
         response_json = json_loads(response.content)
         self.assertEqual(len(response_json['results']), 0)
@@ -845,8 +810,7 @@ class MyThreadsListTests(ThreadsListTestCase):
         self.assertEqual(response_json['results'][0]['id'], test_thread.pk)
 
         self.access_all_categories()
-        response = self.client.get(
-            '%s?list=my&category=%s' % (self.api_link, self.category_a.pk))
+        response = self.client.get('%s?list=my&category=%s' % (self.api_link, self.category_a.pk))
         self.assertEqual(response.status_code, 200)
 
         response_json = json_loads(response.content)
@@ -878,8 +842,7 @@ class NewThreadsListTests(ThreadsListTestCase):
         self.assertEqual(len(response_json['results']), 0)
 
         self.access_all_categories()
-        response = self.client.get(
-            '%s?list=new&category=%s' % (self.api_link, self.category_a.pk))
+        response = self.client.get('%s?list=new&category=%s' % (self.api_link, self.category_a.pk))
 
         response_json = json_loads(response.content)
         self.assertEqual(len(response_json['results']), 0)
@@ -912,8 +875,7 @@ class NewThreadsListTests(ThreadsListTestCase):
         self.assertEqual(response_json['results'][0]['id'], test_thread.pk)
 
         self.access_all_categories()
-        response = self.client.get(
-            '%s?list=new&category=%s' % (self.api_link, self.category_a.pk))
+        response = self.client.get('%s?list=new&category=%s' % (self.api_link, self.category_a.pk))
         self.assertEqual(response.status_code, 200)
 
         response_json = json_loads(response.content)
@@ -942,8 +904,7 @@ class NewThreadsListTests(ThreadsListTestCase):
 
         self.access_all_categories()
 
-        response = self.client.get(
-            self.category_a.get_absolute_url() + 'new/')
+        response = self.client.get(self.category_a.get_absolute_url() + 'new/')
         self.assertEqual(response.status_code, 200)
         self.assertIn(test_thread.get_absolute_url(), response.content)
 
@@ -957,8 +918,7 @@ class NewThreadsListTests(ThreadsListTestCase):
         self.assertEqual(response_json['results'][0]['id'], test_thread.pk)
 
         self.access_all_categories()
-        response = self.client.get(
-            '%s?list=new&category=%s' % (self.api_link, self.category_a.pk))
+        response = self.client.get('%s?list=new&category=%s' % (self.api_link, self.category_a.pk))
         self.assertEqual(response.status_code, 200)
 
         response_json = json_loads(response.content)
@@ -973,7 +933,7 @@ class NewThreadsListTests(ThreadsListTestCase):
         test_thread = testutils.post_thread(
             category=self.category_a,
             started_on=timezone.now() - timedelta(
-                days=settings.MISAGO_FRESH_CONTENT_PERIOD + 1
+                days=settings.MISAGO_READTRACKER_CUTOFF + 1
             )
         )
 
@@ -998,8 +958,7 @@ class NewThreadsListTests(ThreadsListTestCase):
         self.assertEqual(len(response_json['results']), 0)
 
         self.access_all_categories()
-        response = self.client.get(
-            '%s?list=new&category=%s' % (self.api_link, self.category_a.pk))
+        response = self.client.get('%s?list=new&category=%s' % (self.api_link, self.category_a.pk))
         self.assertEqual(response.status_code, 200)
 
         response_json = json_loads(response.content)
@@ -1036,8 +995,7 @@ class NewThreadsListTests(ThreadsListTestCase):
         self.assertEqual(len(response_json['results']), 0)
 
         self.access_all_categories()
-        response = self.client.get(
-            '%s?list=new&category=%s' % (self.api_link, self.category_a.pk))
+        response = self.client.get('%s?list=new&category=%s' % (self.api_link, self.category_a.pk))
         self.assertEqual(response.status_code, 200)
 
         response_json = json_loads(response.content)
@@ -1053,8 +1011,7 @@ class NewThreadsListTests(ThreadsListTestCase):
         )
 
         threadstracker.make_thread_read_aware(self.user, test_thread)
-        threadstracker.read_thread(
-            self.user, test_thread, test_thread.last_post)
+        threadstracker.read_thread(self.user, test_thread, test_thread.last_post)
 
         self.access_all_categories()
 
@@ -1077,8 +1034,7 @@ class NewThreadsListTests(ThreadsListTestCase):
         self.assertEqual(len(response_json['results']), 0)
 
         self.access_all_categories()
-        response = self.client.get(
-            '%s?list=new&category=%s' % (self.api_link, self.category_a.pk))
+        response = self.client.get('%s?list=new&category=%s' % (self.api_link, self.category_a.pk))
         self.assertEqual(response.status_code, 200)
 
         response_json = json_loads(response.content)
@@ -1119,8 +1075,7 @@ class NewThreadsListTests(ThreadsListTestCase):
         self.assertEqual(len(response_json['results']), 0)
 
         self.access_all_categories()
-        response = self.client.get(
-            '%s?list=new&category=%s' % (self.api_link, self.category_a.pk))
+        response = self.client.get('%s?list=new&category=%s' % (self.api_link, self.category_a.pk))
         self.assertEqual(response.status_code, 200)
 
         response_json = json_loads(response.content)
@@ -1138,8 +1093,7 @@ class UnreadThreadsListTests(ThreadsListTestCase):
 
         self.access_all_categories()
 
-        response = self.client.get(
-            self.category_a.get_absolute_url() + 'unread/')
+        response = self.client.get(self.category_a.get_absolute_url() + 'unread/')
         self.assertEqual(response.status_code, 200)
         self.assertIn("empty-message", response.content)
 
@@ -1152,8 +1106,7 @@ class UnreadThreadsListTests(ThreadsListTestCase):
         self.assertEqual(len(response_json['results']), 0)
 
         self.access_all_categories()
-        response = self.client.get(
-            '%s?list=unread&category=%s' % (self.api_link, self.category_a.pk))
+        response = self.client.get('%s?list=unread&category=%s' % (self.api_link, self.category_a.pk))
         self.assertEqual(response.status_code, 200)
 
         response_json = json_loads(response.content)
@@ -1169,8 +1122,7 @@ class UnreadThreadsListTests(ThreadsListTestCase):
         )
 
         threadstracker.make_thread_read_aware(self.user, test_thread)
-        threadstracker.read_thread(
-            self.user, test_thread, test_thread.last_post)
+        threadstracker.read_thread(self.user, test_thread, test_thread.last_post)
 
         testutils.reply_thread(test_thread)
 
@@ -1182,8 +1134,7 @@ class UnreadThreadsListTests(ThreadsListTestCase):
 
         self.access_all_categories()
 
-        response = self.client.get(
-            self.category_a.get_absolute_url() + 'unread/')
+        response = self.client.get(self.category_a.get_absolute_url() + 'unread/')
         self.assertEqual(response.status_code, 200)
         self.assertIn(test_thread.get_absolute_url(), response.content)
 
@@ -1197,8 +1148,7 @@ class UnreadThreadsListTests(ThreadsListTestCase):
         self.assertEqual(response_json['results'][0]['id'], test_thread.pk)
 
         self.access_all_categories()
-        response = self.client.get(
-            '%s?list=unread&category=%s' % (self.api_link, self.category_a.pk))
+        response = self.client.get('%s?list=unread&category=%s' % (self.api_link, self.category_a.pk))
         self.assertEqual(response.status_code, 200)
 
         response_json = json_loads(response.content)
@@ -1222,8 +1172,7 @@ class UnreadThreadsListTests(ThreadsListTestCase):
 
         self.access_all_categories()
 
-        response = self.client.get(
-            self.category_a.get_absolute_url() + 'unread/')
+        response = self.client.get(self.category_a.get_absolute_url() + 'unread/')
         self.assertEqual(response.status_code, 200)
         self.assertNotIn(test_thread.get_absolute_url(), response.content)
 
@@ -1236,8 +1185,7 @@ class UnreadThreadsListTests(ThreadsListTestCase):
         self.assertEqual(len(response_json['results']), 0)
 
         self.access_all_categories()
-        response = self.client.get(
-            '%s?list=unread&category=%s' % (self.api_link, self.category_a.pk))
+        response = self.client.get('%s?list=unread&category=%s' % (self.api_link, self.category_a.pk))
         self.assertEqual(response.status_code, 200)
 
         response_json = json_loads(response.content)
@@ -1253,8 +1201,7 @@ class UnreadThreadsListTests(ThreadsListTestCase):
         )
 
         threadstracker.make_thread_read_aware(self.user, test_thread)
-        threadstracker.read_thread(
-            self.user, test_thread, test_thread.last_post)
+        threadstracker.read_thread(self.user, test_thread, test_thread.last_post)
 
         self.access_all_categories()
 
@@ -1264,8 +1211,7 @@ class UnreadThreadsListTests(ThreadsListTestCase):
 
         self.access_all_categories()
 
-        response = self.client.get(
-            self.category_a.get_absolute_url() + 'unread/')
+        response = self.client.get(self.category_a.get_absolute_url() + 'unread/')
         self.assertEqual(response.status_code, 200)
         self.assertNotIn(test_thread.get_absolute_url(), response.content)
 
@@ -1278,8 +1224,7 @@ class UnreadThreadsListTests(ThreadsListTestCase):
         self.assertEqual(len(response_json['results']), 0)
 
         self.access_all_categories()
-        response = self.client.get(
-            '%s?list=unread&category=%s' % (self.api_link, self.category_a.pk))
+        response = self.client.get('%s?list=unread&category=%s' % (self.api_link, self.category_a.pk))
         self.assertEqual(response.status_code, 200)
 
         response_json = json_loads(response.content)
@@ -1293,17 +1238,14 @@ class UnreadThreadsListTests(ThreadsListTestCase):
         test_thread = testutils.post_thread(
             category=self.category_a,
             started_on=timezone.now() - timedelta(
-                days=settings.MISAGO_FRESH_CONTENT_PERIOD + 5
+                days=settings.MISAGO_READTRACKER_CUTOFF + 5
             )
         )
 
         threadstracker.make_thread_read_aware(self.user, test_thread)
-        threadstracker.read_thread(
-            self.user, test_thread, test_thread.last_post)
+        threadstracker.read_thread(self.user, test_thread, test_thread.last_post)
 
-        testutils.reply_thread(test_thread,
-            posted_on=test_thread.started_on + timedelta(days=1)
-        )
+        testutils.reply_thread(test_thread, posted_on=test_thread.started_on + timedelta(days=1))
 
         self.access_all_categories()
 
@@ -1313,8 +1255,7 @@ class UnreadThreadsListTests(ThreadsListTestCase):
 
         self.access_all_categories()
 
-        response = self.client.get(
-            self.category_a.get_absolute_url() + 'unread/')
+        response = self.client.get(self.category_a.get_absolute_url() + 'unread/')
         self.assertEqual(response.status_code, 200)
         self.assertNotIn(test_thread.get_absolute_url(), response.content)
 
@@ -1327,8 +1268,7 @@ class UnreadThreadsListTests(ThreadsListTestCase):
         self.assertEqual(len(response_json['results']), 0)
 
         self.access_all_categories()
-        response = self.client.get(
-            '%s?list=unread&category=%s' % (self.api_link, self.category_a.pk))
+        response = self.client.get('%s?list=unread&category=%s' % (self.api_link, self.category_a.pk))
         self.assertEqual(response.status_code, 200)
 
         response_json = json_loads(response.content)
@@ -1345,12 +1285,9 @@ class UnreadThreadsListTests(ThreadsListTestCase):
         )
 
         threadstracker.make_thread_read_aware(self.user, test_thread)
-        threadstracker.read_thread(
-            self.user, test_thread, test_thread.last_post)
+        threadstracker.read_thread(self.user, test_thread, test_thread.last_post)
 
-        testutils.reply_thread(test_thread,
-            posted_on=test_thread.started_on + timedelta(days=1)
-        )
+        testutils.reply_thread(test_thread, posted_on=test_thread.started_on + timedelta(days=1))
 
         self.access_all_categories()
 
@@ -1360,8 +1297,7 @@ class UnreadThreadsListTests(ThreadsListTestCase):
 
         self.access_all_categories()
 
-        response = self.client.get(
-            self.category_a.get_absolute_url() + 'unread/')
+        response = self.client.get(self.category_a.get_absolute_url() + 'unread/')
         self.assertEqual(response.status_code, 200)
         self.assertNotIn(test_thread.get_absolute_url(), response.content)
 
@@ -1374,8 +1310,7 @@ class UnreadThreadsListTests(ThreadsListTestCase):
         self.assertEqual(len(response_json['results']), 0)
 
         self.access_all_categories()
-        response = self.client.get(
-            '%s?list=unread&category=%s' % (self.api_link, self.category_a.pk))
+        response = self.client.get('%s?list=unread&category=%s' % (self.api_link, self.category_a.pk))
         self.assertEqual(response.status_code, 200)
 
         response_json = json_loads(response.content)
@@ -1410,8 +1345,7 @@ class UnreadThreadsListTests(ThreadsListTestCase):
 
         self.access_all_categories()
 
-        response = self.client.get(
-            self.category_a.get_absolute_url() + 'unread/')
+        response = self.client.get(self.category_a.get_absolute_url() + 'unread/')
         self.assertEqual(response.status_code, 200)
         self.assertNotIn(test_thread.get_absolute_url(), response.content)
 
@@ -1424,8 +1358,7 @@ class UnreadThreadsListTests(ThreadsListTestCase):
         self.assertEqual(len(response_json['results']), 0)
 
         self.access_all_categories()
-        response = self.client.get(
-            '%s?list=unread&category=%s' % (self.api_link, self.category_a.pk))
+        response = self.client.get('%s?list=unread&category=%s' % (self.api_link, self.category_a.pk))
         self.assertEqual(response.status_code, 200)
 
         response_json = json_loads(response.content)
@@ -1435,7 +1368,9 @@ class UnreadThreadsListTests(ThreadsListTestCase):
 class SubscribedThreadsListTests(ThreadsListTestCase):
     def test_list_shows_subscribed_thread(self):
         """list shows subscribed thread"""
-        test_thread = testutils.post_thread(category=self.category_a)
+        test_thread = testutils.post_thread(
+            category=self.category_a
+        )
         self.user.subscription_set.create(
             thread=test_thread,
             category=self.category_a,
@@ -1450,8 +1385,7 @@ class SubscribedThreadsListTests(ThreadsListTestCase):
 
         self.access_all_categories()
 
-        response = self.client.get(
-            self.category_a.get_absolute_url() + 'subscribed/')
+        response = self.client.get(self.category_a.get_absolute_url() + 'subscribed/')
         self.assertEqual(response.status_code, 200)
         self.assertIn(test_thread.get_absolute_url(), response.content)
 
@@ -1465,10 +1399,7 @@ class SubscribedThreadsListTests(ThreadsListTestCase):
         self.assertIn(test_thread.get_absolute_url(), response.content)
 
         self.access_all_categories()
-        response = self.client.get(
-            '%s?list=subscribed&category=%s' % (
-                self.api_link, self.category_a.pk
-            ))
+        response = self.client.get('%s?list=subscribed&category=%s' % (self.api_link, self.category_a.pk))
         self.assertEqual(response.status_code, 200)
 
         response_json = json_loads(response.content)
@@ -1477,7 +1408,9 @@ class SubscribedThreadsListTests(ThreadsListTestCase):
 
     def test_list_hides_unsubscribed_thread(self):
         """list shows subscribed thread"""
-        test_thread = testutils.post_thread(category=self.category_a)
+        test_thread = testutils.post_thread(
+            category=self.category_a
+        )
 
         self.access_all_categories()
 
@@ -1487,8 +1420,7 @@ class SubscribedThreadsListTests(ThreadsListTestCase):
 
         self.access_all_categories()
 
-        response = self.client.get(
-            self.category_a.get_absolute_url() + 'subscribed/')
+        response = self.client.get(self.category_a.get_absolute_url() + 'subscribed/')
         self.assertEqual(response.status_code, 200)
         self.assertNotIn(test_thread.get_absolute_url(), response.content)
 
@@ -1502,10 +1434,7 @@ class SubscribedThreadsListTests(ThreadsListTestCase):
         self.assertNotIn(test_thread.get_absolute_url(), response.content)
 
         self.access_all_categories()
-        response = self.client.get(
-            '%s?list=subscribed&category=%s' % (
-                self.api_link, self.category_a.pk
-            ))
+        response = self.client.get('%s?list=subscribed&category=%s' % (self.api_link, self.category_a.pk))
         self.assertEqual(response.status_code, 200)
 
         response_json = json_loads(response.content)
@@ -1574,8 +1503,7 @@ class UnapprovedListTests(ThreadsListTestCase):
         }, {
             'can_see_unapproved_content_lists': True
         })
-        response = self.client.get(
-            self.category_a.get_absolute_url() + 'unapproved/')
+        response = self.client.get(self.category_a.get_absolute_url() + 'unapproved/')
         self.assertEqual(response.status_code, 200)
         self.assertIn(visible_thread.get_absolute_url(), response.content)
         self.assertNotIn(hidden_thread.get_absolute_url(), response.content)
@@ -1617,8 +1545,7 @@ class UnapprovedListTests(ThreadsListTestCase):
         self.access_all_categories(base_acl={
             'can_see_unapproved_content_lists': True
         })
-        response = self.client.get(
-            self.category_a.get_absolute_url() + 'unapproved/')
+        response = self.client.get(self.category_a.get_absolute_url() + 'unapproved/')
         self.assertEqual(response.status_code, 200)
         self.assertIn(visible_thread.get_absolute_url(), response.content)
         self.assertNotIn(hidden_thread.get_absolute_url(), response.content)
@@ -1630,4 +1557,4 @@ class UnapprovedListTests(ThreadsListTestCase):
         response = self.client.get('%s?list=unapproved' % self.api_link)
         self.assertEqual(response.status_code, 200)
         self.assertIn(visible_thread.get_absolute_url(), response.content)
-        self.assertNotIn(hidden_thread.get_absolute_url(), response.content)
+        self.assertNotIn(hidden_thread.get_absolute_url(), response.content)

+ 5 - 5
misago/threads/urls/__init__.py

@@ -1,7 +1,7 @@
 from django.conf import settings
 from django.conf.urls import url
 
-from misago.threads.views.lists import ThreadsList, CategoryThreadsList, PrivateThreadsList
+from misago.threads.views.list import ForumThreads, CategoryThreads, PrivateThreads
 from misago.threads.views.thread import Thread, PrivateThread
 
 
@@ -33,7 +33,7 @@ def threads_list_patterns(prefix, view, patterns):
 
 
 if settings.MISAGO_CATEGORIES_ON_INDEX:
-    urlpatterns = threads_list_patterns('threads', ThreadsList, (
+    urlpatterns = threads_list_patterns('threads', ForumThreads, (
         r'^threads/$',
         r'^threads/my/$',
         r'^threads/new/$',
@@ -42,7 +42,7 @@ if settings.MISAGO_CATEGORIES_ON_INDEX:
         r'^threads/unapproved/$',
     ))
 else:
-    urlpatterns = threads_list_patterns('threads', ThreadsList, (
+    urlpatterns = threads_list_patterns('threads', ForumThreads, (
         r'^$',
         r'^my/$',
         r'^new/$',
@@ -52,7 +52,7 @@ else:
     ))
 
 
-urlpatterns += threads_list_patterns('category', CategoryThreadsList, (
+urlpatterns += threads_list_patterns('category', CategoryThreads, (
     r'^category/(?P<slug>[-a-zA-Z0-9]+)-(?P<pk>\d+)/$',
     r'^category/(?P<slug>[-a-zA-Z0-9]+)-(?P<pk>\d+)/my/$',
     r'^category/(?P<slug>[-a-zA-Z0-9]+)-(?P<pk>\d+)/new/$',
@@ -62,7 +62,7 @@ urlpatterns += threads_list_patterns('category', CategoryThreadsList, (
 ))
 
 
-urlpatterns += threads_list_patterns('private-threads', CategoryThreadsList, (
+urlpatterns += threads_list_patterns('private-threads', CategoryThreads, (
     r'^private-threads/$',
     r'^private-threads/my/$',
     r'^private-threads/new/$',

+ 0 - 0
misago/threads/viewmodels/__init__.py


+ 67 - 0
misago/threads/viewmodels/category.py

@@ -0,0 +1,67 @@
+from django.http import Http404
+
+from misago.acl import add_acl
+from misago.core.shortcuts import validate_slug
+
+from misago.categories.models import Category
+from misago.categories.permissions import allow_see_category, allow_browse_category
+from misago.categories.serializers import BasicCategorySerializer
+
+
+class ViewModel(object):
+    def __init__(self, request, **kwargs):
+        self.categories = self.get_categories(request)
+        map(lambda c: add_acl(request.user, c), self.categories)
+
+        self.category = self.get_category(request, self.categories, **kwargs)
+        self.subcategories = filter(self.category.has_child, self.categories)
+        self.children = filter(lambda s: s.parent_id == self.category.pk, self.subcategories)
+
+    def get_categories(self, request):
+        raise NotImplementedError('Category view model has to implement get_categories(request)')
+
+    def get_category(self, request, categories, **kwargs):
+        return categories[0]
+
+    def get_frontend_context(self):
+        return {
+            'CATEGORIES': BasicCategorySerializer(self.categories, many=True).data
+        }
+
+    def get_template_context(self):
+        return {
+            'category': self.category,
+            'subcategories': self.children
+        }
+
+
+class ThreadsRootCategory(ViewModel):
+    def get_categories(self, request):
+        return [Category.objects.root_category()] + list(
+            Category.objects.all_categories().filter(
+                id__in=request.user.acl['browseable_categories']
+            ).select_related('parent'))
+
+
+class ThreadsCategory(ThreadsRootCategory):
+    @property
+    def level(self):
+        return self.category.level
+
+    def get_category(self, request, categories, **kwargs):
+        for category in categories:
+            if category.pk == int(kwargs['pk']):
+                if not category.special_role:
+                    # don't check permissions for non-special category
+                    allow_see_category(request.user, category)
+                    allow_browse_category(request.user, category)
+
+                if 'slug' in kwargs:
+                    validate_slug(category, kwargs['slug'])
+
+                return category
+        raise Http404()
+
+
+class PrivateThreadsCategory(ViewModel):
+    pass

+ 228 - 0
misago/threads/viewmodels/threads.py

@@ -0,0 +1,228 @@
+from datetime import timedelta
+
+from django.conf import settings
+from django.core.exceptions import PermissionDenied
+from django.db.models import F, Q
+from django.http import Http404
+from django.utils import timezone
+from django.utils.translation import ugettext as _, ugettext_lazy
+
+from misago.acl import add_acl
+from misago.core.shortcuts import paginate, pagination_dict
+from misago.readtracker import threadstracker
+
+from misago.threads.models import Thread
+from misago.threads.permissions import exclude_invisible_threads
+from misago.threads.serializers import ThreadListSerializer
+from misago.threads.subscriptions import make_subscription_aware
+from misago.threads.utils import add_categories_to_threads
+
+
+LISTS_NAMES = {
+    'all': None,
+    'my': ugettext_lazy("Your threads"),
+    'new': ugettext_lazy("New threads"),
+    'unread': ugettext_lazy("Unread threads"),
+    'subscribed': ugettext_lazy("Subscribed threads"),
+    'unapproved': ugettext_lazy("Unapproved content"),
+}
+
+LIST_DENIED_MESSAGES = {
+    'my': ugettext_lazy("You have to sign in to see list of threads that you have started."),
+    'new': ugettext_lazy("You have to sign in to see list of threads you haven't read."),
+    'unread': ugettext_lazy("You have to sign in to see list of threads with new replies."),
+    'subscribed': ugettext_lazy("You have to sign in to see list of threads you are subscribing."),
+    'unapproved': ugettext_lazy("You have to sign in to see list of threads with unapproved posts."),
+}
+
+
+class ThreadsViewModel(object):
+    def __init__(self, request, category, list_type, page):
+        self.allow_see_list(request, category, list_type)
+
+        base_queryset = self.get_base_queryset(request, category.categories, list_type)
+        threads_categories = [category.category] + category.subcategories
+
+        threads_queryset = self.get_remaining_threads_queryset(base_queryset, category.category, threads_categories)
+
+        list_page = paginate(threads_queryset, page, settings.MISAGO_THREADS_PER_PAGE, settings.MISAGO_THREADS_TAIL)
+        paginator = pagination_dict(list_page, include_page_range=False)
+
+        if list_page.number > 1:
+            threads = list(list_page.object_list)
+        else:
+            pinned_threads = list(self.get_pinned_threads(base_queryset, category.category, threads_categories))
+            threads = list(pinned_threads) + list(list_page.object_list)
+
+        if list_type in ('new', 'unread'):
+            # we already know all threads on list are unread
+            threadstracker.make_unread(threads)
+        else:
+            threadstracker.make_threads_read_aware(request.user, threads)
+
+        add_categories_to_threads(category.category, category.categories, threads)
+        add_acl(request.user, threads)
+        make_subscription_aware(request.user, threads)
+
+        # set state on object for easy access from hooks
+        self.category = category
+        self.threads = threads
+        self.list_type = list_type
+        self.paginator = paginator
+
+    def allow_see_list(self, request, category, list_type):
+        if list_type not in LISTS_NAMES:
+            raise Http404()
+
+        if request.user.is_anonymous():
+            if list_type in LIST_DENIED_MESSAGES:
+                raise PermissionDenied(LIST_DENIED_MESSAGES[list_type])
+        else:
+            if list_type == 'unapproved' and not request.user.acl['can_see_unapproved_content_lists']:
+                raise PermissionDenied(_("You don't have permission to see unapproved content lists."))
+
+    def get_list_name(self, list_type):
+        return LISTS_NAMES[list_type]
+
+    def get_base_queryset(self, request, threads_categories, list_type):
+        return get_threads_queryset(request.user, threads_categories, list_type).order_by('-last_post_id')
+
+    def get_pinned_threads(self, queryset, category, threads_categories):
+        return []
+
+    def get_remaining_threads_queryset(self, queryset, category, threads_categories):
+        return []
+
+    def get_frontend_context(self):
+        context = {
+            'THREADS': {
+                'results': ThreadListSerializer(self.threads, many=True).data,
+                'subcategories': [c.pk for c in self.category.children]
+            },
+        }
+
+        context['THREADS'].update(self.paginator)
+        return context
+
+    def get_template_context(self):
+        return {
+            'list_name': self.get_list_name(self.list_type),
+            'list_type': self.list_type,
+
+            'threads': self.threads,
+            'paginator': self.paginator
+        }
+
+
+class ForumThreads(ThreadsViewModel):
+    def get_pinned_threads(self, queryset, category, threads_categories):
+        if category.level:
+            return list(queryset.filter(weight=2)) + list(queryset.filter(
+                weight=1,
+                category__in=threads_categories
+            ))
+        else:
+            return queryset.filter(weight=2)
+
+    def get_remaining_threads_queryset(self, queryset, category, threads_categories):
+        if category.level:
+            return queryset.filter(
+                weight=0,
+                category__in=threads_categories,
+            )
+        else:
+            return queryset.filter(
+                weight__lt=2,
+                category__in=threads_categories,
+            )
+
+
+class PrivateThreads(ThreadsViewModel):
+    def get_remaining_threads_queryset(self, queryset, category, threads_categories):
+        return queryset.filter(category__in=threads_categories)
+
+
+"""
+Thread queryset utils
+"""
+def get_threads_queryset(user, categories, list_type):
+    queryset = exclude_invisible_threads(user, categories, Thread.objects)
+
+    if list_type == 'all':
+        return queryset
+    else:
+        return filter_threads_queryset(user, categories, list_type, queryset)
+
+
+def filter_threads_queryset(user, categories, list_type, queryset):
+    if list_type == 'my':
+        return queryset.filter(starter=user)
+    elif list_type == 'subscribed':
+        subscribed_threads = user.subscription_set.values('thread_id')
+        return queryset.filter(id__in=subscribed_threads)
+    elif list_type == 'unapproved':
+        return queryset.filter(has_unapproved_posts=True)
+    elif list_type in ('new', 'unread'):
+        return filter_read_threads_queryset(user, categories, list_type, queryset)
+    else:
+        return queryset
+
+
+def filter_read_threads_queryset(user, categories, list_type, queryset):
+    # grab cutoffs for categories
+    cutoff_date = timezone.now() - timedelta(days=settings.MISAGO_READTRACKER_CUTOFF)
+
+    if cutoff_date < user.joined_on:
+        cutoff_date = user.joined_on
+
+    categories_dict = {}
+    for record in user.categoryread_set.filter(category__in=categories):
+        if record.last_read_on > cutoff_date:
+            categories_dict[record.category_id] = record.last_read_on
+
+    if list_type == 'new':
+        # new threads have no entry in reads table
+        # AND were started after cutoff date
+        read_threads = user.threadread_set.filter(
+            category__in=categories
+        ).values('thread_id')
+
+        condition = Q(last_post_on__lte=cutoff_date)
+        condition = condition | Q(id__in=read_threads)
+
+        if categories_dict:
+            for category_id, category_cutoff in categories_dict.items():
+                condition = condition | Q(
+                    category_id=category_id,
+                    last_post_on__lte=category_cutoff,
+                )
+
+        return queryset.exclude(condition)
+    elif list_type == 'unread':
+        # unread threads were read in past but have new posts
+        # after cutoff date
+        read_threads = user.threadread_set.filter(
+            category__in=categories,
+            thread__last_post_on__gt=cutoff_date,
+            last_read_on__lt=F('thread__last_post_on')
+        ).values('thread_id')
+
+        queryset = queryset.filter(id__in=read_threads)
+
+        # unread threads have last reply after read/cutoff date
+        if categories_dict:
+            conditions = None
+
+            for category_id, category_cutoff in categories_dict.items():
+                condition = Q(
+                    category_id=category_id,
+                    last_post_on__lte=category_cutoff,
+                )
+                if conditions:
+                    conditions = conditions | condition
+                else:
+                    conditions = condition
+
+            return queryset.exclude(conditions)
+        else:
+            return queryset

+ 86 - 0
misago/threads/views/list.py

@@ -0,0 +1,86 @@
+from django.core.urlresolvers import reverse
+from django.http import Http404
+from django.shortcuts import render
+from django.views.generic import View
+
+from misago.threads.viewmodels.category import ThreadsRootCategory, ThreadsCategory, PrivateThreadsCategory
+from misago.threads.viewmodels.threads import ForumThreads, PrivateThreads
+
+
+class ListBase(View):
+    category = None
+    threads = None
+
+    template_name = None
+
+    def get(self, request, list_type=None, **kwargs):
+        try:
+            page = int(request.GET.get('page', 0))
+        except (ValueError, TypeError):
+            raise Http404()
+
+        category = self.get_category(request, **kwargs)
+        threads = self.get_threads(request, category, list_type, page)
+
+        frontend_context = self.get_frontend_context(request, category, threads)
+        request.frontend_context.update(frontend_context)
+
+        template_context = self.get_template_context(request, category, threads)
+        return render(request, self.template_name, template_context)
+
+    def get_category(self, request, **kwargs):
+        return self.category(request, **kwargs)
+
+    def get_threads(self, request, category, list_type, page):
+        return self.threads(request, category, list_type, page)
+
+    def get_default_context(self):
+        return {}
+
+    def get_frontend_context(self, request, category, threads):
+        context = self.get_default_context()
+
+        context.update(category.get_frontend_context())
+        context.update(threads.get_frontend_context())
+
+        return context
+
+    def get_template_context(self, request, category, threads):
+        context = {}
+
+        context.update(category.get_template_context())
+        context.update(threads.get_template_context())
+
+        return context
+
+
+class ForumThreads(ListBase):
+    category = ThreadsRootCategory
+    threads = ForumThreads
+
+    template_name = 'misago/threadslist/threads.html'
+
+    def get_default_context(self):
+        return {
+            'THREADS_API': reverse('misago:api:thread-list'),
+            'MERGE_THREADS_API': reverse('misago:api:thread-merge'),
+        }
+
+
+class CategoryThreads(ForumThreads):
+    category = ThreadsCategory
+
+    template_name = 'misago/threadslist/category.html'
+
+    def get_category(self, request, **kwargs):
+        category = super(CategoryThreads, self).get_category(request, **kwargs)
+        if not category.level:
+            raise Http404() # disallow root category access
+        return category
+
+
+class PrivateThreads(ListBase):
+    category = PrivateThreadsCategory
+    threads = PrivateThreads
+
+    template_name = 'misago/threadslist/private_threads.html'

+ 4 - 4
misago/threads/views/thread.py

@@ -18,18 +18,18 @@ class BaseThread(View, ThreadViewMixin):
         base_posts_queryset = thread.post_set.select_related('poster').order_by('id')
         posts_queryset = exclude_invisible_posts(request.user, thread.category, base_posts_queryset)
 
-        list_page = paginate(posts_queryset, page, settings.MISAGO_POSTS_PER_PAGE, settings.MISAGO_THREAD_TAIL)
+        list_page = paginate(posts_queryset, page, settings.MISAGO_POSTS_PER_PAGE, settings.MISAGO_POSTS_TAIL)
         paginator = pagination_dict(list_page, include_page_range=False)
 
         posts = list(list_page.object_list)
 
-        request.frontend_context.update(self.set_frontend_context(request, thread, posts, paginator))
+        request.frontend_context.update(self.get_frontend_context(request, thread, posts, paginator))
         return render(request, self.template_name, self.get_context_data(request, thread, posts, paginator))
 
-    def set_frontend_context(self, request, thread, posts, paginator):
+    def get_frontend_context(self, request, thread, posts, paginator):
         return {}
 
-    def get_context_data(self, request, thread, posts, paginator):
+    def get_context_data(self, request, thread=None, posts=None, category=None, paginator=None):
         return {
             'category': thread.category,
             'thread': thread,

Некоторые файлы не были показаны из-за большого количества измененных файлов