Browse Source

wip display pinned threads on list

Rafał Pitoń 9 years ago
parent
commit
50c78e53eb

+ 1 - 0
frontend/src/components/threads-list/list-ready.js

@@ -14,6 +14,7 @@ export default class extends React.Component {
 
 
                          selectThread={this.props.selectThread}
                          selectThread={this.props.selectThread}
                          isSelected={this.props.selection.indexOf(thread.id) >= 0}
                          isSelected={this.props.selection.indexOf(thread.id) >= 0}
+                         isBusy={this.props.busyThreads.indexOf(thread.id) >= 0}
 
 
                          key={thread.id} />
                          key={thread.id} />
         })}
         })}

+ 11 - 3
frontend/src/components/threads-list/read-icon.js

@@ -2,10 +2,18 @@ import React from 'react';
 
 
 export default class extends React.Component {
 export default class extends React.Component {
   getClassName() {
   getClassName() {
-    if (this.props.thread.is_read) {
-      return 'read-status item-read';
+    if (this.props.thread.weight > 0) {
+      if (this.props.thread.is_read) {
+        return 'read-status item-pinned item-read';
+      } else {
+        return 'read-status item-pinned item-new';
+      }
     } else {
     } else {
-      return 'read-status item-new';
+      if (this.props.thread.is_read) {
+        return 'read-status item-read';
+      } else {
+        return 'read-status item-new';
+      }
     }
     }
   }
   }
 
 

+ 2 - 1
frontend/src/components/threads-list/root.js

@@ -14,7 +14,8 @@ export default class extends React.Component {
                           list={this.props.list}
                           list={this.props.list}
 
 
                           selectThread={this.props.selectThread}
                           selectThread={this.props.selectThread}
-                          selection={this.props.selection} />;
+                          selection={this.props.selection}
+                          busyThreads={this.props.busyThreads} />;
       } else {
       } else {
         return <ListEmpty>
         return <ListEmpty>
           {this.props.children}
           {this.props.children}

+ 73 - 25
frontend/src/components/threads-list/thread.js

@@ -39,24 +39,47 @@ export default class extends React.Component {
     };
     };
   }
   }
 
 
