Browse Source

mark as read backend, reducer and ui

Rafał Pitoń 9 years ago
parent
commit
af8d08a0c2

+ 85 - 6
frontend/src/components/threads/header.js

@@ -1,17 +1,50 @@
 import React from 'react';
 import React from 'react';
 import { Link } from 'react-router'; // jshint ignore:line
 import { Link } from 'react-router'; // jshint ignore:line
+import Button from 'misago/components/button'; // jshint ignore:line
 import DropdownToggle from 'misago/components/dropdown-toggle'; // jshint ignore:line
 import DropdownToggle from 'misago/components/dropdown-toggle'; // jshint ignore:line
 import { TabsNav } from 'misago/components/threads/navs'; // jshint ignore:line
 import { TabsNav } from 'misago/components/threads/navs'; // jshint ignore:line
+import { read } from 'misago/reducers/threads'; // jshint ignore:line
+import ajax from 'misago/services/ajax'; // jshint ignore:line
+import snackbar from 'misago/services/snackbar'; // jshint ignore:line
+import store from 'misago/services/store'; // jshint ignore:line
 
 
 export default class extends React.Component {
 export default class extends React.Component {
-  getClassName() {
-    if (this.props.route.lists.length > 1) {
-      return 'page-header tabbed';
-    } else {
-      return 'page-header';
-    }
+  constructor(props) {
+    super(props);
+
+    this.state = {
+      isBusy: false
+    };
   }
   }
 
 
+  /* jshint ignore:start */
+  markAsRead = () => {
+    this.setState({
+      isBusy: true
+    });
+
+    ajax.post(this.props.route.category.api_url.read).then(() => {
+      store.dispatch(read());
+
+      this.setState({
+        isBusy: false
+      });
+
+      snackbar.success(gettext("Threads have been marked as read."));
+    }, (rejection) => {
+      this.setState({
+        isBusy: false
+      });
+
+      snackbar.apiError(rejection);
+    });
+  };
+
+  startThread = () => {
+    console.log('TODO: Start thread form!');
+  };
+  /* jshint ignore:end */
+
   getGoBackButton() {
   getGoBackButton() {
     if (this.props.route.category.parent) {
     if (this.props.route.category.parent) {
       /* jshint ignore:start */
       /* jshint ignore:start */
@@ -27,6 +60,41 @@ export default class extends React.Component {
     }
     }
   }
   }
 
 
+  getStartThreadButton() {
+    if (this.props.user.id) {
+      /* jshint ignore:start */
+      return <Button className="btn btn-success btn-aligned hidden-xs hidden-sm"
+                     onClick={this.startThread}
+                     disabled={!this.props.isLoaded}>
+        <span className="material-icon">
+          chat
+        </span>
+        {gettext("Start thread")}
+      </Button>;
+      /* jshint ignore:end */
+    } else {
+      return null;
+    }
+  }
+
+  getMarkAsReadButton() {
+    if (this.props.user.id) {
+      /* jshint ignore:start */
+      return <Button className="btn btn-default btn-aligned hidden-xs hidden-sm"
+                     onClick={this.markAsRead}
+                     loading={this.state.isBusy}
+                     disabled={!this.props.isLoaded}>
+        <span className="material-icon">
+          playlist_add_check
+        </span>
+        {gettext("Mark as read")}
+      </Button>;
+      /* jshint ignore:end */
+    } else {
+      return null;
+    }
+  }
+
   getCompactNavToggle() {
   getCompactNavToggle() {
     if (this.props.route.lists.length > 1) {
     if (this.props.route.lists.length > 1) {
       /* jshint ignore:start */
       /* jshint ignore:start */
@@ -50,12 +118,23 @@ export default class extends React.Component {
     }
     }
   }
   }
 
 
+  getClassName() {
+    if (this.props.route.lists.length > 1) {
+      return 'page-header tabbed';
+    } else {
+      return 'page-header';
+    }
+  }
+
   render() {
   render() {
     /* jshint ignore:start */
     /* jshint ignore:start */
     return <div className={this.getClassName()}>
     return <div className={this.getClassName()}>
       <div className="container">
       <div className="container">
         {this.getGoBackButton()}
         {this.getGoBackButton()}
         <h1 className="pull-left">{this.props.title}</h1>
         <h1 className="pull-left">{this.props.title}</h1>
+
+        {this.getStartThreadButton()}
+        {this.getMarkAsReadButton()}
         {this.getCompactNavToggle()}
         {this.getCompactNavToggle()}
       </div>
       </div>
 
 

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

@@ -236,6 +236,8 @@ export default class extends WithDropdown {
     return <div className={this.getClassName()}>
     return <div className={this.getClassName()}>
       <Header title={this.getTitle()}
       <Header title={this.getTitle()}
               route={this.props.route}
               route={this.props.route}
+              user={this.props.user}
+              isLoaded={this.state.isLoaded}
               dropdown={this.state.dropdown}
               dropdown={this.state.dropdown}
               toggleNav={this.toggleNav}
               toggleNav={this.toggleNav}
               hideNav={this.hideNav} />
               hideNav={this.hideNav} />

+ 0 - 34
frontend/src/components/threads/toolbar.js

@@ -32,38 +32,6 @@ export default class extends React.Component {
     }
     }
   }
   }
 
 
-  getStartThreadButton() {
-    if (this.props.user.id) {
-      /* jshint ignore:start */
-      return <button type="button" className="btn btn-success toolbar-right"
-                     disabled={!this.props.isLoaded}>
-        <span className="material-icon">
-          chat
-        </span>
-        {gettext("Start thread")}
-      </button>;
-      /* jshint ignore:end */
-    } else {
-      return null;
-    }
-  }
-
-  getMarkAsReadButton() {
-    if (this.props.user.id) {
-      /* jshint ignore:start */
-      return <button type="button" className="btn btn-default toolbar-right"
-                     disabled={!this.props.isLoaded}>
-        <span className="material-icon">
-          playlist_add_check
-        </span>
-        {gettext("Mark as read")}
-      </button>;
-      /* jshint ignore:end */
-    } else {
-      return null;
-    }
-  }
-
   render() {
   render() {
     /* jshint ignore:start */
     /* jshint ignore:start */
     return <div className="toolbar with-js">
     return <div className="toolbar with-js">
@@ -72,8 +40,6 @@ export default class extends React.Component {
         {this.props.children}
         {this.props.children}
       </p>
       </p>
       {this.getModerationButton()}
       {this.getModerationButton()}
-      {this.getStartThreadButton()}
-      {this.getMarkAsReadButton()}
     </div>;
     </div>;
     /* jshint ignore:end */
     /* jshint ignore:end */
   }
   }

+ 17 - 3
frontend/src/reducers/threads.js

@@ -3,7 +3,8 @@ import concatUnique from 'misago/utils/concat-unique';
 
 
 export const APPEND_THREADS = 'APPEND_THREADS';
 export const APPEND_THREADS = 'APPEND_THREADS';
 export const HYDRATE_THREADS = 'HYDRATE_THREADS';
 export const HYDRATE_THREADS = 'HYDRATE_THREADS';
-export const PATCH_THREADS = 'PATCH_THREADS';
+export const PATCH_THREAD = 'PATCH_THREAD';
+export const READ_THREADS = 'READ_THREADS';
 
 
 export const MODERATION_PERMISSIONS = [
 export const MODERATION_PERMISSIONS = [
   'can_announce',
   'can_announce',
@@ -30,12 +31,18 @@ export function hydrate(items) {
 
 
 export function patch(thread, patch) {
 export function patch(thread, patch) {
   return {
   return {
-    type: PATCH_THREADS,
+    type: PATCH_THREAD,
     thread,
     thread,
     patch
     patch
   };
   };
 }
 }
 
 
+export function read() {
+  return {
+    type: READ_THREADS
+  };
+}
+
 export function getThreadModerationOptions(thread_acl) {
 export function getThreadModerationOptions(thread_acl) {
   let options = [];
   let options = [];
   MODERATION_PERMISSIONS.forEach(function(perm) {
   MODERATION_PERMISSIONS.forEach(function(perm) {
@@ -71,7 +78,7 @@ export default function thread(state=[], action=null) {
     case HYDRATE_THREADS:
     case HYDRATE_THREADS:
       return action.items.map(hydrateThread);
       return action.items.map(hydrateThread);
 
 
-    case PATCH_THREADS:
+    case PATCH_THREAD:
       return state.map(function(item) {
       return state.map(function(item) {
         if (item.id === action.thread.id) {
         if (item.id === action.thread.id) {
           return Object.assign({}, item, action.patch);
           return Object.assign({}, item, action.patch);
@@ -80,6 +87,13 @@ export default function thread(state=[], action=null) {
         }
         }
       });
       });
 
 
+    case READ_THREADS:
+      return state.map(function(item) {
+        return Object.assign({}, item, {
+          is_read: true
+        });
+      });
+
     default:
     default:
       return state;
       return state;
   }
   }

+ 40 - 8
frontend/tests/reducers/threads.js

@@ -1,13 +1,14 @@
 import assert from 'assert';
 import assert from 'assert';
 import moment from 'moment';
 import moment from 'moment';
-import reducer, { append, hydrate, patch, hydrateThread } from 'misago/reducers/threads';
+import reducer, { append, hydrate, patch, read, hydrateThread } from 'misago/reducers/threads';
 
 
 describe("Threads Reducer", function() {
 describe("Threads Reducer", function() {
   it("hydrates thread", function() {
   it("hydrates thread", function() {
     let timestamp = moment().format();
     let timestamp = moment().format();
     let thread = hydrateThread({
     let thread = hydrateThread({
       started_on: timestamp,
       started_on: timestamp,
-      last_post_on: timestamp
+      last_post_on: timestamp,
+      acl: {}
     });
     });
 
 
     assert.equal(thread.started_on.format(), timestamp,
     assert.equal(thread.started_on.format(), timestamp,
@@ -22,12 +23,14 @@ describe("Threads Reducer", function() {
       {
       {
         id: 1,
         id: 1,
         started_on: timestamp,
         started_on: timestamp,
-        last_post_on: timestamp
+        last_post_on: timestamp,
+        acl: {}
       },
       },
       {
       {
         id: 3,
         id: 3,
         started_on: timestamp,
         started_on: timestamp,
-        last_post_on: timestamp
+        last_post_on: timestamp,
+        acl: {}
       }
       }
     ]));
     ]));
 
 
@@ -47,26 +50,30 @@ describe("Threads Reducer", function() {
         id: 1,
         id: 1,
         started_on: timestamp,
         started_on: timestamp,
         last_post_on: timestamp,
         last_post_on: timestamp,
-        last_post: 4
+        last_post: 4,
+        acl: {}
       },
       },
       {
       {
         id: 3,
         id: 3,
         started_on: timestamp,
         started_on: timestamp,
         last_post_on: timestamp,
         last_post_on: timestamp,
-        last_post: 1
+        last_post: 1,
+        acl: {}
       }
       }
     ], append([
     ], append([
       {
       {
         id: 1,
         id: 1,
         started_on: timestamp,
         started_on: timestamp,
         last_post_on: timestamp,
         last_post_on: timestamp,
-        last_post: 5
+        last_post: 5,
+        acl: {}
       },
       },
       {
       {
         id: 2,
         id: 2,
         started_on: timestamp,
         started_on: timestamp,
         last_post_on: timestamp,
         last_post_on: timestamp,
-        last_post: 3
+        last_post: 3,
+        acl: {}
       }
       }
     ]));
     ]));
 
 
@@ -103,4 +110,29 @@ describe("Threads Reducer", function() {
     assert.equal(threads[0].patch, undefined, "first thread wasn't changed");
     assert.equal(threads[0].patch, undefined, "first thread wasn't changed");
     assert.equal(threads[1].patch, 'yep', "second thread was patched");
     assert.equal(threads[1].patch, 'yep', "second thread was patched");
   });
   });
+
+  it("marks threads as read", function() {
+    let timestamp = moment().format();
+    let threads = reducer([
+      {
+        id: 1,
+        started_on: timestamp,
+        last_post_on: timestamp,
+        last_post: 4,
+        is_read: false
+      },
+      {
+        id: 3,
+        started_on: timestamp,
+        last_post_on: timestamp,
+        last_post: 1,
+        is_read: false
+      }
+    ], read());
+
+    assert.equal(threads.length, 2, "state length remained same");
+
+    assert.ok(threads[0].is_read, "first thread was marked as read");
+    assert.ok(threads[1].is_read, "second thread was marked as read");
+  });
 });
 });

+ 10 - 3
misago/categories/categorytypes.py

@@ -13,18 +13,21 @@ class RootCategory(Thread):
     def get_category_absolute_url(self, category):
     def get_category_absolute_url(self, category):
         return reverse('misago:threads')
         return reverse('misago:threads')
 
 
-    def get_last_thread_url(self, category):
+    def get_category_last_thread_url(self, category):
         return '/threads/%s-%s/' % (
         return '/threads/%s-%s/' % (
             category.last_thread_slug,
             category.last_thread_slug,
             category.last_thread_id,
             category.last_thread_id,
         )
         )
 
 
-    def get_last_post_url(self, category):
+    def get_category_last_post_url(self, category):
         return '/threads/%s-%s/last/' % (
         return '/threads/%s-%s/last/' % (
             category.last_thread_slug,
             category.last_thread_slug,
             category.last_thread_id,
             category.last_thread_id,
         )
         )
 
 
+    def get_category_api_read_url(self, category):
+        return reverse('misago:api:thread-read')
+
 
 
 class Category(RootCategory):
 class Category(RootCategory):
     type_name = 'category'
     type_name = 'category'
@@ -36,4 +39,8 @@ class Category(RootCategory):
         return reverse('misago:category', kwargs={
         return reverse('misago:category', kwargs={
             'category_slug': category.slug,
             'category_slug': category.slug,
             'category_id': category.id,
             'category_id': category.id,
-        })
+        })
+
+    def get_category_api_read_url(self, category):
+        return '%s?category=%s' % (
+            reverse('misago:api:thread-read'), category.pk)

+ 5 - 2
misago/categories/models.py

@@ -147,10 +147,13 @@ class Category(MPTTModel):
         return self.thread_type.get_category_absolute_url(self)
         return self.thread_type.get_category_absolute_url(self)
 
 
     def get_last_thread_url(self):
     def get_last_thread_url(self):
-        return self.thread_type.get_last_thread_url(self)
+        return self.thread_type.get_category_last_thread_url(self)
 
 
     def get_last_post_url(self):
     def get_last_post_url(self):
-        return self.thread_type.get_last_post_url(self)
+        return self.thread_type.get_category_last_post_url(self)
+
+    def get_api_read_url(self):
+        return self.thread_type.get_category_api_read_url(self)
 
 
     def set_name(self, name):
     def set_name(self, name):
         self.name = name
         self.name = name

+ 13 - 5
misago/categories/serializers.py

@@ -20,11 +20,11 @@ def last_activity_detail(f):
             return None
             return None
 
 
         acl = self.get_acl(obj)
         acl = self.get_acl(obj)
-        if not all(
-                acl.get('can_see'),
-                acl.get('can_browse'),
-                acl.get('can_see_all_threads')
-            ):
+        if not all((
+                    acl.get('can_see'),
+                    acl.get('can_browse'),
+                    acl.get('can_see_all_threads')
+                )):
             return None
             return None
 
 
         return f(self, obj)
         return f(self, obj)
@@ -41,6 +41,7 @@ class CategorySerializer(serializers.ModelSerializer):
     last_post_url = serializers.SerializerMethodField()
     last_post_url = serializers.SerializerMethodField()
     last_thread_url = serializers.SerializerMethodField()
     last_thread_url = serializers.SerializerMethodField()
     acl = serializers.SerializerMethodField()
     acl = serializers.SerializerMethodField()
+    api_url = serializers.SerializerMethodField()
 
 
     class Meta:
     class Meta:
         model = Category
         model = Category
@@ -63,6 +64,7 @@ class CategorySerializer(serializers.ModelSerializer):
             'last_post_url',
             'last_post_url',
             'last_poster_url',
             'last_poster_url',
             'acl',
             'acl',
+            'api_url',
         )
         )
 
 
     def get_parent(self, obj):
     def get_parent(self, obj):
@@ -122,6 +124,11 @@ class CategorySerializer(serializers.ModelSerializer):
         except AttributeError:
         except AttributeError:
             return {}
             return {}
 
 
+    def get_api_url(self, obj):
+        return {
+            'read': obj.get_api_read_url(),
+        }
+
 
 
 class IndexCategorySerializer(CategorySerializer):
 class IndexCategorySerializer(CategorySerializer):
     class Meta:
     class Meta:
@@ -133,6 +140,7 @@ class IndexCategorySerializer(CategorySerializer):
             'description',
             'description',
             'css_class',
             'css_class',
             'absolute_url',
             'absolute_url',
+            'api_url',
         )
         )
 
 
 
 

+ 20 - 11
misago/readtracker/categoriestracker.py

@@ -21,7 +21,7 @@ def make_read_aware(user, categories):
 
 
     categories_dict = {}
     categories_dict = {}
     for category in categories:
     for category in categories:
-        category.last_read_on = user.reads_cutoff
+        category.last_read_on = user.joined_on
         category.is_read = not is_date_tracked(category.last_post_on, user)
         category.is_read = not is_date_tracked(category.last_post_on, user)
         if not category.is_read:
         if not category.is_read:
             categories_dict[category.pk] = category
             categories_dict[category.pk] = category
@@ -46,12 +46,12 @@ def make_read(categories):
 def start_record(user, category):
 def start_record(user, category):
     user.categoryread_set.create(
     user.categoryread_set.create(
         category=category,
         category=category,
-        last_read_on=user.reads_cutoff,
+        last_read_on=user.joined_on,
     )
     )
 
 
 
 
 def sync_record(user, category):
 def sync_record(user, category):
-    cutoff_date = user.reads_cutoff
+    cutoff_date = user.joined_on
 
 
     try:
     try:
         category_record = user.categoryread_set.get(category=category)
         category_record = user.categoryread_set.get(category=category)
@@ -94,15 +94,24 @@ def sync_record(user, category):
 
 
 
 
 def read_category(user, category):
 def read_category(user, category):
-    try:
-        category_record = user.categoryread_set.get(category=category)
-        category_record.last_read_on = timezone.now()
-        category_record.save(update_fields=['last_read_on'])
-    except CategoryRead.DoesNotExist:
-        user.categoryread_set.create(
+    if category.is_leaf_node():
+        categories = [category]
+    else:
+        categories = category.get_descendants(include_self=True)
+
+    user.categoryread_set.filter(category__in=categories).delete()
+
+    now = timezone.now()
+    new_reads = []
+    for category in categories:
+        new_reads.append(CategoryRead(
+            user=user,
             category=category,
             category=category,
-            last_read_on=timezone.now(),
-        )
+            last_read_on=now,
+        ))
+
+    if new_reads:
+        CategoryRead.objects.bulk_create(new_reads)
 
 
     signals.category_read.send(sender=user, category=category)
     signals.category_read.send(sender=user, category=category)
 
 

+ 1 - 1
misago/readtracker/dates.py

@@ -8,6 +8,6 @@ def is_date_tracked(date, user, category_read_cutoff=None):
         if category_read_cutoff and category_read_cutoff > date:
         if category_read_cutoff and category_read_cutoff > date:
             return False
             return False
         else:
         else:
-            return date > user.reads_cutoff
+            return date > user.joined_on
     else:
     else:
         return False
         return False

+ 1 - 1
misago/readtracker/tests/test_dates.py

@@ -8,7 +8,7 @@ from misago.readtracker.dates import is_date_tracked
 
 
 class MockUser(object):
 class MockUser(object):
     def __init__(self):
     def __init__(self):
-        self.reads_cutoff = timezone.now()
+        self.joined_on = timezone.now()
 
 
 
 
 class ReadTrackerDatesTests(TestCase):
 class ReadTrackerDatesTests(TestCase):

+ 30 - 14
misago/readtracker/tests/test_readtracker.py

@@ -56,14 +56,14 @@ class CategorysTrackerTests(ReadTrackerTests):
 
 
     def test_make_read_aware_sets_read_flag_for_category_with_old_thread(self):
     def test_make_read_aware_sets_read_flag_for_category_with_old_thread(self):
         """make_read_aware sets read flag on category with old thread"""
         """make_read_aware sets read flag on category with old thread"""
-        self.category.last_post_on = self.user.reads_cutoff - timedelta(days=1)
+        self.category.last_post_on = self.user.joined_on - timedelta(days=1)
 
 
         categoriestracker.make_read_aware(self.user, self.categories)
         categoriestracker.make_read_aware(self.user, self.categories)
         self.assertTrue(self.category.is_read)
         self.assertTrue(self.category.is_read)
 
 
     def test_make_read_aware_sets_unread_flag_for_category_with_new_thread(self):
     def test_make_read_aware_sets_unread_flag_for_category_with_new_thread(self):
         """make_read_aware sets unread flag on category with new thread"""
         """make_read_aware sets unread flag on category with new thread"""
-        self.category.last_post_on = self.user.reads_cutoff + timedelta(days=1)
+        self.category.last_post_on = self.user.joined_on + timedelta(days=1)
 
 
         categoriestracker.make_read_aware(self.user, self.categories)
         categoriestracker.make_read_aware(self.user, self.categories)
         self.assertFalse(self.category.is_read)
         self.assertFalse(self.category.is_read)
@@ -82,7 +82,7 @@ class CategorysTrackerTests(ReadTrackerTests):
         sync_record sets read flag on category with old thread,
         sync_record sets read flag on category with old thread,
         then changes flag to unread when new reply is posted
         then changes flag to unread when new reply is posted
         """
         """
-        self.post_thread(self.user.reads_cutoff - timedelta(days=1))
+        self.post_thread(self.user.joined_on - timedelta(days=1))
 
 
         add_acl(self.user, self.categories)
         add_acl(self.user, self.categories)
         categoriestracker.sync_record(self.user, self.category)
         categoriestracker.sync_record(self.user, self.category)
@@ -91,7 +91,7 @@ class CategorysTrackerTests(ReadTrackerTests):
         categoriestracker.make_read_aware(self.user, self.categories)
         categoriestracker.make_read_aware(self.user, self.categories)
         self.assertTrue(self.category.is_read)
         self.assertTrue(self.category.is_read)
 
 
-        thread = self.post_thread(self.user.reads_cutoff + timedelta(days=1))
+        thread = self.post_thread(self.user.joined_on + timedelta(days=1))
         categoriestracker.sync_record(self.user, self.category)
         categoriestracker.sync_record(self.user, self.category)
         categoriestracker.make_read_aware(self.user, self.categories)
         categoriestracker.make_read_aware(self.user, self.categories)
         self.assertFalse(self.category.is_read)
         self.assertFalse(self.category.is_read)
@@ -101,7 +101,7 @@ class CategorysTrackerTests(ReadTrackerTests):
         sync_record sets read flag on category with old thread,
         sync_record sets read flag on category with old thread,
         then keeps flag to unread when new reply is posted
         then keeps flag to unread when new reply is posted
         """
         """
-        self.post_thread(self.user.reads_cutoff + timedelta(days=1))
+        self.post_thread(self.user.joined_on + timedelta(days=1))
 
 
         add_acl(self.user, self.categories)
         add_acl(self.user, self.categories)
         categoriestracker.sync_record(self.user, self.category)
         categoriestracker.sync_record(self.user, self.category)
@@ -110,16 +110,16 @@ class CategorysTrackerTests(ReadTrackerTests):
         categoriestracker.make_read_aware(self.user, self.categories)
         categoriestracker.make_read_aware(self.user, self.categories)
         self.assertFalse(self.category.is_read)
         self.assertFalse(self.category.is_read)
 
 
-        self.post_thread(self.user.reads_cutoff + timedelta(days=1))
+        self.post_thread(self.user.joined_on + timedelta(days=1))
         categoriestracker.sync_record(self.user, self.category)
         categoriestracker.sync_record(self.user, self.category)
         categoriestracker.make_read_aware(self.user, self.categories)
         categoriestracker.make_read_aware(self.user, self.categories)
         self.assertFalse(self.category.is_read)
         self.assertFalse(self.category.is_read)
 
 
     def test_sync_record_for_category_with_deleted_threads(self):
     def test_sync_record_for_category_with_deleted_threads(self):
         """unread category reverts to read after its emptied"""
         """unread category reverts to read after its emptied"""
-        self.post_thread(self.user.reads_cutoff + timedelta(days=1))
-        self.post_thread(self.user.reads_cutoff + timedelta(days=1))
-        self.post_thread(self.user.reads_cutoff + timedelta(days=1))
+        self.post_thread(self.user.joined_on + timedelta(days=1))
+        self.post_thread(self.user.joined_on + timedelta(days=1))
+        self.post_thread(self.user.joined_on + timedelta(days=1))
 
 
         add_acl(self.user, self.categories)
         add_acl(self.user, self.categories)
         categoriestracker.sync_record(self.user, self.category)
         categoriestracker.sync_record(self.user, self.category)
@@ -135,10 +135,10 @@ class CategorysTrackerTests(ReadTrackerTests):
 
 
     def test_sync_record_for_category_with_many_threads(self):
     def test_sync_record_for_category_with_many_threads(self):
         """sync_record sets unread flag on category with many threads"""
         """sync_record sets unread flag on category with many threads"""
-        self.post_thread(self.user.reads_cutoff + timedelta(days=1))
-        self.post_thread(self.user.reads_cutoff - timedelta(days=1))
-        self.post_thread(self.user.reads_cutoff + timedelta(days=1))
-        self.post_thread(self.user.reads_cutoff - timedelta(days=1))
+        self.post_thread(self.user.joined_on + timedelta(days=1))
+        self.post_thread(self.user.joined_on - timedelta(days=1))
+        self.post_thread(self.user.joined_on + timedelta(days=1))
+        self.post_thread(self.user.joined_on - timedelta(days=1))
 
 
         add_acl(self.user, self.categories)
         add_acl(self.user, self.categories)
         categoriestracker.sync_record(self.user, self.category)
         categoriestracker.sync_record(self.user, self.category)
@@ -147,11 +147,27 @@ class CategorysTrackerTests(ReadTrackerTests):
         categoriestracker.make_read_aware(self.user, self.categories)
         categoriestracker.make_read_aware(self.user, self.categories)
         self.assertFalse(self.category.is_read)
         self.assertFalse(self.category.is_read)
 
 
-        self.post_thread(self.user.reads_cutoff + timedelta(days=1))
+        self.post_thread(self.user.joined_on + timedelta(days=1))
         categoriestracker.sync_record(self.user, self.category)
         categoriestracker.sync_record(self.user, self.category)
         categoriestracker.make_read_aware(self.user, self.categories)
         categoriestracker.make_read_aware(self.user, self.categories)
         self.assertFalse(self.category.is_read)
         self.assertFalse(self.category.is_read)
 
 
+    def test_read_leaf_category(self):
+        """read_category reads leaf category for user"""
+        categoriestracker.read_category(self.user, self.category)
+
+        self.assertTrue(self.user.categoryread_set.get(category=self.category))
+
+    def test_read_root_category(self):
+        """read_category reads category and its subcategories for user"""
+        root_category = Category.objects.root_category()
+        categoriestracker.read_category(self.user, root_category)
+
+        root_read = self.user.categoryread_set.get(category=root_category)
+        child_read = self.user.categoryread_set.get(category=self.category)
+
+        self.assertEqual(root_read.last_read_on, child_read.last_read_on)
+
 
 
 class ThreadsTrackerTests(ReadTrackerTests):
 class ThreadsTrackerTests(ReadTrackerTests):
     def setUp(self):
     def setUp(self):

+ 0 - 52
misago/readtracker/tests/test_views.py

@@ -1,52 +0,0 @@
-from django.contrib.auth import get_user_model
-from django.core.urlresolvers import reverse
-from django.utils.translation import ugettext as _
-
-from misago.categories.models import Category
-from misago.users.testutils import AuthenticatedUserTestCase
-from misago.threads import testutils
-
-from misago.readtracker.categoriestracker import make_read_aware
-
-
-class AuthenticatedTests(AuthenticatedUserTestCase):
-    def test_read_all_threads(self):
-        """read_all view updates reads cutoff on user model"""
-        category = Category.objects.all_categories()[:1][0]
-        threads = [testutils.post_thread(category) for t in xrange(10)]
-
-        category = Category.objects.get(id=category.id)
-        make_read_aware(self.user, [category])
-        self.assertFalse(category.is_read)
-
-        response = self.client.post(reverse('misago:read_all'))
-        self.assertEqual(response.status_code, 302)
-
-        category = Category.objects.get(id=category.id)
-        user = get_user_model().objects.get(id=self.user.id)
-
-        make_read_aware(user, [category])
-        self.assertTrue(category.is_read)
-
-    def test_read_category(self):
-        """read_category view updates reads cutoff on category tracker"""
-        category = Category.objects.all_categories()[:1][0]
-        threads = [testutils.post_thread(category) for t in xrange(10)]
-
-        category = Category.objects.get(id=category.id)
-        make_read_aware(self.user, [category])
-        self.assertFalse(category.is_read)
-
-        response = self.client.post(reverse('misago:read_category', kwargs={
-            'category_id': category.id
-        }))
-
-        self.assertEqual(response.status_code, 302)
-        self.assertTrue(
-            response['location'].endswith(category.get_absolute_url()))
-
-        category = Category.objects.get(id=category.id)
-        user = get_user_model().objects.get(id=self.user.id)
-
-        make_read_aware(user, [category])
-        self.assertTrue(category.is_read)

+ 1 - 1
misago/readtracker/threadstracker.py

@@ -83,7 +83,7 @@ def make_thread_read_aware(user, thread):
     if user.is_anonymous():
     if user.is_anonymous():
         thread.last_read_on = timezone.now()
         thread.last_read_on = timezone.now()
     else:
     else:
-        thread.last_read_on = user.reads_cutoff
+        thread.last_read_on = user.joined_on
 
 
     if user.is_authenticated() and is_date_tracked(thread.last_post_on, user):
     if user.is_authenticated() and is_date_tracked(thread.last_post_on, user):
         thread.is_read = False
         thread.is_read = False

+ 0 - 7
misago/readtracker/urls.py

@@ -1,7 +0,0 @@
-from django.conf.urls import include, patterns, url
-
-
-urlpatterns = patterns('misago.readtracker.views',
-    url(r'^read-all/$', 'read_all', name='read_all'),
-    url(r'^read-category/(?P<category_id>\d+)/$', 'read_category', name='read_category'),
-)

+ 0 - 45
misago/readtracker/views.py

@@ -1,45 +0,0 @@
-from django.contrib import messages
-from django.db.transaction import atomic
-from django.shortcuts import get_object_or_404, redirect
-from django.utils import timezone
-from django.utils.translation import ugettext as _
-from django.views.decorators.cache import never_cache
-from django.views.decorators.csrf import csrf_protect
-
-from misago.categories.models import Category
-from misago.core.decorators import require_POST
-from misago.users.decorators import deny_guests
-
-from misago.readtracker import categoriestracker
-from misago.readtracker.signals import all_read
-
-
-def read_view(f):
-    @deny_guests
-    @require_POST
-    @csrf_protect
-    @never_cache
-    @atomic
-    def decorator(request, *args, **kwargs):
-        return f(request, *args, **kwargs)
-    return decorator
-
-
-@read_view
-def read_all(request):
-    request.user.reads_cutoff = timezone.now()
-    request.user.save(update_fields=['reads_cutoff'])
-
-    all_read.send(sender=request.user)
-
-    messages.info(request, _("All categories and threads were marked as read."))
-    return redirect('misago:index')
-
-
-@read_view
-def read_category(request, category_id):
-    category = get_object_or_404(Category.objects, id=category_id)
-    categoriestracker.read_category(request.user, category)
-
-    messages.info(request, _("Threads were marked as read."))
-    return redirect(category.get_absolute_url())

+ 7 - 7
misago/static/misago/js/misago.js

@@ -1,13 +1,13 @@
 !function e(t,n,r){function a(s,i){if(!n[s]){if(!t[s]){var u="function"==typeof require&&require;if(!i&&u)return u(s,!0);if(o)return o(s,!0);var l=new Error("Cannot find module '"+s+"'");throw l.code="MODULE_NOT_FOUND",l}var c=n[s]={exports:{}};t[s][0].call(c.exports,function(e){var n=t[s][1][e];return a(n?n:e)},c,c.exports,e,t,n,r)}return n[s].exports}for(var o="function"==typeof require&&require,s=0;s<r.length;s++)a(r[s]);return a}({1:[function(e,t,n){function r(){c=!1,i.length?l=i.concat(l):f=-1,l.length&&a()}function a(){if(!c){var e=setTimeout(r);c=!0;for(var t=l.length;t;){for(i=l,l=[];++f<t;)i&&i[f].run();f=-1,t=l.length}i=null,c=!1,clearTimeout(e)}}function o(e,t){this.fun=e,this.array=t}function s(){}var i,u=t.exports={},l=[],c=!1,f=-1;u.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];l.push(new o(e,t)),1!==l.length||c||setTimeout(a,0)},o.prototype.run=function(){this.fun.apply(null,this.array)},u.title="browser",u.browser=!0,u.env={},u.argv=[],u.version="",u.versions={},u.on=s,u.addListener=s,u.once=s,u.off=s,u.removeListener=s,u.removeAllListeners=s,u.emit=s,u.binding=function(e){throw new Error("process.binding is not supported")},u.cwd=function(){return"/"},u.chdir=function(e){throw new Error("process.chdir is not supported")},u.umask=function(){return 0}},{}],2:[function(e,t,n){(function(t){"use strict";function r(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")}var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Misago=void 0;var s=e("../../../../documents/misago/frontend/src/utils/ordered-list"),i=r(s),u=n.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 n=new i["default"](this._initializers).orderedValues();n.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}(),l=new u;t.misago=l,n["default"]=l}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../../../../documents/misago/frontend/src/utils/ordered-list":182}],3:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){u["default"].init(s["default"].get("CSRF_COOKIE_NAME"))}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/ajax"),u=r(i);s["default"].addInitializer({name:"ajax",initializer:a})},{"../../../../../documents/misago/frontend/src/index":156,"../../../../../documents/misago/frontend/src/services/ajax":164}],4:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){u["default"].init(d["default"],m["default"],c["default"])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/auth"),u=r(i),l=e("../../../../../documents/misago/frontend/src/services/modal"),c=r(l),f=e("../../../../../documents/misago/frontend/src/services/store"),d=r(f),p=e("../../../../../documents/misago/frontend/src/services/local-storage"),m=r(p);s["default"].addInitializer({name:"auth",initializer:a,after:"store"})},{"../../../../../documents/misago/frontend/src/index":156,"../../../../../documents/misago/frontend/src/services/auth":165,"../../../../../documents/misago/frontend/src/services/local-storage":168,"../../../../../documents/misago/frontend/src/services/modal":170,"../../../../../documents/misago/frontend/src/services/store":174}],5:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){c["default"].init(e,u["default"],d["default"],m["default"])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/ajax"),u=r(i),l=e("../../../../../documents/misago/frontend/src/services/captcha"),c=r(l),f=e("../../../../../documents/misago/frontend/src/services/include"),d=r(f),p=e("../../../../../documents/misago/frontend/src/services/snackbar"),m=r(p);s["default"].addInitializer({name:"captcha",initializer:a})},{"../../../../../documents/misago/frontend/src/index":156,"../../../../../documents/misago/frontend/src/services/ajax":164,"../../../../../documents/misago/frontend/src/services/captcha":166,"../../../../../documents/misago/frontend/src/services/include":167,"../../../../../documents/misago/frontend/src/services/snackbar":173}],6:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){(0,f["default"])((0,o.connect)(u.select)(l["default"]),"auth-message-mount")}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("react-redux"),s=e("../../../../../../documents/misago/frontend/src/index"),i=r(s),u=e("../../../../../../documents/misago/frontend/src/components/auth-message"),l=r(u),c=e("../../../../../../documents/misago/frontend/src/utils/mount-component"),f=r(c);i["default"].addInitializer({name:"component:auth-message",initializer:a,after:"store"})},{"../../../../../../documents/misago/frontend/src/components/auth-message":55,"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/utils/mount-component":181,"react-redux":"react-redux"}],7:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){e.has("BAN_MESSAGE")&&(0,u["default"])(e.get("BAN_MESSAGE"),!1)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../../documents/misago/frontend/src/utils/banned-page"),u=r(i);s["default"].addInitializer({name:"component:baned-page",initializer:a,after:"store"})},{"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/utils/banned-page":176}],8:[function(e,t,n){"use strict";function r(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(n,"__esModule",{value:!0}),n["default"]=a;var o=e("react-redux"),s=e("../../../../../../documents/misago/frontend/src/components/categories/root"),i=r(s),u=e("../../../../../../documents/misago/frontend/src/index"),l=r(u),c=e("../../../../../../documents/misago/frontend/src/utils/mount-component"),f=r(c);l["default"].addInitializer({name:"component:reset-password-form",initializer:a,after:"store"})},{"../../../../../../documents/misago/frontend/src/components/categories/root":63,"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/utils/mount-component":181,"react-redux":"react-redux"}],9:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){e.has("USER_OPTIONS")&&(0,c["default"])({root:u["default"].get("USERCP_URL"),component:s["default"],paths:(0,o.paths)()})}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/components/options/root"),s=r(o),i=e("../../../../../../documents/misago/frontend/src/index"),u=r(i),l=e("../../../../../../documents/misago/frontend/src/utils/routed-component"),c=r(l);u["default"].addInitializer({name:"component:options",initializer:a,after:"store"})},{"../../../../../../documents/misago/frontend/src/components/options/root":84,"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/utils/routed-component":185}],10:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){e.has("PROFILE")&&e.has("PROFILE_PAGES")&&(0,f["default"])({root:l["default"].get("PROFILE").absolute_url,component:(0,o.connect)(s.select)(i["default"]),paths:(0,s.paths)()})}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("react-redux"),s=e("../../../../../../documents/misago/frontend/src/components/profile/root"),i=r(s),u=e("../../../../../../documents/misago/frontend/src/index"),l=r(u),c=e("../../../../../../documents/misago/frontend/src/utils/routed-component"),f=r(c);l["default"].addInitializer({name:"component:profile",initializer:a,after:"reducer:profile-hydrate"})},{"../../../../../../documents/misago/frontend/src/components/profile/root":101,"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/utils/routed-component":185,"react-redux":"react-redux"}],11:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){document.getElementById("request-activation-link-mount")&&(0,c["default"])(u["default"],"request-activation-link-mount",!1)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../../documents/misago/frontend/src/components/request-activation-link"),u=r(i),l=e("../../../../../../documents/misago/frontend/src/utils/mount-component"),c=r(l);s["default"].addInitializer({name:"component:request-activation-link",initializer:a,after:"store"})},{"../../../../../../documents/misago/frontend/src/components/request-activation-link":105,"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/utils/mount-component":181}],12:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){document.getElementById("request-password-reset-mount")&&(0,c["default"])(u["default"],"request-password-reset-mount",!1)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../../documents/misago/frontend/src/components/request-password-reset"),u=r(i),l=e("../../../../../../documents/misago/frontend/src/utils/mount-component"),c=r(l);s["default"].addInitializer({name:"component:request-password-reset",initializer:a,after:"store"})},{"../../../../../../documents/misago/frontend/src/components/request-password-reset":106,"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/utils/mount-component":181}],13:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){document.getElementById("reset-password-form-mount")&&(0,c["default"])(u["default"],"reset-password-form-mount",!1)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../../documents/misago/frontend/src/components/reset-password-form"),u=r(i),l=e("../../../../../../documents/misago/frontend/src/utils/mount-component"),c=r(l);s["default"].addInitializer({name:"component:reset-password-form",initializer:a,after:"store"})},{"../../../../../../documents/misago/frontend/src/components/reset-password-form":107,"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/utils/mount-component":181}],14:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){(0,c["default"])((0,o.connect)(u.select)(u.Snackbar),"snackbar-mount")}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("react-redux"),s=e("../../../../../../documents/misago/frontend/src/index"),i=r(s),u=e("../../../../../../documents/misago/frontend/src/components/snackbar"),l=e("../../../../../../documents/misago/frontend/src/utils/mount-component"),c=r(l);i["default"].addInitializer({name:"component:snackbar",initializer:a,after:"snackbar"})},{"../../../../../../documents/misago/frontend/src/components/snackbar":111,"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/utils/mount-component":181,"react-redux":"react-redux"}],15:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){e.has("THREADS")&&e.has("CATEGORIES")&&(0,l["default"])({paths:(0,o.paths)()})}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/components/threads/root"),s=e("../../../../../../documents/misago/frontend/src/index"),i=r(s),u=e("../../../../../../documents/misago/frontend/src/utils/routed-component"),l=r(u);i["default"].addInitializer({name:"component:threads",initializer:a,after:"store"})},{"../../../../../../documents/misago/frontend/src/components/threads/root":125,"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/utils/routed-component":185}],16:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){(0,c["default"])((0,o.connect)(u.select)(u.UserMenu),"user-menu-mount"),(0,c["default"])((0,o.connect)(u.select)(u.CompactUserMenu),"user-menu-compact-mount")}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("react-redux"),s=e("../../../../../../documents/misago/frontend/src/index"),i=r(s),u=e("../../../../../../documents/misago/frontend/src/components/user-menu/root"),l=e("../../../../../../documents/misago/frontend/src/utils/mount-component"),c=r(l);i["default"].addInitializer({name:"component:user-menu",initializer:a,after:"store"})},{"../../../../../../documents/misago/frontend/src/components/user-menu/root":130,"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/utils/mount-component":181,"react-redux":"react-redux"}],17:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){e.has("USERS_LISTS")&&(0,c["default"])({root:u["default"].get("USERS_LIST_URL"),component:s["default"],paths:(0,o.paths)()})}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/components/users/root"),s=r(o),i=e("../../../../../../documents/misago/frontend/src/index"),u=r(i),l=e("../../../../../../documents/misago/frontend/src/utils/routed-component"),c=r(l);u["default"].addInitializer({name:"component:users",initializer:a,after:"store"})},{"../../../../../../documents/misago/frontend/src/components/users/root":153,"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/utils/routed-component":185}],18:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){u["default"].init(e.get("STATIC_URL"))}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/include"),u=r(i);s["default"].addInitializer({name:"include",initializer:a})},{"../../../../../documents/misago/frontend/src/index":156,"../../../../../documents/misago/frontend/src/services/include":167}],19:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){u["default"].init("misago_")}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/local-storage"),u=r(i);s["default"].addInitializer({name:"local-storage",initializer:a})},{"../../../../../documents/misago/frontend/src/index":156,"../../../../../documents/misago/frontend/src/services/local-storage":168}],20:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){var e=document.getElementById("mobile-navbar-dropdown-mount");e&&u["default"].init(e)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/mobile-navbar-dropdown"),u=r(i);s["default"].addInitializer({name:"dropdown",initializer:a,before:"store"})},{"../../../../../documents/misago/frontend/src/index":156,"../../../../../documents/misago/frontend/src/services/mobile-navbar-dropdown":169}],21:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){var e=document.getElementById("modal-mount");e&&u["default"].init(e)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/modal"),u=r(i);s["default"].addInitializer({name:"modal",initializer:a,before:"store"})},{"../../../../../documents/misago/frontend/src/index":156,"../../../../../documents/misago/frontend/src/services/modal":170}],22:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){s["default"].locale($("html").attr("lang"))}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("moment"),s=r(o),i=e("../../../../../documents/misago/frontend/src/index"),u=r(i);u["default"].addInitializer({name:"moment",initializer:a})},{"../../../../../documents/misago/frontend/src/index":156,moment:"moment"}],23:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){u["default"].init(e.get("SETTINGS").forum_index_title,e.get("SETTINGS").forum_name)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/page-title"),u=r(i);s["default"].addInitializer({name:"page-title",initializer:a})},{"../../../../../documents/misago/frontend/src/index":156,"../../../../../documents/misago/frontend/src/services/page-title":171}],24:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){d["default"].init(u["default"],c["default"])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/ajax"),u=r(i),l=e("../../../../../documents/misago/frontend/src/services/snackbar"),c=r(l),f=e("../../../../../documents/misago/frontend/src/services/polls"),d=r(f);s["default"].addInitializer({name:"polls",initializer:a})},{"../../../../../documents/misago/frontend/src/index":156,"../../../../../documents/misago/frontend/src/services/ajax":164,"../../../../../documents/misago/frontend/src/services/polls":172,"../../../../../documents/misago/frontend/src/services/snackbar":173}],25:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){c["default"].addReducer("auth",u["default"],Object.assign({isAuthenticated:e.get("isAuthenticated"),isAnonymous:!e.get("isAuthenticated"),user:e.get("user")},i.initialState))}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../../documents/misago/frontend/src/reducers/auth"),u=r(i),l=e("../../../../../../documents/misago/frontend/src/services/store"),c=r(l);s["default"].addInitializer({name:"reducer:auth",initializer:a,before:"store"})},{"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/reducers/auth":157,"../../../../../../documents/misago/frontend/src/services/store":174}],26:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){s["default"].has("PROFILE")&&l["default"].dispatch((0,i.hydrate)(s["default"].get("PROFILE")))}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../../documents/misago/frontend/src/reducers/profile"),u=e("../../../../../../documents/misago/frontend/src/services/store"),l=r(u);s["default"].addInitializer({name:"reducer:profile-hydrate",initializer:a,after:"store"})},{"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/reducers/profile":158,"../../../../../../documents/misago/frontend/src/services/store":174}],27:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){c["default"].addReducer("profile",u["default"],{})}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../../documents/misago/frontend/src/reducers/profile"),u=r(i),l=e("../../../../../../documents/misago/frontend/src/services/store"),c=r(l);s["default"].addInitializer({name:"reducer:profile",initializer:a,before:"store"})},{"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/reducers/profile":158,"../../../../../../documents/misago/frontend/src/services/store":174}],28:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){c["default"].addReducer("snackbar",u["default"],i.initialState)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../../documents/misago/frontend/src/reducers/snackbar"),u=r(i),l=e("../../../../../../documents/misago/frontend/src/services/store"),c=r(l);s["default"].addInitializer({name:"reducer:snackbar",initializer:a,before:"store"})},{"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/reducers/snackbar":159,"../../../../../../documents/misago/frontend/src/services/store":174}],29:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){c["default"].addReducer("threads",u["default"],[])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../../documents/misago/frontend/src/reducers/threads"),u=r(i),l=e("../../../../../../documents/misago/frontend/src/services/store"),c=r(l);s["default"].addInitializer({name:"reducer:threads",initializer:a,before:"store"})},{"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/reducers/threads":160,"../../../../../../documents/misago/frontend/src/services/store":174}],30:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){c["default"].addReducer("tick",u["default"],i.initialState)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../../documents/misago/frontend/src/reducers/tick"),u=r(i),l=e("../../../../../../documents/misago/frontend/src/services/store"),c=r(l);s["default"].addInitializer({name:"reducer:tick",initializer:a,before:"store"})},{"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/reducers/tick":161,"../../../../../../documents/misago/frontend/src/services/store":174}],31:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){c["default"].addReducer("username-history",u["default"],[])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../../documents/misago/frontend/src/reducers/username-history"),u=r(i),l=e("../../../../../../documents/misago/frontend/src/services/store"),c=r(l);s["default"].addInitializer({name:"reducer:username-history",initializer:a,before:"store"})},{"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/reducers/username-history":162,"../../../../../../documents/misago/frontend/src/services/store":174}],32:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){c["default"].addReducer("users",u["default"],[])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../../documents/misago/frontend/src/reducers/users"),u=r(i),l=e("../../../../../../documents/misago/frontend/src/services/store"),c=r(l);s["default"].addInitializer({name:"reducer:users",initializer:a,before:"store"})},{"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/reducers/users":163,"../../../../../../documents/misago/frontend/src/services/store":174}],33:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){u["default"].init(c["default"])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/snackbar"),u=r(i),l=e("../../../../../documents/misago/frontend/src/services/store"),c=r(l);s["default"].addInitializer({name:"snackbar",initializer:a,after:"store"})},{"../../../../../documents/misago/frontend/src/index":156,"../../../../../documents/misago/frontend/src/services/snackbar":173,"../../../../../documents/misago/frontend/src/services/store":174}],34:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){u["default"].init()}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/store"),u=r(i);s["default"].addInitializer({name:"store",initializer:a,before:"_end"})},{"../../../../../documents/misago/frontend/src/index":156,"../../../../../documents/misago/frontend/src/services/store":174}],35:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){window.setInterval(function(){l["default"].dispatch((0,i.doTick)())},c)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/reducers/tick"),u=e("../../../../../documents/misago/frontend/src/services/store"),l=r(u),c=5e4;s["default"].addInitializer({name:"tick-start",initializer:a,after:"store"})},{"../../../../../documents/misago/frontend/src/index":156,"../../../../../documents/misago/frontend/src/reducers/tick":161,"../../../../../documents/misago/frontend/src/services/store":174}],36:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){c["default"].init(u["default"])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/include"),u=r(i),l=e("../../../../../documents/misago/frontend/src/services/zxcvbn"),c=r(l);s["default"].addInitializer({name:"zxcvbn",initializer:a})},{"../../../../../documents/misago/frontend/src/index":156,"../../../../../documents/misago/frontend/src/services/include":167,"../../../../../documents/misago/frontend/src/services/zxcvbn":175}],37:[function(e,t,n){function r(e){return null===e||void 0===e}function a(e){return e&&"object"==typeof e&&"number"==typeof e.length?"function"!=typeof e.copy||"function"!=typeof e.slice?!1:e.length>0&&"number"!=typeof e[0]?!1:!0:!1}function o(e,t,n){var o,c;if(r(e)||r(t))return!1;if(e.prototype!==t.prototype)return!1;if(u(e))return u(t)?(e=s.call(e),t=s.call(t),l(e,t,n)):!1;if(a(e)){if(!a(t))return!1;if(e.length!==t.length)return!1;for(o=0;o<e.length;o++)if(e[o]!==t[o])return!1;return!0}try{var f=i(e),d=i(t)}catch(p){return!1}if(f.length!=d.length)return!1;for(f.sort(),d.sort(),o=f.length-1;o>=0;o--)if(f[o]!=d[o])return!1;for(o=f.length-1;o>=0;o--)if(c=f[o],!l(e[c],t[c],n))return!1;return typeof e==typeof t}var s=Array.prototype.slice,i=e("./lib/keys.js"),u=e("./lib/is_arguments.js"),l=t.exports=function(e,t,n){return n||(n={}),e===t?!0:e instanceof Date&&t instanceof Date?e.getTime()===t.getTime():!e||!t||"object"!=typeof e&&"object"!=typeof t?n.strict?e===t:e==t:o(e,t,n)}},{"./lib/is_arguments.js":38,"./lib/keys.js":39}],38:[function(e,t,n){function r(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function a(e){return e&&"object"==typeof e&&"number"==typeof e.length&&Object.prototype.hasOwnProperty.call(e,"callee")&&!Object.prototype.propertyIsEnumerable.call(e,"callee")||!1}var o="[object Arguments]"==function(){return Object.prototype.toString.call(arguments)}();n=t.exports=o?r:a,n.supported=r,n.unsupported=a},{}],39:[function(e,t,n){function r(e){var t=[];for(var n in e)t.push(n);return t}n=t.exports="function"==typeof Object.keys?Object.keys:r,n.shim=r},{}],40:[function(e,t,n){"use strict";n.__esModule=!0;var r="PUSH";n.PUSH=r;var a="REPLACE";n.REPLACE=a;var o="POP";n.POP=o,n["default"]={PUSH:r,REPLACE:a,POP:o}},{}],41:[function(e,t,n){"use strict";function r(e,t,n){function r(){s=!0,n.apply(this,arguments)}function a(){s||(e>o?t.call(this,o++,a,r):r.apply(this,arguments))}var o=0,s=!1;a()}n.__esModule=!0,n.loopAsync=r},{}],42:[function(e,t,n){(function(t){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){return l+e}function o(e,n){try{window.sessionStorage.setItem(a(e),JSON.stringify(n))}catch(r){if(r.name===f)return void("production"!==t.env.NODE_ENV?u["default"](!1,"[history] Unable to save state; sessionStorage is not available due to security settings"):void 0);if(r.name===c&&0===window.sessionStorage.length)return void("production"!==t.env.NODE_ENV?u["default"](!1,"[history] Unable to save state; sessionStorage is not available in Safari private mode"):void 0);throw r}}function s(e){var n=void 0;try{n=window.sessionStorage.getItem(a(e))}catch(r){if(r.name===f)return"production"!==t.env.NODE_ENV?u["default"](!1,"[history] Unable to read state; sessionStorage is not available due to security settings"):void 0,null}if(n)try{return JSON.parse(n)}catch(r){}return null}n.__esModule=!0,n.saveState=o,n.readState=s;var i=e("warning"),u=r(i),l="@@History/",c="QuotaExceededError",f="SecurityError"}).call(this,e("_process"))},{_process:1,warning:54}],43:[function(e,t,n){"use strict";function r(e,t,n){e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent("on"+t,n)}function a(e,t,n){e.removeEventListener?e.removeEventListener(t,n,!1):e.detachEvent("on"+t,n)}function o(){return window.location.href.split("#")[1]||""}function s(e){window.location.replace(window.location.pathname+window.location.search+"#"+e)}function i(){return window.location.pathname+window.location.search+window.location.hash}function u(e){e&&window.history.go(e)}function l(e,t){t(window.confirm(e))}function c(){var e=navigator.userAgent;return-1===e.indexOf("Android 2.")&&-1===e.indexOf("Android 4.0")||-1===e.indexOf("Mobile Safari")||-1!==e.indexOf("Chrome")||-1!==e.indexOf("Windows Phone")?-1!==e.indexOf("CriOS")?!1:window.history&&"pushState"in window.history:!1}function f(){var e=navigator.userAgent;
 !function e(t,n,r){function a(s,i){if(!n[s]){if(!t[s]){var u="function"==typeof require&&require;if(!i&&u)return u(s,!0);if(o)return o(s,!0);var l=new Error("Cannot find module '"+s+"'");throw l.code="MODULE_NOT_FOUND",l}var c=n[s]={exports:{}};t[s][0].call(c.exports,function(e){var n=t[s][1][e];return a(n?n:e)},c,c.exports,e,t,n,r)}return n[s].exports}for(var o="function"==typeof require&&require,s=0;s<r.length;s++)a(r[s]);return a}({1:[function(e,t,n){function r(){c=!1,i.length?l=i.concat(l):f=-1,l.length&&a()}function a(){if(!c){var e=setTimeout(r);c=!0;for(var t=l.length;t;){for(i=l,l=[];++f<t;)i&&i[f].run();f=-1,t=l.length}i=null,c=!1,clearTimeout(e)}}function o(e,t){this.fun=e,this.array=t}function s(){}var i,u=t.exports={},l=[],c=!1,f=-1;u.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];l.push(new o(e,t)),1!==l.length||c||setTimeout(a,0)},o.prototype.run=function(){this.fun.apply(null,this.array)},u.title="browser",u.browser=!0,u.env={},u.argv=[],u.version="",u.versions={},u.on=s,u.addListener=s,u.once=s,u.off=s,u.removeListener=s,u.removeAllListeners=s,u.emit=s,u.binding=function(e){throw new Error("process.binding is not supported")},u.cwd=function(){return"/"},u.chdir=function(e){throw new Error("process.chdir is not supported")},u.umask=function(){return 0}},{}],2:[function(e,t,n){(function(t){"use strict";function r(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")}var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Misago=void 0;var s=e("../../../../documents/misago/frontend/src/utils/ordered-list"),i=r(s),u=n.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 n=new i["default"](this._initializers).orderedValues();n.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}(),l=new u;t.misago=l,n["default"]=l}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../../../../documents/misago/frontend/src/utils/ordered-list":182}],3:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){u["default"].init(s["default"].get("CSRF_COOKIE_NAME"))}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/ajax"),u=r(i);s["default"].addInitializer({name:"ajax",initializer:a})},{"../../../../../documents/misago/frontend/src/index":156,"../../../../../documents/misago/frontend/src/services/ajax":164}],4:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){u["default"].init(d["default"],m["default"],c["default"])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/auth"),u=r(i),l=e("../../../../../documents/misago/frontend/src/services/modal"),c=r(l),f=e("../../../../../documents/misago/frontend/src/services/store"),d=r(f),p=e("../../../../../documents/misago/frontend/src/services/local-storage"),m=r(p);s["default"].addInitializer({name:"auth",initializer:a,after:"store"})},{"../../../../../documents/misago/frontend/src/index":156,"../../../../../documents/misago/frontend/src/services/auth":165,"../../../../../documents/misago/frontend/src/services/local-storage":168,"../../../../../documents/misago/frontend/src/services/modal":170,"../../../../../documents/misago/frontend/src/services/store":174}],5:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){c["default"].init(e,u["default"],d["default"],m["default"])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/ajax"),u=r(i),l=e("../../../../../documents/misago/frontend/src/services/captcha"),c=r(l),f=e("../../../../../documents/misago/frontend/src/services/include"),d=r(f),p=e("../../../../../documents/misago/frontend/src/services/snackbar"),m=r(p);s["default"].addInitializer({name:"captcha",initializer:a})},{"../../../../../documents/misago/frontend/src/index":156,"../../../../../documents/misago/frontend/src/services/ajax":164,"../../../../../documents/misago/frontend/src/services/captcha":166,"../../../../../documents/misago/frontend/src/services/include":167,"../../../../../documents/misago/frontend/src/services/snackbar":173}],6:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){(0,f["default"])((0,o.connect)(u.select)(l["default"]),"auth-message-mount")}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("react-redux"),s=e("../../../../../../documents/misago/frontend/src/index"),i=r(s),u=e("../../../../../../documents/misago/frontend/src/components/auth-message"),l=r(u),c=e("../../../../../../documents/misago/frontend/src/utils/mount-component"),f=r(c);i["default"].addInitializer({name:"component:auth-message",initializer:a,after:"store"})},{"../../../../../../documents/misago/frontend/src/components/auth-message":55,"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/utils/mount-component":181,"react-redux":"react-redux"}],7:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){e.has("BAN_MESSAGE")&&(0,u["default"])(e.get("BAN_MESSAGE"),!1)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../../documents/misago/frontend/src/utils/banned-page"),u=r(i);s["default"].addInitializer({name:"component:baned-page",initializer:a,after:"store"})},{"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/utils/banned-page":176}],8:[function(e,t,n){"use strict";function r(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(n,"__esModule",{value:!0}),n["default"]=a;var o=e("react-redux"),s=e("../../../../../../documents/misago/frontend/src/components/categories/root"),i=r(s),u=e("../../../../../../documents/misago/frontend/src/index"),l=r(u),c=e("../../../../../../documents/misago/frontend/src/utils/mount-component"),f=r(c);l["default"].addInitializer({name:"component:reset-password-form",initializer:a,after:"store"})},{"../../../../../../documents/misago/frontend/src/components/categories/root":63,"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/utils/mount-component":181,"react-redux":"react-redux"}],9:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){e.has("USER_OPTIONS")&&(0,c["default"])({root:u["default"].get("USERCP_URL"),component:s["default"],paths:(0,o.paths)()})}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/components/options/root"),s=r(o),i=e("../../../../../../documents/misago/frontend/src/index"),u=r(i),l=e("../../../../../../documents/misago/frontend/src/utils/routed-component"),c=r(l);u["default"].addInitializer({name:"component:options",initializer:a,after:"store"})},{"../../../../../../documents/misago/frontend/src/components/options/root":84,"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/utils/routed-component":185}],10:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){e.has("PROFILE")&&e.has("PROFILE_PAGES")&&(0,f["default"])({root:l["default"].get("PROFILE").absolute_url,component:(0,o.connect)(s.select)(i["default"]),paths:(0,s.paths)()})}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("react-redux"),s=e("../../../../../../documents/misago/frontend/src/components/profile/root"),i=r(s),u=e("../../../../../../documents/misago/frontend/src/index"),l=r(u),c=e("../../../../../../documents/misago/frontend/src/utils/routed-component"),f=r(c);l["default"].addInitializer({name:"component:profile",initializer:a,after:"reducer:profile-hydrate"})},{"../../../../../../documents/misago/frontend/src/components/profile/root":101,"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/utils/routed-component":185,"react-redux":"react-redux"}],11:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){document.getElementById("request-activation-link-mount")&&(0,c["default"])(u["default"],"request-activation-link-mount",!1)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../../documents/misago/frontend/src/components/request-activation-link"),u=r(i),l=e("../../../../../../documents/misago/frontend/src/utils/mount-component"),c=r(l);s["default"].addInitializer({name:"component:request-activation-link",initializer:a,after:"store"})},{"../../../../../../documents/misago/frontend/src/components/request-activation-link":105,"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/utils/mount-component":181}],12:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){document.getElementById("request-password-reset-mount")&&(0,c["default"])(u["default"],"request-password-reset-mount",!1)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../../documents/misago/frontend/src/components/request-password-reset"),u=r(i),l=e("../../../../../../documents/misago/frontend/src/utils/mount-component"),c=r(l);s["default"].addInitializer({name:"component:request-password-reset",initializer:a,after:"store"})},{"../../../../../../documents/misago/frontend/src/components/request-password-reset":106,"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/utils/mount-component":181}],13:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){document.getElementById("reset-password-form-mount")&&(0,c["default"])(u["default"],"reset-password-form-mount",!1)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../../documents/misago/frontend/src/components/reset-password-form"),u=r(i),l=e("../../../../../../documents/misago/frontend/src/utils/mount-component"),c=r(l);s["default"].addInitializer({name:"component:reset-password-form",initializer:a,after:"store"})},{"../../../../../../documents/misago/frontend/src/components/reset-password-form":107,"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/utils/mount-component":181}],14:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){(0,c["default"])((0,o.connect)(u.select)(u.Snackbar),"snackbar-mount")}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("react-redux"),s=e("../../../../../../documents/misago/frontend/src/index"),i=r(s),u=e("../../../../../../documents/misago/frontend/src/components/snackbar"),l=e("../../../../../../documents/misago/frontend/src/utils/mount-component"),c=r(l);i["default"].addInitializer({name:"component:snackbar",initializer:a,after:"snackbar"})},{"../../../../../../documents/misago/frontend/src/components/snackbar":111,"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/utils/mount-component":181,"react-redux":"react-redux"}],15:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){e.has("THREADS")&&e.has("CATEGORIES")&&(0,l["default"])({paths:(0,o.paths)()})}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/components/threads/root"),s=e("../../../../../../documents/misago/frontend/src/index"),i=r(s),u=e("../../../../../../documents/misago/frontend/src/utils/routed-component"),l=r(u);i["default"].addInitializer({name:"component:threads",initializer:a,after:"store"})},{"../../../../../../documents/misago/frontend/src/components/threads/root":125,"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/utils/routed-component":185}],16:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){(0,c["default"])((0,o.connect)(u.select)(u.UserMenu),"user-menu-mount"),(0,c["default"])((0,o.connect)(u.select)(u.CompactUserMenu),"user-menu-compact-mount")}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("react-redux"),s=e("../../../../../../documents/misago/frontend/src/index"),i=r(s),u=e("../../../../../../documents/misago/frontend/src/components/user-menu/root"),l=e("../../../../../../documents/misago/frontend/src/utils/mount-component"),c=r(l);i["default"].addInitializer({name:"component:user-menu",initializer:a,after:"store"})},{"../../../../../../documents/misago/frontend/src/components/user-menu/root":130,"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/utils/mount-component":181,"react-redux":"react-redux"}],17:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){e.has("USERS_LISTS")&&(0,c["default"])({root:u["default"].get("USERS_LIST_URL"),component:s["default"],paths:(0,o.paths)()})}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/components/users/root"),s=r(o),i=e("../../../../../../documents/misago/frontend/src/index"),u=r(i),l=e("../../../../../../documents/misago/frontend/src/utils/routed-component"),c=r(l);u["default"].addInitializer({name:"component:users",initializer:a,after:"store"})},{"../../../../../../documents/misago/frontend/src/components/users/root":153,"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/utils/routed-component":185}],18:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){u["default"].init(e.get("STATIC_URL"))}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/include"),u=r(i);s["default"].addInitializer({name:"include",initializer:a})},{"../../../../../documents/misago/frontend/src/index":156,"../../../../../documents/misago/frontend/src/services/include":167}],19:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){u["default"].init("misago_")}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/local-storage"),u=r(i);s["default"].addInitializer({name:"local-storage",initializer:a})},{"../../../../../documents/misago/frontend/src/index":156,"../../../../../documents/misago/frontend/src/services/local-storage":168}],20:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){var e=document.getElementById("mobile-navbar-dropdown-mount");e&&u["default"].init(e)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/mobile-navbar-dropdown"),u=r(i);s["default"].addInitializer({name:"dropdown",initializer:a,before:"store"})},{"../../../../../documents/misago/frontend/src/index":156,"../../../../../documents/misago/frontend/src/services/mobile-navbar-dropdown":169}],21:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){var e=document.getElementById("modal-mount");e&&u["default"].init(e)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/modal"),u=r(i);s["default"].addInitializer({name:"modal",initializer:a,before:"store"})},{"../../../../../documents/misago/frontend/src/index":156,"../../../../../documents/misago/frontend/src/services/modal":170}],22:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){s["default"].locale($("html").attr("lang"))}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("moment"),s=r(o),i=e("../../../../../documents/misago/frontend/src/index"),u=r(i);u["default"].addInitializer({name:"moment",initializer:a})},{"../../../../../documents/misago/frontend/src/index":156,moment:"moment"}],23:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){u["default"].init(e.get("SETTINGS").forum_index_title,e.get("SETTINGS").forum_name)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/page-title"),u=r(i);s["default"].addInitializer({name:"page-title",initializer:a})},{"../../../../../documents/misago/frontend/src/index":156,"../../../../../documents/misago/frontend/src/services/page-title":171}],24:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){d["default"].init(u["default"],c["default"])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/ajax"),u=r(i),l=e("../../../../../documents/misago/frontend/src/services/snackbar"),c=r(l),f=e("../../../../../documents/misago/frontend/src/services/polls"),d=r(f);s["default"].addInitializer({name:"polls",initializer:a})},{"../../../../../documents/misago/frontend/src/index":156,"../../../../../documents/misago/frontend/src/services/ajax":164,"../../../../../documents/misago/frontend/src/services/polls":172,"../../../../../documents/misago/frontend/src/services/snackbar":173}],25:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){c["default"].addReducer("auth",u["default"],Object.assign({isAuthenticated:e.get("isAuthenticated"),isAnonymous:!e.get("isAuthenticated"),user:e.get("user")},i.initialState))}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../../documents/misago/frontend/src/reducers/auth"),u=r(i),l=e("../../../../../../documents/misago/frontend/src/services/store"),c=r(l);s["default"].addInitializer({name:"reducer:auth",initializer:a,before:"store"})},{"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/reducers/auth":157,"../../../../../../documents/misago/frontend/src/services/store":174}],26:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){s["default"].has("PROFILE")&&l["default"].dispatch((0,i.hydrate)(s["default"].get("PROFILE")))}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../../documents/misago/frontend/src/reducers/profile"),u=e("../../../../../../documents/misago/frontend/src/services/store"),l=r(u);s["default"].addInitializer({name:"reducer:profile-hydrate",initializer:a,after:"store"})},{"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/reducers/profile":158,"../../../../../../documents/misago/frontend/src/services/store":174}],27:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){c["default"].addReducer("profile",u["default"],{})}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../../documents/misago/frontend/src/reducers/profile"),u=r(i),l=e("../../../../../../documents/misago/frontend/src/services/store"),c=r(l);s["default"].addInitializer({name:"reducer:profile",initializer:a,before:"store"})},{"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/reducers/profile":158,"../../../../../../documents/misago/frontend/src/services/store":174}],28:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){c["default"].addReducer("snackbar",u["default"],i.initialState)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../../documents/misago/frontend/src/reducers/snackbar"),u=r(i),l=e("../../../../../../documents/misago/frontend/src/services/store"),c=r(l);s["default"].addInitializer({name:"reducer:snackbar",initializer:a,before:"store"})},{"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/reducers/snackbar":159,"../../../../../../documents/misago/frontend/src/services/store":174}],29:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){c["default"].addReducer("threads",u["default"],[])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../../documents/misago/frontend/src/reducers/threads"),u=r(i),l=e("../../../../../../documents/misago/frontend/src/services/store"),c=r(l);s["default"].addInitializer({name:"reducer:threads",initializer:a,before:"store"})},{"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/reducers/threads":160,"../../../../../../documents/misago/frontend/src/services/store":174}],30:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){c["default"].addReducer("tick",u["default"],i.initialState)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../../documents/misago/frontend/src/reducers/tick"),u=r(i),l=e("../../../../../../documents/misago/frontend/src/services/store"),c=r(l);s["default"].addInitializer({name:"reducer:tick",initializer:a,before:"store"})},{"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/reducers/tick":161,"../../../../../../documents/misago/frontend/src/services/store":174}],31:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){c["default"].addReducer("username-history",u["default"],[])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../../documents/misago/frontend/src/reducers/username-history"),u=r(i),l=e("../../../../../../documents/misago/frontend/src/services/store"),c=r(l);s["default"].addInitializer({name:"reducer:username-history",initializer:a,before:"store"})},{"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/reducers/username-history":162,"../../../../../../documents/misago/frontend/src/services/store":174}],32:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){c["default"].addReducer("users",u["default"],[])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../../documents/misago/frontend/src/reducers/users"),u=r(i),l=e("../../../../../../documents/misago/frontend/src/services/store"),c=r(l);s["default"].addInitializer({name:"reducer:users",initializer:a,before:"store"})},{"../../../../../../documents/misago/frontend/src/index":156,"../../../../../../documents/misago/frontend/src/reducers/users":163,"../../../../../../documents/misago/frontend/src/services/store":174}],33:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){u["default"].init(c["default"])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/snackbar"),u=r(i),l=e("../../../../../documents/misago/frontend/src/services/store"),c=r(l);s["default"].addInitializer({name:"snackbar",initializer:a,after:"store"})},{"../../../../../documents/misago/frontend/src/index":156,"../../../../../documents/misago/frontend/src/services/snackbar":173,"../../../../../documents/misago/frontend/src/services/store":174}],34:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){u["default"].init()}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/store"),u=r(i);s["default"].addInitializer({name:"store",initializer:a,before:"_end"})},{"../../../../../documents/misago/frontend/src/index":156,"../../../../../documents/misago/frontend/src/services/store":174}],35:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){window.setInterval(function(){l["default"].dispatch((0,i.doTick)())},c)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/reducers/tick"),u=e("../../../../../documents/misago/frontend/src/services/store"),l=r(u),c=5e4;s["default"].addInitializer({name:"tick-start",initializer:a,after:"store"})},{"../../../../../documents/misago/frontend/src/index":156,"../../../../../documents/misago/frontend/src/reducers/tick":161,"../../../../../documents/misago/frontend/src/services/store":174}],36:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){c["default"].init(u["default"])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/include"),u=r(i),l=e("../../../../../documents/misago/frontend/src/services/zxcvbn"),c=r(l);s["default"].addInitializer({name:"zxcvbn",initializer:a})},{"../../../../../documents/misago/frontend/src/index":156,"../../../../../documents/misago/frontend/src/services/include":167,"../../../../../documents/misago/frontend/src/services/zxcvbn":175}],37:[function(e,t,n){function r(e){return null===e||void 0===e}function a(e){return e&&"object"==typeof e&&"number"==typeof e.length?"function"!=typeof e.copy||"function"!=typeof e.slice?!1:e.length>0&&"number"!=typeof e[0]?!1:!0:!1}function o(e,t,n){var o,c;if(r(e)||r(t))return!1;if(e.prototype!==t.prototype)return!1;if(u(e))return u(t)?(e=s.call(e),t=s.call(t),l(e,t,n)):!1;if(a(e)){if(!a(t))return!1;if(e.length!==t.length)return!1;for(o=0;o<e.length;o++)if(e[o]!==t[o])return!1;return!0}try{var f=i(e),d=i(t)}catch(p){return!1}if(f.length!=d.length)return!1;for(f.sort(),d.sort(),o=f.length-1;o>=0;o--)if(f[o]!=d[o])return!1;for(o=f.length-1;o>=0;o--)if(c=f[o],!l(e[c],t[c],n))return!1;return typeof e==typeof t}var s=Array.prototype.slice,i=e("./lib/keys.js"),u=e("./lib/is_arguments.js"),l=t.exports=function(e,t,n){return n||(n={}),e===t?!0:e instanceof Date&&t instanceof Date?e.getTime()===t.getTime():!e||!t||"object"!=typeof e&&"object"!=typeof t?n.strict?e===t:e==t:o(e,t,n)}},{"./lib/is_arguments.js":38,"./lib/keys.js":39}],38:[function(e,t,n){function r(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function a(e){return e&&"object"==typeof e&&"number"==typeof e.length&&Object.prototype.hasOwnProperty.call(e,"callee")&&!Object.prototype.propertyIsEnumerable.call(e,"callee")||!1}var o="[object Arguments]"==function(){return Object.prototype.toString.call(arguments)}();n=t.exports=o?r:a,n.supported=r,n.unsupported=a},{}],39:[function(e,t,n){function r(e){var t=[];for(var n in e)t.push(n);return t}n=t.exports="function"==typeof Object.keys?Object.keys:r,n.shim=r},{}],40:[function(e,t,n){"use strict";n.__esModule=!0;var r="PUSH";n.PUSH=r;var a="REPLACE";n.REPLACE=a;var o="POP";n.POP=o,n["default"]={PUSH:r,REPLACE:a,POP:o}},{}],41:[function(e,t,n){"use strict";function r(e,t,n){function r(){s=!0,n.apply(this,arguments)}function a(){s||(e>o?t.call(this,o++,a,r):r.apply(this,arguments))}var o=0,s=!1;a()}n.__esModule=!0,n.loopAsync=r},{}],42:[function(e,t,n){(function(t){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){return l+e}function o(e,n){try{window.sessionStorage.setItem(a(e),JSON.stringify(n))}catch(r){if(r.name===f)return void("production"!==t.env.NODE_ENV?u["default"](!1,"[history] Unable to save state; sessionStorage is not available due to security settings"):void 0);if(r.name===c&&0===window.sessionStorage.length)return void("production"!==t.env.NODE_ENV?u["default"](!1,"[history] Unable to save state; sessionStorage is not available in Safari private mode"):void 0);throw r}}function s(e){var n=void 0;try{n=window.sessionStorage.getItem(a(e))}catch(r){if(r.name===f)return"production"!==t.env.NODE_ENV?u["default"](!1,"[history] Unable to read state; sessionStorage is not available due to security settings"):void 0,null}if(n)try{return JSON.parse(n)}catch(r){}return null}n.__esModule=!0,n.saveState=o,n.readState=s;var i=e("warning"),u=r(i),l="@@History/",c="QuotaExceededError",f="SecurityError"}).call(this,e("_process"))},{_process:1,warning:54}],43:[function(e,t,n){"use strict";function r(e,t,n){e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent("on"+t,n)}function a(e,t,n){e.removeEventListener?e.removeEventListener(t,n,!1):e.detachEvent("on"+t,n)}function o(){return window.location.href.split("#")[1]||""}function s(e){window.location.replace(window.location.pathname+window.location.search+"#"+e)}function i(){return window.location.pathname+window.location.search+window.location.hash}function u(e){e&&window.history.go(e)}function l(e,t){t(window.confirm(e))}function c(){var e=navigator.userAgent;return-1===e.indexOf("Android 2.")&&-1===e.indexOf("Android 4.0")||-1===e.indexOf("Mobile Safari")||-1!==e.indexOf("Chrome")||-1!==e.indexOf("Windows Phone")?-1!==e.indexOf("CriOS")?!1:window.history&&"pushState"in window.history:!1}function f(){var e=navigator.userAgent;
-return-1===e.indexOf("Firefox")}n.__esModule=!0,n.addEventListener=r,n.removeEventListener=a,n.getHashPath=o,n.replaceHashPath=s,n.getWindowPath=i,n.go=u,n.getUserConfirmation=l,n.supportsHistory=c,n.supportsGoWithoutReloadUsingHash=f},{}],44:[function(e,t,n){"use strict";n.__esModule=!0;var r=!("undefined"==typeof window||!window.document||!window.document.createElement);n.canUseDOM=r},{}],45:[function(e,t,n){(function(r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function o(){function e(e){e=e||window.history.state||{};var t=f.getWindowPath(),n=e,r=n.key,a=void 0;r?a=d.readState(r):(a=null,r=_.createKey(),y&&window.history.replaceState(s({},e,{key:r}),null,t));var o=g["default"](t);return _.createLocation(s({},o,{state:a}),void 0,r)}function t(t){function n(t){void 0!==t.state&&r(e(t.state))}var r=t.transitionTo;return f.addEventListener(window,"popstate",n),function(){f.removeEventListener(window,"popstate",n)}}function n(e){var t=e.basename,n=e.pathname,r=e.search,a=e.hash,o=e.state,s=e.action,i=e.key;if(s!==l.POP){d.saveState(i,o);var u=(t||"")+n+r+a,c={key:i};if(s===l.PUSH){if(v)return window.location.href=u,!1;window.history.pushState(c,null,u)}else{if(v)return window.location.replace(u),!1;window.history.replaceState(c,null,u)}}}function a(e){1===++w&&(E=t(_));var n=_.listenBefore(e);return function(){n(),0===--w&&E()}}function o(e){1===++w&&(E=t(_));var n=_.listen(e);return function(){n(),0===--w&&E()}}function i(e){1===++w&&(E=t(_)),_.registerTransitionHook(e)}function p(e){_.unregisterTransitionHook(e),0===--w&&E()}var h=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];c.canUseDOM?void 0:"production"!==r.env.NODE_ENV?u["default"](!1,"Browser history needs a DOM"):u["default"](!1);var b=h.forceRefresh,y=f.supportsHistory(),v=!y||b,_=m["default"](s({},h,{getCurrentLocation:e,finishTransition:n,saveState:d.saveState})),w=0,E=void 0;return s({},_,{listenBefore:a,listen:o,registerTransitionHook:i,unregisterTransitionHook:p})}n.__esModule=!0;var s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i=e("invariant"),u=a(i),l=e("./Actions"),c=e("./ExecutionEnvironment"),f=e("./DOMUtils"),d=e("./DOMStateStorage"),p=e("./createDOMHistory"),m=a(p),h=e("./parsePath"),g=a(h);n["default"]=o,t.exports=n["default"]}).call(this,e("_process"))},{"./Actions":40,"./DOMStateStorage":42,"./DOMUtils":43,"./ExecutionEnvironment":44,"./createDOMHistory":46,"./parsePath":51,_process:1,invariant:53}],46:[function(e,t,n){(function(r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function o(e){function t(e){return l.canUseDOM?void 0:"production"!==r.env.NODE_ENV?u["default"](!1,"DOM history needs a DOM"):u["default"](!1),n.listen(e)}var n=d["default"](s({getUserConfirmation:c.getUserConfirmation},e,{go:c.go}));return s({},n,{listen:t})}n.__esModule=!0;var s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i=e("invariant"),u=a(i),l=e("./ExecutionEnvironment"),c=e("./DOMUtils"),f=e("./createHistory"),d=a(f);n["default"]=o,t.exports=n["default"]}).call(this,e("_process"))},{"./DOMUtils":43,"./ExecutionEnvironment":44,"./createHistory":47,_process:1,invariant:53}],47:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){return Math.random().toString(36).substr(2,e)}function o(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.key===t.key&&l["default"](e.state,t.state)}function s(){function e(e){return U.push(e),function(){U=U.filter(function(t){return t!==e})}}function t(){return H&&H.action===f.POP?D.indexOf(H.key):B?D.indexOf(B.key):-1}function n(e){var n=t();B=e,B.action===f.PUSH?D=[].concat(D.slice(0,n+1),[B.key]):B.action===f.REPLACE&&(D[n]=B.key),z.forEach(function(e){e(B)})}function r(e){if(z.push(e),B)e(B);else{var t=T();D=[t.key],n(t)}return function(){z=z.filter(function(t){return t!==e})}}function s(e,t){c.loopAsync(U.length,function(t,n,r){h["default"](U[t],e,function(e){null!=e?r(e):n()})},function(e){I&&"string"==typeof e?I(e,function(e){t(e!==!1)}):t(e!==!1)})}function u(e){B&&o(B,e)||(H=e,s(e,function(t){if(H===e)if(t){if(e.action===f.PUSH){var r=w(B),a=w(e);a===r&&(e.action=f.REPLACE)}M(e)!==!1&&n(e)}else if(B&&e.action===f.POP){var o=D.indexOf(B.key),s=D.indexOf(e.key);-1!==o&&-1!==s&&R(o-s)}}))}function l(e){u(O(e,f.PUSH,y()))}function d(e){u(O(e,f.REPLACE,y()))}function m(){R(-1)}function g(){R(1)}function y(){return a(A)}function w(e){if(null==e||"string"==typeof e)return e;var t=e.pathname,n=e.search,r=e.hash,a=t;return n&&(a+=n),r&&(a+=r),a}function E(e){return w(e)}function O(e,t){var n=arguments.length<=2||void 0===arguments[2]?y():arguments[2];return"object"==typeof t&&("string"==typeof e&&(e=b["default"](e)),e=i({},e,{state:t}),t=n,n=arguments[3]||y()),p["default"](e,t,n)}function k(e){B?(N(B,e),n(B)):N(T(),e)}function N(e,t){e.state=i({},e.state,t),L(e.key,e.state)}function j(e){-1===U.indexOf(e)&&U.push(e)}function x(e){U=U.filter(function(t){return t!==e})}function P(e,t){"string"==typeof t&&(t=b["default"](t)),l(i({state:e},t))}function C(e,t){"string"==typeof t&&(t=b["default"](t)),d(i({state:e},t))}var S=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],T=S.getCurrentLocation,M=S.finishTransition,L=S.saveState,R=S.go,A=S.keyLength,I=S.getUserConfirmation;"number"!=typeof A&&(A=_);var U=[],D=[],z=[],B=void 0,H=void 0;return{listenBefore:e,listen:r,transitionTo:u,push:l,replace:d,go:R,goBack:m,goForward:g,createKey:y,createPath:w,createHref:E,createLocation:O,setState:v["default"](k,"setState is deprecated; use location.key to save state instead"),registerTransitionHook:v["default"](j,"registerTransitionHook is deprecated; use listenBefore instead"),unregisterTransitionHook:v["default"](x,"unregisterTransitionHook is deprecated; use the callback returned from listenBefore instead"),pushState:v["default"](P,"pushState is deprecated; use push instead"),replaceState:v["default"](C,"replaceState is deprecated; use replace instead")}}n.__esModule=!0;var i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u=e("deep-equal"),l=r(u),c=e("./AsyncUtils"),f=e("./Actions"),d=e("./createLocation"),p=r(d),m=e("./runTransitionHook"),h=r(m),g=e("./parsePath"),b=r(g),y=e("./deprecate"),v=r(y),_=6;n["default"]=s,t.exports=n["default"]},{"./Actions":40,"./AsyncUtils":41,"./createLocation":48,"./deprecate":49,"./parsePath":51,"./runTransitionHook":52,"deep-equal":37}],48:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){var e=arguments.length<=0||void 0===arguments[0]?"/":arguments[0],t=arguments.length<=1||void 0===arguments[1]?s.POP:arguments[1],n=arguments.length<=2||void 0===arguments[2]?null:arguments[2],r=arguments.length<=3||void 0===arguments[3]?null:arguments[3];"string"==typeof e&&(e=u["default"](e)),"object"==typeof t&&(e=o({},e,{state:t}),t=n||s.POP,n=r);var a=e.pathname||"/",i=e.search||"",l=e.hash||"",c=e.state||null;return{pathname:a,search:i,hash:l,state:c,action:t,key:n}}n.__esModule=!0;var o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},s=e("./Actions"),i=e("./parsePath"),u=r(i);n["default"]=a,t.exports=n["default"]},{"./Actions":40,"./parsePath":51}],49:[function(e,t,n){"use strict";function r(e){return e}n.__esModule=!0,n["default"]=r,t.exports=n["default"]},{}],50:[function(e,t,n){"use strict";function r(e){var t=e.match(/^https?:\/\/[^\/]*/);return null==t?e:e.substring(t[0].length)}n.__esModule=!0,n["default"]=r,t.exports=n["default"]},{}],51:[function(e,t,n){(function(r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function o(e){var t=l["default"](e),n="",a="";"production"!==r.env.NODE_ENV?i["default"](e===t,'A path must be pathname + search + hash only, not a fully qualified URL like "%s"',e):void 0;var o=t.indexOf("#");-1!==o&&(a=t.substring(o),t=t.substring(0,o));var s=t.indexOf("?");return-1!==s&&(n=t.substring(s),t=t.substring(0,s)),""===t&&(t="/"),{pathname:t,search:n,hash:a}}n.__esModule=!0;var s=e("warning"),i=a(s),u=e("./extractPath"),l=a(u);n["default"]=o,t.exports=n["default"]}).call(this,e("_process"))},{"./extractPath":50,_process:1,warning:54}],52:[function(e,t,n){(function(r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function o(e,t,n){var a=e(t,n);e.length<2?n(a):"production"!==r.env.NODE_ENV?i["default"](void 0===a,'You should not "return" in a transition hook with a callback argument; call the callback instead'):void 0}n.__esModule=!0;var s=e("warning"),i=a(s);n["default"]=o,t.exports=n["default"]}).call(this,e("_process"))},{_process:1,warning:54}],53:[function(e,t,n){"use strict";var r=function(e,t,n,r,a,o,s,i){if(!e){var u;if(void 0===t)u=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[n,r,a,o,s,i],c=0;u=new Error(t.replace(/%s/g,function(){return l[c++]})),u.name="Invariant Violation"}throw u.framesToPop=1,u}};t.exports=r},{}],54:[function(e,t,n){"use strict";var r=function(){};t.exports=r},{}],55:[function(e,t,n){"use strict";function r(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}}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.select=i;var l=e("react"),c=r(l),f=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(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);n["default"]=f},{react:"react"}],56:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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 l["default"].createElement("img",{src:this.getSrc(),className:this.props.className||"user-avatar",title:gettext("User avatar")})}}]),t}(l["default"].Component);n["default"]=f},{react:"react"}],57:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("moment"),l=r(u),c=e("react"),f=r(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,l["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);n["default"]=d},{moment:"moment",react:"react"}],58:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./loader"),f=r(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),l["default"].createElement("button",{type:this.props.onClick?"button":"submit",className:e,disabled:t,onClick:this.props.onClick},this.props.children,this.props.loading?l["default"].createElement(f["default"],null):null)}}]),t}(l["default"].Component);n["default"]=d,d.defaultProps={className:"btn-default",type:"submit",loading:!1,disabled:!1,onClick:null}},{"./loader":75,react:"react"}],59:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./last-activity"),f=r(c),d=e("./read-icon"),p=r(d),m=e("./stats"),h=r(m),g=e("./subcategory-subcategories"),b=r(g),y=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?l["default"].createElement("div",{className:"subcategory-description",dangerouslySetInnerHTML:{__html:this.props.category.description.html}}):null}},{key:"getSubcategories",value:function(){return this.props.category.subcategories.length?l["default"].createElement(b["default"],{categories:this.props.category.subcategories}):null}},{key:"render",value:function(){return l["default"].createElement("li",{className:this.getClassName()},l["default"].createElement("div",{className:"title-row"},l["default"].createElement("h4",null,l["default"].createElement(p["default"],{category:this.props.category}),l["default"].createElement("a",{href:this.props.category.absolute_url,className:"item-title"},this.props.category.name)),l["default"].createElement(h["default"],{category:this.props.category})),l["default"].createElement(f["default"],{category:this.props.category}),this.getDescription(),this.getSubcategories())}}]),t}(l["default"].Component);n["default"]=y;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 l["default"].createElement("ul",{className:"list-group category-subcategories"},this.props.categories.map(function(e){return l["default"].createElement(y,{category:e,key:e.id})}))}}]),t}(l["default"].Component);n["default"]=v},{"./last-activity":61,"./read-icon":62,"./stats":64,"./subcategory-subcategories":65,react:"react"}],60:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./category-subcategories"),f=r(c),d=e("./last-activity"),p=r(d),m=e("./read-icon"),h=r(m),g=e("./stats"),b=r(g),y=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?l["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?l["default"].createElement(f["default"],{categories:this.props.category.subcategories}):null}},{key:"render",value:function(){return l["default"].createElement("div",{id:"panel-category-"+this.props.category.id,className:this.getClassName()},l["default"].createElement("div",{className:this.getHeadingClassName()},l["default"].createElement("div",{className:"panel-heading-inblock"},l["default"].createElement("div",{className:"panel-heading-top-row"},l["default"].createElement("h3",{className:"panel-title"},l["default"].createElement(h["default"],{category:this.props.category}),l["default"].createElement("a",{href:this.props.category.absolute_url,className:"item-title"},this.props.category.name)),l["default"].createElement(b["default"],{category:this.props.category})),l["default"].createElement(p["default"],{category:this.props.category}))),this.getCategoryDescription(),this.getSubcategories())}}]),t}(l["default"].Component);n["default"]=y},{"./category-subcategories":59,"./last-activity":61,"./read-icon":62,"./stats":64,react:"react"}],61:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.ProtectedMessage=n.PrivateMessage=n.EmptyMessage=n.LastPostMessage=void 0;var u=e("react"),l=r(u),c=e("../../utils/escape-html"),f=r(c),d='<a href="%(url)s" class="poster-title">%(user)s</a>',p='<span class="poster-title">%(user)s</span>',m='<a href="%(url)s" class="item-title thread-title">%(thread)s</a>',h='<a href="%(url)s" class="last-title" title="%(absolute)s">%(relative)s</a>',g=n.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(m,{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(h,{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 l["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}(l["default"].Component),b=n.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 l["default"].createElement("p",{className:"category-thread-message"},l["default"].createElement("span",{className:"material-icon"},"error_outline"),gettext("This category is empty."))}}]),t}(l["default"].Component),y=n.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 l["default"].createElement("p",{className:"category-thread-message"},l["default"].createElement("span",{className:"material-icon"},"info_outline"),gettext("This category is private. You can see only your own threads within it."))}}]),t}(l["default"].Component),v=n.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 l["default"].createElement("p",{className:"category-thread-message"},l["default"].createElement("span",{className:"material-icon"},"highlight_off"),gettext("This category is protected. You can't browse it's contents."))}}]),t}(l["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?l["default"].createElement(g,{category:this.props.category}):l["default"].createElement(b,null):l["default"].createElement(y,null):l["default"].createElement(v,null)}}]),t}(l["default"].Component);n["default"]=_},{"../../utils/escape-html":179,react:"react"}],62:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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 l["default"].createElement("div",{className:this.getClassName(),title:this.getTitle()},l["default"].createElement("span",{className:"material-icon"},this.getIcon()))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],63:[function(e,t,n){"use strict";function r(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}}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.select=i;var l=e("moment"),c=r(l),f=e("react"),d=r(f),p=e("./category"),m=r(p),h=e("../../index"),g=r(h),b=e("../../services/polls"),y=r(b),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 n=o(this,Object.getPrototypeOf(t).call(this,e));return n.update=function(e){n.setState({categories:e.map(v)})},n.state={categories:g["default"].get("CATEGORIES").map(v)},n.startPolling(g["default"].get("CATEGORIES_API")),n}return s(t,e),u(t,[{key:"startPolling",value:function(e){y["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(m["default"],{category:e,key:e.id})}))}}]),t}(d["default"].Component);n["default"]=_},{"../../index":156,"../../services/polls":172,"./category":60,moment:"moment",react:"react"}],64:[function(e,t,n){"use strict";function r(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-1===e.indexOf("Firefox")}n.__esModule=!0,n.addEventListener=r,n.removeEventListener=a,n.getHashPath=o,n.replaceHashPath=s,n.getWindowPath=i,n.go=u,n.getUserConfirmation=l,n.supportsHistory=c,n.supportsGoWithoutReloadUsingHash=f},{}],44:[function(e,t,n){"use strict";n.__esModule=!0;var r=!("undefined"==typeof window||!window.document||!window.document.createElement);n.canUseDOM=r},{}],45:[function(e,t,n){(function(r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function o(){function e(e){e=e||window.history.state||{};var t=f.getWindowPath(),n=e,r=n.key,a=void 0;r?a=d.readState(r):(a=null,r=_.createKey(),y&&window.history.replaceState(s({},e,{key:r}),null,t));var o=g["default"](t);return _.createLocation(s({},o,{state:a}),void 0,r)}function t(t){function n(t){void 0!==t.state&&r(e(t.state))}var r=t.transitionTo;return f.addEventListener(window,"popstate",n),function(){f.removeEventListener(window,"popstate",n)}}function n(e){var t=e.basename,n=e.pathname,r=e.search,a=e.hash,o=e.state,s=e.action,i=e.key;if(s!==l.POP){d.saveState(i,o);var u=(t||"")+n+r+a,c={key:i};if(s===l.PUSH){if(v)return window.location.href=u,!1;window.history.pushState(c,null,u)}else{if(v)return window.location.replace(u),!1;window.history.replaceState(c,null,u)}}}function a(e){1===++w&&(E=t(_));var n=_.listenBefore(e);return function(){n(),0===--w&&E()}}function o(e){1===++w&&(E=t(_));var n=_.listen(e);return function(){n(),0===--w&&E()}}function i(e){1===++w&&(E=t(_)),_.registerTransitionHook(e)}function p(e){_.unregisterTransitionHook(e),0===--w&&E()}var h=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];c.canUseDOM?void 0:"production"!==r.env.NODE_ENV?u["default"](!1,"Browser history needs a DOM"):u["default"](!1);var b=h.forceRefresh,y=f.supportsHistory(),v=!y||b,_=m["default"](s({},h,{getCurrentLocation:e,finishTransition:n,saveState:d.saveState})),w=0,E=void 0;return s({},_,{listenBefore:a,listen:o,registerTransitionHook:i,unregisterTransitionHook:p})}n.__esModule=!0;var s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i=e("invariant"),u=a(i),l=e("./Actions"),c=e("./ExecutionEnvironment"),f=e("./DOMUtils"),d=e("./DOMStateStorage"),p=e("./createDOMHistory"),m=a(p),h=e("./parsePath"),g=a(h);n["default"]=o,t.exports=n["default"]}).call(this,e("_process"))},{"./Actions":40,"./DOMStateStorage":42,"./DOMUtils":43,"./ExecutionEnvironment":44,"./createDOMHistory":46,"./parsePath":51,_process:1,invariant:53}],46:[function(e,t,n){(function(r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function o(e){function t(e){return l.canUseDOM?void 0:"production"!==r.env.NODE_ENV?u["default"](!1,"DOM history needs a DOM"):u["default"](!1),n.listen(e)}var n=d["default"](s({getUserConfirmation:c.getUserConfirmation},e,{go:c.go}));return s({},n,{listen:t})}n.__esModule=!0;var s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i=e("invariant"),u=a(i),l=e("./ExecutionEnvironment"),c=e("./DOMUtils"),f=e("./createHistory"),d=a(f);n["default"]=o,t.exports=n["default"]}).call(this,e("_process"))},{"./DOMUtils":43,"./ExecutionEnvironment":44,"./createHistory":47,_process:1,invariant:53}],47:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){return Math.random().toString(36).substr(2,e)}function o(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.key===t.key&&l["default"](e.state,t.state)}function s(){function e(e){return U.push(e),function(){U=U.filter(function(t){return t!==e})}}function t(){return H&&H.action===f.POP?D.indexOf(H.key):z?D.indexOf(z.key):-1}function n(e){var n=t();z=e,z.action===f.PUSH?D=[].concat(D.slice(0,n+1),[z.key]):z.action===f.REPLACE&&(D[n]=z.key),B.forEach(function(e){e(z)})}function r(e){if(B.push(e),z)e(z);else{var t=T();D=[t.key],n(t)}return function(){B=B.filter(function(t){return t!==e})}}function s(e,t){c.loopAsync(U.length,function(t,n,r){h["default"](U[t],e,function(e){null!=e?r(e):n()})},function(e){I&&"string"==typeof e?I(e,function(e){t(e!==!1)}):t(e!==!1)})}function u(e){z&&o(z,e)||(H=e,s(e,function(t){if(H===e)if(t){if(e.action===f.PUSH){var r=w(z),a=w(e);a===r&&(e.action=f.REPLACE)}M(e)!==!1&&n(e)}else if(z&&e.action===f.POP){var o=D.indexOf(z.key),s=D.indexOf(e.key);-1!==o&&-1!==s&&R(o-s)}}))}function l(e){u(O(e,f.PUSH,y()))}function d(e){u(O(e,f.REPLACE,y()))}function m(){R(-1)}function g(){R(1)}function y(){return a(A)}function w(e){if(null==e||"string"==typeof e)return e;var t=e.pathname,n=e.search,r=e.hash,a=t;return n&&(a+=n),r&&(a+=r),a}function E(e){return w(e)}function O(e,t){var n=arguments.length<=2||void 0===arguments[2]?y():arguments[2];return"object"==typeof t&&("string"==typeof e&&(e=b["default"](e)),e=i({},e,{state:t}),t=n,n=arguments[3]||y()),p["default"](e,t,n)}function k(e){z?(N(z,e),n(z)):N(T(),e)}function N(e,t){e.state=i({},e.state,t),L(e.key,e.state)}function j(e){-1===U.indexOf(e)&&U.push(e)}function x(e){U=U.filter(function(t){return t!==e})}function P(e,t){"string"==typeof t&&(t=b["default"](t)),l(i({state:e},t))}function C(e,t){"string"==typeof t&&(t=b["default"](t)),d(i({state:e},t))}var S=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],T=S.getCurrentLocation,M=S.finishTransition,L=S.saveState,R=S.go,A=S.keyLength,I=S.getUserConfirmation;"number"!=typeof A&&(A=_);var U=[],D=[],B=[],z=void 0,H=void 0;return{listenBefore:e,listen:r,transitionTo:u,push:l,replace:d,go:R,goBack:m,goForward:g,createKey:y,createPath:w,createHref:E,createLocation:O,setState:v["default"](k,"setState is deprecated; use location.key to save state instead"),registerTransitionHook:v["default"](j,"registerTransitionHook is deprecated; use listenBefore instead"),unregisterTransitionHook:v["default"](x,"unregisterTransitionHook is deprecated; use the callback returned from listenBefore instead"),pushState:v["default"](P,"pushState is deprecated; use push instead"),replaceState:v["default"](C,"replaceState is deprecated; use replace instead")}}n.__esModule=!0;var i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u=e("deep-equal"),l=r(u),c=e("./AsyncUtils"),f=e("./Actions"),d=e("./createLocation"),p=r(d),m=e("./runTransitionHook"),h=r(m),g=e("./parsePath"),b=r(g),y=e("./deprecate"),v=r(y),_=6;n["default"]=s,t.exports=n["default"]},{"./Actions":40,"./AsyncUtils":41,"./createLocation":48,"./deprecate":49,"./parsePath":51,"./runTransitionHook":52,"deep-equal":37}],48:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){var e=arguments.length<=0||void 0===arguments[0]?"/":arguments[0],t=arguments.length<=1||void 0===arguments[1]?s.POP:arguments[1],n=arguments.length<=2||void 0===arguments[2]?null:arguments[2],r=arguments.length<=3||void 0===arguments[3]?null:arguments[3];"string"==typeof e&&(e=u["default"](e)),"object"==typeof t&&(e=o({},e,{state:t}),t=n||s.POP,n=r);var a=e.pathname||"/",i=e.search||"",l=e.hash||"",c=e.state||null;return{pathname:a,search:i,hash:l,state:c,action:t,key:n}}n.__esModule=!0;var o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},s=e("./Actions"),i=e("./parsePath"),u=r(i);n["default"]=a,t.exports=n["default"]},{"./Actions":40,"./parsePath":51}],49:[function(e,t,n){"use strict";function r(e){return e}n.__esModule=!0,n["default"]=r,t.exports=n["default"]},{}],50:[function(e,t,n){"use strict";function r(e){var t=e.match(/^https?:\/\/[^\/]*/);return null==t?e:e.substring(t[0].length)}n.__esModule=!0,n["default"]=r,t.exports=n["default"]},{}],51:[function(e,t,n){(function(r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function o(e){var t=l["default"](e),n="",a="";"production"!==r.env.NODE_ENV?i["default"](e===t,'A path must be pathname + search + hash only, not a fully qualified URL like "%s"',e):void 0;var o=t.indexOf("#");-1!==o&&(a=t.substring(o),t=t.substring(0,o));var s=t.indexOf("?");return-1!==s&&(n=t.substring(s),t=t.substring(0,s)),""===t&&(t="/"),{pathname:t,search:n,hash:a}}n.__esModule=!0;var s=e("warning"),i=a(s),u=e("./extractPath"),l=a(u);n["default"]=o,t.exports=n["default"]}).call(this,e("_process"))},{"./extractPath":50,_process:1,warning:54}],52:[function(e,t,n){(function(r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function o(e,t,n){var a=e(t,n);e.length<2?n(a):"production"!==r.env.NODE_ENV?i["default"](void 0===a,'You should not "return" in a transition hook with a callback argument; call the callback instead'):void 0}n.__esModule=!0;var s=e("warning"),i=a(s);n["default"]=o,t.exports=n["default"]}).call(this,e("_process"))},{_process:1,warning:54}],53:[function(e,t,n){"use strict";var r=function(e,t,n,r,a,o,s,i){if(!e){var u;if(void 0===t)u=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[n,r,a,o,s,i],c=0;u=new Error(t.replace(/%s/g,function(){return l[c++]})),u.name="Invariant Violation"}throw u.framesToPop=1,u}};t.exports=r},{}],54:[function(e,t,n){"use strict";var r=function(){};t.exports=r},{}],55:[function(e,t,n){"use strict";function r(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}}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.select=i;var l=e("react"),c=r(l),f=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(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);n["default"]=f},{react:"react"}],56:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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 l["default"].createElement("img",{src:this.getSrc(),className:this.props.className||"user-avatar",title:gettext("User avatar")})}}]),t}(l["default"].Component);n["default"]=f},{react:"react"}],57:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("moment"),l=r(u),c=e("react"),f=r(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,l["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);n["default"]=d},{moment:"moment",react:"react"}],58:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./loader"),f=r(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),l["default"].createElement("button",{type:this.props.onClick?"button":"submit",className:e,disabled:t,onClick:this.props.onClick},this.props.children,this.props.loading?l["default"].createElement(f["default"],null):null)}}]),t}(l["default"].Component);n["default"]=d,d.defaultProps={className:"btn-default",type:"submit",loading:!1,disabled:!1,onClick:null}},{"./loader":75,react:"react"}],59:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./last-activity"),f=r(c),d=e("./read-icon"),p=r(d),m=e("./stats"),h=r(m),g=e("./subcategory-subcategories"),b=r(g),y=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?l["default"].createElement("div",{className:"subcategory-description",dangerouslySetInnerHTML:{__html:this.props.category.description.html}}):null}},{key:"getSubcategories",value:function(){return this.props.category.subcategories.length?l["default"].createElement(b["default"],{categories:this.props.category.subcategories}):null}},{key:"render",value:function(){return l["default"].createElement("li",{className:this.getClassName()},l["default"].createElement("div",{className:"title-row"},l["default"].createElement("h4",null,l["default"].createElement(p["default"],{category:this.props.category}),l["default"].createElement("a",{href:this.props.category.absolute_url,className:"item-title"},this.props.category.name)),l["default"].createElement(h["default"],{category:this.props.category})),l["default"].createElement(f["default"],{category:this.props.category}),this.getDescription(),this.getSubcategories())}}]),t}(l["default"].Component);n["default"]=y;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 l["default"].createElement("ul",{className:"list-group category-subcategories"},this.props.categories.map(function(e){return l["default"].createElement(y,{category:e,key:e.id})}))}}]),t}(l["default"].Component);n["default"]=v},{"./last-activity":61,"./read-icon":62,"./stats":64,"./subcategory-subcategories":65,react:"react"}],60:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./category-subcategories"),f=r(c),d=e("./last-activity"),p=r(d),m=e("./read-icon"),h=r(m),g=e("./stats"),b=r(g),y=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?l["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?l["default"].createElement(f["default"],{categories:this.props.category.subcategories}):null}},{key:"render",value:function(){return l["default"].createElement("div",{id:"panel-category-"+this.props.category.id,className:this.getClassName()},l["default"].createElement("div",{className:this.getHeadingClassName()},l["default"].createElement("div",{className:"panel-heading-inblock"},l["default"].createElement("div",{className:"panel-heading-top-row"},l["default"].createElement("h3",{className:"panel-title"},l["default"].createElement(h["default"],{category:this.props.category}),l["default"].createElement("a",{href:this.props.category.absolute_url,className:"item-title"},this.props.category.name)),l["default"].createElement(b["default"],{category:this.props.category})),l["default"].createElement(p["default"],{category:this.props.category}))),this.getCategoryDescription(),this.getSubcategories())}}]),t}(l["default"].Component);n["default"]=y},{"./category-subcategories":59,"./last-activity":61,"./read-icon":62,"./stats":64,react:"react"}],61:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.ProtectedMessage=n.PrivateMessage=n.EmptyMessage=n.LastPostMessage=void 0;var u=e("react"),l=r(u),c=e("../../utils/escape-html"),f=r(c),d='<a href="%(url)s" class="poster-title">%(user)s</a>',p='<span class="poster-title">%(user)s</span>',m='<a href="%(url)s" class="item-title thread-title">%(thread)s</a>',h='<a href="%(url)s" class="last-title" title="%(absolute)s">%(relative)s</a>',g=n.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(m,{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(h,{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 l["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}(l["default"].Component),b=n.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 l["default"].createElement("p",{className:"category-thread-message"},l["default"].createElement("span",{className:"material-icon"},"error_outline"),gettext("This category is empty."))}}]),t}(l["default"].Component),y=n.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 l["default"].createElement("p",{className:"category-thread-message"},l["default"].createElement("span",{className:"material-icon"},"info_outline"),gettext("This category is private. You can see only your own threads within it."))}}]),t}(l["default"].Component),v=n.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 l["default"].createElement("p",{className:"category-thread-message"},l["default"].createElement("span",{className:"material-icon"},"highlight_off"),gettext("This category is protected. You can't browse it's contents."))}}]),t}(l["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?l["default"].createElement(g,{category:this.props.category}):l["default"].createElement(b,null):l["default"].createElement(y,null):l["default"].createElement(v,null)}}]),t}(l["default"].Component);n["default"]=_},{"../../utils/escape-html":179,react:"react"}],62:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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 l["default"].createElement("div",{className:this.getClassName(),title:this.getTitle()},l["default"].createElement("span",{className:"material-icon"},this.getIcon()))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],63:[function(e,t,n){"use strict";function r(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}}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.select=i;var l=e("moment"),c=r(l),f=e("react"),d=r(f),p=e("./category"),m=r(p),h=e("../../index"),g=r(h),b=e("../../services/polls"),y=r(b),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 n=o(this,Object.getPrototypeOf(t).call(this,e));return n.update=function(e){n.setState({categories:e.map(v)})},n.state={categories:g["default"].get("CATEGORIES").map(v)},n.startPolling(g["default"].get("CATEGORIES_API")),n}return s(t,e),u(t,[{key:"startPolling",value:function(e){y["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(m["default"],{category:e,key:e.id})}))}}]),t}(d["default"].Component);n["default"]=_},{"../../index":156,"../../services/polls":172,"./category":60,moment:"moment",react:"react"}],64:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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 l["default"].createElement("ul",{className:"list-inline category-stats"},l["default"].createElement("li",{className:"category-threads"},this.getThreadsCount()),l["default"].createElement("li",{className:"category-posts"},this.getPostsCount()))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],65:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./subcategory-subcategories"),f=(r(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 l["default"].createElement("li",null,l["default"].createElement("a",{href:this.props.category.absolute_url,className:this.getClassName()},this.props.category.name))}}]),t}(l["default"].Component));n["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 l["default"].createElement("ul",{className:"list-inline subcategories-list"},this.props.categories.map(function(e){return l["default"].createElement(f,{category:e,key:e.id})}))}}]),t}(l["default"].Component);n["default"]=d},{"./subcategory-subcategories":65,react:"react"}],66:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../avatar"),f=(r(c),e("../button")),d=r(f),p=e("../../services/ajax"),m=r(p),h=e("../../services/snackbar"),g=r(h),b=$("base").attr("href")+"user-avatar",y=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.cropAvatar=function(){if(n.state.isLoading)return!1;n.setState({isLoading:!0});var e=n.props.upload?"crop_tmp":"crop_org",t=$(".crop-form");m["default"].post(n.props.user.api_url.avatar,{avatar:e,crop:{offset:t.cropit("offset"),zoom:t.cropit("zoom")}}).then(function(e){n.props.onComplete(e.avatar_hash,e.options),g["default"].success(e.detail)},function(e){400===e.status?(g["default"].error(e.detail),n.setState({isLoading:!1})):n.props.showError(e)})},n.state={isLoading:!1},n}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[b,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 n=t.cropit("zoom"),r=t.cropit("imageSize");if(r.width>r.height){var a=r.width*n,o=(a-e.getAvatarSize())/-2;t.cropit("offset",{x:o,y:0})}else if(r.width<r.height){var s=r.height*n,i=(s-e.getAvatarSize())/-2;t.cropit("offset",{x:0,y:i})}}else{var u=e.props.options.crop_org.crop;u&&(t.cropit("zoom",u.zoom),t.cropit("offset",{x:u.x,y:u.y}))}}})}},{key:"componentWillUnmount",value:function(){$(".crop-form").cropit("disable")}},{key:"render",value:function(){return l["default"].createElement("div",null,l["default"].createElement("div",{className:"modal-body modal-avatar-crop"},l["default"].createElement("div",{className:"crop-form"},l["default"].createElement("div",{className:"cropit-image-preview"}),l["default"].createElement("input",{type:"range",className:"cropit-image-zoom-input"}))),l["default"].createElement("div",{className:"modal-footer"},l["default"].createElement("div",{className:"col-md-6 col-md-offset-3"},l["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")),l["default"].createElement(d["default"],{onClick:this.props.showIndex,disabled:this.state.isLoading,className:"btn-default btn-block"},gettext("Cancel")))))}}]),t}(l["default"].Component);n["default"]=y},{"../../services/ajax":164,"../../services/snackbar":173,"../avatar":56,"../button":58,react:"react"}],67:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Gallery=n.GalleryItem=void 0;var u=e("react"),l=r(u),c=e("../button"),f=r(c),d=e("../../index"),p=r(d),m=e("../../services/ajax"),h=r(m),g=e("../../services/snackbar"),b=r(g),y=e("../../utils/batch"),v=r(y),_=n.GalleryItem=function(e){function t(){var e,n,r,s;a(this,t);for(var i=arguments.length,u=Array(i),l=0;i>l;l++)u[l]=arguments[l];return n=r=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(u))),r.select=function(){r.props.select(r.props.image)},s=n,o(r,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 l["default"].createElement("button",{type:"button",className:this.getClassName(),disabled:this.props.disabled,onClick:this.select},l["default"].createElement("img",{src:p["default"].get("MEDIA_URL")+this.props.image}))}}]),t}(l["default"].Component),w=n.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 l["default"].createElement("div",{className:"avatars-gallery"},l["default"].createElement("h3",null,this.props.name),l["default"].createElement("div",{className:"avatars-gallery-images"},(0,v["default"])(this.props.images,4,null).map(function(t,n){return l["default"].createElement("div",{className:"row",key:n},t.map(function(t,n){return l["default"].createElement("div",{className:"col-xs-3",key:n},t?l["default"].createElement(_,{image:t,disabled:e.props.disabled,select:e.props.select,selection:e.props.selection}):l["default"].createElement("div",{className:"blank-avatar"}))}))})))}}]),t}(l["default"].Component),E=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.select=function(e){n.setState({selection:e})},n.save=function(){return n.state.isLoading?!1:(n.setState({isLoading:!0}),void h["default"].post(n.props.user.api_url.avatar,{avatar:"galleries",image:n.state.selection}).then(function(e){n.setState({isLoading:!1}),b["default"].success(e.detail),n.props.onComplete(e.avatar_hash,e.options)},function(e){400===e.status?(b["default"].error(e.detail),n.setState({isLoading:!1})):n.props.showError(e)}))},n.state={selection:null,isLoading:!1},n}return s(t,e),i(t,[{key:"render",value:function(){var e=this;return l["default"].createElement("div",null,l["default"].createElement("div",{className:"modal-body modal-avatar-gallery"},this.props.options.galleries.map(function(t,n){return l["default"].createElement(w,{name:t.name,images:t.images,selection:e.state.selection,disabled:e.state.isLoading,select:e.select,key:n})})),l["default"].createElement("div",{className:"modal-footer"},l["default"].createElement("div",{className:"row"},l["default"].createElement("div",{className:"col-md-6 col-md-offset-3"},l["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")),l["default"].createElement(f["default"],{onClick:this.props.showIndex,disabled:this.state.isLoading,className:"btn-default btn-block"},gettext("Cancel"))))))}}]),t}(l["default"].Component);n["default"]=E},{"../../index":156,"../../services/ajax":164,"../../services/snackbar":173,"../../utils/batch":177,"../button":58,react:"react"}],68:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../avatar"),f=r(c),d=e("../button"),p=r(d),m=e("../loader"),h=r(m),g=e("../../services/ajax"),b=r(g),y=e("../../services/snackbar"),v=r(y),_=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.setGravatar=function(){n.callApi("gravatar")},n.setGenerated=function(){n.callApi("generated")},n.state={isLoading:!1},n}return s(t,e),i(t,[{key:"callApi",value:function(e){var t=this;return this.state.isLoading?!1:(this.setState({isLoading:!0}),void b["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?l["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?l["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?l["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?l["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?l["default"].createElement("div",{className:"avatar-preview preview-loading"},l["default"].createElement(f["default"],{user:e,size:"200"}),l["default"].createElement(h["default"],null)):l["default"].createElement("div",{className:"avatar-preview"},l["default"].createElement(f["default"],{user:e,size:"200"}))}},{key:"render",value:function(){return l["default"].createElement("div",{className:"modal-body modal-avatar-index"},l["default"].createElement("div",{className:"row"},l["default"].createElement("div",{className:"col-md-5"},this.getAvatarPreview()),l["default"].createElement("div",{className:"col-md-7"},this.getGravatarButton(),l["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}(l["default"].Component);n["default"]=_},{"../../services/ajax":164,"../../services/snackbar":173,"../avatar":56,"../button":58,"../loader":75,react:"react"}],69:[function(e,t,n){"use strict";function r(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}}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.ChangeAvatarError=void 0,n.select=i;var l=e("react"),c=r(l),f=e("./index"),d=r(f),p=e("./crop"),m=r(p),h=e("./upload"),g=r(h),b=e("./gallery"),y=r(b),v=e("../modal-loader"),_=r(v),w=e("../../reducers/users"),E=e("../../services/ajax"),O=r(E),k=e("../../services/store"),N=r(k),j=n.ChangeAvatarError=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(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,n,r,s;a(this,t);for(var i=arguments.length,u=Array(i),l=0;i>l;l++)u[l]=arguments[l];return n=r=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(u))),r.showError=function(e){r.setState({error:e})},r.showIndex=function(){r.setState({component:d["default"]})},r.showUpload=function(){r.setState({component:g["default"]})},r.showCrop=function(){r.setState({component:m["default"]})},r.showGallery=function(){r.setState({component:y["default"]})},r.completeFlow=function(e,t){N["default"].dispatch((0,w.updateAvatar)(r.props.user,e)),r.setState({component:d["default"],options:t})},s=n,o(r,s)}return s(t,e),u(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);n["default"]=x},{"../../reducers/users":163,"../../services/ajax":164,"../../services/store":174,"../modal-loader":76,"./crop":66,"./gallery":67,"./index":68,"./upload":70,react:"react"}],70:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./crop"),f=r(c),d=e("../button"),p=r(d),m=e("../../services/ajax"),h=r(m),g=e("../../services/snackbar"),b=r(g),y=e("../../utils/file-size"),v=r(y),_=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.pickFile=function(){document.getElementById("avatar-hidden-upload").click()},n.uploadFile=function(){var e=document.getElementById("avatar-hidden-upload").files[0],t=n.validateFile(e);if(t)return void b["default"].error(t);n.setState({image:e,preview:URL.createObjectURL(e),progress:0});var r=new FormData;r.append("avatar","upload"),r.append("image",e),h["default"].upload(n.props.user.api_url.avatar,r,function(e){n.setState({progress:e})}).then(function(e){n.setState({options:e.options,uploaded:e.detail}),b["default"].info(gettext("Your image has been uploaded and you may now crop it."))},function(e){400===e.status?(b["default"].error(e.detail),n.setState({isLoading:!1,image:null,progress:0})):n.props.showError(e)})},n.state={image:null,preview:null,progress:0,uploaded:null},n}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 n=!1,r=e.name.toLowerCase();return this.props.options.upload.allowed_extensions.map(function(e){r.substr(-1*e.length)===e&&(n=!0)}),n?!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 l["default"].createElement("div",{className:"modal-body modal-avatar-upload"},l["default"].createElement(p["default"],{className:"btn-pick-file",onClick:this.pickFile},l["default"].createElement("div",{className:"material-icon"},"input"),gettext("Select file")),l["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 l["default"].createElement("div",{className:"modal-body modal-avatar-upload"},l["default"].createElement("div",{className:"upload-progress"},l["default"].createElement("img",{src:this.state.preview}),l["default"].createElement("div",{className:"progress"},l["default"].createElement("div",{className:"progress-bar",role:"progressbar","aria-valuenow":"{this.state.progress}","aria-valuemin":"0","aria-valuemax":"100",style:{width:this.state.progress+"%"}},l["default"].createElement("span",{className:"sr-only"},this.getUploadProgressLabel())))))}},{key:"renderUpload",value:function(){return l["default"].createElement("div",null,l["default"].createElement("input",{type:"file",id:"avatar-hidden-upload",className:"hidden-file-upload",onChange:this.uploadFile}),this.state.image?this.getUploadProgress():this.getUploadButton(),l["default"].createElement("div",{className:"modal-footer"},l["default"].createElement("div",{className:"col-md-6 col-md-offset-3"},l["default"].createElement(p["default"],{onClick:this.props.showIndex,disabled:!!this.state.image,className:"btn-default btn-block"},gettext("Cancel")))))}},{key:"renderCrop",value:function(){return l["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}(l["default"].Component);n["default"]=_},{"../../services/ajax":164,"../../services/snackbar":173,"../../utils/file-size":180,"../button":58,"./crop":66,react:"react"}],71:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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 l["default"].createElement("button",{className:this.getClassName(),type:"button",onClick:this.props.toggleNav,"aria-haspopup":"true","aria-expanded":this.props.dropdown?"true":"false"},l["default"].createElement("i",{className:"material-icon"},"menu"))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],72:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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?l["default"].createElement("div",{className:"help-block errors"},this.props.validation.map(function(t,n){return l["default"].createElement("p",{key:e.props["for"]+"FeedbackItem"+n},t)})):null}},{key:"getFeedbackIcon",value:function(){return this.isValidated()?l["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()?l["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?l["default"].createElement("p",{className:"help-block"},this.props.helpText):null}},{key:"render",value:function(){return l["default"].createElement("div",{className:this.getClassName()},l["default"].createElement("label",{className:"control-label "+(this.props.labelClass||""),htmlFor:this.props["for"]||""},this.props.label+":"),l["default"].createElement("div",{className:this.props.controlClass||""},this.props.children,this.getFeedbackIcon(),this.getFeedbackDescription(),this.getFeedback(),this.getHelpText(),this.props.extra||null))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],73:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var l=e("react"),c=r(l),f=e("../utils/validators"),d=e("../services/snackbar"),p=r(d),m=(0,f.required)(),h=function(e){function t(){var e,n,r,i;o(this,t);for(var u=arguments.length,l=Array(u),c=0;u>c;c++)l[c]=arguments[c];return n=r=s(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(l))),r.bindInput=function(e){return function(t){var n=a({},e,t.target.value),o=r.state.errors||{};o[e]=r.validateField(e,n[e]),n.errors=o,r.setState(n)}},r.handleSubmit=function(e){if(e.preventDefault(),!r.state.isLoading&&r.clean()){r.setState({isLoading:!0});var t=r.send();t?t.then(function(e){r.setState({isLoading:!1}),r.handleSuccess(e)},function(e){r.setState({isLoading:!1}),r.handleError(e)}):r.setState({isLoading:!1})}},i=n,s(r,i)}return i(t,e),u(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||{}},n=[];for(var r in t.required)t.required.hasOwnProperty(r)&&t.required[r]&&n.push(r);for(var r in t.optional)t.optional.hasOwnProperty(r)&&t.optional[r]&&n.push(r);for(var a in n){var r=n[a],o=this.validateField(r,this.state[r]);null===o?e[r]=null:o&&(e[r]=o)}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!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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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 l["default"].createElement("ul",{className:"list-inline category-stats"},l["default"].createElement("li",{className:"category-threads"},this.getThreadsCount()),l["default"].createElement("li",{className:"category-posts"},this.getPostsCount()))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],65:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./subcategory-subcategories"),f=(r(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 l["default"].createElement("li",null,l["default"].createElement("a",{href:this.props.category.absolute_url,className:this.getClassName()},this.props.category.name))}}]),t}(l["default"].Component));n["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 l["default"].createElement("ul",{className:"list-inline subcategories-list"},this.props.categories.map(function(e){return l["default"].createElement(f,{category:e,key:e.id})}))}}]),t}(l["default"].Component);n["default"]=d},{"./subcategory-subcategories":65,react:"react"}],66:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../avatar"),f=(r(c),e("../button")),d=r(f),p=e("../../services/ajax"),m=r(p),h=e("../../services/snackbar"),g=r(h),b=$("base").attr("href")+"user-avatar",y=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.cropAvatar=function(){if(n.state.isLoading)return!1;n.setState({isLoading:!0});var e=n.props.upload?"crop_tmp":"crop_org",t=$(".crop-form");m["default"].post(n.props.user.api_url.avatar,{avatar:e,crop:{offset:t.cropit("offset"),zoom:t.cropit("zoom")}}).then(function(e){n.props.onComplete(e.avatar_hash,e.options),g["default"].success(e.detail)},function(e){400===e.status?(g["default"].error(e.detail),n.setState({isLoading:!1})):n.props.showError(e)})},n.state={isLoading:!1},n}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[b,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 n=t.cropit("zoom"),r=t.cropit("imageSize");if(r.width>r.height){var a=r.width*n,o=(a-e.getAvatarSize())/-2;t.cropit("offset",{x:o,y:0})}else if(r.width<r.height){var s=r.height*n,i=(s-e.getAvatarSize())/-2;t.cropit("offset",{x:0,y:i})}}else{var u=e.props.options.crop_org.crop;u&&(t.cropit("zoom",u.zoom),t.cropit("offset",{x:u.x,y:u.y}))}}})}},{key:"componentWillUnmount",value:function(){$(".crop-form").cropit("disable")}},{key:"render",value:function(){return l["default"].createElement("div",null,l["default"].createElement("div",{className:"modal-body modal-avatar-crop"},l["default"].createElement("div",{className:"crop-form"},l["default"].createElement("div",{className:"cropit-image-preview"}),l["default"].createElement("input",{type:"range",className:"cropit-image-zoom-input"}))),l["default"].createElement("div",{className:"modal-footer"},l["default"].createElement("div",{className:"col-md-6 col-md-offset-3"},l["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")),l["default"].createElement(d["default"],{onClick:this.props.showIndex,disabled:this.state.isLoading,className:"btn-default btn-block"},gettext("Cancel")))))}}]),t}(l["default"].Component);n["default"]=y},{"../../services/ajax":164,"../../services/snackbar":173,"../avatar":56,"../button":58,react:"react"}],67:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Gallery=n.GalleryItem=void 0;var u=e("react"),l=r(u),c=e("../button"),f=r(c),d=e("../../index"),p=r(d),m=e("../../services/ajax"),h=r(m),g=e("../../services/snackbar"),b=r(g),y=e("../../utils/batch"),v=r(y),_=n.GalleryItem=function(e){function t(){var e,n,r,s;a(this,t);for(var i=arguments.length,u=Array(i),l=0;i>l;l++)u[l]=arguments[l];return n=r=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(u))),r.select=function(){r.props.select(r.props.image)},s=n,o(r,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 l["default"].createElement("button",{type:"button",className:this.getClassName(),disabled:this.props.disabled,onClick:this.select},l["default"].createElement("img",{src:p["default"].get("MEDIA_URL")+this.props.image}))}}]),t}(l["default"].Component),w=n.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 l["default"].createElement("div",{className:"avatars-gallery"},l["default"].createElement("h3",null,this.props.name),l["default"].createElement("div",{className:"avatars-gallery-images"},(0,v["default"])(this.props.images,4,null).map(function(t,n){return l["default"].createElement("div",{className:"row",key:n},t.map(function(t,n){return l["default"].createElement("div",{className:"col-xs-3",key:n},t?l["default"].createElement(_,{image:t,disabled:e.props.disabled,select:e.props.select,selection:e.props.selection}):l["default"].createElement("div",{className:"blank-avatar"}))}))})))}}]),t}(l["default"].Component),E=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.select=function(e){n.setState({selection:e})},n.save=function(){return n.state.isLoading?!1:(n.setState({isLoading:!0}),void h["default"].post(n.props.user.api_url.avatar,{avatar:"galleries",image:n.state.selection}).then(function(e){n.setState({isLoading:!1}),b["default"].success(e.detail),n.props.onComplete(e.avatar_hash,e.options)},function(e){400===e.status?(b["default"].error(e.detail),n.setState({isLoading:!1})):n.props.showError(e)}))},n.state={selection:null,isLoading:!1},n}return s(t,e),i(t,[{key:"render",value:function(){var e=this;return l["default"].createElement("div",null,l["default"].createElement("div",{className:"modal-body modal-avatar-gallery"},this.props.options.galleries.map(function(t,n){return l["default"].createElement(w,{name:t.name,images:t.images,selection:e.state.selection,disabled:e.state.isLoading,select:e.select,key:n})})),l["default"].createElement("div",{className:"modal-footer"},l["default"].createElement("div",{className:"row"},l["default"].createElement("div",{className:"col-md-6 col-md-offset-3"},l["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")),l["default"].createElement(f["default"],{onClick:this.props.showIndex,disabled:this.state.isLoading,className:"btn-default btn-block"},gettext("Cancel"))))))}}]),t}(l["default"].Component);n["default"]=E},{"../../index":156,"../../services/ajax":164,"../../services/snackbar":173,"../../utils/batch":177,"../button":58,react:"react"}],68:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../avatar"),f=r(c),d=e("../button"),p=r(d),m=e("../loader"),h=r(m),g=e("../../services/ajax"),b=r(g),y=e("../../services/snackbar"),v=r(y),_=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.setGravatar=function(){n.callApi("gravatar")},n.setGenerated=function(){n.callApi("generated")},n.state={isLoading:!1},n}return s(t,e),i(t,[{key:"callApi",value:function(e){var t=this;return this.state.isLoading?!1:(this.setState({isLoading:!0}),void b["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?l["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?l["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?l["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?l["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?l["default"].createElement("div",{className:"avatar-preview preview-loading"},l["default"].createElement(f["default"],{user:e,size:"200"}),l["default"].createElement(h["default"],null)):l["default"].createElement("div",{className:"avatar-preview"},l["default"].createElement(f["default"],{user:e,size:"200"}))}},{key:"render",value:function(){return l["default"].createElement("div",{className:"modal-body modal-avatar-index"},l["default"].createElement("div",{className:"row"},l["default"].createElement("div",{className:"col-md-5"},this.getAvatarPreview()),l["default"].createElement("div",{className:"col-md-7"},this.getGravatarButton(),l["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}(l["default"].Component);n["default"]=_},{"../../services/ajax":164,"../../services/snackbar":173,"../avatar":56,"../button":58,"../loader":75,react:"react"}],69:[function(e,t,n){"use strict";function r(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}}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.ChangeAvatarError=void 0,n.select=i;var l=e("react"),c=r(l),f=e("./index"),d=r(f),p=e("./crop"),m=r(p),h=e("./upload"),g=r(h),b=e("./gallery"),y=r(b),v=e("../modal-loader"),_=r(v),w=e("../../reducers/users"),E=e("../../services/ajax"),O=r(E),k=e("../../services/store"),N=r(k),j=n.ChangeAvatarError=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(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,n,r,s;a(this,t);for(var i=arguments.length,u=Array(i),l=0;i>l;l++)u[l]=arguments[l];return n=r=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(u))),r.showError=function(e){r.setState({error:e})},r.showIndex=function(){r.setState({component:d["default"]})},r.showUpload=function(){r.setState({component:g["default"]})},r.showCrop=function(){r.setState({component:m["default"]})},r.showGallery=function(){r.setState({component:y["default"]})},r.completeFlow=function(e,t){N["default"].dispatch((0,w.updateAvatar)(r.props.user,e)),r.setState({component:d["default"],options:t})},s=n,o(r,s)}return s(t,e),u(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);n["default"]=x},{"../../reducers/users":163,"../../services/ajax":164,"../../services/store":174,"../modal-loader":76,"./crop":66,"./gallery":67,"./index":68,"./upload":70,react:"react"}],70:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./crop"),f=r(c),d=e("../button"),p=r(d),m=e("../../services/ajax"),h=r(m),g=e("../../services/snackbar"),b=r(g),y=e("../../utils/file-size"),v=r(y),_=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.pickFile=function(){document.getElementById("avatar-hidden-upload").click()},n.uploadFile=function(){var e=document.getElementById("avatar-hidden-upload").files[0],t=n.validateFile(e);if(t)return void b["default"].error(t);n.setState({image:e,preview:URL.createObjectURL(e),progress:0});var r=new FormData;r.append("avatar","upload"),r.append("image",e),h["default"].upload(n.props.user.api_url.avatar,r,function(e){n.setState({progress:e})}).then(function(e){n.setState({options:e.options,uploaded:e.detail}),b["default"].info(gettext("Your image has been uploaded and you may now crop it."))},function(e){400===e.status?(b["default"].error(e.detail),n.setState({isLoading:!1,image:null,progress:0})):n.props.showError(e)})},n.state={image:null,preview:null,progress:0,uploaded:null},n}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 n=!1,r=e.name.toLowerCase();return this.props.options.upload.allowed_extensions.map(function(e){r.substr(-1*e.length)===e&&(n=!0)}),n?!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 l["default"].createElement("div",{className:"modal-body modal-avatar-upload"},l["default"].createElement(p["default"],{className:"btn-pick-file",onClick:this.pickFile},l["default"].createElement("div",{className:"material-icon"},"input"),gettext("Select file")),l["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 l["default"].createElement("div",{className:"modal-body modal-avatar-upload"},l["default"].createElement("div",{className:"upload-progress"},l["default"].createElement("img",{src:this.state.preview}),l["default"].createElement("div",{className:"progress"},l["default"].createElement("div",{className:"progress-bar",role:"progressbar","aria-valuenow":"{this.state.progress}","aria-valuemin":"0","aria-valuemax":"100",style:{width:this.state.progress+"%"}},l["default"].createElement("span",{className:"sr-only"},this.getUploadProgressLabel())))))}},{key:"renderUpload",value:function(){return l["default"].createElement("div",null,l["default"].createElement("input",{type:"file",id:"avatar-hidden-upload",className:"hidden-file-upload",onChange:this.uploadFile}),this.state.image?this.getUploadProgress():this.getUploadButton(),l["default"].createElement("div",{className:"modal-footer"},l["default"].createElement("div",{className:"col-md-6 col-md-offset-3"},l["default"].createElement(p["default"],{onClick:this.props.showIndex,disabled:!!this.state.image,className:"btn-default btn-block"},gettext("Cancel")))))}},{key:"renderCrop",value:function(){return l["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}(l["default"].Component);n["default"]=_},{"../../services/ajax":164,"../../services/snackbar":173,"../../utils/file-size":180,"../button":58,"./crop":66,react:"react"}],71:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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 l["default"].createElement("button",{className:this.getClassName(),type:"button",onClick:this.props.toggleNav,"aria-haspopup":"true","aria-expanded":this.props.dropdown?"true":"false"},l["default"].createElement("i",{className:"material-icon"},"menu"))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],72:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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?l["default"].createElement("div",{className:"help-block errors"},this.props.validation.map(function(t,n){return l["default"].createElement("p",{key:e.props["for"]+"FeedbackItem"+n},t)})):null}},{key:"getFeedbackIcon",value:function(){return this.isValidated()?l["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()?l["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?l["default"].createElement("p",{className:"help-block"},this.props.helpText):null}},{key:"render",value:function(){return l["default"].createElement("div",{className:this.getClassName()},l["default"].createElement("label",{className:"control-label "+(this.props.labelClass||""),htmlFor:this.props["for"]||""},this.props.label+":"),l["default"].createElement("div",{className:this.props.controlClass||""},this.props.children,this.getFeedbackIcon(),this.getFeedbackDescription(),this.getFeedback(),this.getHelpText(),this.props.extra||null))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],73:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var l=e("react"),c=r(l),f=e("../utils/validators"),d=e("../services/snackbar"),p=r(d),m=(0,f.required)(),h=function(e){function t(){var e,n,r,i;o(this,t);for(var u=arguments.length,l=Array(u),c=0;u>c;c++)l[c]=arguments[c];return n=r=s(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(l))),r.bindInput=function(e){return function(t){var n=a({},e,t.target.value),o=r.state.errors||{};o[e]=r.validateField(e,n[e]),n.errors=o,r.setState(n)}},r.handleSubmit=function(e){if(e.preventDefault(),!r.state.isLoading&&r.clean()){r.setState({isLoading:!0});var t=r.send();t?t.then(function(e){r.setState({isLoading:!1}),r.handleSuccess(e)},function(e){r.setState({isLoading:!1}),r.handleError(e)}):r.setState({isLoading:!1})}},i=n,s(r,i)}return i(t,e),u(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||{}},n=[];for(var r in t.required)t.required.hasOwnProperty(r)&&t.required[r]&&n.push(r);for(var r in t.optional)t.optional.hasOwnProperty(r)&&t.optional[r]&&n.push(r);for(var a in n){var r=n[a],o=this.validateField(r,this.state[r]);null===o?e[r]=null:o&&(e[r]=o)}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 n=[];if(!this.state.validators)return n;var r={required:(this.state.validators.required||this.state.validators)[e],optional:(this.state.validators.optional||{})[e]},a=m(t)||!1;if(r.required){if(a)n=[a];else for(var o in r.required){var s=r.required[o](t);s&&n.push(s)}return n.length?n:null}if(a===!1&&r.optional){for(var o in r.optional){var s=r.optional[o](t);s&&n.push(s)}return n.length?n: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);n["default"]=h},{"../services/snackbar":173,"../utils/validators":187,react:"react"}],74:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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 l["default"].createElement("li",{className:this.getClassName()},this.props.children)}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],75:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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 l["default"].createElement("div",{className:this.props.className||"loader"},l["default"].createElement("div",{className:"loader-spinning-wheel"}))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],76:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./loader"),f=r(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 l["default"].createElement("div",{className:"modal-body modal-loader"},l["default"].createElement(f["default"],null))}}]),t}(l["default"].Component);n["default"]=d},{"./loader":75,react:"react"}],77:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./panel-message"),f=r(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?l["default"].createElement("p",{className:"help-block"},this.props.helpText):null}},{key:"render",value:function(){return l["default"].createElement("div",{className:"modal-body"},l["default"].createElement("div",{className:"message-icon"},l["default"].createElement("span",{className:"material-icon"},this.props.icon||"info_outline")),l["default"].createElement("div",{className:"message-body"},l["default"].createElement("p",{className:"lead"},this.props.message),this.getHelpText()))}}]),t}(f["default"]);n["default"]=d},{"./panel-message":89,react:"react"}],78:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../../panel-loader"),f=r(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 l["default"].createElement("div",{className:"panel panel-default panel-form"},l["default"].createElement("div",{className:"panel-heading"},l["default"].createElement("h3",{className:"panel-title"},gettext("Change username"))),l["default"].createElement(f["default"],null))}}]),t}(l["default"].Component);n["default"]=d},{"../../panel-loader":88,react:"react"}],79:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../../panel-message"),f=r(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 l["default"].createElement("div",{className:"panel panel-default panel-form"},l["default"].createElement("div",{className:"panel-heading"},l["default"].createElement("h3",{className:"panel-title"},gettext("Change username"))),l["default"].createElement(f["default"],{message:gettext("You can't change your username at the moment."),helpText:this.getHelpText()}))}}]),t}(l["default"].Component);n["default"]=d},{"../../panel-message":89,react:"react"}],80:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var l=e("react"),c=a(l),f=e("../../button"),d=a(f),p=e("../../form"),m=a(p),h=e("../../form-group"),g=a(h),b=e("../../../services/ajax"),y=a(b),v=e("../../../services/snackbar"),_=a(v),w=e("../../../utils/validators"),E=r(w),O=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.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},n}return i(t,e),u(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 t=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(t,{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 y["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(g["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}(m["default"]);n["default"]=O},{"../../../services/ajax":164,"../../../services/snackbar":173,"../../../utils/validators":187,"../../button":58,"../../form":73,"../../form-group":72,react:"react"}],81:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("moment"),l=r(u),c=e("react"),f=r(c),d=e("./form-loading"),p=r(d),m=e("./form-locked"),h=r(m),g=e("./form"),b=r(g),y=e("../../username-history/root"),v=r(y),_=e("../../../index"),w=r(_),E=e("../../../reducers/username-history"),O=e("../../../reducers/users"),k=e("../../../services/ajax"),N=r(k),j=e("../../../services/page-title"),x=r(j),P=e("../../../services/snackbar"),C=r(P),S=e("../../../services/store"),T=r(S),M=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.onComplete=function(e,t,r){n.setState({options:r}),T["default"].dispatch((0,E.addNameChange)({username:e,slug:t},n.props.user,n.props.user)),T["default"].dispatch((0,O.updateUsername)(n.props.user,e,t)),C["default"].success(gettext("Your username has been changed successfully."))},n.state={isLoaded:!1,options:null},n}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,l["default"])(t[0].next_on):null}})})}},{key:"getChangeForm",value:function(){return this.state.isLoaded?this.state.options.changes_left>0?f["default"].createElement(b["default"],{user:this.props.user,options:this.state.options,complete:this.onComplete}):f["default"].createElement(h["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);n["default"]=M},{"../../../index":156,"../../../reducers/username-history":162,"../../../reducers/users":163,"../../../services/ajax":164,"../../../services/page-title":171,"../../../services/snackbar":173,"../../../services/store":174,"../../username-history/root":138,"./form":80,"./form-loading":78,"./form-locked":79,moment:"moment",react:"react"}],82:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../button"),f=r(c),d=e("../form"),p=r(d),m=e("../form-group"),h=r(m),g=e("../select"),b=r(g),y=e("../yes-no-switch"),v=r(y),_=e("../../reducers/auth"),w=e("../../services/ajax"),E=r(w),O=e("../../services/page-title"),k=r(O),N=e("../../services/snackbar"),j=r(N),x=e("../../services/store"),P=r(x),C=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.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:{}},n.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")}],n.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")}],n}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 l["default"].createElement("form",{onSubmit:this.handleSubmit,className:"form-horizontal"},l["default"].createElement("div",{className:"panel panel-default panel-form"},l["default"].createElement("div",{className:"panel-heading"},l["default"].createElement("h3",{className:"panel-title"},gettext("Change forum options"))),l["default"].createElement("div",{className:"panel-body"},l["default"].createElement("fieldset",null,l["default"].createElement("legend",null,gettext("Privacy settings")),l["default"].createElement(h["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"},l["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})),l["default"].createElement(h["default"],{label:gettext("Private thread invitations"),"for":"id_limits_private_thread_invites_to",labelClass:"col-sm-4",controlClass:"col-sm-8"},l["default"].createElement(b["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}))),l["default"].createElement("fieldset",null,l["default"].createElement("legend",null,gettext("Automatic subscriptions")),l["default"].createElement(h["default"],{label:gettext("Threads I start"),"for":"id_subscribe_to_started_threads",labelClass:"col-sm-4",controlClass:"col-sm-8"},l["default"].createElement(b["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})),l["default"].createElement(h["default"],{label:gettext("Threads I reply to"),"for":"id_subscribe_to_replied_threads",labelClass:"col-sm-4",controlClass:"col-sm-8"},l["default"].createElement(b["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})))),l["default"].createElement("div",{className:"panel-footer"},l["default"].createElement("div",{className:"row"},l["default"].createElement("div",{className:"col-sm-8 col-sm-offset-4"},l["default"].createElement(f["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Save changes")))))))}}]),t}(p["default"]);n["default"]=C},{"../../reducers/auth":157,"../../services/ajax":164,"../../services/page-title":171,"../../services/snackbar":173,"../../services/store":174,"../button":58,"../form":73,"../form-group":72,"../select":109,"../yes-no-switch":155,react:"react"}],83:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.CompactNav=n.SideNav=void 0;var u=e("react"),l=r(u),c=e("react-router"),f=e("../li"),d=r(f),p=e("../../index");r(p),n.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 l["default"].createElement("div",{className:"list-group nav-side"},this.props.options.map(function(t){return l["default"].createElement(c.Link,{to:e.props.baseUrl+t.component+"/",className:"list-group-item",activeClassName:"active",key:t.component},l["default"].createElement("span",{className:"material-icon"},t.icon),t.name)}))}}]),t}(l["default"].Component),n.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 l["default"].createElement("ul",{className:"dropdown-menu",role:"menu"},this.props.options.map(function(t){return l["default"].createElement(d["default"],{path:e.props.baseUrl+t.component+"/",key:t.component},l["default"].createElement(c.Link,{to:e.props.baseUrl+t.component+"/",onClick:e.props.hideNav},l["default"].createElement("span",{className:"material-icon"},t.icon),t.name))}))}}]),t}(l["default"].Component)},{"../../index":156,"../li":74,react:"react","react-router":"react-router"}],84:[function(e,t,n){"use strict";function r(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 u(){return[{path:N["default"].get("USERCP_URL")+"forum-options/",component:(0,d.connect)(i)(b["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"])}]}var l=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.select=i,n.paths=u;var c=e("react"),f=r(c),d=e("react-redux"),p=e("../dropdown-toggle"),m=r(p),h=e("./navs"),g=e("./forum-options"),b=r(g),y=e("./change-username/root"),v=r(y),_=e("./sign-in-credentials/root"),w=r(_),E=e("../with-dropdown"),O=r(E),k=e("../../index"),N=r(k),j=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 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(m["default"],{toggleNav:this.toggleNav,dropdown:this.state.dropdown}))),f["default"].createElement("div",{className:this.getCompactNavClassName()},f["default"].createElement(h.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(h.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"]);n["default"]=j},{"../../index":156,"../dropdown-toggle":71,"../with-dropdown":154,"./change-username/root":81,"./forum-options":82,"./navs":83,"./sign-in-credentials/root":87,react:"react","react-redux":"react-redux"}],85:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var l=e("react"),c=a(l),f=e("../../button"),d=a(f),p=e("../../form"),m=a(p),h=e("../../form-group"),g=a(h),b=e("../../../services/ajax"),y=a(b),v=e("../../../services/snackbar"),_=a(v),w=e("../../../utils/validators"),E=r(w),O=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.state={new_email:"",password:"",validators:{new_email:[E.email()],password:[]},isLoading:!1},n}return i(t,e),u(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 y["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"
 return!0}},{key:"validateField",value:function(e,t){var n=[];if(!this.state.validators)return n;var r={required:(this.state.validators.required||this.state.validators)[e],optional:(this.state.validators.optional||{})[e]},a=m(t)||!1;if(r.required){if(a)n=[a];else for(var o in r.required){var s=r.required[o](t);s&&n.push(s)}return n.length?n:null}if(a===!1&&r.optional){for(var o in r.optional){var s=r.optional[o](t);s&&n.push(s)}return n.length?n: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);n["default"]=h},{"../services/snackbar":173,"../utils/validators":187,react:"react"}],74:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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 l["default"].createElement("li",{className:this.getClassName()},this.props.children)}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],75:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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 l["default"].createElement("div",{className:this.props.className||"loader"},l["default"].createElement("div",{className:"loader-spinning-wheel"}))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],76:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./loader"),f=r(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 l["default"].createElement("div",{className:"modal-body modal-loader"},l["default"].createElement(f["default"],null))}}]),t}(l["default"].Component);n["default"]=d},{"./loader":75,react:"react"}],77:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./panel-message"),f=r(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?l["default"].createElement("p",{className:"help-block"},this.props.helpText):null}},{key:"render",value:function(){return l["default"].createElement("div",{className:"modal-body"},l["default"].createElement("div",{className:"message-icon"},l["default"].createElement("span",{className:"material-icon"},this.props.icon||"info_outline")),l["default"].createElement("div",{className:"message-body"},l["default"].createElement("p",{className:"lead"},this.props.message),this.getHelpText()))}}]),t}(f["default"]);n["default"]=d},{"./panel-message":89,react:"react"}],78:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../../panel-loader"),f=r(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 l["default"].createElement("div",{className:"panel panel-default panel-form"},l["default"].createElement("div",{className:"panel-heading"},l["default"].createElement("h3",{className:"panel-title"},gettext("Change username"))),l["default"].createElement(f["default"],null))}}]),t}(l["default"].Component);n["default"]=d},{"../../panel-loader":88,react:"react"}],79:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../../panel-message"),f=r(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 l["default"].createElement("div",{className:"panel panel-default panel-form"},l["default"].createElement("div",{className:"panel-heading"},l["default"].createElement("h3",{className:"panel-title"},gettext("Change username"))),l["default"].createElement(f["default"],{message:gettext("You can't change your username at the moment."),helpText:this.getHelpText()}))}}]),t}(l["default"].Component);n["default"]=d},{"../../panel-message":89,react:"react"}],80:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var l=e("react"),c=a(l),f=e("../../button"),d=a(f),p=e("../../form"),m=a(p),h=e("../../form-group"),g=a(h),b=e("../../../services/ajax"),y=a(b),v=e("../../../services/snackbar"),_=a(v),w=e("../../../utils/validators"),E=r(w),O=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.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},n}return i(t,e),u(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 t=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(t,{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 y["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(g["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}(m["default"]);n["default"]=O},{"../../../services/ajax":164,"../../../services/snackbar":173,"../../../utils/validators":187,"../../button":58,"../../form":73,"../../form-group":72,react:"react"}],81:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("moment"),l=r(u),c=e("react"),f=r(c),d=e("./form-loading"),p=r(d),m=e("./form-locked"),h=r(m),g=e("./form"),b=r(g),y=e("../../username-history/root"),v=r(y),_=e("../../../index"),w=r(_),E=e("../../../reducers/username-history"),O=e("../../../reducers/users"),k=e("../../../services/ajax"),N=r(k),j=e("../../../services/page-title"),x=r(j),P=e("../../../services/snackbar"),C=r(P),S=e("../../../services/store"),T=r(S),M=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.onComplete=function(e,t,r){n.setState({options:r}),T["default"].dispatch((0,E.addNameChange)({username:e,slug:t},n.props.user,n.props.user)),T["default"].dispatch((0,O.updateUsername)(n.props.user,e,t)),C["default"].success(gettext("Your username has been changed successfully."))},n.state={isLoaded:!1,options:null},n}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,l["default"])(t[0].next_on):null}})})}},{key:"getChangeForm",value:function(){return this.state.isLoaded?this.state.options.changes_left>0?f["default"].createElement(b["default"],{user:this.props.user,options:this.state.options,complete:this.onComplete}):f["default"].createElement(h["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);n["default"]=M},{"../../../index":156,"../../../reducers/username-history":162,"../../../reducers/users":163,"../../../services/ajax":164,"../../../services/page-title":171,"../../../services/snackbar":173,"../../../services/store":174,"../../username-history/root":138,"./form":80,"./form-loading":78,"./form-locked":79,moment:"moment",react:"react"}],82:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../button"),f=r(c),d=e("../form"),p=r(d),m=e("../form-group"),h=r(m),g=e("../select"),b=r(g),y=e("../yes-no-switch"),v=r(y),_=e("../../reducers/auth"),w=e("../../services/ajax"),E=r(w),O=e("../../services/page-title"),k=r(O),N=e("../../services/snackbar"),j=r(N),x=e("../../services/store"),P=r(x),C=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.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:{}},n.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")}],n.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")}],n}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 l["default"].createElement("form",{onSubmit:this.handleSubmit,className:"form-horizontal"},l["default"].createElement("div",{className:"panel panel-default panel-form"},l["default"].createElement("div",{className:"panel-heading"},l["default"].createElement("h3",{className:"panel-title"},gettext("Change forum options"))),l["default"].createElement("div",{className:"panel-body"},l["default"].createElement("fieldset",null,l["default"].createElement("legend",null,gettext("Privacy settings")),l["default"].createElement(h["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"},l["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})),l["default"].createElement(h["default"],{label:gettext("Private thread invitations"),"for":"id_limits_private_thread_invites_to",labelClass:"col-sm-4",controlClass:"col-sm-8"},l["default"].createElement(b["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}))),l["default"].createElement("fieldset",null,l["default"].createElement("legend",null,gettext("Automatic subscriptions")),l["default"].createElement(h["default"],{label:gettext("Threads I start"),"for":"id_subscribe_to_started_threads",labelClass:"col-sm-4",controlClass:"col-sm-8"},l["default"].createElement(b["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})),l["default"].createElement(h["default"],{label:gettext("Threads I reply to"),"for":"id_subscribe_to_replied_threads",labelClass:"col-sm-4",controlClass:"col-sm-8"},l["default"].createElement(b["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})))),l["default"].createElement("div",{className:"panel-footer"},l["default"].createElement("div",{className:"row"},l["default"].createElement("div",{className:"col-sm-8 col-sm-offset-4"},l["default"].createElement(f["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Save changes")))))))}}]),t}(p["default"]);n["default"]=C},{"../../reducers/auth":157,"../../services/ajax":164,"../../services/page-title":171,"../../services/snackbar":173,"../../services/store":174,"../button":58,"../form":73,"../form-group":72,"../select":109,"../yes-no-switch":155,react:"react"}],83:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.CompactNav=n.SideNav=void 0;var u=e("react"),l=r(u),c=e("react-router"),f=e("../li"),d=r(f),p=e("../../index");r(p),n.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 l["default"].createElement("div",{className:"list-group nav-side"},this.props.options.map(function(t){return l["default"].createElement(c.Link,{to:e.props.baseUrl+t.component+"/",className:"list-group-item",activeClassName:"active",key:t.component},l["default"].createElement("span",{className:"material-icon"},t.icon),t.name)}))}}]),t}(l["default"].Component),n.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 l["default"].createElement("ul",{className:"dropdown-menu",role:"menu"},this.props.options.map(function(t){return l["default"].createElement(d["default"],{path:e.props.baseUrl+t.component+"/",key:t.component},l["default"].createElement(c.Link,{to:e.props.baseUrl+t.component+"/",onClick:e.props.hideNav},l["default"].createElement("span",{className:"material-icon"},t.icon),t.name))}))}}]),t}(l["default"].Component)},{"../../index":156,"../li":74,react:"react","react-router":"react-router"}],84:[function(e,t,n){"use strict";function r(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 u(){return[{path:N["default"].get("USERCP_URL")+"forum-options/",component:(0,d.connect)(i)(b["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"])}]}var l=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.select=i,n.paths=u;var c=e("react"),f=r(c),d=e("react-redux"),p=e("../dropdown-toggle"),m=r(p),h=e("./navs"),g=e("./forum-options"),b=r(g),y=e("./change-username/root"),v=r(y),_=e("./sign-in-credentials/root"),w=r(_),E=e("../with-dropdown"),O=r(E),k=e("../../index"),N=r(k),j=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 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(m["default"],{toggleNav:this.toggleNav,dropdown:this.state.dropdown}))),f["default"].createElement("div",{className:this.getCompactNavClassName()},f["default"].createElement(h.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(h.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"]);n["default"]=j},{"../../index":156,"../dropdown-toggle":71,"../with-dropdown":154,"./change-username/root":81,"./forum-options":82,"./navs":83,"./sign-in-credentials/root":87,react:"react","react-redux":"react-redux"}],85:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var l=e("react"),c=a(l),f=e("../../button"),d=a(f),p=e("../../form"),m=a(p),h=e("../../form-group"),g=a(h),b=e("../../../services/ajax"),y=a(b),v=e("../../../services/snackbar"),_=a(v),w=e("../../../utils/validators"),E=r(w),O=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.state={new_email:"",password:"",validators:{new_email:[E.email()],password:[]},isLoading:!1},n}return i(t,e),u(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 y["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(g["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(g["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}(m["default"]);n["default"]=O},{"../../../services/ajax":164,"../../../services/snackbar":173,"../../../utils/validators":187,"../../button":58,"../../form":73,"../../form-group":72,react:"react"}],86:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var l=e("react"),c=a(l),f=e("../../button"),d=a(f),p=e("../../form"),m=a(p),h=e("../../form-group"),g=a(h),b=e("../../../index"),y=a(b),v=e("../../../services/ajax"),_=a(v),w=e("../../../services/snackbar"),E=a(w),O=e("../../../utils/validators"),k=r(O),N=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.state={new_password:"",repeat_password:"",password:"",validators:{new_password:[k.passwordMinLength(y["default"].get("SETTINGS"))],repeat_password:[],password:[]},isLoading:!1},n}return i(t,e),u(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(g["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(g["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(g["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}(m["default"]);n["default"]=N},{"../../../index":156,"../../../services/ajax":164,"../../../services/snackbar":173,"../../../utils/validators":187,"../../button":58,"../../form":73,"../../form-group":72,react:"react"}],87:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./change-email"),f=r(c),d=e("./change-password"),p=r(d),m=e("../../../index"),h=r(m),g=e("../../../services/page-title"),b=r(g),y=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(){b["default"].set({title:gettext("Change email or password"),parent:gettext("Change your options")})}},{key:"render",value:function(){return l["default"].createElement("div",null,l["default"].createElement(f["default"],{user:this.props.user}),l["default"].createElement(p["default"],{user:this.props.user}),l["default"].createElement("p",{className:"message-line"},l["default"].createElement("span",{className:"material-icon"},"warning"),l["default"].createElement("a",{href:h["default"].get("FORGOTTEN_PASSWORD_URL")},gettext("Change forgotten password"))))}}]),t}(l["default"].Component);n["default"]=y},{"../../../index":156,"../../../services/page-title":171,"./change-email":85,"./change-password":86,react:"react"}],88:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./loader"),f=r(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 l["default"].createElement("div",{className:"panel-body panel-body-loading"},l["default"].createElement(f["default"],{className:"loader loader-spaced"}))}}]),t}(l["default"].Component);n["default"]=d},{"./loader":75,react:"react"}],89:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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?l["default"].createElement("p",{className:"help-block"},this.props.helpText):null}},{key:"render",value:function(){return l["default"].createElement("div",{className:"panel-body panel-message-body"},l["default"].createElement("div",{className:"message-icon"},l["default"].createElement("span",{className:"material-icon"},this.props.icon||"info_outline")),l["default"].createElement("div",{className:"message-body"},l["default"].createElement("p",{className:"lead"},this.props.message),this.getHelpText()))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],90:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.LABELS=n.STYLES=void 0;var u=e("react"),l=r(u),c=e("../services/zxcvbn"),f=r(c),d=n.STYLES=["progress-bar-danger","progress-bar-warning","progress-bar-warning","progress-bar-primary","progress-bar-success"],p=n.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.")],m=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n._score=0,n._password=null,n._inputs=[],n}return s(t,e),i(t,[{key:"getScore",value:function(e,t){var n=this,r=!1;return e.trim()!==this._password&&(r=!0),t.length!==this._inputs.length?r=!0:t.map(function(e,t){e.trim()!==n._inputs[t]&&(r=!0)}),r&&(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 l["default"].createElement("div",{className:"help-block password-strength"},l["default"].createElement("div",{className:"progress"},l["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"},l["default"].createElement("span",{className:"sr-only"},p[e]))),l["default"].createElement("p",{className:"text-small"},p[e]))}}]),t}(l["default"].Component);n["default"]=m},{"../services/zxcvbn":175,react:"react"}],91:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../avatar"),f=r(c),d=e("../dropdown-toggle"),p=r(d),m=e("./follow-button"),h=r(m),g=e("./moderation/nav"),b=r(g),y=e("../user-status"),v=r(y),_=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 l["default"].createElement("li",{className:"user-status-display"},l["default"].createElement(v["default"],{user:this.props.profile,status:this.props.profile.status},l["default"].createElement(y.StatusIcon,{user:this.props.profile,status:this.props.profile.status}),l["default"].createElement(y.StatusLabel,{user:this.props.profile,status:this.props.profile.status,className:"status-label"})))}},{key:"getUserRank",value:function(){return this.props.profile.rank.is_tab?l["default"].createElement("li",{className:"user-rank"},l["default"].createElement("a",{href:this.props.profile.rank.absolute_url,className:"item-title"},this.props.profile.rank.name)):l["default"].createElement("li",{className:"user-rank"},l["default"].createElement("span",{className:"item-title"},this.props.profile.rank.name))}},{key:"getUserTitle",value:function(){return this.props.profile.title?l["default"].createElement("li",{className:"user-title"},this.props.profile.title):this.props.profile.rank.title?l["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 l["default"].createElement("li",{className:"user-joined-on"},l["default"].createElement("abbr",{title:e},t))}},{key:"getEmail",value:function(){return this.props.profile.email?l["default"].createElement("li",{className:"user-email"},l["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?l["default"].createElement(h["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?l["default"].createElement("div",{className:"btn-group btn-aligned hidden-xs hidden-sm"},l["default"].createElement("button",{className:"btn btn-default btn-moderate dropdown-toggle",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},l["default"].createElement("span",{className:"material-icon"},"tonality"),gettext("Moderation")),l["default"].createElement(b["default"],{profile:this.props.profile})):null}},{key:"render",value:function(){return l["default"].createElement("div",{className:"page-header"},l["default"].createElement("div",{className:"container"},l["default"].createElement("div",{className:"row"},l["default"].createElement("div",{className:"col-md-9 col-md-offset-3"},l["default"].createElement("h1",{className:"pull-left"},l["default"].createElement(f["default"],{user:this.props.profile,size:"100"}),l["default"].createElement("span",{className:"user-name"},this.props.profile.username)),this.getFollowButton(),this.getModerationButton(),l["default"].createElement(p["default"],{toggleNav:this.props.toggleNav,dropdown:this.props.dropdown})))),l["default"].createElement("div",{className:"header-stats"},l["default"].createElement("div",{className:"container"},l["default"].createElement("div",{className:"row"},l["default"].createElement("div",{className:"col-md-9 col-md-offset-3"},l["default"].createElement("ul",{className:"list-inline"},this.getUserStatus(),this.getUserRank(),this.getUserTitle(),this.getJoinedOn(),this.getEmail()))))))}}]),t}(l["default"].Component);n["default"]=_},{"../avatar":56,"../dropdown-toggle":71,"../user-status":132,"./follow-button":93,"./moderation/nav":99,react:"react"}],92:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("moment"),l=r(u),c=e("react"),f=r(c),d=e("../panel-loader"),p=r(d),m=e("../panel-message"),h=r(m),g=e("../../index"),b=r(g),y=e("../../services/polls"),v=r(y),_=e("../../services/page-title"),w=r(_),E=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.update=function(e){e.expires_on&&(e.expires_on=(0,l["default"])(e.expires_on)),n.setState({isLoaded:!0,error:null,ban:e})},n.error=function(e){n.setState({isLoaded:!0,error:e.detail,ban:null})},b["default"].has("PROFILE_BAN")?n.initWithPreloadedData(b["default"].pop("PROFILE_BAN")):n.initWithoutPreloadedData(),n.startPolling(e.profile.api_url.ban),n}return s(t,e),i(t,[{key:"initWithPreloadedData",value:function(e){e.expires_on&&(e.expires_on=(0,l["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,l["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(h["default"],{message:gettext("No ban is active at the moment.")})):this.state.error?f["default"].createElement("div",null,f["default"].createElement(h["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);n["default"]=E},{"../../index":156,"../../services/page-title":171,"../../services/polls":172,"../panel-loader":88,"../panel-message":89,moment:"moment",react:"react"}],93:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../button"),f=r(c),d=e("../../reducers/profile"),p=e("../../services/ajax"),m=r(p),h=e("../../services/snackbar"),g=r(h),b=e("../../services/store"),y=r(b),v=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.action=function(){n.setState({isLoading:!0}),n.props.profile.is_followed?y["default"].dispatch((0,d.patch)({is_followed:!1,followers:n.props.profile.followers-1})):y["default"].dispatch((0,d.patch)({is_followed:!0,followers:n.props.profile.followers+1})),m["default"].post(n.props.profile.api_url.follow).then(function(e){n.setState({isLoading:!1}),y["default"].dispatch((0,d.patch)(e))},function(e){n.setState({isLoading:!1}),g["default"].apiError(e)})},n.state={isLoading:!1},n}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 l["default"].createElement(f["default"],{className:this.getClassName(),disabled:this.state.isLoading,onClick:this.action},l["default"].createElement("span",{className:"material-icon"},this.getIcon()),this.getLabel())}}]),t}(l["default"].Component);n["default"]=v},{"../../reducers/profile":158,"../../services/ajax":164,"../../services/snackbar":173,"../../services/store":174,"../button":58,react:"react"}],94:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var l=e("react"),c=r(l),f=e("../button"),d=r(f),p=e("../search"),m=r(p),h=e("../users-list/root"),g=r(h),b=e("../../index"),y=r(b),v=e("../../reducers/users"),_=e("../../services/ajax"),w=r(_),E=e("../../services/snackbar"),O=r(E),k=e("../../services/store"),N=r(k),j=e("../../services/page-title"),x=r(j),P=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.loadMore=function(){n.setState({isBusy:!0}),n.loadUsers(n.state.page+1,n.state.search)},n.search=function(e){n.setState({isLoaded:!1,isBusy:!0,search:e.target.value,count:0,more:0,page:1,pages:1}),n.loadUsers(1,e.target.value)},n.setSpecialProps(),y["default"].has(n.PRELOADED_DATA_KEY)?n.initWithPreloadedData(y["default"].pop(n.PRELOADED_DATA_KEY)):n.initWithoutPreloadedData(),n}return i(t,e),u(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,n=arguments.length<=0||void 0===arguments[0]?1:arguments[0],r=arguments.length<=1||void 0===arguments[1]?null:arguments[1];w["default"].get(y["default"].get("USERS_API"),(e={},a(e,this.API_FILTER,this.props.profile.id),a(e,"name",r),a(e,"page",n||1),e),"user-"+this.API_FILTER).then(function(e){1===n?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 e=ngettext("You have %(users)s follower.","You have %(users)s followers.",this.state.count);return interpolate(e,{users:this.state.count},!0)}var e=ngettext("%(username)s has %(users)s follower.","%(username)s has %(users)s followers.",this.state.count);return interpolate(e,{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(g["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(m["default"],{className:"toolbar-right",value:this.state.search,onChange:this.search,placeholder:gettext("Search history...")})),this.getListBody())}}]),t}(c["default"].Component);n["default"]=P},{"../../index":156,"../../reducers/users":163,"../../services/ajax":164,"../../services/page-title":171,"../../services/snackbar":173,"../../services/store":174,"../button":58,"../search":108,"../users-list/root":139,react:"react"}],95:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,
 },c["default"].createElement(g["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(g["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}(m["default"]);n["default"]=O},{"../../../services/ajax":164,"../../../services/snackbar":173,"../../../utils/validators":187,"../../button":58,"../../form":73,"../../form-group":72,react:"react"}],86:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var l=e("react"),c=a(l),f=e("../../button"),d=a(f),p=e("../../form"),m=a(p),h=e("../../form-group"),g=a(h),b=e("../../../index"),y=a(b),v=e("../../../services/ajax"),_=a(v),w=e("../../../services/snackbar"),E=a(w),O=e("../../../utils/validators"),k=r(O),N=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.state={new_password:"",repeat_password:"",password:"",validators:{new_password:[k.passwordMinLength(y["default"].get("SETTINGS"))],repeat_password:[],password:[]},isLoading:!1},n}return i(t,e),u(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(g["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(g["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(g["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}(m["default"]);n["default"]=N},{"../../../index":156,"../../../services/ajax":164,"../../../services/snackbar":173,"../../../utils/validators":187,"../../button":58,"../../form":73,"../../form-group":72,react:"react"}],87:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./change-email"),f=r(c),d=e("./change-password"),p=r(d),m=e("../../../index"),h=r(m),g=e("../../../services/page-title"),b=r(g),y=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(){b["default"].set({title:gettext("Change email or password"),parent:gettext("Change your options")})}},{key:"render",value:function(){return l["default"].createElement("div",null,l["default"].createElement(f["default"],{user:this.props.user}),l["default"].createElement(p["default"],{user:this.props.user}),l["default"].createElement("p",{className:"message-line"},l["default"].createElement("span",{className:"material-icon"},"warning"),l["default"].createElement("a",{href:h["default"].get("FORGOTTEN_PASSWORD_URL")},gettext("Change forgotten password"))))}}]),t}(l["default"].Component);n["default"]=y},{"../../../index":156,"../../../services/page-title":171,"./change-email":85,"./change-password":86,react:"react"}],88:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./loader"),f=r(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 l["default"].createElement("div",{className:"panel-body panel-body-loading"},l["default"].createElement(f["default"],{className:"loader loader-spaced"}))}}]),t}(l["default"].Component);n["default"]=d},{"./loader":75,react:"react"}],89:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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?l["default"].createElement("p",{className:"help-block"},this.props.helpText):null}},{key:"render",value:function(){return l["default"].createElement("div",{className:"panel-body panel-message-body"},l["default"].createElement("div",{className:"message-icon"},l["default"].createElement("span",{className:"material-icon"},this.props.icon||"info_outline")),l["default"].createElement("div",{className:"message-body"},l["default"].createElement("p",{className:"lead"},this.props.message),this.getHelpText()))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],90:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.LABELS=n.STYLES=void 0;var u=e("react"),l=r(u),c=e("../services/zxcvbn"),f=r(c),d=n.STYLES=["progress-bar-danger","progress-bar-warning","progress-bar-warning","progress-bar-primary","progress-bar-success"],p=n.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.")],m=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n._score=0,n._password=null,n._inputs=[],n}return s(t,e),i(t,[{key:"getScore",value:function(e,t){var n=this,r=!1;return e.trim()!==this._password&&(r=!0),t.length!==this._inputs.length?r=!0:t.map(function(e,t){e.trim()!==n._inputs[t]&&(r=!0)}),r&&(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 l["default"].createElement("div",{className:"help-block password-strength"},l["default"].createElement("div",{className:"progress"},l["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"},l["default"].createElement("span",{className:"sr-only"},p[e]))),l["default"].createElement("p",{className:"text-small"},p[e]))}}]),t}(l["default"].Component);n["default"]=m},{"../services/zxcvbn":175,react:"react"}],91:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../avatar"),f=r(c),d=e("../dropdown-toggle"),p=r(d),m=e("./follow-button"),h=r(m),g=e("./moderation/nav"),b=r(g),y=e("../user-status"),v=r(y),_=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 l["default"].createElement("li",{className:"user-status-display"},l["default"].createElement(v["default"],{user:this.props.profile,status:this.props.profile.status},l["default"].createElement(y.StatusIcon,{user:this.props.profile,status:this.props.profile.status}),l["default"].createElement(y.StatusLabel,{user:this.props.profile,status:this.props.profile.status,className:"status-label"})))}},{key:"getUserRank",value:function(){return this.props.profile.rank.is_tab?l["default"].createElement("li",{className:"user-rank"},l["default"].createElement("a",{href:this.props.profile.rank.absolute_url,className:"item-title"},this.props.profile.rank.name)):l["default"].createElement("li",{className:"user-rank"},l["default"].createElement("span",{className:"item-title"},this.props.profile.rank.name))}},{key:"getUserTitle",value:function(){return this.props.profile.title?l["default"].createElement("li",{className:"user-title"},this.props.profile.title):this.props.profile.rank.title?l["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 l["default"].createElement("li",{className:"user-joined-on"},l["default"].createElement("abbr",{title:e},t))}},{key:"getEmail",value:function(){return this.props.profile.email?l["default"].createElement("li",{className:"user-email"},l["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?l["default"].createElement(h["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?l["default"].createElement("div",{className:"btn-group btn-aligned hidden-xs hidden-sm"},l["default"].createElement("button",{className:"btn btn-default btn-moderate dropdown-toggle",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},l["default"].createElement("span",{className:"material-icon"},"tonality"),gettext("Moderation")),l["default"].createElement(b["default"],{profile:this.props.profile})):null}},{key:"render",value:function(){return l["default"].createElement("div",{className:"page-header"},l["default"].createElement("div",{className:"container"},l["default"].createElement("div",{className:"row"},l["default"].createElement("div",{className:"col-md-9 col-md-offset-3"},l["default"].createElement("h1",{className:"pull-left"},l["default"].createElement(f["default"],{user:this.props.profile,size:"100"}),l["default"].createElement("span",{className:"user-name"},this.props.profile.username)),this.getFollowButton(),this.getModerationButton(),l["default"].createElement(p["default"],{toggleNav:this.props.toggleNav,dropdown:this.props.dropdown})))),l["default"].createElement("div",{className:"header-stats"},l["default"].createElement("div",{className:"container"},l["default"].createElement("div",{className:"row"},l["default"].createElement("div",{className:"col-md-9 col-md-offset-3"},l["default"].createElement("ul",{className:"list-inline"},this.getUserStatus(),this.getUserRank(),this.getUserTitle(),this.getJoinedOn(),this.getEmail()))))))}}]),t}(l["default"].Component);n["default"]=_},{"../avatar":56,"../dropdown-toggle":71,"../user-status":132,"./follow-button":93,"./moderation/nav":99,react:"react"}],92:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("moment"),l=r(u),c=e("react"),f=r(c),d=e("../panel-loader"),p=r(d),m=e("../panel-message"),h=r(m),g=e("../../index"),b=r(g),y=e("../../services/polls"),v=r(y),_=e("../../services/page-title"),w=r(_),E=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.update=function(e){e.expires_on&&(e.expires_on=(0,l["default"])(e.expires_on)),n.setState({isLoaded:!0,error:null,ban:e})},n.error=function(e){n.setState({isLoaded:!0,error:e.detail,ban:null})},b["default"].has("PROFILE_BAN")?n.initWithPreloadedData(b["default"].pop("PROFILE_BAN")):n.initWithoutPreloadedData(),n.startPolling(e.profile.api_url.ban),n}return s(t,e),i(t,[{key:"initWithPreloadedData",value:function(e){e.expires_on&&(e.expires_on=(0,l["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,l["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(h["default"],{message:gettext("No ban is active at the moment.")})):this.state.error?f["default"].createElement("div",null,f["default"].createElement(h["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);n["default"]=E},{"../../index":156,"../../services/page-title":171,"../../services/polls":172,"../panel-loader":88,"../panel-message":89,moment:"moment",react:"react"}],93:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../button"),f=r(c),d=e("../../reducers/profile"),p=e("../../services/ajax"),m=r(p),h=e("../../services/snackbar"),g=r(h),b=e("../../services/store"),y=r(b),v=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.action=function(){n.setState({isLoading:!0}),n.props.profile.is_followed?y["default"].dispatch((0,d.patch)({is_followed:!1,followers:n.props.profile.followers-1})):y["default"].dispatch((0,d.patch)({is_followed:!0,followers:n.props.profile.followers+1})),m["default"].post(n.props.profile.api_url.follow).then(function(e){n.setState({isLoading:!1}),y["default"].dispatch((0,d.patch)(e))},function(e){n.setState({isLoading:!1}),g["default"].apiError(e)})},n.state={isLoading:!1},n}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 l["default"].createElement(f["default"],{className:this.getClassName(),disabled:this.state.isLoading,onClick:this.action},l["default"].createElement("span",{className:"material-icon"},this.getIcon()),this.getLabel())}}]),t}(l["default"].Component);n["default"]=v},{"../../reducers/profile":158,"../../services/ajax":164,"../../services/snackbar":173,"../../services/store":174,"../button":58,react:"react"}],94:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var l=e("react"),c=r(l),f=e("../button"),d=r(f),p=e("../search"),m=r(p),h=e("../users-list/root"),g=r(h),b=e("../../index"),y=r(b),v=e("../../reducers/users"),_=e("../../services/ajax"),w=r(_),E=e("../../services/snackbar"),O=r(E),k=e("../../services/store"),N=r(k),j=e("../../services/page-title"),x=r(j),P=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.loadMore=function(){n.setState({isBusy:!0}),n.loadUsers(n.state.page+1,n.state.search)},n.search=function(e){n.setState({isLoaded:!1,isBusy:!0,search:e.target.value,count:0,more:0,page:1,pages:1}),n.loadUsers(1,e.target.value)},n.setSpecialProps(),y["default"].has(n.PRELOADED_DATA_KEY)?n.initWithPreloadedData(y["default"].pop(n.PRELOADED_DATA_KEY)):n.initWithoutPreloadedData(),n}return i(t,e),u(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,n=arguments.length<=0||void 0===arguments[0]?1:arguments[0],r=arguments.length<=1||void 0===arguments[1]?null:arguments[1];w["default"].get(y["default"].get("USERS_API"),(e={},a(e,this.API_FILTER,this.props.profile.id),a(e,"name",r),a(e,"page",n||1),e),"user-"+this.API_FILTER).then(function(e){1===n?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 e=ngettext("You have %(users)s follower.","You have %(users)s followers.",this.state.count);return interpolate(e,{users:this.state.count},!0)}var e=ngettext("%(username)s has %(users)s follower.","%(username)s has %(users)s followers.",this.state.count);return interpolate(e,{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(g["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(m["default"],{className:"toolbar-right",value:this.state.search,onChange:this.search,placeholder:gettext("Search history...")})),this.getListBody())}}]),t}(c["default"].Component);n["default"]=P},{"../../index":156,"../../reducers/users":163,"../../services/ajax":164,"../../services/page-title":171,"../../services/snackbar":173,"../../services/store":174,"../button":58,"../search":108,"../users-list/root":139,react:"react"}],95:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,
-"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=(r(u),e("./followers")),c=r(l),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 e=ngettext("You are following %(users)s user.","You are following %(users)s users.",this.state.count);return interpolate(e,{users:this.state.count},!0)}var e=ngettext("%(username)s is following %(users)s user.","%(username)s is following %(users)s users.",this.state.count);return interpolate(e,{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"]);n["default"]=f},{"./followers":94,react:"react"}],96:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../../button"),f=r(c),d=e("../../form"),p=r(d),m=e("../../form-group"),h=r(m),g=e("../../modal-loader"),b=r(g),y=e("../../yes-no-switch"),v=r(y),_=e("../../modal-message"),w=r(_),E=e("../../../reducers/users"),O=e("../../../services/ajax"),k=r(O),N=e("../../../services/snackbar"),j=r(N),x=e("../../../services/store"),P=r(x),C=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoaded:!1,isLoading:!1,error:null,is_avatar_locked:"",avatar_lock_user_message:"",avatar_lock_staff_message:""},n}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 l["default"].createElement("form",{onSubmit:this.handleSubmit},l["default"].createElement("div",{className:"modal-body"},l["default"].createElement(h["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"},l["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})),l["default"].createElement(h["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"},l["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})),l["default"].createElement(h["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"},l["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}))),l["default"].createElement("div",{className:"modal-footer"},l["default"].createElement("button",{type:"button",className:"btn btn-default","data-dismiss":"modal"},gettext("Close")),l["default"].createElement(f["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Save changes"))))}},{key:"getModalBody",value:function(){return this.state.error?l["default"].createElement(w["default"],{icon:"remove_circle_outline",message:this.state.error}):this.state.isLoaded?this.getFormBody():l["default"].createElement(b["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 l["default"].createElement("div",{className:this.getClassName(),role:"document"},l["default"].createElement("div",{className:"modal-content"},l["default"].createElement("div",{className:"modal-header"},l["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},l["default"].createElement("span",{"aria-hidden":"true"},"×")),l["default"].createElement("h4",{className:"modal-title"},gettext("Avatar controls"))),this.getModalBody()))}}]),t}(p["default"]);n["default"]=C},{"../../../reducers/users":163,"../../../services/ajax":164,"../../../services/snackbar":173,"../../../services/store":174,"../../button":58,"../../form":73,"../../form-group":72,"../../modal-loader":76,"../../modal-message":77,"../../yes-no-switch":155,react:"react"}],97:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var l=e("react"),c=a(l),f=e("../../button"),d=a(f),p=e("../../form"),m=a(p),h=e("../../form-group"),g=a(h),b=e("../../modal-loader"),y=a(b),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=r(T),L=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoaded:!1,isLoading:!1,error:null,username:"",validators:{username:[M.usernameContent(),M.usernameMinLength(E["default"].get("SETTINGS")),M.usernameMaxLength(E["default"].get("SETTINGS"))]}},n}return i(t,e),u(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(g["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(y["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}(m["default"]);n["default"]=L},{"../../../index":156,"../../../reducers/username-history":162,"../../../reducers/users":163,"../../../services/ajax":164,"../../../services/snackbar":173,"../../../services/store":174,"../../../utils/validators":187,"../../button":58,"../../form":73,"../../form-group":72,"../../modal-loader":76,"../../modal-message":77,react:"react"}],98:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../../button"),f=r(c),d=e("../../form"),p=r(d),m=e("../../form-group"),h=r(m),g=e("../../modal-loader"),b=r(g),y=e("../../modal-message"),v=r(y),_=e("../../yes-no-switch"),w=r(_),E=e("../../../index"),O=r(E),k=e("../../../services/ajax"),N=r(k),j=e("../../../services/polls"),x=r(j),P=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.countdown=function(){window.setTimeout(function(){n.state.countdown>1?(n.setState({countdown:n.state.countdown-1}),n.countdown()):n.state.confirm||n.setState({confirm:!0})},1e3)},n.state={isLoaded:!1,isLoading:!1,isDeleted:!1,error:null,countdown:5,confirm:!1,with_content:!1},n}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 l["default"].createElement("form",{onSubmit:this.handleSubmit,className:"form-horizontal"},l["default"].createElement("div",{className:"modal-body"},l["default"].createElement(h["default"],{label:gettext("User content"),labelClass:"col-sm-4",controlClass:"col-sm-8","for":"id_with_content"},l["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}))),l["default"].createElement("div",{className:"modal-footer"},l["default"].createElement("button",{type:"button",className:"btn btn-default","data-dismiss":"modal"},gettext("Cancel")),l["default"].createElement(f["default"],{className:"btn-danger",loading:this.state.isLoading,disabled:!this.state.confirm},this.getButtonLabel())))}},{key:"getDeletedBody",value:function(){return l["default"].createElement("div",{className:"modal-body"},l["default"].createElement("div",{className:"message-icon"},l["default"].createElement("span",{className:"material-icon"},"info_outline")),l["default"].createElement("div",{className:"message-body"},l["default"].createElement("p",{className:"lead"},this.state.isDeleted),l["default"].createElement("p",null,l["default"].createElement("a",{href:O["default"].get("USERS_LIST_URL")},gettext("Return to users list")))))}},{key:"getModalBody",value:function(){return this.state.error?l["default"].createElement(v["default"],{icon:"remove_circle_outline",message:this.state.error}):this.state.isLoaded?this.state.isDeleted?this.getDeletedBody():this.getForm():l["default"].createElement(b["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 l["default"].createElement("div",{className:this.getClassName(),role:"document"},l["default"].createElement("div",{className:"modal-content"},l["default"].createElement("div",{className:"modal-header"},l["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},l["default"].createElement("span",{"aria-hidden":"true"},"×")),l["default"].createElement("h4",{className:"modal-title"},gettext("Delete user account"))),this.getModalBody()))}}]),t}(p["default"]);n["default"]=P},{"../../../index":156,"../../../services/ajax":164,"../../../services/polls":172,"../../button":58,"../../form":73,"../../form-group":72,"../../modal-loader":76,"../../modal-message":77,"../../yes-no-switch":155,react:"react"}],99:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("react-redux"),f=e("./avatar-controls"),d=r(f),p=e("./change-username"),m=r(p),h=e("./delete-account"),g=r(h),b=e("../../../services/modal"),y=r(b),v=function(e){return{tick:e.tick,user:e.auth,profile:e.profile}},_=function(e){function t(){var e,n,r,s;a(this,t);for(var i=arguments.length,u=Array(i),l=0;i>l;l++)u[l]=arguments[l];return n=r=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(u))),r.showAvatarDialog=function(){y["default"].show((0,c.connect)(v)(d["default"]))},r.showRenameDialog=function(){y["default"].show((0,c.connect)(v)(m["default"]))},r.showDeleteDialog=function(){y["default"].show((0,c.connect)(v)(g["default"]))},s=n,o(r,s)}return s(t,e),i(t,[{key:"getAvatarButton",value:function(){return this.props.profile.acl.can_moderate_avatar?l["default"].createElement("li",null,l["default"].createElement("button",{type:"button",className:"btn-link",onClick:this.showAvatarDialog},l["default"].createElement("span",{className:"material-icon"},"portrait"),gettext("Avatar controls"))):null}},{key:"getRenameButton",value:function(){return this.props.profile.acl.can_rename?l["default"].createElement("li",null,l["default"].createElement("button",{type:"button",className:"btn-link",onClick:this.showRenameDialog},l["default"].createElement("span",{className:"material-icon"},"credit_card"),gettext("Change username"))):null}},{key:"getDeleteButton",value:function(){return this.props.profile.acl.can_delete?l["default"].createElement("li",null,l["default"].createElement("button",{type:"button",className:"btn-link",onClick:this.showDeleteDialog},l["default"].createElement("span",{className:"material-icon"},"clear"),gettext("Delete account"))):null}},{key:"render",value:function(){return l["default"].createElement("ul",{className:"dropdown-menu dropdown-menu-right",role:"menu"},this.getAvatarButton(),this.getRenameButton(),this.getDeleteButton(),l["default"].createElement("li",{className:"divider hidden-md hidden-lg"}),l["default"].createElement("li",{className:"dropdown-buttons hidden-md hidden-lg"},l["default"].createElement("button",{type:"button",className:"btn btn-default btn-block",onClick:this.props.toggleNav},l["default"].createElement("span",{className:"material-icon"},"menu"),gettext("Menu"))))}}]),t}(l["default"].Component);n["default"]=_},{"../../../services/modal":170,"./avatar-controls":96,"./change-username":97,"./delete-account":98,react:"react","react-redux":"react-redux"}],100:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.CompactNav=n.SideNav=void 0;var u=e("react"),l=r(u),c=e("react-router"),f=e("../li"),d=r(f),p=e("./follow-button"),m=r(p),h=e("../../index"),g=(r(h),n.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?l["default"].createElement("span",{className:"badge"},this.props.profile[e.attr]):null}},{key:"render",value:function(){var e=this;return l["default"].createElement("div",{className:"list-group nav-side"},this.props.pages.map(function(t){return l["default"].createElement(c.Link,{to:e.props.baseUrl+t.component+"/",className:"list-group-item",activeClassName:"active",key:t.component},l["default"].createElement("span",{className:"material-icon"},t.icon),t.name,e.getMeta(t.meta))}))}}]),t}(l["default"].Component));n.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?l["default"].createElement(m["default"],{className:"btn btn-block",profile:this.props.profile}):null}},{key:"getModerationButton",value:function(){return this.props.profile.acl.can_moderate?l["default"].createElement("button",{type:"button",className:"btn btn-default btn-block",onClick:this.props.toggleModeration},l["default"].createElement("span",{className:"material-icon"},"tonality"),gettext("Moderation")):null}},{key:"getSpecialOptions",value:function(){return this.showSpecialOptions()?l["default"].createElement("li",{className:"dropdown-buttons"},this.getFollowButton(),this.getModerationButton()):null}},{key:"render",value:function(){var e=this;return l["default"].createElement("ul",{className:"dropdown-menu",role:"menu"},this.getSpecialOptions(),this.showSpecialOptions()?l["default"].createElement("li",{className:"divider"}):null,this.props.pages.map(function(t){return l["default"].createElement(d["default"],{path:e.props.baseUrl+t.component+"/",key:t.component},l["default"].createElement(c.Link,{to:e.props.baseUrl+t.component+"/",onClick:e.props.hideNav},l["default"].createElement("span",{className:"material-icon"},t.icon),t.name,e.getMeta(t.meta)))}))}}]),t}(g)},{"../../index":156,"../li":74,"./follow-button":93,react:"react","react-router":"react-router"}],101:[function(e,t,n){"use strict";function r(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 u(){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}var l=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.select=i,n.paths=u;var c=e("react"),f=r(c),d=e("react-redux"),p=e("../avatar"),m=r(p),h=e("./ban-details"),g=r(h),b=e("./followers"),y=r(b),v=e("./follows"),_=r(v),w=e("./username-history"),E=r(w),O=e("./Header"),k=r(O),N=e("./moderation/nav"),j=r(N),x=e("./navs"),P=e("../with-dropdown"),C=r(P),S=e("../../index"),T=r(S),M=e("../../reducers/profile"),L=e("../../services/polls"),R=r(L),A=e("../../services/store"),I=r(A),U=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.update=function(e){I["default"].dispatch((0,M.hydrate)(e))},n.toggleNav=function(){"pages"===n.state.dropdown?n.setState({dropdown:!1}):n.setState({dropdown:"pages"})},n.toggleModeration=function(){"moderation"===n.state.dropdown?n.setState({dropdown:!1}):n.setState({dropdown:"moderation"})},n.startPolling(e.profile.api_url.root),n}return s(t,e),l(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(m["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"]);n["default"]=U;var D=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 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:y["default"],follows:_["default"],"username-history":E["default"],"ban-details":g["default"]}},{"../../index":156,"../../reducers/profile":158,"../../services/polls":172,"../../services/store":174,"../avatar":56,"../with-dropdown":154,"./Header":91,"./ban-details":92,"./followers":94,"./follows":95,"./moderation/nav":99,"./navs":100,"./username-history":102,react:"react","react-redux":"react-redux"}],102:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../button"),f=r(c),d=e("../search"),p=r(d),m=e("../username-history/root"),h=r(m),g=e("../../index"),b=r(g),y=e("../../reducers/username-history"),v=e("../../services/ajax"),_=r(v),w=e("../../services/snackbar"),E=r(w),O=e("../../services/store"),k=r(O),N=e("../../services/page-title"),j=r(N),x=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.loadMore=function(){n.setState({isBusy:!0}),n.loadChanges(n.state.page+1,n.state.search)},n.search=function(e){n.setState({isLoaded:!1,isBusy:!0,search:e.target.value,count:0,more:0,page:1,pages:1}),n.loadChanges(1,e.target.value)},b["default"].has("PROFILE_NAME_HISTORY")?n.initWithPreloadedData(b["default"].pop("PROFILE_NAME_HISTORY")):n.initWithoutPreloadedData(),n}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,y.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],n=arguments.length<=1||void 0===arguments[1]?null:arguments[1];_["default"].get(b["default"].get("USERNAME_CHANGES_API"),{user:this.props.profile.id,search:n,page:t||1},"search-username-history").then(function(n){1===t?k["default"].dispatch((0,y.hydrate)(n.results)):k["default"].dispatch((0,y.append)(n.results)),e.setState({isLoaded:!0,isBusy:!1,count:n.count,more:n.more,page:n.page,pages:n.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 e=ngettext("Your username was changed %(changes)s time.","Your username was changed %(changes)s times.",this.state.count);return interpolate(e,{changes:this.state.count},!0)}var e=ngettext("%(username)s's username was changed %(changes)s time.","%(username)s's username was changed %(changes)s times.",this.state.count);
+"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=(r(u),e("./followers")),c=r(l),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 e=ngettext("You are following %(users)s user.","You are following %(users)s users.",this.state.count);return interpolate(e,{users:this.state.count},!0)}var e=ngettext("%(username)s is following %(users)s user.","%(username)s is following %(users)s users.",this.state.count);return interpolate(e,{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"]);n["default"]=f},{"./followers":94,react:"react"}],96:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../../button"),f=r(c),d=e("../../form"),p=r(d),m=e("../../form-group"),h=r(m),g=e("../../modal-loader"),b=r(g),y=e("../../yes-no-switch"),v=r(y),_=e("../../modal-message"),w=r(_),E=e("../../../reducers/users"),O=e("../../../services/ajax"),k=r(O),N=e("../../../services/snackbar"),j=r(N),x=e("../../../services/store"),P=r(x),C=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoaded:!1,isLoading:!1,error:null,is_avatar_locked:"",avatar_lock_user_message:"",avatar_lock_staff_message:""},n}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 l["default"].createElement("form",{onSubmit:this.handleSubmit},l["default"].createElement("div",{className:"modal-body"},l["default"].createElement(h["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"},l["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})),l["default"].createElement(h["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"},l["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})),l["default"].createElement(h["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"},l["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}))),l["default"].createElement("div",{className:"modal-footer"},l["default"].createElement("button",{type:"button",className:"btn btn-default","data-dismiss":"modal"},gettext("Close")),l["default"].createElement(f["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Save changes"))))}},{key:"getModalBody",value:function(){return this.state.error?l["default"].createElement(w["default"],{icon:"remove_circle_outline",message:this.state.error}):this.state.isLoaded?this.getFormBody():l["default"].createElement(b["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 l["default"].createElement("div",{className:this.getClassName(),role:"document"},l["default"].createElement("div",{className:"modal-content"},l["default"].createElement("div",{className:"modal-header"},l["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},l["default"].createElement("span",{"aria-hidden":"true"},"×")),l["default"].createElement("h4",{className:"modal-title"},gettext("Avatar controls"))),this.getModalBody()))}}]),t}(p["default"]);n["default"]=C},{"../../../reducers/users":163,"../../../services/ajax":164,"../../../services/snackbar":173,"../../../services/store":174,"../../button":58,"../../form":73,"../../form-group":72,"../../modal-loader":76,"../../modal-message":77,"../../yes-no-switch":155,react:"react"}],97:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var l=e("react"),c=a(l),f=e("../../button"),d=a(f),p=e("../../form"),m=a(p),h=e("../../form-group"),g=a(h),b=e("../../modal-loader"),y=a(b),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=r(T),L=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoaded:!1,isLoading:!1,error:null,username:"",validators:{username:[M.usernameContent(),M.usernameMinLength(E["default"].get("SETTINGS")),M.usernameMaxLength(E["default"].get("SETTINGS"))]}},n}return i(t,e),u(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(g["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(y["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}(m["default"]);n["default"]=L},{"../../../index":156,"../../../reducers/username-history":162,"../../../reducers/users":163,"../../../services/ajax":164,"../../../services/snackbar":173,"../../../services/store":174,"../../../utils/validators":187,"../../button":58,"../../form":73,"../../form-group":72,"../../modal-loader":76,"../../modal-message":77,react:"react"}],98:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../../button"),f=r(c),d=e("../../form"),p=r(d),m=e("../../form-group"),h=r(m),g=e("../../modal-loader"),b=r(g),y=e("../../modal-message"),v=r(y),_=e("../../yes-no-switch"),w=r(_),E=e("../../../index"),O=r(E),k=e("../../../services/ajax"),N=r(k),j=e("../../../services/polls"),x=r(j),P=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.countdown=function(){window.setTimeout(function(){n.state.countdown>1?(n.setState({countdown:n.state.countdown-1}),n.countdown()):n.state.confirm||n.setState({confirm:!0})},1e3)},n.state={isLoaded:!1,isLoading:!1,isDeleted:!1,error:null,countdown:5,confirm:!1,with_content:!1},n}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 l["default"].createElement("form",{onSubmit:this.handleSubmit,className:"form-horizontal"},l["default"].createElement("div",{className:"modal-body"},l["default"].createElement(h["default"],{label:gettext("User content"),labelClass:"col-sm-4",controlClass:"col-sm-8","for":"id_with_content"},l["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}))),l["default"].createElement("div",{className:"modal-footer"},l["default"].createElement("button",{type:"button",className:"btn btn-default","data-dismiss":"modal"},gettext("Cancel")),l["default"].createElement(f["default"],{className:"btn-danger",loading:this.state.isLoading,disabled:!this.state.confirm},this.getButtonLabel())))}},{key:"getDeletedBody",value:function(){return l["default"].createElement("div",{className:"modal-body"},l["default"].createElement("div",{className:"message-icon"},l["default"].createElement("span",{className:"material-icon"},"info_outline")),l["default"].createElement("div",{className:"message-body"},l["default"].createElement("p",{className:"lead"},this.state.isDeleted),l["default"].createElement("p",null,l["default"].createElement("a",{href:O["default"].get("USERS_LIST_URL")},gettext("Return to users list")))))}},{key:"getModalBody",value:function(){return this.state.error?l["default"].createElement(v["default"],{icon:"remove_circle_outline",message:this.state.error}):this.state.isLoaded?this.state.isDeleted?this.getDeletedBody():this.getForm():l["default"].createElement(b["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 l["default"].createElement("div",{className:this.getClassName(),role:"document"},l["default"].createElement("div",{className:"modal-content"},l["default"].createElement("div",{className:"modal-header"},l["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},l["default"].createElement("span",{"aria-hidden":"true"},"×")),l["default"].createElement("h4",{className:"modal-title"},gettext("Delete user account"))),this.getModalBody()))}}]),t}(p["default"]);n["default"]=P},{"../../../index":156,"../../../services/ajax":164,"../../../services/polls":172,"../../button":58,"../../form":73,"../../form-group":72,"../../modal-loader":76,"../../modal-message":77,"../../yes-no-switch":155,react:"react"}],99:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("react-redux"),f=e("./avatar-controls"),d=r(f),p=e("./change-username"),m=r(p),h=e("./delete-account"),g=r(h),b=e("../../../services/modal"),y=r(b),v=function(e){return{tick:e.tick,user:e.auth,profile:e.profile}},_=function(e){function t(){var e,n,r,s;a(this,t);for(var i=arguments.length,u=Array(i),l=0;i>l;l++)u[l]=arguments[l];return n=r=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(u))),r.showAvatarDialog=function(){y["default"].show((0,c.connect)(v)(d["default"]))},r.showRenameDialog=function(){y["default"].show((0,c.connect)(v)(m["default"]))},r.showDeleteDialog=function(){y["default"].show((0,c.connect)(v)(g["default"]))},s=n,o(r,s)}return s(t,e),i(t,[{key:"getAvatarButton",value:function(){return this.props.profile.acl.can_moderate_avatar?l["default"].createElement("li",null,l["default"].createElement("button",{type:"button",className:"btn-link",onClick:this.showAvatarDialog},l["default"].createElement("span",{className:"material-icon"},"portrait"),gettext("Avatar controls"))):null}},{key:"getRenameButton",value:function(){return this.props.profile.acl.can_rename?l["default"].createElement("li",null,l["default"].createElement("button",{type:"button",className:"btn-link",onClick:this.showRenameDialog},l["default"].createElement("span",{className:"material-icon"},"credit_card"),gettext("Change username"))):null}},{key:"getDeleteButton",value:function(){return this.props.profile.acl.can_delete?l["default"].createElement("li",null,l["default"].createElement("button",{type:"button",className:"btn-link",onClick:this.showDeleteDialog},l["default"].createElement("span",{className:"material-icon"},"clear"),gettext("Delete account"))):null}},{key:"render",value:function(){return l["default"].createElement("ul",{className:"dropdown-menu dropdown-menu-right",role:"menu"},this.getAvatarButton(),this.getRenameButton(),this.getDeleteButton(),l["default"].createElement("li",{className:"divider hidden-md hidden-lg"}),l["default"].createElement("li",{className:"dropdown-buttons hidden-md hidden-lg"},l["default"].createElement("button",{type:"button",className:"btn btn-default btn-block",onClick:this.props.toggleNav},l["default"].createElement("span",{className:"material-icon"},"menu"),gettext("Menu"))))}}]),t}(l["default"].Component);n["default"]=_},{"../../../services/modal":170,"./avatar-controls":96,"./change-username":97,"./delete-account":98,react:"react","react-redux":"react-redux"}],100:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.CompactNav=n.SideNav=void 0;var u=e("react"),l=r(u),c=e("react-router"),f=e("../li"),d=r(f),p=e("./follow-button"),m=r(p),h=e("../../index"),g=(r(h),n.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?l["default"].createElement("span",{className:"badge"},this.props.profile[e.attr]):null}},{key:"render",value:function(){var e=this;return l["default"].createElement("div",{className:"list-group nav-side"},this.props.pages.map(function(t){return l["default"].createElement(c.Link,{to:e.props.baseUrl+t.component+"/",className:"list-group-item",activeClassName:"active",key:t.component},l["default"].createElement("span",{className:"material-icon"},t.icon),t.name,e.getMeta(t.meta))}))}}]),t}(l["default"].Component));n.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?l["default"].createElement(m["default"],{className:"btn btn-block",profile:this.props.profile}):null}},{key:"getModerationButton",value:function(){return this.props.profile.acl.can_moderate?l["default"].createElement("button",{type:"button",className:"btn btn-default btn-block",onClick:this.props.toggleModeration},l["default"].createElement("span",{className:"material-icon"},"tonality"),gettext("Moderation")):null}},{key:"getSpecialOptions",value:function(){return this.showSpecialOptions()?l["default"].createElement("li",{className:"dropdown-buttons"},this.getFollowButton(),this.getModerationButton()):null}},{key:"render",value:function(){var e=this;return l["default"].createElement("ul",{className:"dropdown-menu",role:"menu"},this.getSpecialOptions(),this.showSpecialOptions()?l["default"].createElement("li",{className:"divider"}):null,this.props.pages.map(function(t){return l["default"].createElement(d["default"],{path:e.props.baseUrl+t.component+"/",key:t.component},l["default"].createElement(c.Link,{to:e.props.baseUrl+t.component+"/",onClick:e.props.hideNav},l["default"].createElement("span",{className:"material-icon"},t.icon),t.name,e.getMeta(t.meta)))}))}}]),t}(g)},{"../../index":156,"../li":74,"./follow-button":93,react:"react","react-router":"react-router"}],101:[function(e,t,n){"use strict";function r(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 u(){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}var l=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.select=i,n.paths=u;var c=e("react"),f=r(c),d=e("react-redux"),p=e("../avatar"),m=r(p),h=e("./ban-details"),g=r(h),b=e("./followers"),y=r(b),v=e("./follows"),_=r(v),w=e("./username-history"),E=r(w),O=e("./Header"),k=r(O),N=e("./moderation/nav"),j=r(N),x=e("./navs"),P=e("../with-dropdown"),C=r(P),S=e("../../index"),T=r(S),M=e("../../reducers/profile"),L=e("../../services/polls"),R=r(L),A=e("../../services/store"),I=r(A),U=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.update=function(e){I["default"].dispatch((0,M.hydrate)(e))},n.toggleNav=function(){"pages"===n.state.dropdown?n.setState({dropdown:!1}):n.setState({dropdown:"pages"})},n.toggleModeration=function(){"moderation"===n.state.dropdown?n.setState({dropdown:!1}):n.setState({dropdown:"moderation"})},n.startPolling(e.profile.api_url.root),n}return s(t,e),l(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(m["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"]);n["default"]=U;var D=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 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:y["default"],follows:_["default"],"username-history":E["default"],"ban-details":g["default"]}},{"../../index":156,"../../reducers/profile":158,"../../services/polls":172,"../../services/store":174,"../avatar":56,"../with-dropdown":154,"./Header":91,"./ban-details":92,"./followers":94,"./follows":95,"./moderation/nav":99,"./navs":100,"./username-history":102,react:"react","react-redux":"react-redux"}],102:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../button"),f=r(c),d=e("../search"),p=r(d),m=e("../username-history/root"),h=r(m),g=e("../../index"),b=r(g),y=e("../../reducers/username-history"),v=e("../../services/ajax"),_=r(v),w=e("../../services/snackbar"),E=r(w),O=e("../../services/store"),k=r(O),N=e("../../services/page-title"),j=r(N),x=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.loadMore=function(){n.setState({isBusy:!0}),n.loadChanges(n.state.page+1,n.state.search)},n.search=function(e){n.setState({isLoaded:!1,isBusy:!0,search:e.target.value,count:0,more:0,page:1,pages:1}),n.loadChanges(1,e.target.value)},b["default"].has("PROFILE_NAME_HISTORY")?n.initWithPreloadedData(b["default"].pop("PROFILE_NAME_HISTORY")):n.initWithoutPreloadedData(),n}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,y.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],n=arguments.length<=1||void 0===arguments[1]?null:arguments[1];_["default"].get(b["default"].get("USERNAME_CHANGES_API"),{user:this.props.profile.id,search:n,page:t||1},"search-username-history").then(function(n){1===t?k["default"].dispatch((0,y.hydrate)(n.results)):k["default"].dispatch((0,y.append)(n.results)),e.setState({isLoaded:!0,isBusy:!1,count:n.count,more:n.more,page:n.page,pages:n.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 e=ngettext("Your username was changed %(changes)s time.","Your username was changed %(changes)s times.",this.state.count);return interpolate(e,{changes:this.state.count},!0)}var e=ngettext("%(username)s's username was changed %(changes)s time.","%(username)s's username was changed %(changes)s times.",this.state.count);
 return interpolate(e,{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?l["default"].createElement("div",{className:"pager-more"},l["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 l["default"].createElement("div",{className:"profile-username-history"},l["default"].createElement("nav",{className:"toolbar"},l["default"].createElement("h3",{className:"toolbar-left"},this.getLabel()),l["default"].createElement(p["default"],{className:"toolbar-right",value:this.state.search,onChange:this.search,placeholder:gettext("Search history...")})),l["default"].createElement(h["default"],{isLoaded:this.state.isLoaded,emptyMessage:this.getEmptyMessage(),changes:this.props["username-history"]}),this.getMoreButton())}}]),t}(l["default"].Component);n["default"]=x},{"../../index":156,"../../reducers/username-history":162,"../../services/ajax":164,"../../services/page-title":171,"../../services/snackbar":173,"../../services/store":174,"../button":58,"../search":108,"../username-history/root":138,react:"react"}],103:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./loader"),f=r(c),d=e("./register.js"),p=r(d),m=e("../services/captcha"),h=r(m),g=e("../services/modal"),b=r(g),y=e("../services/snackbar"),v=r(y),_=e("../services/zxcvbn"),w=r(_),E=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.showRegisterModal=function(){"closed"===misago.get("SETTINGS").account_activation?v["default"].info(gettext("New registrations are currently disabled.")):n.state.isLoaded?b["default"].show(p["default"]):(n.setState({isLoading:!0}),Promise.all([h["default"].load(),w["default"].load()]).then(function(){n.state.isLoaded||n.setState({isLoading:!1,isLoaded:!1}),b["default"].show(p["default"])}))},n.state={isLoading:!1,isLoaded:!1},n}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.className+(this.state.isLoading?" btn-loading":"")}},{key:"render",value:function(){return l["default"].createElement("button",{type:"button",onClick:this.showRegisterModal,className:"btn "+this.getClassName(),disabled:this.state.isLoaded},gettext("Register"),this.state.isLoading?l["default"].createElement(f["default"],null):null)}}]),t}(l["default"].Component);n["default"]=E},{"../services/captcha":166,"../services/modal":170,"../services/snackbar":173,"../services/zxcvbn":175,"./loader":75,"./register.js":104,react:"react"}],104:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.RegisterComplete=n.RegisterForm=void 0;var l=e("react"),c=a(l),f=e("./button"),d=a(f),p=e("./form"),m=a(p),h=e("./form-group"),g=a(h),b=e("./password-strength"),y=a(b),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=r(L),A=n.RegisterForm=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.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:{}},n}return i(t,e),u(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(g["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(g["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(g["default"],{label:gettext("Password"),"for":"id_password",labelClass:"col-sm-4",controlClass:"col-sm-8",validation:this.state.errors.password,extra:c["default"].createElement(y["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}(m["default"]),I=n.RegisterComplete=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(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 n=s(this,Object.getPrototypeOf(t).call(this,e));return n.completeRegistration=function(e){"active"===e.activation?(P["default"].hide(),k["default"].signIn(e)):n.setState({complete:e})},n.state={complete:!1},n}return i(t,e),u(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);n["default"]=U},{"../index":156,"../services/ajax":164,"../services/auth":165,"../services/captcha":166,"../services/modal":170,"../services/snackbar":173,"../utils/banned-page":176,"../utils/validators":187,"./button":58,"./form":73,"./form-group":72,"./password-strength":90,react:"react"}],105:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.LinkSent=n.RequestLinkForm=void 0;var l=e("react"),c=a(l),f=e("../index"),d=a(f),p=e("./button"),m=a(p),h=e("./form"),g=a(h),b=e("../services/ajax"),y=a(b),v=e("../services/snackbar"),_=a(v),w=e("../utils/validators"),E=r(w),O=e("../utils/banned-page"),k=a(O),N=n.RequestLinkForm=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoading:!1,email:"",validators:{email:[E.email()]}},n}return i(t,e),u(t,[{key:"clean",value:function(){return this.isValid()?!0:(_["default"].error(gettext("Enter a valid email address.")),!1)}},{key:"send",value:function(){return y["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(m["default"],{className:"btn-primary btn-block",loading:this.state.isLoading},gettext("Send link"))))}}]),t}(g["default"]),j=n.LinkSent=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(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 n=s(this,Object.getPrototypeOf(t).call(this,e));return n.complete=function(e){n.setState({complete:e})},n.reset=function(){n.setState({complete:!1})},n.state={complete:!1},n}return i(t,e),u(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);n["default"]=x},{"../index":156,"../services/ajax":164,"../services/snackbar":173,"../utils/banned-page":176,"../utils/validators":187,"./button":58,"./form":73,react:"react"}],106:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.AccountInactivePage=n.LinkSent=n.RequestResetForm=void 0;var l=e("react"),c=a(l),f=e("react-dom"),d=a(f),p=e("../index"),m=a(p),h=e("./button"),g=a(h),b=e("./form"),y=a(b),v=e("../services/ajax"),_=a(v),w=e("../services/snackbar"),E=a(w),O=e("../utils/validators"),k=r(O),N=e("../utils/banned-page"),j=a(N),x=n.RequestResetForm=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoading:!1,email:"",validators:{email:[k.email()]}},n}return i(t,e),u(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(m["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(g["default"],{className:"btn-primary btn-block",loading:this.state.isLoading},gettext("Send link"))))}}]),t}(y["default"]),P=n.LinkSent=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(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=n.AccountInactivePage=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(t,[{key:"getActivateButton",value:function(){return"inactive_user"===this.props.activation?c["default"].createElement("p",null,c["default"].createElement("a",{href:m["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 n=s(this,Object.getPrototypeOf(t).call(this,e));return n.complete=function(e){n.setState({complete:e})},n.reset=function(){n.setState({complete:!1})},n.state={complete:!1},n}return i(t,e),u(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);n["default"]=S},{"../index":156,"../services/ajax":164,"../services/snackbar":173,"../utils/banned-page":176,"../utils/validators":187,"./button":58,"./form":73,react:"react","react-dom":"react-dom"}],107:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.PasswordChangedPage=n.ResetPasswordForm=void 0;var l=e("react"),c=a(l),f=e("react-dom"),d=a(f),p=e("../index"),m=a(p),h=e("./button"),g=a(h),b=e("./form"),y=a(b),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=r(C),T=e("../utils/banned-page"),M=a(T),L=n.ResetPasswordForm=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoading:!1,password:"",validators:{password:[S.passwordMinLength(m["default"].get("SETTINGS"))]}},n}return i(t,e),u(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(m["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(g["default"],{className:"btn-primary btn-block",loading:this.state.isLoading},gettext("Change password"))))}}]),t}(y["default"]),R=n.PasswordChangedPage=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(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,n,r,a;o(this,t);for(var i=arguments.length,u=Array(i),l=0;i>l;l++)u[l]=arguments[l];return n=r=s(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(u))),r.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=n,s(r,a)}return i(t,e),u(t,[{key:"render",value:function(){return c["default"].createElement(L,{callback:this.complete})}}]),t}(c["default"].Component);n["default"]=A},{"../index":156,"../services/ajax":164,"../services/auth":165,"../services/modal":170,"../services/snackbar":173,"../utils/banned-page":176,"../utils/validators":187,"./button":58,"./form":73,"./sign-in.js":110,react:"react","react-dom":"react-dom"}],108:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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 l["default"].createElement("div",{className:this.getClassName()},l["default"].createElement("input",{type:"text",className:"form-control",value:this.props.value,onChange:this.props.onChange,placeholder:this.props.placeholder||gettext("Search...")}),l["default"].createElement("span",{className:"material-icon"},"search"))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],109:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=function(e){function t(){var e,n,r,s;a(this,t);for(var i=arguments.length,u=Array(i),l=0;i>l;l++)u[l]=arguments[l];return n=r=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(u))),r.change=function(e){return function(){r.props.onChange({target:{value:e}})}},s=n,o(r,s)}return s(t,e),i(t,[{key:"getChoice",value:function(){var e=this,t=null;return this.props.choices.map(function(n){n.value===e.props.value&&(t=n)}),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 l["default"].createElement("div",{className:"btn-group btn-select-group"},l["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},l["default"].createElement("span",{className:"material-icon"},this.getIcon()),this.getLabel()),l["default"].createElement("ul",{className:"dropdown-menu"},this.props.choices.map(function(t,n){return l["default"].createElement("li",{key:n},l["default"].createElement("button",{type:"button",className:"btn-link",onClick:e.change(t.value)},l["default"].createElement("span",{className:"material-icon"},t.icon),t.label))})))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],110:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../index"),f=r(c),d=e("./button"),p=r(d),m=e("./form"),h=r(m),g=e("../services/ajax"),b=r(g),y=e("../services/modal"),v=r(y),_=e("../services/snackbar"),w=r(_),E=e("../utils/banned-page"),O=r(E),k=function(e){
 return interpolate(e,{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?l["default"].createElement("div",{className:"pager-more"},l["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 l["default"].createElement("div",{className:"profile-username-history"},l["default"].createElement("nav",{className:"toolbar"},l["default"].createElement("h3",{className:"toolbar-left"},this.getLabel()),l["default"].createElement(p["default"],{className:"toolbar-right",value:this.state.search,onChange:this.search,placeholder:gettext("Search history...")})),l["default"].createElement(h["default"],{isLoaded:this.state.isLoaded,emptyMessage:this.getEmptyMessage(),changes:this.props["username-history"]}),this.getMoreButton())}}]),t}(l["default"].Component);n["default"]=x},{"../../index":156,"../../reducers/username-history":162,"../../services/ajax":164,"../../services/page-title":171,"../../services/snackbar":173,"../../services/store":174,"../button":58,"../search":108,"../username-history/root":138,react:"react"}],103:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./loader"),f=r(c),d=e("./register.js"),p=r(d),m=e("../services/captcha"),h=r(m),g=e("../services/modal"),b=r(g),y=e("../services/snackbar"),v=r(y),_=e("../services/zxcvbn"),w=r(_),E=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.showRegisterModal=function(){"closed"===misago.get("SETTINGS").account_activation?v["default"].info(gettext("New registrations are currently disabled.")):n.state.isLoaded?b["default"].show(p["default"]):(n.setState({isLoading:!0}),Promise.all([h["default"].load(),w["default"].load()]).then(function(){n.state.isLoaded||n.setState({isLoading:!1,isLoaded:!1}),b["default"].show(p["default"])}))},n.state={isLoading:!1,isLoaded:!1},n}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.className+(this.state.isLoading?" btn-loading":"")}},{key:"render",value:function(){return l["default"].createElement("button",{type:"button",onClick:this.showRegisterModal,className:"btn "+this.getClassName(),disabled:this.state.isLoaded},gettext("Register"),this.state.isLoading?l["default"].createElement(f["default"],null):null)}}]),t}(l["default"].Component);n["default"]=E},{"../services/captcha":166,"../services/modal":170,"../services/snackbar":173,"../services/zxcvbn":175,"./loader":75,"./register.js":104,react:"react"}],104:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.RegisterComplete=n.RegisterForm=void 0;var l=e("react"),c=a(l),f=e("./button"),d=a(f),p=e("./form"),m=a(p),h=e("./form-group"),g=a(h),b=e("./password-strength"),y=a(b),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=r(L),A=n.RegisterForm=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.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:{}},n}return i(t,e),u(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(g["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(g["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(g["default"],{label:gettext("Password"),"for":"id_password",labelClass:"col-sm-4",controlClass:"col-sm-8",validation:this.state.errors.password,extra:c["default"].createElement(y["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}(m["default"]),I=n.RegisterComplete=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(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 n=s(this,Object.getPrototypeOf(t).call(this,e));return n.completeRegistration=function(e){"active"===e.activation?(P["default"].hide(),k["default"].signIn(e)):n.setState({complete:e})},n.state={complete:!1},n}return i(t,e),u(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);n["default"]=U},{"../index":156,"../services/ajax":164,"../services/auth":165,"../services/captcha":166,"../services/modal":170,"../services/snackbar":173,"../utils/banned-page":176,"../utils/validators":187,"./button":58,"./form":73,"./form-group":72,"./password-strength":90,react:"react"}],105:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.LinkSent=n.RequestLinkForm=void 0;var l=e("react"),c=a(l),f=e("../index"),d=a(f),p=e("./button"),m=a(p),h=e("./form"),g=a(h),b=e("../services/ajax"),y=a(b),v=e("../services/snackbar"),_=a(v),w=e("../utils/validators"),E=r(w),O=e("../utils/banned-page"),k=a(O),N=n.RequestLinkForm=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoading:!1,email:"",validators:{email:[E.email()]}},n}return i(t,e),u(t,[{key:"clean",value:function(){return this.isValid()?!0:(_["default"].error(gettext("Enter a valid email address.")),!1)}},{key:"send",value:function(){return y["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(m["default"],{className:"btn-primary btn-block",loading:this.state.isLoading},gettext("Send link"))))}}]),t}(g["default"]),j=n.LinkSent=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(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 n=s(this,Object.getPrototypeOf(t).call(this,e));return n.complete=function(e){n.setState({complete:e})},n.reset=function(){n.setState({complete:!1})},n.state={complete:!1},n}return i(t,e),u(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);n["default"]=x},{"../index":156,"../services/ajax":164,"../services/snackbar":173,"../utils/banned-page":176,"../utils/validators":187,"./button":58,"./form":73,react:"react"}],106:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.AccountInactivePage=n.LinkSent=n.RequestResetForm=void 0;var l=e("react"),c=a(l),f=e("react-dom"),d=a(f),p=e("../index"),m=a(p),h=e("./button"),g=a(h),b=e("./form"),y=a(b),v=e("../services/ajax"),_=a(v),w=e("../services/snackbar"),E=a(w),O=e("../utils/validators"),k=r(O),N=e("../utils/banned-page"),j=a(N),x=n.RequestResetForm=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoading:!1,email:"",validators:{email:[k.email()]}},n}return i(t,e),u(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(m["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(g["default"],{className:"btn-primary btn-block",loading:this.state.isLoading},gettext("Send link"))))}}]),t}(y["default"]),P=n.LinkSent=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(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=n.AccountInactivePage=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(t,[{key:"getActivateButton",value:function(){return"inactive_user"===this.props.activation?c["default"].createElement("p",null,c["default"].createElement("a",{href:m["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 n=s(this,Object.getPrototypeOf(t).call(this,e));return n.complete=function(e){n.setState({complete:e})},n.reset=function(){n.setState({complete:!1})},n.state={complete:!1},n}return i(t,e),u(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);n["default"]=S},{"../index":156,"../services/ajax":164,"../services/snackbar":173,"../utils/banned-page":176,"../utils/validators":187,"./button":58,"./form":73,react:"react","react-dom":"react-dom"}],107:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.PasswordChangedPage=n.ResetPasswordForm=void 0;var l=e("react"),c=a(l),f=e("react-dom"),d=a(f),p=e("../index"),m=a(p),h=e("./button"),g=a(h),b=e("./form"),y=a(b),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=r(C),T=e("../utils/banned-page"),M=a(T),L=n.ResetPasswordForm=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoading:!1,password:"",validators:{password:[S.passwordMinLength(m["default"].get("SETTINGS"))]}},n}return i(t,e),u(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(m["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(g["default"],{className:"btn-primary btn-block",loading:this.state.isLoading},gettext("Change password"))))}}]),t}(y["default"]),R=n.PasswordChangedPage=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(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,n,r,a;o(this,t);for(var i=arguments.length,u=Array(i),l=0;i>l;l++)u[l]=arguments[l];return n=r=s(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(u))),r.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=n,s(r,a)}return i(t,e),u(t,[{key:"render",value:function(){return c["default"].createElement(L,{callback:this.complete})}}]),t}(c["default"].Component);n["default"]=A},{"../index":156,"../services/ajax":164,"../services/auth":165,"../services/modal":170,"../services/snackbar":173,"../utils/banned-page":176,"../utils/validators":187,"./button":58,"./form":73,"./sign-in.js":110,react:"react","react-dom":"react-dom"}],108:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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 l["default"].createElement("div",{className:this.getClassName()},l["default"].createElement("input",{type:"text",className:"form-control",value:this.props.value,onChange:this.props.onChange,placeholder:this.props.placeholder||gettext("Search...")}),l["default"].createElement("span",{className:"material-icon"},"search"))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],109:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=function(e){function t(){var e,n,r,s;a(this,t);for(var i=arguments.length,u=Array(i),l=0;i>l;l++)u[l]=arguments[l];return n=r=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(u))),r.change=function(e){return function(){r.props.onChange({target:{value:e}})}},s=n,o(r,s)}return s(t,e),i(t,[{key:"getChoice",value:function(){var e=this,t=null;return this.props.choices.map(function(n){n.value===e.props.value&&(t=n)}),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 l["default"].createElement("div",{className:"btn-group btn-select-group"},l["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},l["default"].createElement("span",{className:"material-icon"},this.getIcon()),this.getLabel()),l["default"].createElement("ul",{className:"dropdown-menu"},this.props.choices.map(function(t,n){return l["default"].createElement("li",{key:n},l["default"].createElement("button",{type:"button",className:"btn-link",onClick:e.change(t.value)},l["default"].createElement("span",{className:"material-icon"},t.icon),t.label))})))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],110:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../index"),f=r(c),d=e("./button"),p=r(d),m=e("./form"),h=r(m),g=e("../services/ajax"),b=r(g),y=e("../services/modal"),v=r(y),_=e("../services/snackbar"),w=r(_),E=e("../utils/banned-page"),O=r(E),k=function(e){
-function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoading:!1,showActivation:!1,username:"",password:"",validators:{username:[],password:[]}},n}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 b["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(b["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?l["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 l["default"].createElement("div",{className:"modal-dialog modal-sm modal-sign-in",role:"document"},l["default"].createElement("div",{className:"modal-content"},l["default"].createElement("div",{className:"modal-header"},l["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},l["default"].createElement("span",{"aria-hidden":"true"},"×")),l["default"].createElement("h4",{className:"modal-title"},gettext("Sign in"))),l["default"].createElement("form",{onSubmit:this.handleSubmit},l["default"].createElement("div",{className:"modal-body"},l["default"].createElement("div",{className:"form-group"},l["default"].createElement("div",{className:"control-input"},l["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}))),l["default"].createElement("div",{className:"form-group"},l["default"].createElement("div",{className:"control-input"},l["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})))),l["default"].createElement("div",{className:"modal-footer"},this.getActivationButton(),l["default"].createElement(p["default"],{className:"btn-primary btn-block",loading:this.state.isLoading},gettext("Sign in")),l["default"].createElement("a",{href:f["default"].get("FORGOTTEN_PASSWORD_URL"),className:"btn btn-default btn-block"},gettext("Forgot password?"))))))}}]),t}(h["default"]);n["default"]=k},{"../index":156,"../services/ajax":164,"../services/modal":170,"../services/snackbar":173,"../utils/banned-page":176,"./button":58,"./form":73,react:"react"}],111:[function(e,t,n){"use strict";function r(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}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Snackbar=void 0,n.select=i;var l=e("react"),c=r(l),f={info:"alert-info",success:"alert-success",warning:"alert-warning",error:"alert-danger"};n.Snackbar=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(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"}],112:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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 l["default"].createElement("div",{className:"threads-list ui-ready"},l["default"].createElement("ul",{className:"list-group"},this.props.children))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],113:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./thread-preview"),f=r(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 l["default"].createElement("div",{className:"threads-list ui-preview"},l["default"].createElement("ul",{className:"list-group"},[0,1,2].map(function(e){return l["default"].createElement(f["default"],{hiddenOnMobile:e>0,key:e})})))}}]),t}(l["default"].Component);n["default"]=d},{"./thread-preview":119,react:"react"}],114:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./thread"),f=r(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=this;return l["default"].createElement("div",{className:"threads-list ui-ready"},l["default"].createElement("ul",{className:"list-group"},this.props.threads.map(function(t){return l["default"].createElement(f["default"],{user:e.props.user,categories:e.props.categories,thread:t,list:e.props.list,selectThread:e.props.selectThread,isSelected:e.props.selection.indexOf(t.id)>=0,key:t.id})})))}}]),t}(l["default"].Component);n["default"]=d},{"./thread":120,react:"react"}],115:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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_closed?this.props.thread.is_read?gettext("This thread has no new posts. (closed)"):gettext("This thread has new posts. (closed)"):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:"render",value:function(){return l["default"].createElement("div",{className:this.getClassName(),title:this.getTitle()},l["default"].createElement("span",{className:"material-icon"},this.getIcon()))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],116:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./list-empty"),f=r(c),d=e("./list-ready"),p=r(d),m=e("./list-preview"),h=r(m),g=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?l["default"].createElement(p["default"],{user:this.props.user,threads:this.props.threads,categories:this.props.categories,list:this.props.list,selectThread:this.props.selectThread,selection:this.props.selection}):l["default"].createElement(f["default"],null,this.props.children):l["default"].createElement(h["default"],null)}}]),t}(l["default"].Component);n["default"]=g},{"./list-empty":112,"./list-preview":113,"./list-ready":114,react:"react"}],117:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var l=e("react"),c=r(l),f=e("../button"),d=(r(f),e("../../reducers/threads")),p=e("../../services/ajax"),m=r(p),h=e("../../services/snackbar"),g=r(h),b=e("../../services/store"),y=r(b),v={unsubscribe:null,notify:!1,email:!0},_=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.setSubscription=function(e){n.setState({isLoading:!0});var t=n.props.thread.subscription;y["default"].dispatch((0,d.patch)(n.props.thread,{subscription:v[e]})),m["default"].post(n.props.thread.api_url.subscribe,a({},e,!0)).then(function(){n.setState({isLoading:!1})},function(e){n.setState({isLoading:!1}),y["default"].dispatch((0,d.patch)(n.props.thread,{subscription:v[t]})),g["default"].apiError(e)})},n.unsubscribe=function(){n.setSubscription("unsubscribe")},n.notify=function(){n.setSubscription("notify")},n.email=function(){n.setSubscription("email")},n.state={isLoading:!1},n}return i(t,e),u(t,[{key:"getIcon",value:function(){return this.props.thread.subscription===!0?"star":this.props.thread.subscription===!1?"star_half":"star_border"}},{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 c["default"].createElement("li",null,c["default"].createElement("div",{className:"btn-group"},c["default"].createElement("button",{type:"button",className:this.getClassName(),"data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",disabled:this.state.isBusy},c["default"].createElement("span",{className:"material-icon"},this.getIcon())),c["default"].createElement("ul",{className:"dropdown-menu dropdown-menu-right"},c["default"].createElement("li",null,c["default"].createElement("button",{className:"btn-link",onClick:this.unsubscribe},c["default"].createElement("span",{className:"material-icon"},"star_border"),gettext("Unsubscribe"))),c["default"].createElement("li",null,c["default"].createElement("button",{className:"btn-link",onClick:this.notify},c["default"].createElement("span",{className:"material-icon"},"star_half"),gettext("Subscribe"))),c["default"].createElement("li",null,c["default"].createElement("button",{className:"btn-link",onClick:this.email},c["default"].createElement("span",{className:"material-icon"},"star"),gettext("Subscribe with e-mail"))))))}}]),t}(c["default"].Component);n["default"]=_},{"../../reducers/threads":160,"../../services/ajax":164,"../../services/snackbar":173,"../../services/store":174,"../button":58,react:"react"}],118:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./subscription-toggle"),f=r(c),d=function(e){function t(){var e,n,r,s;a(this,t);for(var i=arguments.length,u=Array(i),l=0;i>l;l++)u[l]=arguments[l];return n=r=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(u))),r.toggleSelection=function(){r.props.selectThread(r.props.thread.id)},s=n,o(r,s)}return s(t,e),i(t,[{key:"getEditToggle",value:function(){return this.props.thread.acl.can_edit||this.props.thread.acl.can_move?l["default"].createElement("li",null,l["default"].createElement("button",{className:"btn btn-default btn-edit"},l["default"].createElement("span",{className:"material-icon"},"edit"))):null}},{key:"getSelectToggle",value:function(){return this.props.thread.moderation.length?l["default"].createElement("li",null,l["default"].createElement("button",{className:"btn btn-default btn-checkbox",onClick:this.toggleSelection},l["default"].createElement("span",{className:"material-icon"},this.props.isSelected?"check_box":"check_box_outline_blank"))):null}},{key:"render",value:function(){return l["default"].createElement("ul",{className:"list-inline thread-options"},l["default"].createElement(f["default"],{thread:this.props.thread}),this.getEditToggle(),this.getSelectToggle())}}]),t}(l["default"].Component);n["default"]=d},{"./subscription-toggle":117,react:"react"}],119:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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.hiddenOnMobile?"list-group-item hidden-xs hidden-sm":"list-group-item"}},{key:"render",value:function(){return l["default"].createElement("li",{className:this.getClassName()},"Loading...")}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],120:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Category=void 0;var u=e("react"),l=r(u),c=e("react-router"),f=e("./read-icon"),d=r(f),p=e("./thread-options"),m=r(p),h=e("../../utils/escape-html"),g=r(h),b='<a href="%(url)s" class="poster-title">%(user)s</a>',y='<span class="poster-title">%(user)s</span>',v='<a href="%(url)s" class="last-title" title="%(absolute)s">%(relative)s</a>',_=n.Category=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?"thread-category thread-category-"+this.props.category.css_class:"thread-category"}},{key:"getUrl",value:function(){return this.props.category.absolute_url+this.props.list.path}},{key:"render",value:function(){return l["default"].createElement(c.Link,{to:this.getUrl(),className:this.getClassName()},this.props.category.name)}}]),t}(l["default"].Component),w=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.state={isSelected:!1},n}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?l["default"].createElement("li",{className:"thread-path"},l["default"].createElement(_,{category:e,list:this.props.list}),l["default"].createElement("span",{className:"path-separator material-icon"},"arrow_forward"),l["default"].createElement(_,{category:t,list:this.props.list})):e||t?l["default"].createElement("li",{className:"thread-path"},l["default"].createElement(_,{category:e||t,list:this.props.list})):null}},{key:"getClosedLabel",value:function(){return this.props.thread.is_closed?l["default"].createElement("li",{className:"thread-closed"},gettext("Closed")):null}},{key:"getNewLabel",value:function(){return this.props.thread.is_read?null:l["default"].createElement("li",{className:"thread-new-posts",title:gettext("Go to first unread post")},l["default"].createElement("a",{href:this.props.thread.new_post_url},gettext("New posts")))}},{key:"getRepliesCount",value:function(){var e=ngettext("%(replies)s reply","%(replies)s replies",this.props.thread.replies);return l["default"].createElement("li",{className:"thread-replies"},l["default"].createElement("a",{href:this.props.thread.absolute_url},interpolate(e,{replies:this.props.thread.replies},!0)))}},{key:"getLastReplyDate",value:function(){return interpolate(v,{url:(0,g["default"])(this.props.thread.last_post_url),absolute:(0,g["default"])(this.props.thread.last_post_on.format("LLL")),relative:(0,g["default"])(this.props.thread.last_post_on.fromNow())},!0)}},{key:"getLastPoster",value:function(){return this.props.thread.last_poster_url?interpolate(b,{url:(0,g["default"])(this.props.thread.last_poster_url),user:(0,g["default"])(this.props.thread.last_poster_name)},!0):interpolate(y,{user:(0,g["default"])(this.props.thread.last_poster_name)},!0)}},{key:"getLastReply",value:function(){return l["default"].createElement("li",{className:"thread-last-reply",dangerouslySetInnerHTML:{__html:interpolate((0,g["default"])(gettext("last reply by %(user)s %(date)s")),{date:this.getLastReplyDate(),user:this.getLastPoster()},!0)}})}},{key:"getOptions",value:function(){return this.props.user.id?l["default"].createElement(m["default"],{thread:this.props.thread,selectThread:this.props.selectThread,isSelected:this.props.isSelected}):null}},{key:"getClassName",value:function(){return this.props.thread.is_read?this.props.isSelected?"list-group-item thread-read thread-selected":"list-group-item thread-read":this.props.isSelected?"list-group-item thread-new thread-selected":"list-group-item thread-new"}},{key:"render",value:function(){return l["default"].createElement("li",{className:this.getClassName()},l["default"].createElement(d["default"],{thread:this.props.thread}),l["default"].createElement("div",{className:"thread-main"},l["default"].createElement("a",{href:this.props.thread.absolute_url,className:"item-title thread-title"},this.props.thread.title),l["default"].createElement("ul",{className:"list-inline"},this.getNewLabel(),this.getClosedLabel(),this.getPath(),this.getRepliesCount(),this.getLastReply())),this.getOptions())}}]),t}(l["default"].Component);n["default"]=w},{"../../utils/escape-html":179,"./read-icon":115,"./thread-options":118,react:"react","react-router":"react-router"}],121:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Subcategory=void 0;var u=e("react"),l=r(u),c=e("react-router"),f=n.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 l["default"].createElement("li",null,l["default"].createElement(c.Link,{to:this.getUrl(),className:"btn btn-link"},this.props.category.name))}}]),t}(l["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 l["default"].createElement("div",{className:"btn-group category-picker"},l["default"].createElement("button",{type:"button",className:"btn btn-default dropdown-toggle","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},l["default"].createElement("span",{className:"material-icon"},"more_vert"),gettext("Go to")),l["default"].createElement("ul",{className:"dropdown-menu categories-menu"},this.props.choices.map(function(t){return e.props.categories[t]?l["default"].createElement(f,{category:e.props.categories[t],listPath:e.props.list.path,key:t}):null})))}}]),t}(l["default"].Component);n["default"]=d},{react:"react","react-router":"react-router"}],122:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("react-router"),f=e("../dropdown-toggle"),d=r(f),p=e("./navs"),m=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.route.lists.length>1?"page-header tabbed":"page-header"}},{key:"getGoBackButton",value:function(){return this.props.route.category.parent?l["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},l["default"].createElement("span",{className:"material-icon"},"keyboard_arrow_left")):null}},{key:"getCompactNavToggle",value:function(){return this.props.route.lists.length>1?l["default"].createElement(d["default"],{toggleNav:this.props.toggleNav,dropdown:this.props.dropdown}):null}},{key:"getTabsNav",value:function(){return this.props.route.lists.length>1?l["default"].createElement(p.TabsNav,{baseUrl:this.props.route.category.absolute_url,list:this.props.route.list,lists:this.props.route.lists}):null}},{key:"render",value:function(){return l["default"].createElement("div",{className:this.getClassName()},l["default"].createElement("div",{className:"container"},this.getGoBackButton(),l["default"].createElement("h1",{className:"pull-left"},this.props.title),this.getCompactNavToggle()),this.getTabsNav())}}]),t}(l["default"].Component);n["default"]=m},{"../dropdown-toggle":71,"./navs":124,react:"react","react-router":"react-router"}],123:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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?l["default"].createElement("li",{
-className:"list-group-item empty-message"},l["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.")),l["default"].createElement("p",null,gettext("Why not start one yourself?"))):l["default"].createElement("li",{className:"list-group-item empty-message"},gettext("No threads matching specified criteria were found."))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],124:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.CompactNav=n.TabsNav=void 0;var u=e("react"),l=r(u),c=e("react-router"),f=e("../li"),d=r(f),p=function(e,t,n,r){return n.map(function(n){return l["default"].createElement(d["default"],{isControlled:!0,isActive:n.path===t.path,key:e+n.path},l["default"].createElement(c.Link,{to:e+n.path,onClick:r},l["default"].createElement("span",{className:"hidden-xs hidden-sm"},n.name),l["default"].createElement("span",{className:"hidden-md hidden-lg"},n.longName)))})};n.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 l["default"].createElement("div",{className:"page-tabs hidden-xs hidden-sm"},l["default"].createElement("div",{className:"container"},l["default"].createElement("ul",{className:"nav nav-pills"},p(this.props.baseUrl,this.props.list,this.props.lists,this.props.hideNav))))}}]),t}(l["default"].Component),n.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 l["default"].createElement("ul",{className:"dropdown-menu",role:"menu"},p(this.props.baseUrl,this.props.list,this.props.lists,this.props.hideNav))}}]),t}(l["default"].Component)},{"../li":74,react:"react","react-router":"react-router"}],125:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){return{tick:e.tick.tick,user:e.auth.user,threads:e.threads}}function o(){var e=[{type:"all",path:"",name:gettext("All"),longName:gettext("All threads")}];return f["default"].get("isAuthenticated")&&(e.push({type:"my",path:"my/",name:gettext("My"),longName:gettext("My threads")}),e.push({type:"new",path:"new/",name:gettext("New"),longName:gettext("New threads")}),e.push({type:"unread",path:"unread/",name:gettext("Unread"),longName:gettext("Unread threads")}),e.push({type:"subscribed",path:"subscribed/",name:gettext("Subscribed"),longName:gettext("Subscribed threads")})),e}function s(){var e=o(),t=[],n={};return f["default"].get("CATEGORIES").forEach(function(r){e.forEach(function(o){n[r.id]=r,t.push({path:r.absolute_url+o.path,component:(0,i.connect)(a)(l["default"]),categoriesMap:n,category:r,lists:e,list:o})})}),t}Object.defineProperty(n,"__esModule",{value:!0}),n.select=a,n.getLists=o,n.paths=s;var i=e("react-redux"),u=e("./route"),l=r(u),c=e("../../index"),f=r(c)},{"../../index":156,"./route":126,"react-redux":"react-redux"}],126:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../button"),f=r(c),d=e("./header"),p=r(d),m=e("./navs"),h=e("./utils"),g=e("../threads-list/root"),b=r(g),y=e("./list-empty"),v=r(y),_=e("./toolbar"),w=r(_),E=e("../with-dropdown"),O=r(E),k=e("../../index"),N=r(k),j=e("../../reducers/threads"),x=e("../../services/ajax"),P=r(x),C=e("../../services/snackbar"),S=r(C),T=e("../../services/store"),M=r(T),L=e("../../services/page-title"),R=r(L),A=e("../../utils/set-toggle"),I=r(A),U=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.loadMore=function(){n.setState({isBusy:!0}),n.loadThreads(n.state.page+1)},n.selectThread=function(e){n.setState({selection:(0,I["default"])(n.state.selection,e)})},N["default"].has("THREADS")?n.initWithPreloadedData(N["default"].get("THREADS")):n.initWithoutPreloadedData(),n}return s(t,e),i(t,[{key:"initWithPreloadedData",value:function(e){this.state={isLoaded:!1,isBusy:!1,selection:[],dropdown:!1,subcategories:e.subcategories,count:e.count,more:e.more,page:e.page,pages:e.pages}}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1,isBusy:!1,selection:[],dropdown:!1,subcategories:[],count:0,more:0,page:1,pages:1},this.loadThreads()}},{key:"loadThreads",value:function(){var e=this,t=arguments.length<=0||void 0===arguments[0]?1:arguments[0],n=null;this.props.route.category.special_role||(n=this.props.route.category.id),P["default"].get(N["default"].get("THREADS_API"),{category:n,list:this.props.route.list.type,page:t||1},"threads").then(function(n){1===t?M["default"].dispatch((0,j.hydrate)(n.results)):M["default"].dispatch((0,j.append)(n.results)),e.setState({isLoaded:!0,isBusy:!1,subcategories:n.subcategories,count:n.count,more:n.more,page:n.page,pages:n.pages})},function(e){S["default"].apiError(e)})}},{key:"componentDidMount",value:function(){R["default"].set((0,h.getPageTitle)(this.props.route)),N["default"].has("THREADS")&&(M["default"].dispatch((0,j.hydrate)(N["default"].pop("THREADS").results)),this.setState({isLoaded:!0}))}},{key:"getTitle",value:function(){return(0,h.getTitle)(this.props.route)}},{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:"getCompactNav",value:function(){return this.props.route.lists.length>1?l["default"].createElement(m.CompactNav,{baseUrl:this.props.route.category.absolute_url,list:this.props.route.list,lists:this.props.route.lists,hideNav:this.hideNav}):null}},{key:"getCategoryDescription",value:function(){return this.props.route.category.description?l["default"].createElement("div",{className:"category-description"},l["default"].createElement("div",{className:"lead",dangerouslySetInnerHTML:{__html:this.props.route.category.description.html}})):null}},{key:"getToolbarLabel",value:function(){if(this.state.isLoaded){var e=null;return e=this.props.route.list.path?ngettext("%(threads)s thread found.","%(threads)s threads found.",this.state.count):this.props.route.category.parent?ngettext("There is %(threads)s thread in this category.","There are %(threads)s threads in this category.",this.state.count):ngettext("There is %(threads)s thread on our forums.","There are %(threads)s threads on our forums.",this.state.count),interpolate(e,{threads:this.state.count},!0)}return gettext("Loading threads...")}},{key:"getToolbar",value:function(){return this.state.subcategories.length||this.props.user.id?l["default"].createElement(w["default"],{subcategories:this.state.subcategories,categories:this.props.route.categoriesMap,list:this.props.route.list,threads:this.props.threads,selection:this.props.selection,isLoaded:this.state.isLoaded,user:this.props.user},this.getToolbarLabel()):null}},{key:"getMoreButton",value:function(){return this.state.more?l["default"].createElement("div",{className:"pager-more"},l["default"].createElement(f["default"],{loading:this.state.isBusy,onClick:this.loadMore},gettext("Show more"))):null}},{key:"render",value:function(){return l["default"].createElement("div",{className:this.getClassName()},l["default"].createElement(p["default"],{title:this.getTitle(),route:this.props.route,dropdown:this.state.dropdown,toggleNav:this.toggleNav,hideNav:this.hideNav}),l["default"].createElement("div",{className:this.getCompactNavClassName()},this.getCompactNav()),l["default"].createElement("div",{className:"container"},this.getCategoryDescription(),this.getToolbar(),l["default"].createElement(b["default"],{user:this.props.user,threads:this.props.threads,categories:this.props.route.categoriesMap,list:this.props.route.list,selectThread:this.selectThread,selection:this.state.selection,isLoaded:this.state.isLoaded},l["default"].createElement(v["default"],{category:this.props.route.category,list:this.props.route.list})),this.getMoreButton()))}}]),t}(O["default"]);n["default"]=U},{"../../index":156,"../../reducers/threads":160,"../../services/ajax":164,"../../services/page-title":171,"../../services/snackbar":173,"../../services/store":174,"../../utils/set-toggle":186,"../button":58,"../threads-list/root":116,"../with-dropdown":154,"./header":122,"./list-empty":123,"./navs":124,"./toolbar":127,"./utils":128,react:"react"}],127:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./category-picker"),f=r(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:"getCategoryPicker",value:function(){return this.props.subcategories.length?l["default"].createElement("div",{className:"toolbar-left"},l["default"].createElement(f["default"],{choices:this.props.subcategories,categories:this.props.categories,list:this.props.list})):null}},{key:"getModerationButton",value:function(){return this.props.user.id?l["default"].createElement("button",{type:"button",className:"btn btn-default toolbar-right",disabled:!this.props.isLoaded},l["default"].createElement("span",{className:"material-icon"},"settings"),gettext("Moderation")):null}},{key:"getStartThreadButton",value:function(){return this.props.user.id?l["default"].createElement("button",{type:"button",className:"btn btn-success toolbar-right",disabled:!this.props.isLoaded},l["default"].createElement("span",{className:"material-icon"},"chat"),gettext("Start thread")):null}},{key:"getMarkAsReadButton",value:function(){return this.props.user.id?l["default"].createElement("button",{type:"button",className:"btn btn-default toolbar-right",disabled:!this.props.isLoaded},l["default"].createElement("span",{className:"material-icon"},"playlist_add_check"),gettext("Mark as read")):null}},{key:"render",value:function(){return l["default"].createElement("div",{className:"toolbar with-js"},this.getCategoryPicker(),l["default"].createElement("p",{className:"toolbar-left hidden-xs hidden-sm"},this.props.children),this.getModerationButton(),this.getStartThreadButton(),this.getMarkAsReadButton())}}]),t}(l["default"].Component);n["default"]=d},{"./category-picker":121,react:"react"}],128:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){return e.category.special_role?i["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?i["default"].get("CATEGORIES_ON_INDEX")?gettext("Threads"):i["default"].get("SETTINGS").forum_index_title?i["default"].get("SETTINGS").forum_index_title:i["default"].get("SETTINGS").forum_name:e.category.name}Object.defineProperty(n,"__esModule",{value:!0}),n.getPageTitle=a,n.getTitle=o;var s=e("../../index"),i=r(s)},{"../../index":156}],129:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.CompactGuestNav=n.GuestNav=n.GuestMenu=void 0;var u=e("react"),l=r(u),c=e("../avatar"),f=r(c),d=e("../register-button"),p=r(d),m=e("../sign-in.js"),h=r(m),g=e("../../services/mobile-navbar-dropdown"),b=r(g),y=e("../../services/modal"),v=r(y),_=n.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(h["default"])}},{key:"render",value:function(){return l["default"].createElement("ul",{className:"dropdown-menu user-dropdown dropdown-menu-right",role:"menu"},l["default"].createElement("li",{className:"guest-preview"},l["default"].createElement("h4",null,gettext("You are browsing as guest.")),l["default"].createElement("p",null,gettext("Sign in or register to start and participate in discussions.")),l["default"].createElement("div",{className:"row"},l["default"].createElement("div",{className:"col-xs-6"},l["default"].createElement("button",{type:"button",className:"btn btn-default btn-block",onClick:this.showSignInModal},gettext("Sign in"))),l["default"].createElement("div",{className:"col-xs-6"},l["default"].createElement(p["default"],{className:"btn-primary btn-block"},gettext("Register"))))))}}]),t}(l["default"].Component);n.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 l["default"].createElement("div",{className:"nav nav-guest"},l["default"].createElement("button",{type:"button",className:"btn navbar-btn btn-default",onClick:this.showSignInModal},gettext("Sign in")),l["default"].createElement(p["default"],{className:"navbar-btn btn-primary"},gettext("Register")))}}]),t}(_),n.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(){b["default"].show(_)}},{key:"render",value:function(){return l["default"].createElement("button",{type:"button",onClick:this.showGuestMenu},l["default"].createElement(f["default"],{size:"64"}))}}]),t}(l["default"].Component)},{"../../services/mobile-navbar-dropdown":169,"../../services/modal":170,"../avatar":56,"../register-button":103,"../sign-in.js":110,react:"react"}],130:[function(e,t,n){"use strict";function r(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}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.CompactUserMenu=n.UserMenu=void 0,n.select=i;var l=e("react"),c=r(l),f=e("./guest-nav"),d=e("./user-nav");n.UserMenu=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 this.props.isAuthenticated?c["default"].createElement(d.UserNav,{user:this.props.user}):c["default"].createElement(f.GuestNav,null)}}]),t}(c["default"].Component),n.CompactUserMenu=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 this.props.isAuthenticated?c["default"].createElement(d.CompactUserNav,{user:this.props.user}):c["default"].createElement(f.CompactGuestNav,null)}}]),t}(c["default"].Component)},{"./guest-nav":129,"./user-nav":131,react:"react"}],131:[function(e,t,n){"use strict";function r(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}}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.CompactUserNav=n.UserNav=n.UserMenu=void 0,n.selectUserMenu=i;var l=e("react"),c=r(l),f=e("react-redux"),d=e("../avatar"),p=r(d),m=e("../change-avatar/root"),h=r(m),g=e("../../index"),b=r(g),y=e("../../services/mobile-navbar-dropdown"),v=r(y),_=e("../../services/modal"),w=r(_),E=n.UserMenu=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(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)(m.select)(h["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:b["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);n.UserNav=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 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),n.CompactUserNav=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(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":156,"../../services/mobile-navbar-dropdown":169,"../../services/modal":170,"../avatar":56,"../change-avatar/root":69,react:"react","react-redux":"react-redux"}],132:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.StatusLabel=n.StatusIcon=void 0;var u=e("react"),l=r(u),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 l["default"].createElement("span",{className:this.getClass()},this.props.children)}}]),t}(l["default"].Component);n["default"]=c;n.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 l["default"].createElement("span",{className:"material-icon status-icon"},this.getIcon())}}]),t}(l["default"].Component),n.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 l["default"].createElement("span",{className:this.props.className||"status-label",title:this.getHelp()},this.getLabel())}}]),t}(l["default"].Component)},{react:"react"}],133:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var l=e("react"),c=a(l),f=e("../avatar"),d=a(f),p=e("../../utils/random"),m=r(p),h=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(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:m["int"](30,100)+"px"}}," ")),c["default"].createElement("div",{className:"change"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:m["int"](30,70)+"px"}}," "),c["default"].createElement("span",{className:"material-icon"},"arrow_forward"),c["default"].createElement("span",{className:"ui-preview-text",style:{width:m["int"](30,70)+"px"}}," ")),c["default"].createElement("div",{className:"change-date"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:m["int"](80,140)+"px"}}," ")))}}]),t}(c["default"].Component);n["default"]=h},{"../../utils/random":183,"../avatar":56,react:"react"}],134:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../avatar"),f=r(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?l["default"].createElement("a",{href:this.props.change.changed_by.absolute_url,className:"user-avatar-wrapper"},l["default"].createElement(f["default"],{user:this.props.change.changed_by,size:"100"})):l["default"].createElement("span",{className:"user-avatar-wrapper"},l["default"].createElement(f["default"],{size:"100"}))}},{key:"renderUsername",value:function(){return this.props.change.changed_by?l["default"].createElement("a",{href:this.props.change.changed_by.absolute_url,className:"item-title"},this.props.change.changed_by.username):l["default"].createElement("span",{className:"item-title"},this.props.change.changed_by_username)}},{key:"render",value:function(){return l["default"].createElement("li",{className:"list-group-item",key:this.props.change.id},l["default"].createElement("div",{className:"change-avatar"},this.renderUserAvatar()),l["default"].createElement("div",{className:"change-author"},this.renderUsername()),l["default"].createElement("div",{className:"change"},l["default"].createElement("span",{className:"old-username"},this.props.change.old_username),l["default"].createElement("span",{className:"material-icon"},"arrow_forward"),l["default"].createElement("span",{className:"new-username"},this.props.change.new_username)),l["default"].createElement("div",{className:"change-date"
-},l["default"].createElement("abbr",{title:this.props.change.changed_on.format("LLL")},this.props.change.changed_on.fromNow())))}}]),t}(l["default"].Component);n["default"]=d},{"../avatar":56,react:"react"}],135:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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 l["default"].createElement("div",{className:"username-history ui-ready"},l["default"].createElement("ul",{className:"list-group"},l["default"].createElement("li",{className:"list-group-item empty-message"},this.getEmptyMessage())))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],136:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./change-preview"),f=r(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 l["default"].createElement("div",{className:"username-history ui-preview"},l["default"].createElement("ul",{className:"list-group"},[0,1,2].map(function(e){return l["default"].createElement(f["default"],{hiddenOnMobile:e>0,key:e})})))}}]),t}(l["default"].Component);n["default"]=d},{"./change-preview":133,react:"react"}],137:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./change"),f=r(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 l["default"].createElement("div",{className:"username-history ui-ready"},l["default"].createElement("ul",{className:"list-group"},this.props.changes.map(function(e){return l["default"].createElement(f["default"],{change:e,key:e.id})})))}}]),t}(l["default"].Component);n["default"]=d},{"./change":134,react:"react"}],138:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./list-empty"),f=r(c),d=e("./list-ready"),p=r(d),m=e("./list-preview"),h=r(m),g=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?l["default"].createElement(p["default"],{changes:this.props.changes}):l["default"].createElement(f["default"],{emptyMessage:this.props.emptyMessage}):l["default"].createElement(h["default"],null)}}]),t}(l["default"].Component);n["default"]=g},{"./list-empty":135,"./list-preview":136,"./list-ready":137,react:"react"}],139:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./user-card"),f=r(c),d=e("./user-preview"),p=r(d),m=e("../../utils/batch"),h=r(m),g=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?l["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,h["default"])(this.props.users,this.props.cols).map(function(t,n){return l["default"].createElement("div",{className:"row",key:n},t.map(function(t){return l["default"].createElement("div",{className:e.getColClassName(),key:t.id},l["default"].createElement(f["default"],{user:t,showStatus:e.props.showStatus,showRank:e.props.showRank}))}))});for(var t=[],n=0;n<this.props.cols;n++)0===n?t.push(this.getColClassName()):t.push(this.getColClassName()+" hidden-xs hidden-sm");return l["default"].createElement("div",{className:"row"},t.map(function(t,n){return l["default"].createElement("div",{className:t,key:n},l["default"].createElement(p["default"],{showStatus:e.props.showStatus}))}))}},{key:"render",value:function(){return l["default"].createElement("div",{className:"users-cards-list ui-ready"},this.getBody())}}]),t}(l["default"].Component);n["default"]=g},{"../../utils/batch":177,"./user-card":140,"./user-preview":141,react:"react"}],140:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var l=e("react"),c=a(l),f=e("../avatar"),d=a(f),p=e("../user-status"),m=a(p),h=e("../../utils/random"),g=r(h),b=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(t,[{key:"getUserStatus",value:function(){return this.props.showStatus?this.props.user.status?c["default"].createElement(m["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:g["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);n["default"]=b},{"../../utils/random":183,"../avatar":56,"../user-status":132,react:"react"}],141:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var l=e("react"),c=a(l),f=e("../avatar"),d=a(f),p=e("../../utils/random"),m=r(p),h=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(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:m["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:m["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:m["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:m["int"](40,70)+"px"}}," ")),c["default"].createElement("li",{className:"user-threads-count"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:m["int"](40,70)+"px"}}," ")),c["default"].createElement("li",{className:"user-followers-count"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:m["int"](40,70)+"px"}}," ")))))))}}]),t}(c["default"].Component);n["default"]=h},{"../../utils/random":183,"../avatar":56,react:"react"}],142:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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 l["default"].createElement("div",{className:"active-posters-list"},l["default"].createElement("div",{className:"container"},l["default"].createElement("p",{className:"lead"},this.getEmptyMessage())))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],143:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var l=e("react"),c=a(l),f=e("../../avatar"),d=a(f),p=e("../../../utils/random"),m=r(p),h=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(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:m["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:m["int"](30,50)+"px"}}," ")),c["default"].createElement("span",{className:"rank-name"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:m["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:m["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:m["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:m["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:m["int"](20,30)+"px"}}," ")),c["default"].createElement("small",null,gettext("Total posts"))))}}]),t}(c["default"].Component);n["default"]=h},{"../../../utils/random":183,"../../avatar":56,react:"react"}],144:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var l=e("react"),c=a(l),f=e("react-router"),d=e("../../avatar"),p=a(d),m=e("../../user-status"),h=a(m),g=e("../../../index"),b=a(g),y=e("../../../utils/random"),v=r(y),_=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(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(h["default"],{user:this.props.user,status:this.props.user.status},c["default"].createElement(m.StatusIcon,{user:this.props.user,status:this.props.user.status}),c["default"].createElement(m.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=b["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);n["default"]=_},{"../../../index":156,"../../../utils/random":183,"../../avatar":56,"../../user-status":132,react:"react","react-router":"react-router"}],145:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var l=e("react"),c=a(l),f=e("./list-item-preview"),d=a(f),p=e("../../../utils/random"),m=r(p),h=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(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:m["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);n["default"]=h},{"../../../utils/random":183,"./list-item-preview":143,react:"react"}],146:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./list-item"),f=r(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 l["default"].createElement("div",{className:"active-posters-list"},l["default"].createElement("div",{className:"container"},l["default"].createElement("p",{className:"lead"},this.getLeadMessage()),l["default"].createElement("div",{className:"active-posters ui-ready"},l["default"].createElement("ul",{className:"list-group"},this.props.users.map(function(e,t){return l["default"].createElement(f["default"],{user:e,rank:e.rank,counter:t+1,key:e.id})})))))}}]),t}(l["default"].Component);n["default"]=d},{"./list-item":144,react:"react"}],147:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./list-empty"),f=r(c),d=e("./list-preview"),p=r(d),m=e("./list-ready"),h=r(m),g=e("../../../index"),b=r(g),y=e("../../../reducers/users"),v=e("../../../services/polls"),_=r(v),w=e("../../../services/store"),E=r(w),O=e("../../../services/page-title"),k=r(O),N=function(e){
-function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.update=function(e){E["default"].dispatch((0,y.hydrate)(e.results)),n.setState({isLoaded:!0,trackedPeriod:e.tracked_period,count:e.count})},b["default"].has("USERS")?n.initWithPreloadedData(b["default"].pop("USERS")):n.initWithoutPreloadedData(),n.startPolling(),n}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,y.hydrate)(e.results))}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1}}},{key:"startPolling",value:function(){_["default"].start({poll:"active-posters",url:b["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?l["default"].createElement(h["default"],{users:this.props.users,trackedPeriod:this.state.trackedPeriod,count:this.state.count}):l["default"].createElement(f["default"],{trackedPeriod:this.state.trackedPeriod}):l["default"].createElement(p["default"],null)}}]),t}(l["default"].Component);n["default"]=N},{"../../../index":156,"../../../reducers/users":163,"../../../services/page-title":171,"../../../services/polls":172,"../../../services/store":174,"./list-empty":142,"./list-preview":145,"./list-ready":146,react:"react"}],148:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.CompactNav=n.TabsNav=void 0;var u=e("react"),l=r(u),c=e("react-router"),f=e("../li"),d=r(f),p=e("../../index"),m=(r(p),function(e,t){var n=e;return n+="rank"===t.component?t.slug:t.component,n+"/"}),h=function(e,t,n){return t.map(function(t){var r=m(e,t);return l["default"].createElement(d["default"],{path:r,key:r},l["default"].createElement(c.Link,{to:r,onClick:n},t.name))})};n.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 l["default"].createElement("ul",{className:"nav nav-pills"},h(this.props.baseUrl,this.props.lists))}}]),t}(l["default"].Component),n.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 l["default"].createElement("ul",{className:"dropdown-menu",role:"menu"},h(this.props.baseUrl,this.props.lists,this.props.hideNav))}}]),t}(l["default"].Component)},{"../../index":156,"../li":74,react:"react","react-router":"react-router"}],149:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../../users-list/root"),f=r(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 l["default"].createElement("div",null,l["default"].createElement(f["default"],{isLoaded:!1,cols:3,showStatus:!0}))}}]),t}(l["default"].Component);n["default"]=d},{"../../users-list/root":139,react:"react"}],150:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./pager"),f=r(c),d=e("../../users-list/root"),p=r(d),m=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?l["default"].createElement(f["default"],this.props):null}},{key:"render",value:function(){return l["default"].createElement("div",null,l["default"].createElement(p["default"],{users:this.props.users,showStatus:!0,cols:3,isLoaded:!0}),this.getPager())}}]),t}(l["default"].Component);n["default"]=m},{"../../users-list/root":139,"./pager":151,react:"react"}],151:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("react-router"),f=e("../../../utils/reset-scroll"),d=r(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+"/"),l["default"].createElement("li",{className:"previous"},l["default"].createElement(c.Link,{to:e,onClick:d["default"]},l["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 l["default"].createElement("li",{className:"next"},l["default"].createElement(c.Link,{to:e,onClick:d["default"]},l["default"].createElement("span",{"aria-hidden":"true",className:"material-icon"},"arrow_forward")))}return null}},{key:"getProgessBar",value:function(){var e=this;return l["default"].createElement("ul",{className:"pager-progress-bar"},this.props.page_range.map(function(t){var n=t===e.props.page?"active":null,r=e.props.baseUrl;return t>1&&(r+=t+"/"),l["default"].createElement("li",{key:t,className:n},l["default"].createElement(c.Link,{to:r,onClick:d["default"]},t))}))}},{key:"render",value:function(){return l["default"].createElement("div",{className:"pager-undercontent"},l["default"].createElement("nav",null,l["default"].createElement("ul",{className:"pager"},this.getPreviousPage(),this.getNextPage()),this.getProgessBar()))}}]),t}(l["default"].Component);n["default"]=p},{"../../../utils/reset-scroll":184,react:"react","react-router":"react-router"}],152:[function(e,t,n){"use strict";function r(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)}var i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var l=e("react"),c=r(l),f=e("./list"),d=r(f),p=e("./list-loading"),m=r(p),h=e("../../../index"),g=r(h),b=e("../../../reducers/users"),y=e("../../../services/polls"),v=r(y),_=e("../../../services/store"),w=r(_),E=e("../../../services/page-title"),O=r(E),k=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.update=function(e){w["default"].dispatch((0,b.hydrate)(e.results)),e.isLoaded=!0,n.setState(e)},g["default"].has("USERS")?n.initWithPreloadedData(g["default"].pop("USERS")):n.initWithoutPreloadedData(),n.startPolling(e.params.page||1),n}return s(t,e),u(t,[{key:"initWithPreloadedData",value:function(e){this.state=Object.assign(e,{isLoaded:!0}),w["default"].dispatch((0,b.hydrate)(e.results))}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1}}},{key:"startPolling",value:function(e){v["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(){O["default"].set({title:this.props.route.rank.name,page:this.props.params.page||null,parent:gettext("Users")})}},{key:"componentWillUnmount",value:function(){v["default"].stop("rank-users")}},{key:"componentWillReceiveProps",value:function(e){this.props.params.page!==e.params.page&&(O["default"].set({title:this.props.route.rank.name,page:e.params.page||null,parent:gettext("Users")}),this.setState({isLoaded:!1}),v["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("div",{className:"lead",dangerouslySetInnerHTML:{__html: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(d["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(m["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);n["default"]=k},{"../../../index":156,"../../../reducers/users":163,"../../../services/page-title":171,"../../../services/polls":172,"../../../services/store":174,"./list":150,"./list-loading":149,react:"react"}],153:[function(e,t,n){"use strict";function r(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 u(){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)(b["default"]),extra:{name:t.name}})}),e}var l=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.select=i,n.paths=u;var c=e("react"),f=r(c),d=e("react-redux"),p=e("../dropdown-toggle"),m=r(p),h=e("./navs"),g=e("./active-posters/root"),b=r(g),y=e("./rank/root"),v=r(y),_=e("../with-dropdown"),w=r(_),E=e("../../index"),O=r(E),k=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 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(m["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(h.TabsNav,{lists:O["default"].get("USERS_LISTS"),baseUrl:O["default"].get("USERS_LIST_URL")})))),f["default"].createElement("div",{className:this.getCompactNavClassName()},f["default"].createElement(h.CompactNav,{lists:O["default"].get("USERS_LISTS"),baseUrl:O["default"].get("USERS_LIST_URL"),hideNav:this.hideNav})),this.props.children)}}]),t}(w["default"]);n["default"]=k},{"../../index":156,"../dropdown-toggle":71,"../with-dropdown":154,"./active-posters/root":147,"./navs":148,"./rank/root":152,react:"react","react-redux":"react-redux"}],154:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.toggleNav=function(){n.setState({dropdown:!n.state.dropdown})},n.hideNav=function(){n.setState({dropdown:!1})},n.state={dropdown:!1},n}return s(t,e),i(t,[{key:"getCompactNavClassName",value:function(){return this.state.dropdown?"compact-nav open":"compact-nav"}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],155:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=function(e){function t(){var e,n,r,s;a(this,t);for(var i=arguments.length,u=Array(i),l=0;i>l;l++)u[l]=arguments[l];return n=r=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(u))),r.toggle=function(){r.props.onChange({target:{value:!r.props.value}})},s=n,o(r,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 l["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},l["default"].createElement("span",{className:"material-icon"},this.getIcon()),this.getLabel())}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],156:[function(e,t,n){(function(t){"use strict";function r(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")}var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Misago=void 0;var s=e("./utils/ordered-list"),i=r(s),u=n.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 n=new i["default"](this._initializers).orderedValues();n.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}(),l=new u;t.misago=l,n["default"]=l}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./utils/ordered-list":182}],157:[function(e,t,n){"use strict";function r(e){return{type:l,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]?u:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];switch(t.type){case l:var n=Object.assign({},e);return n.user=Object.assign({},e.user,t.patch),n;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 r=Object.assign({},e);return r.user=Object.assign({},e.user,{avatar_hash:t.avatarHash}),r}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(n,"__esModule",{value:!0}),n.SIGN_OUT=n.SIGN_IN=n.PATCH_USER=n.initialState=void 0,n.patch=r,n.signIn=a,n.signOut=o,n["default"]=s;var i=e("./users"),u=n.initialState={signedIn:!1,signedOut:!1},l=n.PATCH_USER="PATCH_USER",c=n.SIGN_IN="SIGN_IN",f=n.SIGN_OUT="SIGN_OUT"},{"./users":163}],158:[function(e,t,n){"use strict";function r(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,u["default"])(t.profile.joined_on),status:(0,l.hydrateStatus)(t.profile.status)});case f:return Object.assign({},e,t.patch);case l.UPDATE_AVATAR:return e.id===t.userId?Object.assign({},e,{avatar_hash:t.avatarHash}):e;case l.UPDATE_USERNAME:return e.id===t.userId?Object.assign({},e,{username:t.username,slug:t.slug}):e;default:return e}}Object.defineProperty(n,"__esModule",{value:!0}),n.PATCH_PROFILE=n.HYDRATE_PROFILE=void 0,n.hydrate=a,n.patch=o,n["default"]=s;var i=e("moment"),u=r(i),l=e("./users"),c=n.HYDRATE_PROFILE="HYDRATE_PROFILE",f=n.PATCH_PROFILE="PATCH_PROFILE"},{"./users":163,moment:"moment"}],159:[function(e,t,n){"use strict";function r(e,t){return{type:i,message:e,messageType:t}}function a(){return{type:u}}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===u?Object.assign({},e,{isVisible:!1}):e}Object.defineProperty(n,"__esModule",{value:!0}),n.showSnackbar=r,n.hideSnackbar=a,n["default"]=o;var s=n.initialState={type:"info",message:"",isVisible:!1},i=n.SHOW_SNACKBAR="SHOW_SNACKBAR",u=n.HIDE_SNACKBAR="HIDE_SNACKBAR"},{}],160:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){return{type:m,items:e}}function o(e){return{type:h,items:e}}function s(e,t){return{type:g,thread:e,patch:t}}function i(e){var t=[];return b.forEach(function(n){e[n]&&t.push(n)}),t}function u(e){return Object.assign({},e,{started_on:(0,f["default"])(e.started_on),last_post_on:(0,f["default"])(e.last_post_on),moderation:i(e.acl)})}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 m:var n=(0,p["default"])(t.items.map(u),e);return n.sort(function(e,t){return e.last_post>t.last_post?-1:e.last_post<t.last_post?1:0});case h:return t.items.map(u);case g:return e.map(function(e){return e.id===t.thread.id?Object.assign({},e,t.patch):e});default:return e}}Object.defineProperty(n,"__esModule",{value:!0}),n.MODERATION_PERMISSIONS=n.PATCH_THREADS=n.HYDRATE_THREADS=n.APPEND_THREADS=void 0,n.append=a,n.hydrate=o,n.patch=s,n.getThreadModerationOptions=i,n.hydrateThread=u,n["default"]=l;var c=e("moment"),f=r(c),d=e("../utils/concat-unique"),p=r(d),m=n.APPEND_THREADS="APPEND_THREADS",h=n.HYDRATE_THREADS="HYDRATE_THREADS",g=n.PATCH_THREADS="PATCH_THREADS",b=n.MODERATION_PERMISSIONS=["can_announce","can_close","can_hide","can_move","can_pin","can_review"]},{"../utils/concat-unique":178,moment:"moment"}],161:[function(e,t,n){"use strict";function r(){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(n,"__esModule",{value:!0}),n.doTick=r,n["default"]=a;var o=n.initialState={tick:0},s=n.TICK="TICK"},{}],162:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e,t,n){return{type:m,change:e,user:t,changedBy:n}}function o(e){return{type:h,items:e}}function s(e){return{type:g,items:e}}function i(e){return Object.assign({},e,{changed_on:(0,c["default"])(e.changed_on)})}function u(){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 n=e.slice();return n.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}),n;case h:return(0,p["default"])(e,t.items.map(i));case g: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(n,"__esModule",{value:!0}),n.HYDRATE_HISTORY=n.APPEND_HISTORY=n.ADD_NAME_CHANGE=void 0,n.addNameChange=a,n.append=o,n.hydrate=s,n.hydrateNamechange=i,n["default"]=u;var l=e("moment"),c=r(l),f=e("./users"),d=e("../utils/concat-unique"),p=r(d),m=n.ADD_NAME_CHANGE="ADD_NAME_CHANGE",h=n.APPEND_HISTORY="APPEND_HISTORY",g=n.HYDRATE_HISTORY="HYDRATE_HISTORY"},{"../utils/concat-unique":178,"./users":163,moment:"moment"}],163:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){return{type:h,items:e}}function o(e){return{type:g,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 u(e,t){return{type:b,userId:e.id,avatarHash:t}}function l(e,t,n){return{type:y,userId:e.id,username:t,slug:n}}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 h:var n=(0,m["default"])(e,t.items.map(i));return n.sort(function(e,t){return e.username<t.username?-1:e.username>t.username?1:0});case g:return t.items.map(i);case b: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(n,"__esModule",{value:!0}),n.UPDATE_USERNAME=n.UPDATE_AVATAR=n.HYDRATE_USERS=n.APPEND_USERS=void 0,n.append=a,n.hydrate=o,n.hydrateStatus=s,n.hydrateUser=i,n.updateAvatar=u,n.updateUsername=l,n["default"]=c;var f=e("moment"),d=r(f),p=e("../utils/concat-unique"),m=r(p),h=n.APPEND_USERS="APPEND_USERS",g=n.HYDRATE_USERS="HYDRATE_USERS",b=n.UPDATE_AVATAR="UPDATE_AVATAR",y=n.UPDATE_USERNAME="UPDATE_USERNAME"},{"../utils/concat-unique":178,moment:"moment"}],164:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}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 n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var s=n.Ajax=function(){function e(){r(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,n){var r=this;return new Promise(function(a,o){var s={url:t,method:e,headers:{"X-CSRFToken":r._csrfToken},data:n?JSON.stringify(n):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,n){var r=this;if(t&&(e+="?"+$.param(t)),!n)return this.request("GET",e);var o=function(){var t=r;return r._locks[n]&&(r._locks[n].url=e),r._locks[n]&&r._locks[n].waiter?{v:{then:function(){}}}:r._locks[n]&&r._locks[n].wait?(r._locks[n].waiter=!0,{v:new Promise(function(r,a){var o=function s(e){t._locks[n].wait?window.setTimeout(function(){s(e)},300):t._locks[n].url!==e?s(t._locks[n].url):(t._locks[n].waiter=!1,t.request("GET",t._locks[n].url).then(function(a){t._locks[n].url===e?r(a):(t._locks[n].waiter=!0,s(t._locks[n].url))},function(r){t._locks[n].url===e?a(r):(t._locks[n].waiter=!0,s(t._locks[n].url))}))};window.setTimeout(function(){o(e)},300)})}):(r._locks[n]={url:e,wait:!0,waiter:!1},{v:new Promise(function(r,a){t.request("GET",e).then(function(a){t._locks[n].wait=!1,t._locks[n].url===e&&r(a)},function(r){t._locks[n].wait=!1,t._locks[n].url===e&&a(r)})})})}();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,n){var r=this;return new Promise(function(a,o){var s={url:e,method:"POST",headers:{"X-CSRFToken":r._csrfToken},data:t,contentType:!1,processData:!1,xhr:function i(){var i=new window.XMLHttpRequest;return i.upload.addEventListener("progress",function(e){e.lengthComputable&&n(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}();n["default"]=new s},{}],165:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Auth=void 0;var o=e("../reducers/auth"),s=n.Auth=function(){function e(){r(this,e)}return a(e,[{key:"init",value:function(e,t,n){this._store=e,this._local=t,this._modal=n,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}();n["default"]=new s},{"../reducers/auth":157}],166:[function(e,t,n){"use strict";function r(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")}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Captcha=n.ReCaptcha=n.ReCaptchaComponent=n.QACaptcha=n.NoCaptcha=n.BaseCaptcha=void 0;var u=e("react"),l=r(u),c=e("../components/form-group"),f=r(c),d=n.BaseCaptcha=function(){function e(){s(this,e)}return i(e,[{key:"init",value:function(e,t,n,r){this._context=e,this._ajax=t,this._include=n,this._snackbar=r}}]),e}(),p=n.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),m=n.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,n){e._ajax.get(e._context.get("CAPTCHA_API")).then(function(n){e.question=n.question,e.helpText=n.help_text,t()},function(){e._snackbar.error(gettext("Failed to load CAPTCHA.")),n()})})}},{key:"validator",value:function(){return[]}},{key:"component",value:function(e){return l["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},l["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),h=n.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 l["default"].createElement("div",{id:"recaptcha"})}}]),t}(l["default"].Component),g=n.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 n(){"undefined"==typeof grecaptcha?window.setTimeout(function(){n()},200):e()};t()})}},{key:"validator",value:function(){return[]}},{key:"component",value:function(e){return l["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.")},l["default"].createElement(h,{siteKey:this._context.get("SETTINGS").recaptcha_site_key,binding:e.form.bindInput("captcha")}))}}]),t}(d),b=n.Captcha=function(){function e(){s(this,e)}return i(e,[{key:"init",value:function(e,t,n,r){switch(e.get("SETTINGS").captcha_type){case"no":this._captcha=new p;break;case"qa":this._captcha=new m;break;case"re":this._captcha=new g}this._captcha.init(e,t,n,r)}},{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}();n["default"]=new b},{"../components/form-group":72,react:"react"}],167:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var o=n.Include=function(){function e(){r(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}();n["default"]=new o},{}],168:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var o=window.localStorage,s=n.LocalStorage=function(){function e(){r(this,e)}return a(e,[{key:"init",value:function(e){var t=this;this._prefix=e,this._watchers=[],window.addEventListener("storage",function(e){var n=JSON.parse(e.newValue);t._watchers.forEach(function(t){t.key===e.key&&e.oldValue!==e.newValue&&t.callback(n)})})}},{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}();n["default"]=new s},{}],169:[function(e,t,n){"use strict";function r(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")}var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.MobileNavbarDropdown=void 0;var s=e("../utils/mount-component"),i=r(s),u=n.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}();n["default"]=new u},{"../utils/mount-component":181}],170:[function(e,t,n){"use strict";function r(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")}var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Modal=void 0;var s=e("react-dom"),i=r(s),u=e("../utils/mount-component"),l=r(u),c=n.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,l["default"])(e,this._element.id),this._modal.modal("show")}},{key:"hide",value:function(){this._modal.modal("hide")}}]),e}();n["default"]=new c},{"../utils/mount-component":181,"react-dom":"react-dom"}],171:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var o=n.PageTitle=function(){function e(){r(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 n=interpolate(gettext("page: %(page)s"),{page:e.page},!0);t+=" ("+n+")"}e.parent&&(t+=" | "+e.parent),document.title=t+" | "+this._forumName}}]),e}();n["default"]=new o},{}],172:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var o=n.Polls=function(){function e(){r(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,n=function r(){t._polls[e.poll]=e,t._ajax.get(e.url,e.data||null).then(function(n){t._polls[e.poll]._stopped||(e.update(n),t._polls[e.poll].timeout=window.setTimeout(r,e.frequency))},function(n){t._polls[e.poll]._stopped||(e.error?e.error(n):t._snackbar.apiError(n))})};n()}},{key:"stop",value:function(e){this._polls[e]&&(window.clearTimeout(this._polls[e].timeout),this._polls[e]._stopped=!0)}}]),e}();n["default"]=new o},{}],173:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Snackbar=void 0;var o=e("../reducers/snackbar"),s=300,i=5e3,u=n.Snackbar=function(){function e(){r(this,e)}return a(e,[{key:"init",value:function(e){this._store=e,this._timeout=null}},{key:"alert",value:function(e,t){var n=this;this._timeout?(window.clearTimeout(this._timeout),this._store.dispatch((0,o.hideSnackbar)()),this._timeout=window.setTimeout(function(){n._timeout=null,n.alert(e,t)},s)):(this._store.dispatch((0,o.showSnackbar)(e,t)),this._timeout=window.setTimeout(function(){n._store.dispatch((0,o.hideSnackbar)()),n._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}();n["default"]=new u},{"../reducers/snackbar":159}],174:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.StoreWrapper=void 0;var o=e("redux"),s=n.StoreWrapper=function(){function e(){r(this,e),this._store=null,this._reducers={},this._initialState={}}return a(e,[{key:"addReducer",value:function(e,t,n){this._reducers[e]=t,this._initialState[e]=n}},{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}();n["default"]=new s},{redux:"redux"}],175:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var o=n.Zxcvbn=function(){function e(){r(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 n(){"undefined"==typeof zxcvbn?window.setTimeout(function(){n()},200):e()};t()})}},{key:"_loadedPromise",value:function(){return new Promise(function(e){e()})}}]),e}();n["default"]=new o},{}],176:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=function(e,t){if(l["default"].render(i["default"].createElement(c.Provider,{store:g["default"].getStore()},i["default"].createElement(y,{message:e.message,expires:e.expires_on?(0,o["default"])(e.expires_on):null})),document.getElementById("page-mount")),"undefined"==typeof t||t){var n=m["default"].get("SETTINGS").forum_name;document.title=gettext("You are banned")+" | "+n,window.history.pushState({},"",m["default"].get("BANNED_URL"))}};var a=e("moment"),o=r(a),s=e("react"),i=r(s),u=e("react-dom"),l=r(u),c=e("react-redux"),f=e("../components/banned-page"),d=r(f),p=e("../index"),m=r(p),h=e("../services/store"),g=r(h),b=function(e){return e.tick},y=(0,c.connect)(b)(d["default"])},{"../components/banned-page":57,"../index":156,"../services/store":174,moment:"moment",react:"react","react-dom":"react-dom","react-redux":"react-redux"}],177:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=function(e,t){var n=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],r=[],a=[];if(e.forEach(function(e){a.push(e),a.length===t&&(r.push(a),a=[])}),n!==!1&&a.length>0&&a.length<t)for(var o=a.length;t>o;o++)a.push(n);return a.length&&r.push(a),r}},{}],178:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=function(e,t){var n=[];return e.concat(t).filter(function(e){return-1===n.indexOf(e.id)?(n.push(e.id),!0):!1})}},{}],179:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=function(e){return e.replace(/[&<>"']/g,function(e){return r[e]})};var r={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"}},{}],180:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n["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,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=function(e,t){var n=arguments.length<=2||void 0===arguments[2]?!0:arguments[2],r=document.getElementById(t),a=e.props?e:o["default"].createElement(e,null);r&&(n?i["default"].render(o["default"].createElement(u.Provider,{store:c["default"].getStore()},a),r):i["default"].render(a,r))};var a=e("react"),o=r(a),s=e("react-dom"),i=r(s),u=e("react-redux"),l=e("../services/store"),c=r(l)},{"../services/store":174,react:"react","react-dom":"react-dom","react-redux":"react-redux"}],182:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function e(t){r(this,e),this.isOrdered=!1,this._items=t||[]}return a(e,[{key:"add",value:function(e,t,n){this._items.push({key:e,item:t,after:n?n.after||null:null,before:n?n.before||null:null})}},{key:"get",value:function(e,t){for(var n=0;n<this._items.length;n++)if(this._items[n].key===e)return this._items[n].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&&(r.splice(t,0,e),a.splice(t,0,e.key)))}var n=[];e.forEach(function(e){n.push(e.key)});var r=[],a=[];e.forEach(function(e){e.after||e.before||(r.push(e),a.push(e.key))}),e.forEach(function(e){"_end"===e.before&&(r.push(e),a.push(e.key))});for(var o=200;o>0&&n.length!==a.length;)o-=1,e.forEach(t);return r}}]),e}();n["default"]=o},{}],183:[function(e,t,n){"use strict";function r(e,t){return Math.floor(Math.random()*(t-e+1))+e}function a(e,t){for(var n=new Array(r(e,t)),a=0;a<n.length;a++)n[a]=a;return n}Object.defineProperty(n,"__esModule",{value:!0}),n["int"]=r,n.range=a},{}],184:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=function(){window.scrollTo(0,0)}},{}],185:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=function(e){var t={component:e.component||null,childRoutes:[]};e.root?t.childRoutes=[{path:e.root,onEnter:function(t,n){n(null,e.paths[0].path)}}].concat(e.paths):t.childRoutes=e.paths,i["default"].render(o["default"].createElement(u.Provider,{store:p["default"].getStore()},o["default"].createElement(l.Router,{routes:t,history:h})),m)};var a=e("react"),o=r(a),s=e("react-dom"),i=r(s),u=e("react-redux"),l=e("react-router"),c=e("history/lib/createBrowserHistory"),f=r(c),d=e("../services/store"),p=r(d),m=document.getElementById("page-mount"),h=new f["default"]},{"../services/store":174,"history/lib/createBrowserHistory":45,react:"react","react-dom":"react-dom","react-redux":"react-redux","react-router":"react-router"}],186:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=function(e,t){return-1===e.indexOf(t)?(e.push(t),e):e.filter(function(e){return e!==t})}},{}],187:[function(e,t,n){"use strict";function r(){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(n){var r="",a=$.trim(n).length;return e>a?(r=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(r,{limit_value:e,show_value:a},!0)):void 0}}function s(e,t){return function(n){var r="",a=$.trim(n).length;return a>e?(r=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(r,{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 u(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 l(){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(n,"__esModule",{value:!0}),n.required=r,n.email=a,n.minLength=o,n.maxLength=s,n.usernameMinLength=i,n.usernameMaxLength=u,n.usernameContent=l,n.passwordMinLength=c;var f=/^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i,d=new RegExp("^[0-9a-z]+$","i")},{}]},{},[2,3,4,5,18,19,20,21,22,23,24,33,34,35,36,6,7,8,9,10,11,12,13,14,15,16,17,25,26,27,28,29,30,31,32]);
+function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoading:!1,showActivation:!1,username:"",password:"",validators:{username:[],password:[]}},n}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 b["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(b["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?l["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 l["default"].createElement("div",{className:"modal-dialog modal-sm modal-sign-in",role:"document"},l["default"].createElement("div",{className:"modal-content"},l["default"].createElement("div",{className:"modal-header"},l["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},l["default"].createElement("span",{"aria-hidden":"true"},"×")),l["default"].createElement("h4",{className:"modal-title"},gettext("Sign in"))),l["default"].createElement("form",{onSubmit:this.handleSubmit},l["default"].createElement("div",{className:"modal-body"},l["default"].createElement("div",{className:"form-group"},l["default"].createElement("div",{className:"control-input"},l["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}))),l["default"].createElement("div",{className:"form-group"},l["default"].createElement("div",{className:"control-input"},l["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})))),l["default"].createElement("div",{className:"modal-footer"},this.getActivationButton(),l["default"].createElement(p["default"],{className:"btn-primary btn-block",loading:this.state.isLoading},gettext("Sign in")),l["default"].createElement("a",{href:f["default"].get("FORGOTTEN_PASSWORD_URL"),className:"btn btn-default btn-block"},gettext("Forgot password?"))))))}}]),t}(h["default"]);n["default"]=k},{"../index":156,"../services/ajax":164,"../services/modal":170,"../services/snackbar":173,"../utils/banned-page":176,"./button":58,"./form":73,react:"react"}],111:[function(e,t,n){"use strict";function r(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}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Snackbar=void 0,n.select=i;var l=e("react"),c=r(l),f={info:"alert-info",success:"alert-success",warning:"alert-warning",error:"alert-danger"};n.Snackbar=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(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"}],112:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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 l["default"].createElement("div",{className:"threads-list ui-ready"},l["default"].createElement("ul",{className:"list-group"},this.props.children))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],113:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./thread-preview"),f=r(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 l["default"].createElement("div",{className:"threads-list ui-preview"},l["default"].createElement("ul",{className:"list-group"},[0,1,2].map(function(e){return l["default"].createElement(f["default"],{hiddenOnMobile:e>0,key:e})})))}}]),t}(l["default"].Component);n["default"]=d},{"./thread-preview":119,react:"react"}],114:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./thread"),f=r(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=this;return l["default"].createElement("div",{className:"threads-list ui-ready"},l["default"].createElement("ul",{className:"list-group"},this.props.threads.map(function(t){return l["default"].createElement(f["default"],{user:e.props.user,categories:e.props.categories,thread:t,list:e.props.list,selectThread:e.props.selectThread,isSelected:e.props.selection.indexOf(t.id)>=0,key:t.id})})))}}]),t}(l["default"].Component);n["default"]=d},{"./thread":120,react:"react"}],115:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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_closed?this.props.thread.is_read?gettext("This thread has no new posts. (closed)"):gettext("This thread has new posts. (closed)"):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:"render",value:function(){return l["default"].createElement("div",{className:this.getClassName(),title:this.getTitle()},l["default"].createElement("span",{className:"material-icon"},this.getIcon()))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],116:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./list-empty"),f=r(c),d=e("./list-ready"),p=r(d),m=e("./list-preview"),h=r(m),g=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?l["default"].createElement(p["default"],{user:this.props.user,threads:this.props.threads,categories:this.props.categories,list:this.props.list,selectThread:this.props.selectThread,selection:this.props.selection}):l["default"].createElement(f["default"],null,this.props.children):l["default"].createElement(h["default"],null)}}]),t}(l["default"].Component);n["default"]=g},{"./list-empty":112,"./list-preview":113,"./list-ready":114,react:"react"}],117:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var l=e("react"),c=r(l),f=e("../button"),d=(r(f),e("../../reducers/threads")),p=e("../../services/ajax"),m=r(p),h=e("../../services/snackbar"),g=r(h),b=e("../../services/store"),y=r(b),v={unsubscribe:null,notify:!1,email:!0},_=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.setSubscription=function(e){n.setState({isLoading:!0});var t=n.props.thread.subscription;y["default"].dispatch((0,d.patch)(n.props.thread,{subscription:v[e]})),m["default"].post(n.props.thread.api_url.subscribe,a({},e,!0)).then(function(){n.setState({isLoading:!1})},function(e){n.setState({isLoading:!1}),y["default"].dispatch((0,d.patch)(n.props.thread,{subscription:v[t]})),g["default"].apiError(e)})},n.unsubscribe=function(){n.setSubscription("unsubscribe")},n.notify=function(){n.setSubscription("notify")},n.email=function(){n.setSubscription("email")},n.state={isLoading:!1},n}return i(t,e),u(t,[{key:"getIcon",value:function(){return this.props.thread.subscription===!0?"star":this.props.thread.subscription===!1?"star_half":"star_border"}},{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 c["default"].createElement("li",null,c["default"].createElement("div",{className:"btn-group"},c["default"].createElement("button",{type:"button",className:this.getClassName(),"data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",disabled:this.state.isBusy},c["default"].createElement("span",{className:"material-icon"},this.getIcon())),c["default"].createElement("ul",{className:"dropdown-menu dropdown-menu-right"},c["default"].createElement("li",null,c["default"].createElement("button",{className:"btn-link",onClick:this.unsubscribe},c["default"].createElement("span",{className:"material-icon"},"star_border"),gettext("Unsubscribe"))),c["default"].createElement("li",null,c["default"].createElement("button",{className:"btn-link",onClick:this.notify},c["default"].createElement("span",{className:"material-icon"},"star_half"),gettext("Subscribe"))),c["default"].createElement("li",null,c["default"].createElement("button",{className:"btn-link",onClick:this.email},c["default"].createElement("span",{className:"material-icon"},"star"),gettext("Subscribe with e-mail"))))))}}]),t}(c["default"].Component);n["default"]=_},{"../../reducers/threads":160,"../../services/ajax":164,"../../services/snackbar":173,"../../services/store":174,"../button":58,react:"react"}],118:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./subscription-toggle"),f=r(c),d=function(e){function t(){var e,n,r,s;a(this,t);for(var i=arguments.length,u=Array(i),l=0;i>l;l++)u[l]=arguments[l];return n=r=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(u))),r.toggleSelection=function(){r.props.selectThread(r.props.thread.id)},s=n,o(r,s)}return s(t,e),i(t,[{key:"getEditToggle",value:function(){return this.props.thread.acl.can_edit||this.props.thread.acl.can_move?l["default"].createElement("li",null,l["default"].createElement("button",{className:"btn btn-default btn-edit"},l["default"].createElement("span",{className:"material-icon"},"edit"))):null}},{key:"getSelectToggle",value:function(){return this.props.thread.moderation.length?l["default"].createElement("li",null,l["default"].createElement("button",{className:"btn btn-default btn-checkbox",onClick:this.toggleSelection},l["default"].createElement("span",{className:"material-icon"},this.props.isSelected?"check_box":"check_box_outline_blank"))):null}},{key:"render",value:function(){return l["default"].createElement("ul",{className:"list-inline thread-options"},l["default"].createElement(f["default"],{thread:this.props.thread}),this.getEditToggle(),this.getSelectToggle())}}]),t}(l["default"].Component);n["default"]=d},{"./subscription-toggle":117,react:"react"}],119:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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.hiddenOnMobile?"list-group-item hidden-xs hidden-sm":"list-group-item"}},{key:"render",value:function(){return l["default"].createElement("li",{className:this.getClassName()},"Loading...")}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],120:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Category=void 0;var u=e("react"),l=r(u),c=e("react-router"),f=e("./read-icon"),d=r(f),p=e("./thread-options"),m=r(p),h=e("../../utils/escape-html"),g=r(h),b='<a href="%(url)s" class="poster-title">%(user)s</a>',y='<span class="poster-title">%(user)s</span>',v='<a href="%(url)s" class="last-title" title="%(absolute)s">%(relative)s</a>',_=n.Category=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?"thread-category thread-category-"+this.props.category.css_class:"thread-category"}},{key:"getUrl",value:function(){return this.props.category.absolute_url+this.props.list.path}},{key:"render",value:function(){return l["default"].createElement(c.Link,{to:this.getUrl(),className:this.getClassName()},this.props.category.name)}}]),t}(l["default"].Component),w=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.state={isSelected:!1},n}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?l["default"].createElement("li",{className:"thread-path"},l["default"].createElement(_,{category:e,list:this.props.list}),l["default"].createElement("span",{className:"path-separator material-icon"},"arrow_forward"),l["default"].createElement(_,{category:t,list:this.props.list})):e||t?l["default"].createElement("li",{className:"thread-path"},l["default"].createElement(_,{category:e||t,list:this.props.list})):null}},{key:"getClosedLabel",value:function(){return this.props.thread.is_closed?l["default"].createElement("li",{className:"thread-closed"},gettext("Closed")):null}},{key:"getNewLabel",value:function(){return this.props.thread.is_read?null:l["default"].createElement("li",{className:"thread-new-posts",title:gettext("Go to first unread post")},l["default"].createElement("a",{href:this.props.thread.new_post_url},gettext("New posts")))}},{key:"getRepliesCount",value:function(){var e=ngettext("%(replies)s reply","%(replies)s replies",this.props.thread.replies);return l["default"].createElement("li",{className:"thread-replies"},l["default"].createElement("a",{href:this.props.thread.absolute_url},interpolate(e,{replies:this.props.thread.replies},!0)))}},{key:"getLastReplyDate",value:function(){return interpolate(v,{url:(0,g["default"])(this.props.thread.last_post_url),absolute:(0,g["default"])(this.props.thread.last_post_on.format("LLL")),relative:(0,g["default"])(this.props.thread.last_post_on.fromNow())},!0)}},{key:"getLastPoster",value:function(){return this.props.thread.last_poster_url?interpolate(b,{url:(0,g["default"])(this.props.thread.last_poster_url),user:(0,g["default"])(this.props.thread.last_poster_name)},!0):interpolate(y,{user:(0,g["default"])(this.props.thread.last_poster_name)},!0)}},{key:"getLastReply",value:function(){return l["default"].createElement("li",{className:"thread-last-reply",dangerouslySetInnerHTML:{__html:interpolate((0,g["default"])(gettext("last reply by %(user)s %(date)s")),{date:this.getLastReplyDate(),user:this.getLastPoster()},!0)}})}},{key:"getOptions",value:function(){return this.props.user.id?l["default"].createElement(m["default"],{thread:this.props.thread,selectThread:this.props.selectThread,isSelected:this.props.isSelected}):null}},{key:"getClassName",value:function(){return this.props.thread.is_read?this.props.isSelected?"list-group-item thread-read thread-selected":"list-group-item thread-read":this.props.isSelected?"list-group-item thread-new thread-selected":"list-group-item thread-new"}},{key:"render",value:function(){return l["default"].createElement("li",{className:this.getClassName()},l["default"].createElement(d["default"],{thread:this.props.thread}),l["default"].createElement("div",{className:"thread-main"},l["default"].createElement("a",{href:this.props.thread.absolute_url,className:"item-title thread-title"},this.props.thread.title),l["default"].createElement("ul",{className:"list-inline"},this.getNewLabel(),this.getClosedLabel(),this.getPath(),this.getRepliesCount(),this.getLastReply())),this.getOptions())}}]),t}(l["default"].Component);n["default"]=w},{"../../utils/escape-html":179,"./read-icon":115,"./thread-options":118,react:"react","react-router":"react-router"}],121:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Subcategory=void 0;var u=e("react"),l=r(u),c=e("react-router"),f=n.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 l["default"].createElement("li",null,l["default"].createElement(c.Link,{to:this.getUrl(),className:"btn btn-link"},this.props.category.name))}}]),t}(l["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 l["default"].createElement("div",{className:"btn-group category-picker"},l["default"].createElement("button",{type:"button",className:"btn btn-default dropdown-toggle","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},l["default"].createElement("span",{className:"material-icon"},"more_vert"),gettext("Go to")),l["default"].createElement("ul",{className:"dropdown-menu categories-menu"},this.props.choices.map(function(t){return e.props.categories[t]?l["default"].createElement(f,{category:e.props.categories[t],listPath:e.props.list.path,key:t}):null})))}}]),t}(l["default"].Component);n["default"]=d},{react:"react","react-router":"react-router"}],122:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("react-router"),f=e("../button"),d=r(f),p=e("../dropdown-toggle"),m=r(p),h=e("./navs"),g=e("../../reducers/threads"),b=e("../../services/ajax"),y=r(b),v=e("../../services/snackbar"),_=r(v),w=e("../../services/store"),E=r(w),O=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.markAsRead=function(){n.setState({isBusy:!0}),y["default"].post(n.props.route.category.api_url.read).then(function(){E["default"].dispatch((0,g.read)()),n.setState({isBusy:!1}),_["default"].success(gettext("Threads have been marked as read."))},function(e){n.setState({isBusy:!1}),_["default"].apiError(e)})},n.startThread=function(){console.log("TODO: Start thread form!")},n.state={isBusy:!1},n}return s(t,e),i(t,[{key:"getGoBackButton",value:function(){return this.props.route.category.parent?l["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},l["default"].createElement("span",{className:"material-icon"},"keyboard_arrow_left")):null}},{key:"getStartThreadButton",value:function(){return this.props.user.id?l["default"].createElement(d["default"],{className:"btn btn-success btn-aligned hidden-xs hidden-sm",onClick:this.startThread,disabled:!this.props.isLoaded},l["default"].createElement("span",{className:"material-icon"},"chat"),gettext("Start thread")):null}},{key:"getMarkAsReadButton",value:function(){return this.props.user.id?l["default"].createElement(d["default"],{className:"btn btn-default btn-aligned hidden-xs hidden-sm",onClick:this.markAsRead,loading:this.state.isBusy,disabled:!this.props.isLoaded},l["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?l["default"].createElement(m["default"],{toggleNav:this.props.toggleNav,dropdown:this.props.dropdown}):null}},{key:"getTabsNav",value:function(){return this.props.route.lists.length>1?l["default"].createElement(h.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 l["default"].createElement("div",{className:this.getClassName()},l["default"].createElement("div",{className:"container"},this.getGoBackButton(),l["default"].createElement("h1",{className:"pull-left"},this.props.title),this.getStartThreadButton(),this.getMarkAsReadButton(),this.getCompactNavToggle()),this.getTabsNav());
+}}]),t}(l["default"].Component);n["default"]=O},{"../../reducers/threads":160,"../../services/ajax":164,"../../services/snackbar":173,"../../services/store":174,"../button":58,"../dropdown-toggle":71,"./navs":124,react:"react","react-router":"react-router"}],123:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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?l["default"].createElement("li",{className:"list-group-item empty-message"},l["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.")),l["default"].createElement("p",null,gettext("Why not start one yourself?"))):l["default"].createElement("li",{className:"list-group-item empty-message"},gettext("No threads matching specified criteria were found."))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],124:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.CompactNav=n.TabsNav=void 0;var u=e("react"),l=r(u),c=e("react-router"),f=e("../li"),d=r(f),p=function(e,t,n,r){return n.map(function(n){return l["default"].createElement(d["default"],{isControlled:!0,isActive:n.path===t.path,key:e+n.path},l["default"].createElement(c.Link,{to:e+n.path,onClick:r},l["default"].createElement("span",{className:"hidden-xs hidden-sm"},n.name),l["default"].createElement("span",{className:"hidden-md hidden-lg"},n.longName)))})};n.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 l["default"].createElement("div",{className:"page-tabs hidden-xs hidden-sm"},l["default"].createElement("div",{className:"container"},l["default"].createElement("ul",{className:"nav nav-pills"},p(this.props.baseUrl,this.props.list,this.props.lists,this.props.hideNav))))}}]),t}(l["default"].Component),n.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 l["default"].createElement("ul",{className:"dropdown-menu",role:"menu"},p(this.props.baseUrl,this.props.list,this.props.lists,this.props.hideNav))}}]),t}(l["default"].Component)},{"../li":74,react:"react","react-router":"react-router"}],125:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){return{tick:e.tick.tick,user:e.auth.user,threads:e.threads}}function o(){var e=[{type:"all",path:"",name:gettext("All"),longName:gettext("All threads")}];return f["default"].get("isAuthenticated")&&(e.push({type:"my",path:"my/",name:gettext("My"),longName:gettext("My threads")}),e.push({type:"new",path:"new/",name:gettext("New"),longName:gettext("New threads")}),e.push({type:"unread",path:"unread/",name:gettext("Unread"),longName:gettext("Unread threads")}),e.push({type:"subscribed",path:"subscribed/",name:gettext("Subscribed"),longName:gettext("Subscribed threads")})),e}function s(){var e=o(),t=[],n={};return f["default"].get("CATEGORIES").forEach(function(r){e.forEach(function(o){n[r.id]=r,t.push({path:r.absolute_url+o.path,component:(0,i.connect)(a)(l["default"]),categoriesMap:n,category:r,lists:e,list:o})})}),t}Object.defineProperty(n,"__esModule",{value:!0}),n.select=a,n.getLists=o,n.paths=s;var i=e("react-redux"),u=e("./route"),l=r(u),c=e("../../index"),f=r(c)},{"../../index":156,"./route":126,"react-redux":"react-redux"}],126:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../button"),f=r(c),d=e("./header"),p=r(d),m=e("./navs"),h=e("./utils"),g=e("../threads-list/root"),b=r(g),y=e("./list-empty"),v=r(y),_=e("./toolbar"),w=r(_),E=e("../with-dropdown"),O=r(E),k=e("../../index"),N=r(k),j=e("../../reducers/threads"),x=e("../../services/ajax"),P=r(x),C=e("../../services/snackbar"),S=r(C),T=e("../../services/store"),M=r(T),L=e("../../services/page-title"),R=r(L),A=e("../../utils/set-toggle"),I=r(A),U=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.loadMore=function(){n.setState({isBusy:!0}),n.loadThreads(n.state.page+1)},n.selectThread=function(e){n.setState({selection:(0,I["default"])(n.state.selection,e)})},N["default"].has("THREADS")?n.initWithPreloadedData(N["default"].get("THREADS")):n.initWithoutPreloadedData(),n}return s(t,e),i(t,[{key:"initWithPreloadedData",value:function(e){this.state={isLoaded:!1,isBusy:!1,selection:[],dropdown:!1,subcategories:e.subcategories,count:e.count,more:e.more,page:e.page,pages:e.pages}}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1,isBusy:!1,selection:[],dropdown:!1,subcategories:[],count:0,more:0,page:1,pages:1},this.loadThreads()}},{key:"loadThreads",value:function(){var e=this,t=arguments.length<=0||void 0===arguments[0]?1:arguments[0],n=null;this.props.route.category.special_role||(n=this.props.route.category.id),P["default"].get(N["default"].get("THREADS_API"),{category:n,list:this.props.route.list.type,page:t||1},"threads").then(function(n){1===t?M["default"].dispatch((0,j.hydrate)(n.results)):M["default"].dispatch((0,j.append)(n.results)),e.setState({isLoaded:!0,isBusy:!1,subcategories:n.subcategories,count:n.count,more:n.more,page:n.page,pages:n.pages})},function(e){S["default"].apiError(e)})}},{key:"componentDidMount",value:function(){R["default"].set((0,h.getPageTitle)(this.props.route)),N["default"].has("THREADS")&&(M["default"].dispatch((0,j.hydrate)(N["default"].pop("THREADS").results)),this.setState({isLoaded:!0}))}},{key:"getTitle",value:function(){return(0,h.getTitle)(this.props.route)}},{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:"getCompactNav",value:function(){return this.props.route.lists.length>1?l["default"].createElement(m.CompactNav,{baseUrl:this.props.route.category.absolute_url,list:this.props.route.list,lists:this.props.route.lists,hideNav:this.hideNav}):null}},{key:"getCategoryDescription",value:function(){return this.props.route.category.description?l["default"].createElement("div",{className:"category-description"},l["default"].createElement("div",{className:"lead",dangerouslySetInnerHTML:{__html:this.props.route.category.description.html}})):null}},{key:"getToolbarLabel",value:function(){if(this.state.isLoaded){var e=null;return e=this.props.route.list.path?ngettext("%(threads)s thread found.","%(threads)s threads found.",this.state.count):this.props.route.category.parent?ngettext("There is %(threads)s thread in this category.","There are %(threads)s threads in this category.",this.state.count):ngettext("There is %(threads)s thread on our forums.","There are %(threads)s threads on our forums.",this.state.count),interpolate(e,{threads:this.state.count},!0)}return gettext("Loading threads...")}},{key:"getToolbar",value:function(){return this.state.subcategories.length||this.props.user.id?l["default"].createElement(w["default"],{subcategories:this.state.subcategories,categories:this.props.route.categoriesMap,list:this.props.route.list,threads:this.props.threads,selection:this.props.selection,isLoaded:this.state.isLoaded,user:this.props.user},this.getToolbarLabel()):null}},{key:"getMoreButton",value:function(){return this.state.more?l["default"].createElement("div",{className:"pager-more"},l["default"].createElement(f["default"],{loading:this.state.isBusy,onClick:this.loadMore},gettext("Show more"))):null}},{key:"render",value:function(){return l["default"].createElement("div",{className:this.getClassName()},l["default"].createElement(p["default"],{title:this.getTitle(),route:this.props.route,user:this.props.user,isLoaded:this.state.isLoaded,dropdown:this.state.dropdown,toggleNav:this.toggleNav,hideNav:this.hideNav}),l["default"].createElement("div",{className:this.getCompactNavClassName()},this.getCompactNav()),l["default"].createElement("div",{className:"container"},this.getCategoryDescription(),this.getToolbar(),l["default"].createElement(b["default"],{user:this.props.user,threads:this.props.threads,categories:this.props.route.categoriesMap,list:this.props.route.list,selectThread:this.selectThread,selection:this.state.selection,isLoaded:this.state.isLoaded},l["default"].createElement(v["default"],{category:this.props.route.category,list:this.props.route.list})),this.getMoreButton()))}}]),t}(O["default"]);n["default"]=U},{"../../index":156,"../../reducers/threads":160,"../../services/ajax":164,"../../services/page-title":171,"../../services/snackbar":173,"../../services/store":174,"../../utils/set-toggle":186,"../button":58,"../threads-list/root":116,"../with-dropdown":154,"./header":122,"./list-empty":123,"./navs":124,"./toolbar":127,"./utils":128,react:"react"}],127:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./category-picker"),f=r(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:"getCategoryPicker",value:function(){return this.props.subcategories.length?l["default"].createElement("div",{className:"toolbar-left"},l["default"].createElement(f["default"],{choices:this.props.subcategories,categories:this.props.categories,list:this.props.list})):null}},{key:"getModerationButton",value:function(){return this.props.user.id?l["default"].createElement("button",{type:"button",className:"btn btn-default toolbar-right",disabled:!this.props.isLoaded},l["default"].createElement("span",{className:"material-icon"},"settings"),gettext("Moderation")):null}},{key:"render",value:function(){return l["default"].createElement("div",{className:"toolbar with-js"},this.getCategoryPicker(),l["default"].createElement("p",{className:"toolbar-left hidden-xs hidden-sm"},this.props.children),this.getModerationButton())}}]),t}(l["default"].Component);n["default"]=d},{"./category-picker":121,react:"react"}],128:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){return e.category.special_role?i["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?i["default"].get("CATEGORIES_ON_INDEX")?gettext("Threads"):i["default"].get("SETTINGS").forum_index_title?i["default"].get("SETTINGS").forum_index_title:i["default"].get("SETTINGS").forum_name:e.category.name}Object.defineProperty(n,"__esModule",{value:!0}),n.getPageTitle=a,n.getTitle=o;var s=e("../../index"),i=r(s)},{"../../index":156}],129:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.CompactGuestNav=n.GuestNav=n.GuestMenu=void 0;var u=e("react"),l=r(u),c=e("../avatar"),f=r(c),d=e("../register-button"),p=r(d),m=e("../sign-in.js"),h=r(m),g=e("../../services/mobile-navbar-dropdown"),b=r(g),y=e("../../services/modal"),v=r(y),_=n.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(h["default"])}},{key:"render",value:function(){return l["default"].createElement("ul",{className:"dropdown-menu user-dropdown dropdown-menu-right",role:"menu"},l["default"].createElement("li",{className:"guest-preview"},l["default"].createElement("h4",null,gettext("You are browsing as guest.")),l["default"].createElement("p",null,gettext("Sign in or register to start and participate in discussions.")),l["default"].createElement("div",{className:"row"},l["default"].createElement("div",{className:"col-xs-6"},l["default"].createElement("button",{type:"button",className:"btn btn-default btn-block",onClick:this.showSignInModal},gettext("Sign in"))),l["default"].createElement("div",{className:"col-xs-6"},l["default"].createElement(p["default"],{className:"btn-primary btn-block"},gettext("Register"))))))}}]),t}(l["default"].Component);n.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 l["default"].createElement("div",{className:"nav nav-guest"},l["default"].createElement("button",{type:"button",className:"btn navbar-btn btn-default",onClick:this.showSignInModal},gettext("Sign in")),l["default"].createElement(p["default"],{className:"navbar-btn btn-primary"},gettext("Register")))}}]),t}(_),n.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(){b["default"].show(_)}},{key:"render",value:function(){return l["default"].createElement("button",{type:"button",onClick:this.showGuestMenu},l["default"].createElement(f["default"],{size:"64"}))}}]),t}(l["default"].Component)},{"../../services/mobile-navbar-dropdown":169,"../../services/modal":170,"../avatar":56,"../register-button":103,"../sign-in.js":110,react:"react"}],130:[function(e,t,n){"use strict";function r(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}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.CompactUserMenu=n.UserMenu=void 0,n.select=i;var l=e("react"),c=r(l),f=e("./guest-nav"),d=e("./user-nav");n.UserMenu=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 this.props.isAuthenticated?c["default"].createElement(d.UserNav,{user:this.props.user}):c["default"].createElement(f.GuestNav,null)}}]),t}(c["default"].Component),n.CompactUserMenu=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 this.props.isAuthenticated?c["default"].createElement(d.CompactUserNav,{user:this.props.user}):c["default"].createElement(f.CompactGuestNav,null)}}]),t}(c["default"].Component)},{"./guest-nav":129,"./user-nav":131,react:"react"}],131:[function(e,t,n){"use strict";function r(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}}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.CompactUserNav=n.UserNav=n.UserMenu=void 0,n.selectUserMenu=i;var l=e("react"),c=r(l),f=e("react-redux"),d=e("../avatar"),p=r(d),m=e("../change-avatar/root"),h=r(m),g=e("../../index"),b=r(g),y=e("../../services/mobile-navbar-dropdown"),v=r(y),_=e("../../services/modal"),w=r(_),E=n.UserMenu=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(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)(m.select)(h["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:b["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);n.UserNav=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 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),n.CompactUserNav=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(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":156,"../../services/mobile-navbar-dropdown":169,"../../services/modal":170,"../avatar":56,"../change-avatar/root":69,react:"react","react-redux":"react-redux"}],132:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.StatusLabel=n.StatusIcon=void 0;var u=e("react"),l=r(u),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 l["default"].createElement("span",{className:this.getClass()},this.props.children)}}]),t}(l["default"].Component);n["default"]=c;n.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 l["default"].createElement("span",{className:"material-icon status-icon"},this.getIcon())}}]),t}(l["default"].Component),n.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 l["default"].createElement("span",{className:this.props.className||"status-label",title:this.getHelp()},this.getLabel())}}]),t}(l["default"].Component)},{react:"react"}],133:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var l=e("react"),c=a(l),f=e("../avatar"),d=a(f),p=e("../../utils/random"),m=r(p),h=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(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:m["int"](30,100)+"px"}}," ")),c["default"].createElement("div",{className:"change"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:m["int"](30,70)+"px"}}," "),c["default"].createElement("span",{className:"material-icon"},"arrow_forward"),c["default"].createElement("span",{className:"ui-preview-text",style:{width:m["int"](30,70)+"px"}}," ")),c["default"].createElement("div",{className:"change-date"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:m["int"](80,140)+"px"}}," ")))}}]),t}(c["default"].Component);n["default"]=h},{"../../utils/random":183,"../avatar":56,react:"react"}],134:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../avatar"),f=r(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?l["default"].createElement("a",{href:this.props.change.changed_by.absolute_url,className:"user-avatar-wrapper"},l["default"].createElement(f["default"],{user:this.props.change.changed_by,size:"100"})):l["default"].createElement("span",{className:"user-avatar-wrapper"},l["default"].createElement(f["default"],{size:"100"}))}},{key:"renderUsername",value:function(){return this.props.change.changed_by?l["default"].createElement("a",{href:this.props.change.changed_by.absolute_url,
+className:"item-title"},this.props.change.changed_by.username):l["default"].createElement("span",{className:"item-title"},this.props.change.changed_by_username)}},{key:"render",value:function(){return l["default"].createElement("li",{className:"list-group-item",key:this.props.change.id},l["default"].createElement("div",{className:"change-avatar"},this.renderUserAvatar()),l["default"].createElement("div",{className:"change-author"},this.renderUsername()),l["default"].createElement("div",{className:"change"},l["default"].createElement("span",{className:"old-username"},this.props.change.old_username),l["default"].createElement("span",{className:"material-icon"},"arrow_forward"),l["default"].createElement("span",{className:"new-username"},this.props.change.new_username)),l["default"].createElement("div",{className:"change-date"},l["default"].createElement("abbr",{title:this.props.change.changed_on.format("LLL")},this.props.change.changed_on.fromNow())))}}]),t}(l["default"].Component);n["default"]=d},{"../avatar":56,react:"react"}],135:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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 l["default"].createElement("div",{className:"username-history ui-ready"},l["default"].createElement("ul",{className:"list-group"},l["default"].createElement("li",{className:"list-group-item empty-message"},this.getEmptyMessage())))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],136:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./change-preview"),f=r(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 l["default"].createElement("div",{className:"username-history ui-preview"},l["default"].createElement("ul",{className:"list-group"},[0,1,2].map(function(e){return l["default"].createElement(f["default"],{hiddenOnMobile:e>0,key:e})})))}}]),t}(l["default"].Component);n["default"]=d},{"./change-preview":133,react:"react"}],137:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./change"),f=r(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 l["default"].createElement("div",{className:"username-history ui-ready"},l["default"].createElement("ul",{className:"list-group"},this.props.changes.map(function(e){return l["default"].createElement(f["default"],{change:e,key:e.id})})))}}]),t}(l["default"].Component);n["default"]=d},{"./change":134,react:"react"}],138:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./list-empty"),f=r(c),d=e("./list-ready"),p=r(d),m=e("./list-preview"),h=r(m),g=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?l["default"].createElement(p["default"],{changes:this.props.changes}):l["default"].createElement(f["default"],{emptyMessage:this.props.emptyMessage}):l["default"].createElement(h["default"],null)}}]),t}(l["default"].Component);n["default"]=g},{"./list-empty":135,"./list-preview":136,"./list-ready":137,react:"react"}],139:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./user-card"),f=r(c),d=e("./user-preview"),p=r(d),m=e("../../utils/batch"),h=r(m),g=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?l["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,h["default"])(this.props.users,this.props.cols).map(function(t,n){return l["default"].createElement("div",{className:"row",key:n},t.map(function(t){return l["default"].createElement("div",{className:e.getColClassName(),key:t.id},l["default"].createElement(f["default"],{user:t,showStatus:e.props.showStatus,showRank:e.props.showRank}))}))});for(var t=[],n=0;n<this.props.cols;n++)0===n?t.push(this.getColClassName()):t.push(this.getColClassName()+" hidden-xs hidden-sm");return l["default"].createElement("div",{className:"row"},t.map(function(t,n){return l["default"].createElement("div",{className:t,key:n},l["default"].createElement(p["default"],{showStatus:e.props.showStatus}))}))}},{key:"render",value:function(){return l["default"].createElement("div",{className:"users-cards-list ui-ready"},this.getBody())}}]),t}(l["default"].Component);n["default"]=g},{"../../utils/batch":177,"./user-card":140,"./user-preview":141,react:"react"}],140:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var l=e("react"),c=a(l),f=e("../avatar"),d=a(f),p=e("../user-status"),m=a(p),h=e("../../utils/random"),g=r(h),b=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(t,[{key:"getUserStatus",value:function(){return this.props.showStatus?this.props.user.status?c["default"].createElement(m["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:g["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);n["default"]=b},{"../../utils/random":183,"../avatar":56,"../user-status":132,react:"react"}],141:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var l=e("react"),c=a(l),f=e("../avatar"),d=a(f),p=e("../../utils/random"),m=r(p),h=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(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:m["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:m["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:m["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:m["int"](40,70)+"px"}}," ")),c["default"].createElement("li",{className:"user-threads-count"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:m["int"](40,70)+"px"}}," ")),c["default"].createElement("li",{className:"user-followers-count"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:m["int"](40,70)+"px"}}," ")))))))}}]),t}(c["default"].Component);n["default"]=h},{"../../utils/random":183,"../avatar":56,react:"react"}],142:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),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 l["default"].createElement("div",{className:"active-posters-list"},l["default"].createElement("div",{className:"container"},l["default"].createElement("p",{className:"lead"},this.getEmptyMessage())))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],143:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var l=e("react"),c=a(l),f=e("../../avatar"),d=a(f),p=e("../../../utils/random"),m=r(p),h=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(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:m["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:m["int"](30,50)+"px"}}," ")),c["default"].createElement("span",{className:"rank-name"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:m["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:m["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:m["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:m["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:m["int"](20,30)+"px"}}," ")),c["default"].createElement("small",null,gettext("Total posts"))))}}]),t}(c["default"].Component);n["default"]=h},{"../../../utils/random":183,"../../avatar":56,react:"react"}],144:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var l=e("react"),c=a(l),f=e("react-router"),d=e("../../avatar"),p=a(d),m=e("../../user-status"),h=a(m),g=e("../../../index"),b=a(g),y=e("../../../utils/random"),v=r(y),_=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(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(h["default"],{user:this.props.user,status:this.props.user.status},c["default"].createElement(m.StatusIcon,{user:this.props.user,status:this.props.user.status}),c["default"].createElement(m.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=b["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);n["default"]=_},{"../../../index":156,"../../../utils/random":183,"../../avatar":56,"../../user-status":132,react:"react","react-router":"react-router"}],145:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var l=e("react"),c=a(l),f=e("./list-item-preview"),d=a(f),p=e("../../../utils/random"),m=r(p),h=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(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:m["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);n["default"]=h},{"../../../utils/random":183,"./list-item-preview":143,react:"react"}],146:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./list-item"),f=r(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 l["default"].createElement("div",{className:"active-posters-list"},l["default"].createElement("div",{className:"container"},l["default"].createElement("p",{className:"lead"},this.getLeadMessage()),l["default"].createElement("div",{className:"active-posters ui-ready"},l["default"].createElement("ul",{className:"list-group"},this.props.users.map(function(e,t){return l["default"].createElement(f["default"],{user:e,rank:e.rank,counter:t+1,key:e.id})})))))}}]),t}(l["default"].Component);n["default"]=d},{"./list-item":144,react:"react"}],147:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./list-empty"),f=r(c),d=e("./list-preview"),p=r(d),m=e("./list-ready"),h=r(m),g=e("../../../index"),b=r(g),y=e("../../../reducers/users"),v=e("../../../services/polls"),_=r(v),w=e("../../../services/store"),E=r(w),O=e("../../../services/page-title"),k=r(O),N=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.update=function(e){E["default"].dispatch((0,y.hydrate)(e.results)),n.setState({isLoaded:!0,trackedPeriod:e.tracked_period,count:e.count})},b["default"].has("USERS")?n.initWithPreloadedData(b["default"].pop("USERS")):n.initWithoutPreloadedData(),n.startPolling(),n}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,y.hydrate)(e.results))}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1}}},{key:"startPolling",value:function(){_["default"].start({poll:"active-posters",url:b["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?l["default"].createElement(h["default"],{users:this.props.users,trackedPeriod:this.state.trackedPeriod,count:this.state.count}):l["default"].createElement(f["default"],{trackedPeriod:this.state.trackedPeriod}):l["default"].createElement(p["default"],null)}}]),t}(l["default"].Component);n["default"]=N},{"../../../index":156,"../../../reducers/users":163,"../../../services/page-title":171,"../../../services/polls":172,"../../../services/store":174,"./list-empty":142,"./list-preview":145,"./list-ready":146,react:"react"}],148:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.CompactNav=n.TabsNav=void 0;var u=e("react"),l=r(u),c=e("react-router"),f=e("../li"),d=r(f),p=e("../../index"),m=(r(p),function(e,t){var n=e;return n+="rank"===t.component?t.slug:t.component,n+"/"}),h=function(e,t,n){return t.map(function(t){var r=m(e,t);return l["default"].createElement(d["default"],{path:r,key:r},l["default"].createElement(c.Link,{to:r,onClick:n},t.name))})};n.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 l["default"].createElement("ul",{className:"nav nav-pills"},h(this.props.baseUrl,this.props.lists))}}]),t}(l["default"].Component),n.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 l["default"].createElement("ul",{className:"dropdown-menu",role:"menu"},h(this.props.baseUrl,this.props.lists,this.props.hideNav))}}]),t}(l["default"].Component)},{"../../index":156,"../li":74,react:"react","react-router":"react-router"}],149:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../../users-list/root"),f=r(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 l["default"].createElement("div",null,l["default"].createElement(f["default"],{isLoaded:!1,cols:3,showStatus:!0}))}}]),t}(l["default"].Component);n["default"]=d},{"../../users-list/root":139,react:"react"}],150:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./pager"),f=r(c),d=e("../../users-list/root"),p=r(d),m=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?l["default"].createElement(f["default"],this.props):null}},{key:"render",value:function(){return l["default"].createElement("div",null,l["default"].createElement(p["default"],{users:this.props.users,showStatus:!0,cols:3,isLoaded:!0}),this.getPager())}}]),t}(l["default"].Component);n["default"]=m},{"../../users-list/root":139,"./pager":151,react:"react"}],151:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("react-router"),f=e("../../../utils/reset-scroll"),d=r(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+"/"),l["default"].createElement("li",{className:"previous"},l["default"].createElement(c.Link,{to:e,onClick:d["default"]},l["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 l["default"].createElement("li",{className:"next"},l["default"].createElement(c.Link,{to:e,onClick:d["default"]},l["default"].createElement("span",{"aria-hidden":"true",className:"material-icon"},"arrow_forward")))}return null}},{key:"getProgessBar",value:function(){var e=this;return l["default"].createElement("ul",{className:"pager-progress-bar"},this.props.page_range.map(function(t){var n=t===e.props.page?"active":null,r=e.props.baseUrl;return t>1&&(r+=t+"/"),l["default"].createElement("li",{key:t,className:n},l["default"].createElement(c.Link,{to:r,onClick:d["default"]},t))}))}},{key:"render",value:function(){return l["default"].createElement("div",{className:"pager-undercontent"},l["default"].createElement("nav",null,l["default"].createElement("ul",{className:"pager"},this.getPreviousPage(),this.getNextPage()),this.getProgessBar()))}}]),t}(l["default"].Component);n["default"]=p},{"../../../utils/reset-scroll":184,react:"react","react-router":"react-router"}],152:[function(e,t,n){"use strict";function r(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)}var i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var l=e("react"),c=r(l),f=e("./list"),d=r(f),p=e("./list-loading"),m=r(p),h=e("../../../index"),g=r(h),b=e("../../../reducers/users"),y=e("../../../services/polls"),v=r(y),_=e("../../../services/store"),w=r(_),E=e("../../../services/page-title"),O=r(E),k=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.update=function(e){w["default"].dispatch((0,b.hydrate)(e.results)),e.isLoaded=!0,n.setState(e)},g["default"].has("USERS")?n.initWithPreloadedData(g["default"].pop("USERS")):n.initWithoutPreloadedData(),n.startPolling(e.params.page||1),n}return s(t,e),u(t,[{key:"initWithPreloadedData",value:function(e){this.state=Object.assign(e,{isLoaded:!0}),w["default"].dispatch((0,b.hydrate)(e.results))}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1}}},{key:"startPolling",value:function(e){v["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(){O["default"].set({title:this.props.route.rank.name,page:this.props.params.page||null,parent:gettext("Users")})}},{key:"componentWillUnmount",value:function(){v["default"].stop("rank-users")}},{key:"componentWillReceiveProps",value:function(e){this.props.params.page!==e.params.page&&(O["default"].set({title:this.props.route.rank.name,page:e.params.page||null,parent:gettext("Users")}),this.setState({isLoaded:!1}),v["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("div",{className:"lead",dangerouslySetInnerHTML:{__html: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(d["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(m["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);n["default"]=k},{"../../../index":156,"../../../reducers/users":163,"../../../services/page-title":171,"../../../services/polls":172,"../../../services/store":174,"./list":150,"./list-loading":149,react:"react"}],153:[function(e,t,n){"use strict";function r(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 u(){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)(b["default"]),extra:{name:t.name}})}),e}var l=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.select=i,n.paths=u;var c=e("react"),f=r(c),d=e("react-redux"),p=e("../dropdown-toggle"),m=r(p),h=e("./navs"),g=e("./active-posters/root"),b=r(g),y=e("./rank/root"),v=r(y),_=e("../with-dropdown"),w=r(_),E=e("../../index"),O=r(E),k=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 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(m["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(h.TabsNav,{lists:O["default"].get("USERS_LISTS"),baseUrl:O["default"].get("USERS_LIST_URL")})))),f["default"].createElement("div",{className:this.getCompactNavClassName()},f["default"].createElement(h.CompactNav,{lists:O["default"].get("USERS_LISTS"),baseUrl:O["default"].get("USERS_LIST_URL"),hideNav:this.hideNav})),this.props.children)}}]),t}(w["default"]);n["default"]=k},{"../../index":156,"../dropdown-toggle":71,"../with-dropdown":154,"./active-posters/root":147,"./navs":148,"./rank/root":152,react:"react","react-redux":"react-redux"}],154:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.toggleNav=function(){n.setState({dropdown:!n.state.dropdown})},n.hideNav=function(){n.setState({dropdown:!1})},n.state={dropdown:!1},n}return s(t,e),i(t,[{key:"getCompactNavClassName",value:function(){return this.state.dropdown?"compact-nav open":"compact-nav"}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],155:[function(e,t,n){"use strict";function r(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=function(e){function t(){var e,n,r,s;a(this,t);for(var i=arguments.length,u=Array(i),l=0;i>l;l++)u[l]=arguments[l];return n=r=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(u))),r.toggle=function(){r.props.onChange({target:{value:!r.props.value}})},s=n,o(r,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 l["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},l["default"].createElement("span",{className:"material-icon"},this.getIcon()),this.getLabel())}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],156:[function(e,t,n){(function(t){"use strict";function r(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")}var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Misago=void 0;var s=e("./utils/ordered-list"),i=r(s),u=n.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 n=new i["default"](this._initializers).orderedValues();n.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}(),l=new u;t.misago=l,n["default"]=l}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./utils/ordered-list":182}],157:[function(e,t,n){"use strict";function r(e){return{type:l,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]?u:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];switch(t.type){case l:var n=Object.assign({},e);return n.user=Object.assign({},e.user,t.patch),n;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 r=Object.assign({},e);return r.user=Object.assign({},e.user,{avatar_hash:t.avatarHash}),r}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(n,"__esModule",{value:!0}),n.SIGN_OUT=n.SIGN_IN=n.PATCH_USER=n.initialState=void 0,n.patch=r,n.signIn=a,n.signOut=o,n["default"]=s;var i=e("./users"),u=n.initialState={signedIn:!1,signedOut:!1},l=n.PATCH_USER="PATCH_USER",c=n.SIGN_IN="SIGN_IN",f=n.SIGN_OUT="SIGN_OUT"},{"./users":163}],158:[function(e,t,n){"use strict";function r(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,u["default"])(t.profile.joined_on),status:(0,l.hydrateStatus)(t.profile.status)});case f:return Object.assign({},e,t.patch);case l.UPDATE_AVATAR:return e.id===t.userId?Object.assign({},e,{avatar_hash:t.avatarHash}):e;case l.UPDATE_USERNAME:return e.id===t.userId?Object.assign({},e,{username:t.username,slug:t.slug}):e;default:return e}}Object.defineProperty(n,"__esModule",{value:!0}),n.PATCH_PROFILE=n.HYDRATE_PROFILE=void 0,n.hydrate=a,n.patch=o,n["default"]=s;var i=e("moment"),u=r(i),l=e("./users"),c=n.HYDRATE_PROFILE="HYDRATE_PROFILE",f=n.PATCH_PROFILE="PATCH_PROFILE"},{"./users":163,moment:"moment"}],159:[function(e,t,n){"use strict";function r(e,t){return{type:i,message:e,messageType:t}}function a(){return{type:u}}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===u?Object.assign({},e,{isVisible:!1}):e}Object.defineProperty(n,"__esModule",{value:!0}),n.showSnackbar=r,n.hideSnackbar=a,n["default"]=o;var s=n.initialState={type:"info",message:"",isVisible:!1},i=n.SHOW_SNACKBAR="SHOW_SNACKBAR",u=n.HIDE_SNACKBAR="HIDE_SNACKBAR"},{}],160:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){return{type:h,items:e}}function o(e){return{type:g,items:e}}function s(e,t){return{type:b,thread:e,patch:t}}function i(){return{type:y}}function u(e){var t=[];return v.forEach(function(n){e[n]&&t.push(n)}),t}function l(e){return Object.assign({},e,{started_on:(0,d["default"])(e.started_on),last_post_on:(0,d["default"])(e.last_post_on),moderation:u(e.acl)})}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 h:var n=(0,m["default"])(t.items.map(l),e);return n.sort(function(e,t){return e.last_post>t.last_post?-1:e.last_post<t.last_post?1:0});case g:return t.items.map(l);case b:return e.map(function(e){return e.id===t.thread.id?Object.assign({},e,t.patch):e});case y:return e.map(function(e){return Object.assign({},e,{is_read:!0})});default:return e}}Object.defineProperty(n,"__esModule",{value:!0}),n.MODERATION_PERMISSIONS=n.READ_THREADS=n.PATCH_THREAD=n.HYDRATE_THREADS=n.APPEND_THREADS=void 0,n.append=a,n.hydrate=o,n.patch=s,n.read=i,n.getThreadModerationOptions=u,n.hydrateThread=l,n["default"]=c;var f=e("moment"),d=r(f),p=e("../utils/concat-unique"),m=r(p),h=n.APPEND_THREADS="APPEND_THREADS",g=n.HYDRATE_THREADS="HYDRATE_THREADS",b=n.PATCH_THREAD="PATCH_THREAD",y=n.READ_THREADS="READ_THREADS",v=n.MODERATION_PERMISSIONS=["can_announce","can_close","can_hide","can_move","can_pin","can_review"]},{"../utils/concat-unique":178,moment:"moment"}],161:[function(e,t,n){"use strict";function r(){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(n,"__esModule",{value:!0}),n.doTick=r,n["default"]=a;var o=n.initialState={tick:0},s=n.TICK="TICK"},{}],162:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e,t,n){return{type:m,change:e,user:t,changedBy:n}}function o(e){return{type:h,items:e}}function s(e){return{type:g,items:e}}function i(e){return Object.assign({},e,{changed_on:(0,c["default"])(e.changed_on)})}function u(){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 n=e.slice();return n.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}),n;case h:return(0,p["default"])(e,t.items.map(i));case g: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(n,"__esModule",{value:!0}),n.HYDRATE_HISTORY=n.APPEND_HISTORY=n.ADD_NAME_CHANGE=void 0,n.addNameChange=a,n.append=o,n.hydrate=s,n.hydrateNamechange=i,n["default"]=u;var l=e("moment"),c=r(l),f=e("./users"),d=e("../utils/concat-unique"),p=r(d),m=n.ADD_NAME_CHANGE="ADD_NAME_CHANGE",h=n.APPEND_HISTORY="APPEND_HISTORY",g=n.HYDRATE_HISTORY="HYDRATE_HISTORY"},{"../utils/concat-unique":178,"./users":163,moment:"moment"}],163:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){return{type:h,items:e}}function o(e){return{type:g,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 u(e,t){return{type:b,userId:e.id,avatarHash:t}}function l(e,t,n){return{type:y,userId:e.id,username:t,slug:n}}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 h:var n=(0,m["default"])(e,t.items.map(i));return n.sort(function(e,t){return e.username<t.username?-1:e.username>t.username?1:0});case g:return t.items.map(i);case b: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(n,"__esModule",{value:!0}),n.UPDATE_USERNAME=n.UPDATE_AVATAR=n.HYDRATE_USERS=n.APPEND_USERS=void 0,n.append=a,n.hydrate=o,n.hydrateStatus=s,n.hydrateUser=i,n.updateAvatar=u,n.updateUsername=l,n["default"]=c;var f=e("moment"),d=r(f),p=e("../utils/concat-unique"),m=r(p),h=n.APPEND_USERS="APPEND_USERS",g=n.HYDRATE_USERS="HYDRATE_USERS",b=n.UPDATE_AVATAR="UPDATE_AVATAR",y=n.UPDATE_USERNAME="UPDATE_USERNAME"},{"../utils/concat-unique":178,moment:"moment"}],164:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}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 n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var s=n.Ajax=function(){function e(){r(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,n){var r=this;return new Promise(function(a,o){var s={url:t,method:e,headers:{"X-CSRFToken":r._csrfToken},data:n?JSON.stringify(n):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,n){var r=this;if(t&&(e+="?"+$.param(t)),!n)return this.request("GET",e);var o=function(){var t=r;return r._locks[n]&&(r._locks[n].url=e),r._locks[n]&&r._locks[n].waiter?{v:{then:function(){}}}:r._locks[n]&&r._locks[n].wait?(r._locks[n].waiter=!0,{v:new Promise(function(r,a){var o=function s(e){t._locks[n].wait?window.setTimeout(function(){s(e)},300):t._locks[n].url!==e?s(t._locks[n].url):(t._locks[n].waiter=!1,t.request("GET",t._locks[n].url).then(function(a){t._locks[n].url===e?r(a):(t._locks[n].waiter=!0,
+s(t._locks[n].url))},function(r){t._locks[n].url===e?a(r):(t._locks[n].waiter=!0,s(t._locks[n].url))}))};window.setTimeout(function(){o(e)},300)})}):(r._locks[n]={url:e,wait:!0,waiter:!1},{v:new Promise(function(r,a){t.request("GET",e).then(function(a){t._locks[n].wait=!1,t._locks[n].url===e&&r(a)},function(r){t._locks[n].wait=!1,t._locks[n].url===e&&a(r)})})})}();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,n){var r=this;return new Promise(function(a,o){var s={url:e,method:"POST",headers:{"X-CSRFToken":r._csrfToken},data:t,contentType:!1,processData:!1,xhr:function i(){var i=new window.XMLHttpRequest;return i.upload.addEventListener("progress",function(e){e.lengthComputable&&n(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}();n["default"]=new s},{}],165:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Auth=void 0;var o=e("../reducers/auth"),s=n.Auth=function(){function e(){r(this,e)}return a(e,[{key:"init",value:function(e,t,n){this._store=e,this._local=t,this._modal=n,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}();n["default"]=new s},{"../reducers/auth":157}],166:[function(e,t,n){"use strict";function r(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")}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Captcha=n.ReCaptcha=n.ReCaptchaComponent=n.QACaptcha=n.NoCaptcha=n.BaseCaptcha=void 0;var u=e("react"),l=r(u),c=e("../components/form-group"),f=r(c),d=n.BaseCaptcha=function(){function e(){s(this,e)}return i(e,[{key:"init",value:function(e,t,n,r){this._context=e,this._ajax=t,this._include=n,this._snackbar=r}}]),e}(),p=n.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),m=n.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,n){e._ajax.get(e._context.get("CAPTCHA_API")).then(function(n){e.question=n.question,e.helpText=n.help_text,t()},function(){e._snackbar.error(gettext("Failed to load CAPTCHA.")),n()})})}},{key:"validator",value:function(){return[]}},{key:"component",value:function(e){return l["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},l["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),h=n.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 l["default"].createElement("div",{id:"recaptcha"})}}]),t}(l["default"].Component),g=n.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 n(){"undefined"==typeof grecaptcha?window.setTimeout(function(){n()},200):e()};t()})}},{key:"validator",value:function(){return[]}},{key:"component",value:function(e){return l["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.")},l["default"].createElement(h,{siteKey:this._context.get("SETTINGS").recaptcha_site_key,binding:e.form.bindInput("captcha")}))}}]),t}(d),b=n.Captcha=function(){function e(){s(this,e)}return i(e,[{key:"init",value:function(e,t,n,r){switch(e.get("SETTINGS").captcha_type){case"no":this._captcha=new p;break;case"qa":this._captcha=new m;break;case"re":this._captcha=new g}this._captcha.init(e,t,n,r)}},{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}();n["default"]=new b},{"../components/form-group":72,react:"react"}],167:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var o=n.Include=function(){function e(){r(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}();n["default"]=new o},{}],168:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var o=window.localStorage,s=n.LocalStorage=function(){function e(){r(this,e)}return a(e,[{key:"init",value:function(e){var t=this;this._prefix=e,this._watchers=[],window.addEventListener("storage",function(e){var n=JSON.parse(e.newValue);t._watchers.forEach(function(t){t.key===e.key&&e.oldValue!==e.newValue&&t.callback(n)})})}},{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}();n["default"]=new s},{}],169:[function(e,t,n){"use strict";function r(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")}var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.MobileNavbarDropdown=void 0;var s=e("../utils/mount-component"),i=r(s),u=n.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}();n["default"]=new u},{"../utils/mount-component":181}],170:[function(e,t,n){"use strict";function r(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")}var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Modal=void 0;var s=e("react-dom"),i=r(s),u=e("../utils/mount-component"),l=r(u),c=n.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,l["default"])(e,this._element.id),this._modal.modal("show")}},{key:"hide",value:function(){this._modal.modal("hide")}}]),e}();n["default"]=new c},{"../utils/mount-component":181,"react-dom":"react-dom"}],171:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var o=n.PageTitle=function(){function e(){r(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 n=interpolate(gettext("page: %(page)s"),{page:e.page},!0);t+=" ("+n+")"}e.parent&&(t+=" | "+e.parent),document.title=t+" | "+this._forumName}}]),e}();n["default"]=new o},{}],172:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var o=n.Polls=function(){function e(){r(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,n=function r(){t._polls[e.poll]=e,t._ajax.get(e.url,e.data||null).then(function(n){t._polls[e.poll]._stopped||(e.update(n),t._polls[e.poll].timeout=window.setTimeout(r,e.frequency))},function(n){t._polls[e.poll]._stopped||(e.error?e.error(n):t._snackbar.apiError(n))})};n()}},{key:"stop",value:function(e){this._polls[e]&&(window.clearTimeout(this._polls[e].timeout),this._polls[e]._stopped=!0)}}]),e}();n["default"]=new o},{}],173:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Snackbar=void 0;var o=e("../reducers/snackbar"),s=300,i=5e3,u=n.Snackbar=function(){function e(){r(this,e)}return a(e,[{key:"init",value:function(e){this._store=e,this._timeout=null}},{key:"alert",value:function(e,t){var n=this;this._timeout?(window.clearTimeout(this._timeout),this._store.dispatch((0,o.hideSnackbar)()),this._timeout=window.setTimeout(function(){n._timeout=null,n.alert(e,t)},s)):(this._store.dispatch((0,o.showSnackbar)(e,t)),this._timeout=window.setTimeout(function(){n._store.dispatch((0,o.hideSnackbar)()),n._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}();n["default"]=new u},{"../reducers/snackbar":159}],174:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.StoreWrapper=void 0;var o=e("redux"),s=n.StoreWrapper=function(){function e(){r(this,e),this._store=null,this._reducers={},this._initialState={}}return a(e,[{key:"addReducer",value:function(e,t,n){this._reducers[e]=t,this._initialState[e]=n}},{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}();n["default"]=new s},{redux:"redux"}],175:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var o=n.Zxcvbn=function(){function e(){r(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 n(){"undefined"==typeof zxcvbn?window.setTimeout(function(){n()},200):e()};t()})}},{key:"_loadedPromise",value:function(){return new Promise(function(e){e()})}}]),e}();n["default"]=new o},{}],176:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=function(e,t){if(l["default"].render(i["default"].createElement(c.Provider,{store:g["default"].getStore()},i["default"].createElement(y,{message:e.message,expires:e.expires_on?(0,o["default"])(e.expires_on):null})),document.getElementById("page-mount")),"undefined"==typeof t||t){var n=m["default"].get("SETTINGS").forum_name;document.title=gettext("You are banned")+" | "+n,window.history.pushState({},"",m["default"].get("BANNED_URL"))}};var a=e("moment"),o=r(a),s=e("react"),i=r(s),u=e("react-dom"),l=r(u),c=e("react-redux"),f=e("../components/banned-page"),d=r(f),p=e("../index"),m=r(p),h=e("../services/store"),g=r(h),b=function(e){return e.tick},y=(0,c.connect)(b)(d["default"])},{"../components/banned-page":57,"../index":156,"../services/store":174,moment:"moment",react:"react","react-dom":"react-dom","react-redux":"react-redux"}],177:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=function(e,t){var n=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],r=[],a=[];if(e.forEach(function(e){a.push(e),a.length===t&&(r.push(a),a=[])}),n!==!1&&a.length>0&&a.length<t)for(var o=a.length;t>o;o++)a.push(n);return a.length&&r.push(a),r}},{}],178:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=function(e,t){var n=[];return e.concat(t).filter(function(e){return-1===n.indexOf(e.id)?(n.push(e.id),!0):!1})}},{}],179:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=function(e){return e.replace(/[&<>"']/g,function(e){return r[e]})};var r={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"}},{}],180:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n["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,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=function(e,t){var n=arguments.length<=2||void 0===arguments[2]?!0:arguments[2],r=document.getElementById(t),a=e.props?e:o["default"].createElement(e,null);r&&(n?i["default"].render(o["default"].createElement(u.Provider,{store:c["default"].getStore()},a),r):i["default"].render(a,r))};var a=e("react"),o=r(a),s=e("react-dom"),i=r(s),u=e("react-redux"),l=e("../services/store"),c=r(l)},{"../services/store":174,react:"react","react-dom":"react-dom","react-redux":"react-redux"}],182:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function e(t){r(this,e),this.isOrdered=!1,this._items=t||[]}return a(e,[{key:"add",value:function(e,t,n){this._items.push({key:e,item:t,after:n?n.after||null:null,before:n?n.before||null:null})}},{key:"get",value:function(e,t){for(var n=0;n<this._items.length;n++)if(this._items[n].key===e)return this._items[n].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&&(r.splice(t,0,e),a.splice(t,0,e.key)))}var n=[];e.forEach(function(e){n.push(e.key)});var r=[],a=[];e.forEach(function(e){e.after||e.before||(r.push(e),a.push(e.key))}),e.forEach(function(e){"_end"===e.before&&(r.push(e),a.push(e.key))});for(var o=200;o>0&&n.length!==a.length;)o-=1,e.forEach(t);return r}}]),e}();n["default"]=o},{}],183:[function(e,t,n){"use strict";function r(e,t){return Math.floor(Math.random()*(t-e+1))+e}function a(e,t){for(var n=new Array(r(e,t)),a=0;a<n.length;a++)n[a]=a;return n}Object.defineProperty(n,"__esModule",{value:!0}),n["int"]=r,n.range=a},{}],184:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=function(){window.scrollTo(0,0)}},{}],185:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=function(e){var t={component:e.component||null,childRoutes:[]};e.root?t.childRoutes=[{path:e.root,onEnter:function(t,n){n(null,e.paths[0].path)}}].concat(e.paths):t.childRoutes=e.paths,i["default"].render(o["default"].createElement(u.Provider,{store:p["default"].getStore()},o["default"].createElement(l.Router,{routes:t,history:h})),m)};var a=e("react"),o=r(a),s=e("react-dom"),i=r(s),u=e("react-redux"),l=e("react-router"),c=e("history/lib/createBrowserHistory"),f=r(c),d=e("../services/store"),p=r(d),m=document.getElementById("page-mount"),h=new f["default"]},{"../services/store":174,"history/lib/createBrowserHistory":45,react:"react","react-dom":"react-dom","react-redux":"react-redux","react-router":"react-router"}],186:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=function(e,t){return-1===e.indexOf(t)?(e.push(t),e):e.filter(function(e){return e!==t})}},{}],187:[function(e,t,n){"use strict";function r(){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(n){var r="",a=$.trim(n).length;return e>a?(r=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(r,{limit_value:e,show_value:a},!0)):void 0}}function s(e,t){return function(n){var r="",a=$.trim(n).length;return a>e?(r=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(r,{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 u(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 l(){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(n,"__esModule",{value:!0}),n.required=r,n.email=a,n.minLength=o,n.maxLength=s,n.usernameMinLength=i,n.usernameMaxLength=u,n.usernameContent=l,n.passwordMinLength=c;var f=/^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i,d=new RegExp("^[0-9a-z]+$","i")},{}]},{},[2,3,4,5,18,19,20,21,22,23,24,33,34,35,36,6,7,8,9,10,11,12,13,14,15,16,17,25,26,27,28,29,30,31,32]);
 //# sourceMappingURL=misago.js.map
 //# sourceMappingURL=misago.js.map

File diff suppressed because it is too large
+ 0 - 0
misago/static/misago/js/misago.js.map


+ 23 - 3
misago/threads/api/threads.py

@@ -1,14 +1,17 @@
 from django.db import transaction
 from django.db import transaction
 
 
 from rest_framework import viewsets
 from rest_framework import viewsets
-from rest_framework.decorators import detail_route
+from rest_framework.decorators import detail_route, list_route
 from rest_framework.parsers import JSONParser
 from rest_framework.parsers import JSONParser
 from rest_framework.response import Response
 from rest_framework.response import Response
 
 
 from misago.acl import add_acl
 from misago.acl import add_acl
-from misago.categories.models import CATEGORIES_TREE_ID
-from misago.users.rest_permissions import IsAuthenticatedOrReadOnly
+from misago.categories.models import CATEGORIES_TREE_ID, Category
+from misago.categories.permissions import (
+    allow_see_category, allow_browse_category)
 from misago.core.shortcuts import get_int_or_404, get_object_or_404
 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.list import threads_list_endpoint
 from misago.threads.api.threadendpoints.list import threads_list_endpoint
 from misago.threads.models import Thread, Subscription
 from misago.threads.models import Thread, Subscription
@@ -48,6 +51,23 @@ class ThreadViewSet(viewsets.ViewSet):
 
 
         return Response(ThreadSerializer(thread).data)
         return Response(ThreadSerializer(thread).data)
 
 
+    @list_route(methods=['post'])
+    def read(self, request):
+        if request.query_params.get('category'):
+            category_id = get_int_or_404(request.query_params.get('category'))
+            category = get_object_or_404(Category.objects,
+                id=category_id,
+                tree_id=self.TREE_ID,
+            )
+
+            allow_see_category(request.user, category)
+            allow_browse_category(request.user, category)
+        else:
+            category = Category.objects.root_category()
+
+        read_category(request.user, category)
+        return Response({'detail': 'ok'})
+
     @detail_route(methods=['post'])
     @detail_route(methods=['post'])
     def subscribe(self, request, pk=None):
     def subscribe(self, request, pk=None):
         thread = self.get_thread(request.user, pk)
         thread = self.get_thread(request.user, pk)

+ 2 - 2
misago/threads/mixins/threadslists.py

@@ -28,8 +28,8 @@ def filter_threads_queryset(user, categories, list_type, queryset):
             days=settings.MISAGO_FRESH_CONTENT_PERIOD
             days=settings.MISAGO_FRESH_CONTENT_PERIOD
         )
         )
 
 
-        if cutoff_date < user.reads_cutoff:
-            cutoff_date = user.reads_cutoff
+        if cutoff_date < user.joined_on:
+            cutoff_date = user.joined_on
 
 
         categories_dict = {}
         categories_dict = {}
         for record in user.categoryread_set.filter(category__in=categories):
         for record in user.categoryread_set.filter(category__in=categories):

+ 3 - 0
misago/threads/models/thread.py

@@ -170,6 +170,9 @@ class Thread(models.Model):
     def get_new_post_url(self):
     def get_new_post_url(self):
         return self.thread_type.get_thread_new_post_url(self)
         return self.thread_type.get_thread_new_post_url(self)
 
 
+    def get_api_subscribe_url(self):
+        return self.thread_type.get_thread_api_subscribe_url(self)
+
     def set_title(self, title):
     def set_title(self, title):
         self.title = title
         self.title = title
         self.slug = slugify(title)
         self.slug = slugify(title)

+ 1 - 2
misago/threads/serializers/thread.py

@@ -73,8 +73,7 @@ class ThreadSerializer(serializers.ModelSerializer):
 
 
     def get_api_url(self, obj):
     def get_api_url(self, obj):
         return {
         return {
-            'subscribe': reverse(
-                'misago:api:thread-subscribe', kwargs={'pk': obj.pk}),
+            'subscribe': obj.get_api_subscribe_url(),
         }
         }
 
 
     def get_acl(self, obj):
     def get_acl(self, obj):

+ 21 - 0
misago/threads/tests/test_thread_api.py

@@ -22,6 +22,27 @@ class ThreadApiTestCase(AuthenticatedUserTestCase):
         return json.loads(response.content)
         return json.loads(response.content)
 
 
 
 
+class ThreadsReadApiTests(ThreadApiTestCase):
+    def setUp(self):
+        super(ThreadSubscribeApiTests, self).setUp()
+        self.api_link = '/api/threads/read/'
+
+    def read_all_threads(self):
+        """api sets all threads as read"""
+        response = self.client.post(self.api_link)
+        self.assertEqual(response.status_code, 200)
+
+        self.assertEqual(self.user.categoryread_set.count(), 2)
+
+    def read_threads_in_category(self):
+        """api sets threads in category as read"""
+        response = self.client.post(
+            '%s?category=%s' % (self.api_link, self.category.pk))
+        self.assertEqual(response.status_code, 200)
+
+        self.assertEqual(self.user.categoryread_set.count(), 1)
+
+
 class ThreadSubscribeApiTests(ThreadApiTestCase):
 class ThreadSubscribeApiTests(ThreadApiTestCase):
     def setUp(self):
     def setUp(self):
         super(ThreadSubscribeApiTests, self).setUp()
         super(ThreadSubscribeApiTests, self).setUp()

+ 16 - 27
misago/threads/tests/test_threadslists.py

@@ -747,17 +747,16 @@ class NewThreadsListTests(ThreadsListTestCase):
 
 
     def test_list_renders_thread_bumped_after_user_cutoff(self):
     def test_list_renders_thread_bumped_after_user_cutoff(self):
         """list renders new thread bumped after user cutoff"""
         """list renders new thread bumped after user cutoff"""
-        self.user.reads_cutoff = timezone.now() - timedelta(days=10)
-        self.user.joined_on = self.user.reads_cutoff
+        self.user.joined_on = timezone.now() - timedelta(days=10)
         self.user.save()
         self.user.save()
 
 
         test_thread = testutils.post_thread(
         test_thread = testutils.post_thread(
             category=self.category_a,
             category=self.category_a,
-            started_on=self.user.reads_cutoff - timedelta(days=2)
+            started_on=self.user.joined_on - timedelta(days=2)
         )
         )
 
 
         testutils.reply_thread(test_thread,
         testutils.reply_thread(test_thread,
-            posted_on=self.user.reads_cutoff + timedelta(days=4)
+            posted_on=self.user.joined_on + timedelta(days=4)
         )
         )
 
 
         self.access_all_categories()
         self.access_all_categories()
@@ -793,8 +792,7 @@ class NewThreadsListTests(ThreadsListTestCase):
 
 
     def test_list_hides_global_cutoff_thread(self):
     def test_list_hides_global_cutoff_thread(self):
         """list hides thread started before global cutoff"""
         """list hides thread started before global cutoff"""
-        self.user.reads_cutoff = timezone.now() - timedelta(days=10)
-        self.user.joined_on = self.user.reads_cutoff
+        self.user.joined_on = timezone.now() - timedelta(days=10)
         self.user.save()
         self.user.save()
 
 
         test_thread = testutils.post_thread(
         test_thread = testutils.post_thread(
@@ -834,13 +832,12 @@ class NewThreadsListTests(ThreadsListTestCase):
 
 
     def test_list_hides_user_cutoff_thread(self):
     def test_list_hides_user_cutoff_thread(self):
         """list hides thread started before users cutoff"""
         """list hides thread started before users cutoff"""
-        self.user.reads_cutoff = timezone.now() - timedelta(days=5)
-        self.user.joined_on = self.user.reads_cutoff
+        self.user.joined_on = timezone.now() - timedelta(days=5)
         self.user.save()
         self.user.save()
 
 
         test_thread = testutils.post_thread(
         test_thread = testutils.post_thread(
             category=self.category_a,
             category=self.category_a,
-            started_on=self.user.reads_cutoff - timedelta(minutes=1)
+            started_on=self.user.joined_on - timedelta(minutes=1)
         )
         )
 
 
         self.access_all_categories()
         self.access_all_categories()
@@ -873,8 +870,7 @@ class NewThreadsListTests(ThreadsListTestCase):
 
 
     def test_list_hides_user_read_thread(self):
     def test_list_hides_user_read_thread(self):
         """list hides thread already read by user"""
         """list hides thread already read by user"""
-        self.user.reads_cutoff = timezone.now() - timedelta(days=5)
-        self.user.joined_on = self.user.reads_cutoff
+        self.user.joined_on = timezone.now() - timedelta(days=5)
         self.user.save()
         self.user.save()
 
 
         test_thread = testutils.post_thread(
         test_thread = testutils.post_thread(
@@ -915,8 +911,7 @@ class NewThreadsListTests(ThreadsListTestCase):
 
 
     def test_list_hides_category_read_thread(self):
     def test_list_hides_category_read_thread(self):
         """list hides thread already read by user"""
         """list hides thread already read by user"""
-        self.user.reads_cutoff = timezone.now() - timedelta(days=5)
-        self.user.joined_on = self.user.reads_cutoff
+        self.user.joined_on = timezone.now() - timedelta(days=5)
         self.user.save()
         self.user.save()
 
 
         test_thread = testutils.post_thread(
         test_thread = testutils.post_thread(
@@ -991,8 +986,7 @@ class UnreadThreadsListTests(ThreadsListTestCase):
 
 
     def test_list_renders_unread_thread(self):
     def test_list_renders_unread_thread(self):
         """list renders thread with unread posts"""
         """list renders thread with unread posts"""
-        self.user.reads_cutoff = timezone.now() - timedelta(days=5)
-        self.user.joined_on = self.user.reads_cutoff
+        self.user.joined_on = timezone.now() - timedelta(days=5)
         self.user.save()
         self.user.save()
 
 
         test_thread = testutils.post_thread(
         test_thread = testutils.post_thread(
@@ -1038,8 +1032,7 @@ class UnreadThreadsListTests(ThreadsListTestCase):
 
 
     def test_list_hides_never_read_thread(self):
     def test_list_hides_never_read_thread(self):
         """list hides never read thread"""
         """list hides never read thread"""
-        self.user.reads_cutoff = timezone.now() - timedelta(days=5)
-        self.user.joined_on = self.user.reads_cutoff
+        self.user.joined_on = timezone.now() - timedelta(days=5)
         self.user.save()
         self.user.save()
 
 
         test_thread = testutils.post_thread(
         test_thread = testutils.post_thread(
@@ -1077,8 +1070,7 @@ class UnreadThreadsListTests(ThreadsListTestCase):
 
 
     def test_list_hides_read_thread(self):
     def test_list_hides_read_thread(self):
         """list hides read thread"""
         """list hides read thread"""
-        self.user.reads_cutoff = timezone.now() - timedelta(days=5)
-        self.user.joined_on = self.user.reads_cutoff
+        self.user.joined_on = timezone.now() - timedelta(days=5)
         self.user.save()
         self.user.save()
 
 
         test_thread = testutils.post_thread(
         test_thread = testutils.post_thread(
@@ -1120,8 +1112,7 @@ class UnreadThreadsListTests(ThreadsListTestCase):
 
 
     def test_list_hides_global_cutoff_thread(self):
     def test_list_hides_global_cutoff_thread(self):
         """list hides thread replied before global cutoff"""
         """list hides thread replied before global cutoff"""
-        self.user.reads_cutoff = timezone.now() - timedelta(days=10)
-        self.user.joined_on = self.user.reads_cutoff
+        self.user.joined_on = timezone.now() - timedelta(days=10)
         self.user.save()
         self.user.save()
 
 
         test_thread = testutils.post_thread(
         test_thread = testutils.post_thread(
@@ -1170,13 +1161,12 @@ class UnreadThreadsListTests(ThreadsListTestCase):
 
 
     def test_list_hides_user_cutoff_thread(self):
     def test_list_hides_user_cutoff_thread(self):
         """list hides thread replied before user cutoff"""
         """list hides thread replied before user cutoff"""
-        self.user.reads_cutoff = timezone.now() - timedelta(days=10)
-        self.user.joined_on = self.user.reads_cutoff
+        self.user.joined_on = timezone.now() - timedelta(days=10)
         self.user.save()
         self.user.save()
 
 
         test_thread = testutils.post_thread(
         test_thread = testutils.post_thread(
             category=self.category_a,
             category=self.category_a,
-            started_on=self.user.reads_cutoff - timedelta(days=2)
+            started_on=self.user.joined_on - timedelta(days=2)
         )
         )
 
 
         threadstracker.make_thread_read_aware(self.user, test_thread)
         threadstracker.make_thread_read_aware(self.user, test_thread)
@@ -1218,13 +1208,12 @@ class UnreadThreadsListTests(ThreadsListTestCase):
 
 
     def test_list_hides_category_cutoff_thread(self):
     def test_list_hides_category_cutoff_thread(self):
         """list hides thread replied before category cutoff"""
         """list hides thread replied before category cutoff"""
-        self.user.reads_cutoff = timezone.now() - timedelta(days=10)
-        self.user.joined_on = self.user.reads_cutoff
+        self.user.joined_on = timezone.now() - timedelta(days=10)
         self.user.save()
         self.user.save()
 
 
         test_thread = testutils.post_thread(
         test_thread = testutils.post_thread(
             category=self.category_a,
             category=self.category_a,
-            started_on=self.user.reads_cutoff - timedelta(days=2)
+            started_on=self.user.joined_on - timedelta(days=2)
         )
         )
 
 
         threadstracker.make_thread_read_aware(self.user, test_thread)
         threadstracker.make_thread_read_aware(self.user, test_thread)

+ 7 - 1
misago/threads/threadtypes/thread.py

@@ -11,7 +11,8 @@ class Thread(ThreadTypeBase):
 
 
     def get_category_absolute_url(self, category):
     def get_category_absolute_url(self, category):
         return reverse('misago:category', kwargs={
         return reverse('misago:category', kwargs={
-            'category_id': category.id, 'category_slug': category.slug
+            'category_id': category.id,
+            'category_slug': category.slug,
         })
         })
 
 
     def get_thread_absolute_url(self, thread):
     def get_thread_absolute_url(self, thread):
@@ -22,3 +23,8 @@ class Thread(ThreadTypeBase):
 
 
     def get_thread_new_post_url(self, thread):
     def get_thread_new_post_url(self, thread):
         return '/threads/not-implemented-yet-%s/new/' % thread.pk
         return '/threads/not-implemented-yet-%s/new/' % thread.pk
+
+    def get_thread_api_subscribe_url(self, thread):
+        return reverse('misago:api:thread-subscribe', kwargs={
+            'pk': thread.pk,
+        })

+ 0 - 1
misago/users/migrations/0001_initial.py

@@ -64,7 +64,6 @@ class Migration(migrations.Migration):
                 ('posts', models.PositiveIntegerField(default=0, db_index=True)),
                 ('posts', models.PositiveIntegerField(default=0, db_index=True)),
                 ('last_posted_on', models.DateTimeField(null=True, blank=True)),
                 ('last_posted_on', models.DateTimeField(null=True, blank=True)),
                 ('last_searched_on', models.DateTimeField(null=True, blank=True)),
                 ('last_searched_on', models.DateTimeField(null=True, blank=True)),
-                ('reads_cutoff', models.DateTimeField(default=django.utils.timezone.now)),
             ],
             ],
             options={
             options={
                 'abstract': False,
                 'abstract': False,

+ 0 - 2
misago/users/models/user.py

@@ -261,8 +261,6 @@ class User(AbstractBaseUser, PermissionsMixin):
     last_posted_on = models.DateTimeField(null=True, blank=True)
     last_posted_on = models.DateTimeField(null=True, blank=True)
     last_searched_on = models.DateTimeField(null=True, blank=True)
     last_searched_on = models.DateTimeField(null=True, blank=True)
 
 
-    reads_cutoff = models.DateTimeField(default=timezone.now)
-
     USERNAME_FIELD = 'slug'
     USERNAME_FIELD = 'slug'
     REQUIRED_FIELDS = ['email']
     REQUIRED_FIELDS = ['email']
 
 

Some files were not shown because too many files changed in this diff