-  getPath() {
-    let top = this.props.categories[this.props.thread.top_category];
-    let bottom = this.props.categories[this.props.thread.category];
+  getNewLabel() {
+    if (!this.props.thread.is_read) {
+      /* jshint ignore:start */
+      return <li className="thread-new-posts"
+                 title={gettext("Go to first unread post")}>
+        <a href={this.props.thread.new_post_url}>
+          <span className="material-icon">
+            comment
+          </span>
+          <span>
+            {gettext("New posts")}
+          </span>
+        </a>
+      </li>;
+      /* jshint ignore:end */
+    } else {
+      return null;
+    }
+  }
 
 
-    if (top && bottom && top.id !== bottom.id) {
+  getPinnedLabel() {
+    if (this.props.thread.weight === 2) {
       /* jshint ignore:start */
       /* jshint ignore:start */
-      return <li className="thread-path">
-        <Category category={top} list={this.props.list} />
-        <span className="path-separator material-icon">
-          arrow_forward
+      return <li className="thread-pinned-globally">
+        <span className="material-icon">
+          bookmark_border
+        </span>
+        <span>
+          {gettext("Pinned globally")}
         </span>
         </span>
-        <Category category={bottom} list={this.props.list} />
       </li>;
       </li>;
       /* jshint ignore:end */
       /* jshint ignore:end */
-    } else if (top || bottom) {
+    } else if (this.props.thread.weight === 1) {
       /* jshint ignore:start */
       /* jshint ignore:start */
-      return <li className="thread-path">
-        <Category category={top || bottom} list={this.props.list} />
+      return <li className="thread-pinned-locally">
+        <span className="material-icon">
+          bookmark_border
+        </span>
+        <span>
+          {gettext("Pinned locally")}
+        </span>
       </li>;
       </li>;
       /* jshint ignore:end */
       /* jshint ignore:end */
     } else {
     } else {
@@ -68,7 +91,12 @@ export default class extends React.Component {
     if (this.props.thread.is_closed) {
     if (this.props.thread.is_closed) {
       /* jshint ignore:start */
       /* jshint ignore:start */
       return <li className="thread-closed">
       return <li className="thread-closed">
-        {gettext("Closed")}
+        <span className="material-icon">
+          lock_outline
+        </span>
+        <span>
+          {gettext("Closed")}
+        </span>
       </li>;
       </li>;
       /* jshint ignore:end */
       /* jshint ignore:end */
     } else {
     } else {
@@ -76,14 +104,24 @@ export default class extends React.Component {
     }
     }
   }
   }
 
 
-  getNewLabel() {
-    if (!this.props.thread.is_read) {
+  getPath() {
+    let top = this.props.categories[this.props.thread.top_category];
+    let bottom = this.props.categories[this.props.thread.category];
+
+    if (top && bottom && top.id !== bottom.id) {
       /* jshint ignore:start */
       /* jshint ignore:start */
-      return <li className="thread-new-posts"
-                 title={gettext("Go to first unread post")}>
-        <a href={this.props.thread.new_post_url}>
-          {gettext("New posts")}
-        </a>
+      return <li className="thread-path">
+        <Category category={top} list={this.props.list} />
+        <span className="path-separator material-icon">
+          arrow_forward
+        </span>
+        <Category category={bottom} list={this.props.list} />
+      </li>;
+      /* jshint ignore:end */
+    } else if (top || bottom) {
+      /* jshint ignore:start */
+      return <li className="thread-path">
+        <Category category={top || bottom} list={this.props.list} />
       </li>;
       </li>;
       /* jshint ignore:end */
       /* jshint ignore:end */
     } else {
     } else {
@@ -100,9 +138,14 @@ export default class extends React.Component {
 
 
     return <li className="thread-replies">
     return <li className="thread-replies">
       <a href={this.props.thread.absolute_url}>
       <a href={this.props.thread.absolute_url}>
-        {interpolate(message, {
-          replies: this.props.thread.replies,
-        }, true)}
+        <span className="material-icon">
+          forum
+        </span>
+        <span>
+          {interpolate(message, {
+            replies: this.props.thread.replies,
+          }, true)}
+        </span>
       </a>
       </a>
     </li>;
     </li>;
     /* jshint ignore:end */
     /* jshint ignore:end */
@@ -154,13 +197,17 @@ export default class extends React.Component {
 
 
   getClassName() {
   getClassName() {
     if (this.props.thread.is_read) {
     if (this.props.thread.is_read) {
-      if (this.props.isSelected) {
+      if (this.props.isBusy) {
+        return 'list-group-item thread-read thread-busy';
+      } else if (this.props.isSelected) {
         return 'list-group-item thread-read thread-selected';
         return 'list-group-item thread-read thread-selected';
       } else {
       } else {
         return 'list-group-item thread-read';
         return 'list-group-item thread-read';
       }
       }
     } else {
     } else {
-      if (this.props.isSelected) {
+      if (this.props.isBusy) {
+        return 'list-group-item thread-new thread-busy';
+      } else if (this.props.isSelected) {
         return 'list-group-item thread-new thread-selected';
         return 'list-group-item thread-new thread-selected';
       } else {
       } else {
         return 'list-group-item thread-new';
         return 'list-group-item thread-new';
@@ -181,6 +228,7 @@ export default class extends React.Component {
 
 
         <ul className="list-inline">
         <ul className="list-inline">
           {this.getNewLabel()}
           {this.getNewLabel()}
+          {this.getPinnedLabel()}
           {this.getClosedLabel()}
           {this.getClosedLabel()}
           {this.getPath()}
           {this.getPath()}
           {this.getRepliesCount()}
           {this.getRepliesCount()}

+ 23 - 27
frontend/src/components/threads/route.js

@@ -13,12 +13,29 @@ import ajax from 'misago/services/ajax';
 import snackbar from 'misago/services/snackbar';
 import snackbar from 'misago/services/snackbar';
 import store from 'misago/services/store';
 import store from 'misago/services/store';
 import title from 'misago/services/page-title';
 import title from 'misago/services/page-title';
-import setToggle from 'misago/utils/set-toggle'; // jshint ignore:line
+import * as sets from 'misago/utils/sets'; // jshint ignore:line
 
 
 export default class extends WithDropdown {
 export default class extends WithDropdown {
   constructor(props) {
   constructor(props) {
     super(props);
     super(props);
 
 
+    this.state = {
+      isLoaded: false,
+      isBusy: false,
+
+      selection: [],
+      busyThreads: [],
+
+      dropdown: false,
+      subcategories: [],
+
+      count: 0,
+      more: 0,
+
+      page: 1,
+      pages: 1
+    };
+
     if (misago.has('THREADS')) {
     if (misago.has('THREADS')) {
       this.initWithPreloadedData(misago.get('THREADS'));
       this.initWithPreloadedData(misago.get('THREADS'));
     } else {
     } else {
@@ -27,13 +44,7 @@ export default class extends WithDropdown {
   }
   }
 
 
   initWithPreloadedData(data) {
   initWithPreloadedData(data) {
-    this.state = {
-      isLoaded: false,
-      isBusy: false,
-
-      selection: [],
-
-      dropdown: false,
+    this.state = Object.assign(this.state, {
       subcategories: data.subcategories,
       subcategories: data.subcategories,
 
 
       count: data.count,
       count: data.count,
@@ -41,26 +52,10 @@ export default class extends WithDropdown {
 
 
       page: data.page,
       page: data.page,
       pages: data.pages
       pages: data.pages
-    };
+    });
   }
   }
 
 
   initWithoutPreloadedData() {
   initWithoutPreloadedData() {
-    this.state = {
-      isLoaded: false,
-      isBusy: false,
-
-      selection: [],
-
-      dropdown: false,
-      subcategories: [],
-
-      count: 0,
-      more: 0,
-
-      page: 1,
-      pages: 1
-    };
-
     this.loadThreads();
     this.loadThreads();
   }
   }
 
 
@@ -127,7 +122,7 @@ export default class extends WithDropdown {
 
 
   selectThread = (thread) => {
   selectThread = (thread) => {
     this.setState({
     this.setState({
-      selection: setToggle(this.state.selection, thread)
+      selection: sets.toggle(this.state.selection, thread)
     });
     });
   };
   };
   /* jshint ignore:end */
   /* jshint ignore:end */
@@ -220,7 +215,7 @@ export default class extends WithDropdown {
     if (this.state.more) {
     if (this.state.more) {
       /* jshint ignore:start */
       /* jshint ignore:start */
       return <div className="pager-more">
       return <div className="pager-more">
-        <Button loading={this.state.isBusy}
+        <Button loading={this.state.isBusy || this.state.busyThreads.length}
                 onClick={this.loadMore}>
                 onClick={this.loadMore}>
           {gettext("Show more")}
           {gettext("Show more")}
         </Button>
         </Button>
@@ -256,6 +251,7 @@ export default class extends WithDropdown {
 
 
                      selectThread={this.selectThread}
                      selectThread={this.selectThread}
                      selection={this.state.selection}
                      selection={this.state.selection}
+                     busyThreads={this.state.busyThreads}
 
 
                      isLoaded={this.state.isLoaded}>
                      isLoaded={this.state.isLoaded}>
           <ThreadsListEmpty category={this.props.route.category}
           <ThreadsListEmpty category={this.props.route.category}

+ 0 - 10
frontend/src/utils/set-toggle.js

@@ -1,10 +0,0 @@
-export default function(array, value) {
-  if (array.indexOf(value) === -1) {
-    array.push(value);
-    return array;
-  } else {
-    return array.filter(function(i) {
-      return i !== value;
-    });
-  }
-}

+ 28 - 0
frontend/src/utils/sets.js

@@ -0,0 +1,28 @@
+export function push(array, value) {
+  if (array.indexOf(value) === -1) {
+    array.push(value);
+  }
+
+  return array;
+}
+
+export function remove(array, value) {
+  if (array.indexOf(value) >= 0) {
+    return array.filter(function(i) {
+      return i !== value;
+    });
+  } else {
+    return array;
+  }
+}
+
+export function toggle(array, value) {
+  if (array.indexOf(value) === -1) {
+    array.push(value);
+    return array;
+  } else {
+    return array.filter(function(i) {
+      return i !== value;
+    });
+  }
+}

+ 0 - 19
frontend/tests/set-toggle.js

@@ -1,19 +0,0 @@
-import assert from 'assert';
-import toggle from 'misago/utils/set-toggle';
-
-describe("Set Toggle", function() {
-  it("class api works", function() {
-    let set = [];
-
-    set = toggle(set, 2);
-    assert.equal(set.length, 1, "array length changed");
-    assert.equal(set[0], 2, "array contains toggled");
-
-    set = toggle(set, 2);
-    assert.equal(set.length, 0, "array was emptied");
-
-    set = toggle(set, 2);
-    assert.equal(set.length, 1, "array length changed");
-    assert.equal(set[0], 2, "array contains toggled item again");
-  });
-});

+ 47 - 0
frontend/tests/sets.js

@@ -0,0 +1,47 @@
+import assert from 'assert';
+import { push, remove, toggle } from 'misago/utils/sets';
+
+describe("Sets Utils", function() {
+  it("push", function() {
+    let set = [];
+
+    set = push(set, 2);
+    assert.equal(set.length, 1, "array length changed");
+    assert.equal(set[0], 2, "array contains pushed value");
+
+    set = push(set, 2);
+    assert.equal(set.length, 1, "array length didn't change");
+    assert.equal(set[0], 2, "array contains pushed value");
+
+    set = push(set, 1);
+    assert.equal(set.length, 2, "array length changed");
+    assert.equal(set[0], 2, "array contains original item");
+    assert.equal(set[1], 1, "array contains pushed item");
+  });
+
+  it("remove", function() {
+    let set = [1, 2, 3];
+
+    set = remove(set, 2);
+    assert.equal(set.length, 2, "array length changed");
+    assert.equal(set[1], 3, "removed value is no longer in array");
+
+    set = remove(set, 2);
+    assert.equal(set.length, 2, "array length didn't change");
+  });
+
+  it("toggle", function() {
+    let set = [];
+
+    set = toggle(set, 2);
+    assert.equal(set.length, 1, "array length changed");
+    assert.equal(set[0], 2, "array contains toggled value");
+
+    set = toggle(set, 2);
+    assert.equal(set.length, 0, "array was emptied");
+
+    set = toggle(set, 2);
+    assert.equal(set.length, 1, "array length changed");
+    assert.equal(set[0], 2, "array contains toggled item again");
+  });
+});

+ 1 - 1
misago/categories/migrations/0003_categories_roles.py

@@ -130,7 +130,7 @@ def create_default_categories_roles(apps, schema_editor):
                 'can_merge_posts': 1,
                 'can_merge_posts': 1,
                 'can_change_threads_labels': 2,
                 'can_change_threads_labels': 2,
                 'can_announce_threads': 1,
                 'can_announce_threads': 1,
-                'can_pin_threads': 1,
+                'can_pin_threads': 2,
                 'can_close_threads': 1,
                 'can_close_threads': 1,
                 'can_move_threads': 1,
                 'can_move_threads': 1,
                 'can_merge_threads': 1,
                 'can_merge_threads': 1,

+ 5 - 5
misago/static/misago/js/misago.js

@@ -5,9 +5,9 @@ return!0}},{key:"validateField",value:function(e,t){var n=[];if(!this.state.vali
 },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)(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);
 "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("../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]);
+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,isBusy:e.props.busyThreads.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.weight>0?this.props.thread.is_read?"read-status item-pinned item-read":"read-status item-pinned item-new":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,busyThreads:this.props.busyThreads}):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:"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},l["default"].createElement("span",{className:"material-icon"},"comment"),l["default"].createElement("span",null,gettext("New posts"))))}},{key:"getPinnedLabel",value:function(){return 2===this.props.thread.weight?l["default"].createElement("li",{className:"thread-pinned-globally"},l["default"].createElement("span",{className:"material-icon"},"bookmark_border"),l["default"].createElement("span",null,gettext("Pinned globally"))):1===this.props.thread.weight?l["default"].createElement("li",{className:"thread-pinned-locally"},l["default"].createElement("span",{className:"material-icon"},"bookmark_border"),l["default"].createElement("span",null,gettext("Pinned locally"))):null}},{key:"getClosedLabel",value:function(){return this.props.thread.is_closed?l["default"].createElement("li",{className:"thread-closed"},l["default"].createElement("span",{className:"material-icon"},"lock_outline"),l["default"].createElement("span",null,gettext("Closed"))):null}},{key:"getPath",value:function(){var e=this.props.categories[this.props.thread.top_category],t=this.props.categories[this.props.thread.category];return e&&t&&e.id!==t.id?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:"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},l["default"].createElement("span",{className:"material-icon"},"forum"),l["default"].createElement("span",null,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.isBusy?"list-group-item thread-read thread-busy":this.props.isSelected?"list-group-item thread-read thread-selected":"list-group-item thread-read":this.props.isBusy?"list-group-item thread-new thread-busy":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.getPinnedLabel(),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){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("./header"),m=a(p),h=e("./navs"),g=e("./utils"),b=e("../threads-list/root"),y=a(b),v=e("./list-empty"),_=a(v),w=e("./toolbar"),E=a(w),O=e("../with-dropdown"),k=a(O),N=e("../../index"),j=a(N),x=e("../../reducers/threads"),P=e("../../services/ajax"),C=a(P),S=e("../../services/snackbar"),T=a(S),M=e("../../services/store"),L=a(M),R=e("../../services/page-title"),A=a(R),I=e("../../utils/sets"),U=r(I),D=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.loadThreads(n.state.page+1)},n.selectThread=function(e){n.setState({selection:U.toggle(n.state.selection,e)})},n.state={isLoaded:!1,isBusy:!1,selection:[],busyThreads:[],dropdown:!1,subcategories:[],count:0,more:0,page:1,pages:1},j["default"].has("THREADS")?n.initWithPreloadedData(j["default"].get("THREADS")):n.initWithoutPreloadedData(),n}return i(t,e),u(t,[{key:"initWithPreloadedData",value:function(e){this.state=Object.assign(this.state,{subcategories:e.subcategories,count:e.count,more:e.more,page:e.page,pages:e.pages})}},{key:"initWithoutPreloadedData",value:function(){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),C["default"].get(j["default"].get("THREADS_API"),{category:n,list:this.props.route.list.type,page:t||1},"threads").then(function(n){1===t?L["default"].dispatch((0,x.hydrate)(n.results)):L["default"].dispatch((0,x.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){T["default"].apiError(e)})}},{key:"componentDidMount",value:function(){A["default"].set((0,g.getPageTitle)(this.props.route)),j["default"].has("THREADS")&&(L["default"].dispatch((0,x.hydrate)(j["default"].pop("THREADS").results)),this.setState({isLoaded:!0}))}},{key:"getTitle",value:function(){return(0,g.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?c["default"].createElement(h.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?c["default"].createElement("div",{className:"category-description"},c["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?c["default"].createElement(E["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?c["default"].createElement("div",{className:"pager-more"},c["default"].createElement(d["default"],{loading:this.state.isBusy||this.state.busyThreads.length,onClick:this.loadMore},gettext("Show more"))):null}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getClassName()},c["default"].createElement(m["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}),c["default"].createElement("div",{className:this.getCompactNavClassName()},this.getCompactNav()),c["default"].createElement("div",{className:"container"},this.getCategoryDescription(),this.getToolbar(),c["default"].createElement(y["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,busyThreads:this.state.busyThreads,isLoaded:this.state.isLoaded},c["default"].createElement(_["default"],{category:this.props.route.category,list:this.props.route.list})),this.getMoreButton()))}}]),t}(k["default"]);n["default"]=D},{"../../index":156,"../../reducers/threads":160,"../../services/ajax":164,"../../services/page-title":171,"../../services/snackbar":173,"../../services/store":174,"../../utils/sets":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";function r(e,t){return-1===e.indexOf(t)&&e.push(t),e}function a(e,t){return e.indexOf(t)>=0?e.filter(function(e){return e!==t}):e}function o(e,t){return-1===e.indexOf(t)?(e.push(t),e):e.filter(function(e){return e!==t})}Object.defineProperty(n,"__esModule",{value:!0}),n.push=r,n.remove=a,n.toggle=o},{}],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


+ 1 - 1
misago/templates/misago/categories/last_activity.html

@@ -14,7 +14,7 @@
 
 
     {% capture trimmed as user %}
     {% capture trimmed as user %}
       {% if category.last_poster_id %}
       {% if category.last_poster_id %}
-        <a href="{% url 'misago:user' slug=category.last_poster_slug id=category.last_poster_id %}" class="poster-title">{{ category.last_poster_name }}</a>
+        <a href="{% url 'misago:user' slug=category.last_poster_slug pk=category.last_poster_id %}" class="poster-title">{{ category.last_poster_name }}</a>
       {% else %}
       {% else %}
         <span class="poster-title">{{ category.last_poster_name }}</span>
         <span class="poster-title">{{ category.last_poster_name }}</span>
       {% endif %}
       {% endif %}

+ 87 - 20
misago/threads/api/threadendpoints/list.py

@@ -28,6 +28,12 @@ LIST_TYPES = (
 class BaseListEndpoint(object):
 class BaseListEndpoint(object):
     serialize_subcategories = True
     serialize_subcategories = True
 
 
+    def get_final_queryset(self, request, categories, threads_categories,
+            category, list_type):
+        return self.get_queryset(request, categories, list_type).filter(
+            category__in=threads_categories
+        )
+
     def __call__(self, request):
     def __call__(self, request):
         try:
         try:
             page = int(request.query_params.get('page', 0))
             page = int(request.query_params.get('page', 0))
@@ -38,30 +44,42 @@ class BaseListEndpoint(object):
         if list_type not in LIST_TYPES:
         if list_type not in LIST_TYPES:
             raise Http404()
             raise Http404()
 
 
-        category = self.get_category(request)
+        categories = self.get_categories(request)
+        category = self.get_category(request, categories)
 
 
         self.allow_see_list(request, category, list_type)
         self.allow_see_list(request, category, list_type)
+        subcategories = self.get_subcategories(category, categories)
 
 
-        subcategories = self.get_subcategories(request, category)
-        categories = [category] + subcategories
+        queryset = self.get_queryset(request, categories, list_type)
 
 
-        queryset = self.get_queryset(
-            request, categories, list_type).order_by('-last_post_on')
+        threads_categories = [category] + subcategories
+        rest_queryset = self.get_rest_queryset(
+            category, queryset, threads_categories)
 
 
-        page = paginate(queryset, page, 24, 6, allow_explicit_first_page=True)
+        page = paginate(rest_queryset, page, 24, 6,
+            allow_explicit_first_page=True
+        )
         response_dict = pagination_dict(page, include_page_range=False)
         response_dict = pagination_dict(page, include_page_range=False)
 
 
+        if page.number > 1:
+            threads = list(page.object_list)
+        else:
+            pinned_threads = self.get_pinned_threads(
+                category, queryset, threads_categories)
+            threads = list(pinned_threads) + list(page.object_list)
+
         if list_type in ('new', 'unread'):
         if list_type in ('new', 'unread'):
             """we already know all threads on list are unread"""
             """we already know all threads on list are unread"""
-            threadstracker.make_unread(page.object_list)
+            threadstracker.make_unread(threads)
         else:
         else:
             threadstracker.make_threads_read_aware(
             threadstracker.make_threads_read_aware(
-                request.user, page.object_list)
-        add_categories_to_threads(categories, page.object_list)
+                request.user, threads)
+        add_categories_to_threads(category, categories, threads)
 
 
         visible_subcategories = []
         visible_subcategories = []
-        for thread in page.object_list:
+        for thread in threads:
             if (thread.top_category and
             if (thread.top_category and
+                    thread.category in threads_categories and
                     thread.top_category not in visible_subcategories):
                     thread.top_category not in visible_subcategories):
                 visible_subcategories.append(thread.top_category.pk)
                 visible_subcategories.append(thread.top_category.pk)
 
 
@@ -71,30 +89,79 @@ class BaseListEndpoint(object):
                 if subcategory.pk in visible_subcategories:
                 if subcategory.pk in visible_subcategories:
                     response_dict['subcategories'].append(subcategory.pk)
                     response_dict['subcategories'].append(subcategory.pk)
 
 
-        add_acl(request.user, page.object_list)
-        make_subscription_aware(request.user, page.object_list)
+        add_acl(request.user, threads)
+        make_subscription_aware(request.user, threads)
 
 
         return Response(dict(
         return Response(dict(
-            results=ThreadListSerializer(page.object_list, many=True).data,
+            results=ThreadListSerializer(threads, many=True).data,
             **response_dict))
             **response_dict))
 
 
 
 
 class ThreadsListEndpoint(ThreadsListMixin, BaseListEndpoint):
 class ThreadsListEndpoint(ThreadsListMixin, BaseListEndpoint):
-    def get_category(self, request):
+    def get_category(self, request, categories):
         if request.query_params.get('category'):
         if request.query_params.get('category'):
             category_id = get_int_or_404(request.query_params['category'])
             category_id = get_int_or_404(request.query_params['category'])
-            category = get_object_or_404(
-                Category.objects.select_related('parent'),
-                tree_id=CATEGORIES_TREE_ID,
-                id=category_id,
-            )
+
+            for category in categories:
+                if category.pk == category_id:
+                    break;
+            else:
+                raise Http404()
 
 
             allow_see_category(request.user, category)
             allow_see_category(request.user, category)
             allow_browse_category(request.user, category)
             allow_browse_category(request.user, category)
 
 
             return category
             return category
         else:
         else:
-            return Category.objects.root_category()
+            return categories[0]
+
+    def get_subcategories(self, category, categories):
+        subcategories = []
+        for subcategory in categories:
+            if category.has_child(subcategory):
+                subcategories.append(subcategory)
+        return subcategories
+
+    def get_pinned_threads(self, category, queryset, threads_categories):
+        if category.level:
+            return list(queryset.filter(weight=2)) + list(queryset.filter(
+                weight=1,
+                category__in=threads_categories
+            ))
+        else:
+            return queryset.filter(weight=2)
+
+
+    def get_rest_queryset(self, category, queryset, threads_categories):
+        if category.level:
+            return queryset.filter(
+                weight=0,
+                category__in=threads_categories,
+            )
+        else:
+           return queryset.filter(
+                weight__lt=2,
+                category__in=threads_categories,
+            )
+
+    def get_final_queryset(self, request, categories, threads_categories,
+            category, list_type):
+        queryset = self.get_queryset(request, categories, list_type)
+
+        if category.level:
+            announcements = queryset.filter(weight=2)
+            pinned = queryset.filter(weight=1, category__in=threads_categories)
+            other = queryset.filter(weight=1, category__in=threads_categories)
+
+            return announcements | pinned | other
+        else:
+            announcements = queryset.filter(weight=2)
+            other = queryset.filter(
+                weight__lt=2,
+                category__in=threads_categories,
+            )
+
+            return announcements | other
 
 
 
 
 threads_list_endpoint = ThreadsListEndpoint()
 threads_list_endpoint = ThreadsListEndpoint()

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

@@ -112,7 +112,13 @@ class ThreadsListMixin(object):
                 raise PermissionDenied(_("You have to sign in to see list of "
                 raise PermissionDenied(_("You have to sign in to see list of "
                                          "threads you are subscribing."))
                                          "threads you are subscribing."))
 
 
-    def get_subcategories(self, request, category):
+    def get_categories(self, request):
+        return [Category.objects.root_category()] + list(
+            Category.objects.all_categories().filter(
+                id__in=request.user.acl['visible_categories']
+            ).select_related('parent'))
+
+    def get_subcategories(self, request, category, all_categories):
         if category.is_leaf_node():
         if category.is_leaf_node():
             return []
             return []
 
 
@@ -125,7 +131,8 @@ class ThreadsListMixin(object):
         # as it includes nedless extra condition to DB filter
         # as it includes nedless extra condition to DB filter
         if categories[0].special_role:
         if categories[0].special_role:
             categories = categories[1:]
             categories = categories[1:]
-        return get_threads_queryset(request.user, categories, list_type)
+        queryset = get_threads_queryset(request.user, categories, list_type)
+        return queryset.order_by('-last_post_id')
 
 
     def get_extra_context(self, request, category, subcategories, list_type):
     def get_extra_context(self, request, category, subcategories, list_type):
         return {
         return {

+ 7 - 7
misago/threads/moderation/threads.py

@@ -6,10 +6,10 @@ from misago.threads.events import record_event
 
 
 
 
 @atomic
 @atomic
-def announce_thread(user, thread):
+def pin_thread_globally(user, thread):
     if thread.weight != 2:
     if thread.weight != 2:
-        message = _("%(user)s turned thread into an announcement.")
-        record_event(user, thread, "star", message, {'user': user})
+        message = _("%(user)s pinned thread globally.")
+        record_event(user, thread, "bookmark", message, {'user': user})
 
 
         thread.weight = 2
         thread.weight = 2
         thread.save(update_fields=['has_events', 'weight'])
         thread.save(update_fields=['has_events', 'weight'])
@@ -19,9 +19,9 @@ def announce_thread(user, thread):
 
 
 
 
 @atomic
 @atomic
-def pin_thread(user, thread):
+def pin_thread_locally(user, thread):
     if thread.weight != 1:
     if thread.weight != 1:
-        message = _("%(user)s pinned thread.")
+        message = _("%(user)s pinned thread locally.")
         record_event(user, thread, "bookmark", message, {'user': user})
         record_event(user, thread, "bookmark", message, {'user': user})
 
 
         thread.weight = 1
         thread.weight = 1
@@ -32,9 +32,9 @@ def pin_thread(user, thread):
 
 
 
 
 @atomic
 @atomic
-def remove_thread_weight(user, thread):
+def unpin_thread(user, thread):
     if thread.weight:
     if thread.weight:
-        message = _("%(user)s removed thread weight.")
+        message = _("%(user)s unpinned thread.")
         record_event(user, thread, "circle", message, {'user': user})
         record_event(user, thread, "circle", message, {'user': user})
 
 
         thread.weight = 0
         thread.weight = 0

+ 11 - 2
misago/threads/permissions/threads.py

@@ -140,7 +140,16 @@ class PermissionsForm(forms.Form):
         )
         )
     )
     )
     can_announce_threads = forms.YesNoSwitch(label=_("Can announce threads"))
     can_announce_threads = forms.YesNoSwitch(label=_("Can announce threads"))
-    can_pin_threads = forms.YesNoSwitch(label=_("Can pin threads"))
+    can_pin_threads = forms.TypedChoiceField(
+        label=_("Can pin threads"),
+        coerce=int,
+        initial=0,
+        choices=(
+            (0, _("No")),
+            (1, _("Locally")),
+            (2, _("Globally"))
+        )
+    )
     can_close_threads = forms.YesNoSwitch(label=_("Can close threads"))
     can_close_threads = forms.YesNoSwitch(label=_("Can close threads"))
     can_move_threads = forms.YesNoSwitch(label=_("Can move threads"))
     can_move_threads = forms.YesNoSwitch(label=_("Can move threads"))
     can_merge_threads = forms.YesNoSwitch(label=_("Can merge threads"))
     can_merge_threads = forms.YesNoSwitch(label=_("Can merge threads"))
@@ -326,7 +335,7 @@ def add_acl_to_thread(user, thread):
         'can_edit': can_edit_thread(user, thread),
         'can_edit': can_edit_thread(user, thread),
         'can_hide': category_acl.get('can_hide_threads', False),
         'can_hide': category_acl.get('can_hide_threads', False),
         'can_announce': category_acl.get('can_announce_threads', False),
         'can_announce': category_acl.get('can_announce_threads', False),
-        'can_pin': category_acl.get('can_pin_threads', False),
+        'can_pin': category_acl.get('can_pin_threads', 0),
         'can_close': category_acl.get('can_close_threads', False),
         'can_close': category_acl.get('can_close_threads', False),
         'can_move': category_acl.get('can_move_threads', False),
         'can_move': category_acl.get('can_move_threads', False),
         'can_review': category_acl.get('can_review_moderated_content', False),
         'can_review': category_acl.get('can_review_moderated_content', False),

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

@@ -28,6 +28,7 @@ class ThreadSerializer(serializers.ModelSerializer):
         fields = (
         fields = (
             'id',
             'id',
             'title',
             'title',
+            'weight',
             'category',
             'category',
             'replies',
             'replies',
             'is_closed',
             'is_closed',
@@ -93,6 +94,7 @@ class ThreadListSerializer(ThreadSerializer):
         fields = (
         fields = (
             'id',
             'id',
             'title',
             'title',
+            'weight',
             'category',
             'category',
             'top_category',
             'top_category',
             'replies',
             'replies',

+ 31 - 28
misago/threads/tests/test_threads_moderation.py

@@ -18,10 +18,10 @@ class ThreadsModerationTests(AuthenticatedUserTestCase):
     def reload_thread(self):
     def reload_thread(self):
         self.thread = Thread.objects.get(pk=self.thread.pk)
         self.thread = Thread.objects.get(pk=self.thread.pk)
 
 
-    def test_announce_thread(self):
-        """announce_thread makes announcement"""
+    def test_pin_globally_thread(self):
+        """pin_thread_globally makes thread pinned globally"""
         self.assertEqual(self.thread.weight, 0)
         self.assertEqual(self.thread.weight, 0)
-        self.assertTrue(moderation.announce_thread(self.user, self.thread))
+        self.assertTrue(moderation.pin_thread_globally(self.user, self.thread))
 
 
         self.reload_thread()
         self.reload_thread()
         self.assertEqual(self.thread.weight, 2)
         self.assertEqual(self.thread.weight, 2)
@@ -29,20 +29,22 @@ class ThreadsModerationTests(AuthenticatedUserTestCase):
         self.assertTrue(self.thread.has_events)
         self.assertTrue(self.thread.has_events)
         event = self.thread.event_set.last()
         event = self.thread.event_set.last()
 
 
-        self.assertEqual(event.icon, "star")
-        self.assertIn("into an announcement.", event.message)
+        self.assertEqual(event.icon, "bookmark")
+        self.assertIn("pinned thread globally.", event.message)
 
 
-    def test_announce_invalid_thread(self):
-        """announce_thread returns false for already announced thread"""
+    def test_pin_globally_invalid_thread(self):
+        """
+        pin_thread_globally returns false for already globally pinned thread
+        """
         self.thread.weight = 2
         self.thread.weight = 2
 
 
-        self.assertFalse(moderation.announce_thread(self.user, self.thread))
+        self.assertFalse(moderation.pin_thread_globally(self.user, self.thread))
         self.assertEqual(self.thread.weight, 2)
         self.assertEqual(self.thread.weight, 2)
 
 
-    def test_pin_thread(self):
-        """pin_thread makes thread pinned"""
+    def test_pin_thread_locally(self):
+        """pin_thread_locally makes thread pinned locally"""
         self.assertEqual(self.thread.weight, 0)
         self.assertEqual(self.thread.weight, 0)
-        self.assertTrue(moderation.pin_thread(self.user, self.thread))
+        self.assertTrue(moderation.pin_thread_locally(self.user, self.thread))
 
 
         self.reload_thread()
         self.reload_thread()
         self.assertEqual(self.thread.weight, 1)
         self.assertEqual(self.thread.weight, 1)
@@ -51,21 +53,23 @@ class ThreadsModerationTests(AuthenticatedUserTestCase):
         event = self.thread.event_set.last()
         event = self.thread.event_set.last()
 
 
         self.assertEqual(event.icon, "bookmark")
         self.assertEqual(event.icon, "bookmark")
-        self.assertIn("pinned thread.", event.message)
+        self.assertIn("pinned thread locally.", event.message)
 
 
     def test_pin_invalid_thread(self):
     def test_pin_invalid_thread(self):
-        """pin_thread returns false for already pinned thread"""
+        """
+        pin_thread_locally returns false for already locally pinned thread
+        """
         self.thread.weight = 1
         self.thread.weight = 1
 
 
-        self.assertFalse(moderation.pin_thread(self.user, self.thread))
+        self.assertFalse(moderation.pin_thread_locally(self.user, self.thread))
         self.assertEqual(self.thread.weight, 1)
         self.assertEqual(self.thread.weight, 1)
 
 
-    def test_remove_announced_thread_weight(self):
-        """unpin_thread defaults announced thread weight"""
-        moderation.announce_thread(self.user, self.thread)
+    def test_unpin_globally_pinned_thread(self):
+        """unpin_thread unpins globally pinned thread"""
+        moderation.pin_thread_globally(self.user, self.thread)
 
 
         self.assertEqual(self.thread.weight, 2)
         self.assertEqual(self.thread.weight, 2)
-        self.assertTrue(moderation.remove_thread_weight(self.user, self.thread))
+        self.assertTrue(moderation.unpin_thread(self.user, self.thread))
 
 
         self.reload_thread()
         self.reload_thread()
         self.assertEqual(self.thread.weight, 0)
         self.assertEqual(self.thread.weight, 0)
@@ -73,15 +77,15 @@ class ThreadsModerationTests(AuthenticatedUserTestCase):
         self.assertTrue(self.thread.has_events)
         self.assertTrue(self.thread.has_events)
         event = self.thread.event_set.last()
         event = self.thread.event_set.last()
 
 
-        self.assertIn("removed thread weight.", event.message)
+        self.assertIn("unpinned thread.", event.message)
         self.assertEqual(event.icon, "circle")
         self.assertEqual(event.icon, "circle")
 
 
-    def test_remove_pinned_thread_weight(self):
-        """unpin_thread defaults pinned thread weight"""
-        moderation.pin_thread(self.user, self.thread)
+    def test_unpin_locally_pinned_thread(self):
+        """unpin_thread unpins locally pinned thread"""
+        moderation.pin_thread_locally(self.user, self.thread)
 
 
         self.assertEqual(self.thread.weight, 1)
         self.assertEqual(self.thread.weight, 1)
-        self.assertTrue(moderation.remove_thread_weight(self.user, self.thread))
+        self.assertTrue(moderation.unpin_thread(self.user, self.thread))
 
 
         self.reload_thread()
         self.reload_thread()
         self.assertEqual(self.thread.weight, 0)
         self.assertEqual(self.thread.weight, 0)
@@ -89,13 +93,12 @@ class ThreadsModerationTests(AuthenticatedUserTestCase):
         self.assertTrue(self.thread.has_events)
         self.assertTrue(self.thread.has_events)
         event = self.thread.event_set.last()
         event = self.thread.event_set.last()
 
 
-        self.assertIn("removed thread weight.", event.message)
+        self.assertIn("unpinned thread.", event.message)
         self.assertEqual(event.icon, "circle")
         self.assertEqual(event.icon, "circle")
 
 
-    def test_remove_weightless_thread_weight(self):
-        """remove_thread_weight returns false for already weightless thread"""
-        self.assertFalse(
-            moderation.remove_thread_weight(self.user, self.thread))
+    def test_unpin_weightless_thread(self):
+        """unpin_thread returns false for already weightless thread"""
+        self.assertFalse(moderation.unpin_thread(self.user, self.thread))
         self.assertEqual(self.thread.weight, 0)
         self.assertEqual(self.thread.weight, 0)
 
 
     def test_approve_thread(self):
     def test_approve_thread(self):

+ 3 - 3
misago/threads/utils.py

@@ -1,4 +1,4 @@
-def add_categories_to_threads(categories, threads):
+def add_categories_to_threads(root_category, categories, threads):
     categories_dict = {}
     categories_dict = {}
     for category in categories:
     for category in categories:
         categories_dict[category.pk] = category
         categories_dict[category.pk] = category
@@ -8,9 +8,9 @@ def add_categories_to_threads(categories, threads):
     for thread in threads:
     for thread in threads:
         thread.category = categories_dict[thread.category_id]
         thread.category = categories_dict[thread.category_id]
 
 
-        if thread.category == categories[0]:
+        if thread.category == root_category:
             thread.top_category = None
             thread.top_category = None
-        elif thread.category.parent_id == categories[0].pk:
+        elif thread.category.parent_id == root_category.pk:
             thread.top_category = thread.category
             thread.top_category = thread.category
         elif thread.category_id in top_categories_map:
         elif thread.category_id in top_categories_map:
             thread.top_category = top_categories_map[thread.category_id]
             thread.top_category = top_categories_map[thread.category_id]

+ 48 - 19
misago/threads/views/threadslist.py

@@ -39,6 +39,12 @@ class BaseList(View):
                 subcategories.append(subcategory)
                 subcategories.append(subcategory)
         return subcategories
         return subcategories
 
 
+    def get_pinned_threads(self, request, queryset):
+        return []
+
+    def get_rest_queryset(self, request, queryset, threads_categories):
+        return queryset.filter(category__in=threads_categories)
+
     def get_extra_context(self, request):
     def get_extra_context(self, request):
         return {}
         return {}
 
 
@@ -61,27 +67,35 @@ class BaseList(View):
         self.allow_see_list(request, category, list_type)
         self.allow_see_list(request, category, list_type)
         subcategories = self.get_subcategories(category, categories)
         subcategories = self.get_subcategories(category, categories)
 
 
+        queryset = self.get_queryset(request, categories, list_type)
+
         threads_categories = [category] + subcategories
         threads_categories = [category] + subcategories
-        queryset = self.get_queryset(
-            request, threads_categories, list_type
-        ).order_by('-last_post_on')
+        rest_queryset = self.get_rest_queryset(queryset, threads_categories)
 
 
-        page = paginate(queryset, page, 24, 6)
+        page = paginate(rest_queryset, page, 24, 6)
         paginator = pagination_dict(page, include_page_range=False)
         paginator = pagination_dict(page, include_page_range=False)
 
 
+        if page.number > 1:
+            threads = list(page.object_list)
+        else:
+            pinned_threads = self.get_pinned_threads(
+                queryset, threads_categories)
+            threads = list(pinned_threads) + list(page.object_list)
+
         if list_type in ('new', 'unread'):
         if list_type in ('new', 'unread'):
             """we already know all threads on list are unread"""
             """we already know all threads on list are unread"""
-            threadstracker.make_unread(page.object_list)
+            threadstracker.make_unread(threads)
         else:
         else:
             threadstracker.make_threads_read_aware(
             threadstracker.make_threads_read_aware(
-                request.user, page.object_list)
+                request.user, threads)
 
 
-        add_categories_to_threads(threads_categories, page.object_list)
+        add_categories_to_threads(category, categories, threads)
 
 
         visible_subcategories = []
         visible_subcategories = []
-        for thread in page.object_list:
+        for thread in threads:
             if (thread.top_category and
             if (thread.top_category and
-                    thread.top_category not in visible_subcategories):
+                    thread.category in threads_categories and
+                    thread.top_category.pk not in visible_subcategories):
                 visible_subcategories.append(thread.top_category.pk)
                 visible_subcategories.append(thread.top_category.pk)
 
 
         category.subcategories = []
         category.subcategories = []
@@ -89,12 +103,12 @@ class BaseList(View):
             if subcategory.pk in visible_subcategories:
             if subcategory.pk in visible_subcategories:
                 category.subcategories.append(subcategory)
                 category.subcategories.append(subcategory)
 
 
-        add_acl(request.user, page.object_list)
-        make_subscription_aware(request.user, page.object_list)
+        add_acl(request.user, threads)
+        make_subscription_aware(request.user, threads)
 
 
         request.frontend_context.update({
         request.frontend_context.update({
             'THREADS': dict(
             'THREADS': dict(
-                results=ThreadListSerializer(page.object_list, many=True).data,
+                results=ThreadListSerializer(threads, many=True).data,
                 subcategories=[c.pk for c in category.subcategories],
                 subcategories=[c.pk for c in category.subcategories],
                 **paginator),
                 **paginator),
             'CATEGORIES': IndexCategorySerializer(categories, many=True).data,
             'CATEGORIES': IndexCategorySerializer(categories, many=True).data,
@@ -111,7 +125,7 @@ class BaseList(View):
             list_type=list_type,
             list_type=list_type,
             list_name=LISTS_NAMES.get(list_type),
             list_name=LISTS_NAMES.get(list_type),
 
 
-            threads=page.object_list,
+            threads=threads,
             paginator=paginator,
             paginator=paginator,
             count=paginator['count'],
             count=paginator['count'],
 
 
@@ -122,15 +136,18 @@ class BaseList(View):
 class ThreadsList(BaseList, ThreadsListMixin):
 class ThreadsList(BaseList, ThreadsListMixin):
     template_name = 'misago/threadslist/threads.html'
     template_name = 'misago/threadslist/threads.html'
 
 
-    def get_categories(self, request):
-        return [Category.objects.root_category()] + list(
-            Category.objects.all_categories().filter(
-                id__in=request.user.acl['visible_categories']
-            ).select_related('parent'))
-
     def get_category(self, request, categories, **kwargs):
     def get_category(self, request, categories, **kwargs):
         return categories[0]
         return categories[0]
 
 
+    def get_pinned_threads(self, queryset, threads_categories):
+        return queryset.filter(weight=2)
+
+    def get_rest_queryset(self, queryset, threads_categories):
+        return queryset.filter(
+            weight__lt=2,
+            category__in=threads_categories,
+        )
+
     def get_extra_context(self, request):
     def get_extra_context(self, request):
         return {
         return {
             'is_index': not settings.MISAGO_CATEGORIES_ON_INDEX
             'is_index': not settings.MISAGO_CATEGORIES_ON_INDEX
@@ -160,6 +177,18 @@ class CategoryThreadsList(ThreadsList, ThreadsListMixin):
         else:
         else:
             raise Http404()
             raise Http404()
 
 
+    def get_pinned_threads(self, queryset, threads_categories):
+        return list(queryset.filter(weight=2)) + list(queryset.filter(
+            weight=1,
+            category__in=threads_categories
+        ))
+
+    def get_rest_queryset(self, queryset, threads_categories):
+        return queryset.filter(
+            weight=0,
+            category__in=threads_categories,
+        )
+
 
 
 class PrivateThreadsList(ThreadsList):
 class PrivateThreadsList(ThreadsList):
     template_name = 'misago/threadslist/private_threads.html'
     template_name = 'misago/threadslist/private_threads.html'

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