diff --git a/static/AccountSettingsModal.js b/static/AccountSettingsModal.js
new file mode 100644
index 0000000..99d41fe
--- /dev/null
+++ b/static/AccountSettingsModal.js
@@ -0,0 +1,166 @@
+var React = require('react');
+
+var Modal = require('react-bootstrap').Modal;
+var Button = require('react-bootstrap').Button;
+var ButtonGroup = require('react-bootstrap').ButtonGroup;
+var Input = require('react-bootstrap').Input;
+
+module.exports = React.createClass({
+ displayName: "AccountSettingsModal",
+ _getInitialState: function(props) {
+ return {error: "",
+ name: props.user.Name,
+ username: props.user.Username,
+ email: props.user.Email,
+ password: BogusPassword,
+ confirm_password: BogusPassword,
+ passwordChanged: false,
+ initial_password: BogusPassword};
+ },
+ getInitialState: function() {
+ return this._getInitialState(this.props);
+ },
+ componentWillReceiveProps: function(nextProps) {
+ if (nextProps.show && !this.props.show) {
+ this.setState(this._getInitialState(nextProps));
+ }
+ },
+ passwordValidationState: function() {
+ if (this.state.passwordChanged) {
+ if (this.state.password.length >= 10)
+ return "success";
+ else if (this.state.password.length >= 6)
+ return "warning";
+ else
+ return "error";
+ }
+ },
+ confirmPasswordValidationState: function() {
+ if (this.state.confirm_password.length > 0) {
+ if (this.state.confirm_password == this.state.password)
+ return "success";
+ else
+ return "error";
+ }
+ },
+ handleCancel: function() {
+ if (this.props.onCancel != null)
+ this.props.onCancel();
+ },
+ handleChange: function() {
+ if (this.refs.password.getValue() != this.state.initial_password)
+ this.setState({passwordChanged: true});
+ this.setState({
+ name: this.refs.name.getValue(),
+ username: this.refs.username.getValue(),
+ email: this.refs.email.getValue(),
+ password: this.refs.password.getValue(),
+ confirm_password: this.refs.confirm_password.getValue()
+ });
+ },
+ handleSubmit: function(e) {
+ var u = new User();
+ var error = "";
+ e.preventDefault();
+
+ u.UserId = this.props.user.UserId;
+ u.Name = this.state.name;
+ u.Username = this.state.username;
+ u.Email = this.state.email;
+ if (this.state.passwordChanged) {
+ u.Password = this.state.password;
+ if (u.Password != this.state.confirm_password) {
+ this.setState({error: "Error: password do not match"});
+ return;
+ }
+ } else {
+ u.Password = BogusPassword;
+ }
+
+ this.handleSaveSettings(u);
+ },
+ handleSaveSettings: function(user) {
+ $.ajax({
+ type: "PUT",
+ dataType: "json",
+ url: "user/"+user.UserId+"/",
+ data: {user: user.toJSON()},
+ success: function(data, status, jqXHR) {
+ var e = new Error();
+ e.fromJSON(data);
+ if (e.isError()) {
+ this.setState({error: e});
+ } else {
+ user.Password = "";
+ this.props.onSubmit(user);
+ }
+ }.bind(this),
+ error: function(jqXHR, status, error) {
+ var e = new Error();
+ e.ErrorId = 5;
+ e.ErrorString = "Request Failed: " + status + error;
+ this.setState({error: e});
+ }.bind(this),
+ });
+ },
+ render: function() {
+ return (
+
+
+ Edit Account Settings
+
+
+ {this.state.error}
+
+
+
+
+
+
+
+
+
+ );
+ }
+});
diff --git a/static/accounts.js b/static/AccountsTab.js
similarity index 88%
rename from static/accounts.js
rename to static/AccountsTab.js
index 2f8fc06..ebc9194 100644
--- a/static/accounts.js
+++ b/static/AccountsTab.js
@@ -1,51 +1,24 @@
-// Import all the objects we want to use from ReactBootstrap
-var ListGroup = ReactBootstrap.ListGroup;
-var ListGroupItem = ReactBootstrap.ListGroupItem;
+var React = require('react');
+var ReactDOM = require('react-dom');
+var ReactBootstrap = require('react-bootstrap');
var Grid = ReactBootstrap.Grid;
var Row = ReactBootstrap.Row;
var Col = ReactBootstrap.Col;
-
+var Input = ReactBootstrap.Input;
var Button = ReactBootstrap.Button;
var ButtonGroup = ReactBootstrap.ButtonGroup;
var Glyphicon = ReactBootstrap.Glyphicon;
+var ListGroup = ReactBootstrap.ListGroup;
+var ListGroupItem = ReactBootstrap.ListGroupItem;
+var Collapse = ReactBootstrap.Collapse;
+var Modal = ReactBootstrap.Modal;
+var Collapse = ReactBootstrap.Collapse;
-var CollapsibleMixin = ReactBootstrap.CollapsibleMixin;
+var Combobox = require('react-widgets').Combobox;
-var Combobox = ReactWidgets.Combobox;
-
-const AccountCombobox = React.createClass({
- getDefaultProps: function() {
- return {
- includeRoot: true,
- rootName: "New Top-level Account"
- };
- },
- handleAccountChange: function(account) {
- if (this.props.onSelect != null &&
- account.hasOwnProperty('AccountId') &&
- (this.props.account_map.hasOwnProperty([account.AccountId]) ||
- account.AccountId == -1)) {
- this.props.onSelect(account)
- }
- },
- render: function() {
- var accounts = getAccountDisplayList(this.props.accounts, this.props.includeRoot, this.props.rootName);
- var className = "";
- if (this.props.className)
- className = this.props.className;
- return (
-
- );
- }
-});
+var AccountCombobox = require('./AccountCombobox.js');
+var AccountRegister = require('./AccountRegister.js');
const AddEditAccountModal = React.createClass({
getInitialState: function() {
@@ -139,7 +112,7 @@ const AddEditAccountModal = React.createClass({
account_map={this.props.account_map}
value={this.state.parentaccountid}
rootName={rootName}
- onSelect={this.handleParentChange}
+ onChange={this.handleParentChange}
ref="parent" />
@@ -179,6 +152,7 @@ const AddEditAccountModal = React.createClass({
}
});
+
const DeleteAccountModal = React.createClass({
getInitialState: function() {
if (this.props.initialAccount != null)
@@ -263,7 +237,7 @@ const DeleteAccountModal = React.createClass({
accounts={this.props.accounts}
account_map={this.props.account_map}
value={this.state.accountid}
- onSelect={this.handleChange}/>
+ onChange={this.handleChange}/>
{checkbox}
@@ -280,12 +254,8 @@ const DeleteAccountModal = React.createClass({
});
const AccountTreeNode = React.createClass({
- mixins: [CollapsibleMixin],
- getCollapsibleDOMNode: function() {
- return React.findDOMNode(this.refs.children);
- },
- getCollapsibleDimensionValue: function() {
- return React.findDOMNode(this.refs.children).scrollHeight;
+ getInitialState: function() {
+ return {expanded: false};
},
handleToggle: function(e) {
e.preventDefault();
@@ -300,8 +270,7 @@ const AccountTreeNode = React.createClass({
this.props.onSelect(this.props.account);
},
render: function() {
- var styles = this.getCollapsibleClassSet();
- var glyph = this.isExpanded() ? 'minus' : 'plus';
+ var glyph = this.state.expanded ? 'minus' : 'plus';
var active = (this.props.selectedAccount != null &&
this.props.account.AccountId == this.props.selectedAccount.AccountId);
var buttonStyle = active ? "info" : "link";
@@ -317,7 +286,7 @@ const AccountTreeNode = React.createClass({
});
var accounttreeClasses = "accounttree"
var expandButton = [];
- if (children.length > 0)
+ if (children.length > 0) {
expandButton.push((
));
- else
+ } else {
accounttreeClasses += "-nochildren";
+ }
return (
{expandButton}
@@ -336,9 +306,11 @@ const AccountTreeNode = React.createClass({
className="accounttree-name">
{this.props.account.Name}
-
- {children}
-
+
+
+ {children}
+
+
);
}
@@ -356,7 +328,7 @@ const AccountTree = React.createClass({
}
},
resize: function() {
- var div = React.findDOMNode(this);
+ var div = ReactDOM.findDOMNode(this);
this.setState({height: div.parentElement.clientHeight - 73});
},
componentDidMount: function() {
@@ -386,7 +358,8 @@ const AccountTree = React.createClass({
}
});
-const AccountsTab = React.createClass({
+module.exports = React.createClass({
+ displayName: "AccountsTab",
getInitialState: function() {
return {
selectedAccount: null,
@@ -436,7 +409,7 @@ const AccountsTab = React.createClass({
var accounts = this.props.accounts;
var account_map = this.props.account_map;
- var disabled = (this.state.selectedAccount == null) ? "disabled" : "";
+ var disabled = (this.state.selectedAccount == null) ? true : false;
return (
diff --git a/static/Makefile b/static/Makefile
new file mode 100644
index 0000000..be43e62
--- /dev/null
+++ b/static/Makefile
@@ -0,0 +1,4 @@
+all:
+ browserify -t [ babelify --presets [ react ] ] main.js -o bundle.js
+
+.PHONY = all
diff --git a/static/MoneyGoApp.js b/static/MoneyGoApp.js
new file mode 100644
index 0000000..e574a6d
--- /dev/null
+++ b/static/MoneyGoApp.js
@@ -0,0 +1,324 @@
+var React = require('react');
+
+var ReactBootstrap = require('react-bootstrap');
+var Jumbotron = ReactBootstrap.Jumbotron;
+var Tabs = ReactBootstrap.Tabs;
+var Tab = ReactBootstrap.Tab;
+var Modal = ReactBootstrap.Modal;
+
+var TopBar = require('./TopBar.js');
+var NewUserForm = require('./NewUserForm.js');
+var AccountSettingsModal = require('./AccountSettingsModal.js');
+var AccountsTab = require('./AccountsTab.js');
+
+module.exports = React.createClass({
+ displayName: "MoneyGoApp",
+ getInitialState: function() {
+ return {
+ hash: "home",
+ session: new Session(),
+ user: new User(),
+ accounts: [],
+ account_map: {},
+ securities: [],
+ security_map: {},
+ error: new Error(),
+ showAccountSettingsModal: false
+ };
+ },
+ componentDidMount: function() {
+ this.getSession();
+ this.handleHashChange();
+ if ("onhashchange" in window) {
+ window.onhashchange = this.handleHashChange;
+ }
+ },
+ handleHashChange: function() {
+ var hash = location.hash.replace(/^#/, '');
+ if (hash.length == 0)
+ hash = "home";
+ if (hash != this.state.hash)
+ this.setHash(hash);
+ },
+ setHash: function(hash) {
+ location.hash = hash;
+ if (this.state.hash != hash)
+ this.setState({hash: hash});
+ },
+ ajaxError: function(jqXHR, status, error) {
+ var e = new Error();
+ e.ErrorId = 5;
+ e.ErrorString = "Request Failed: " + status + error;
+ this.setState({error: e});
+ },
+ getSession: function() {
+ $.ajax({
+ type: "GET",
+ dataType: "json",
+ url: "session/",
+ success: function(data, status, jqXHR) {
+ var e = new Error();
+ var s = new Session();
+ e.fromJSON(data);
+ if (e.isError()) {
+ if (e.ErrorId != 1 /* Not Signed In*/)
+ this.setState({error: e});
+ } else {
+ s.fromJSON(data);
+ }
+ this.setState({session: s});
+ this.getUser();
+ this.getAccounts();
+ this.getSecurities();
+ }.bind(this),
+ error: this.ajaxError
+ });
+ },
+ getUser: function() {
+ if (!this.state.session.isSession())
+ return;
+ $.ajax({
+ type: "GET",
+ dataType: "json",
+ url: "user/"+this.state.session.UserId+"/",
+ success: function(data, status, jqXHR) {
+ var e = new Error();
+ var u = new User();
+ e.fromJSON(data);
+ if (e.isError()) {
+ this.setState({error: e});
+ } else {
+ u.fromJSON(data);
+ }
+ this.setState({user: u});
+ }.bind(this),
+ error: this.ajaxError
+ });
+ },
+ getSecurities: function() {
+ if (!this.state.session.isSession()) {
+ this.setState({securities: [], security_map: {}});
+ return;
+ }
+ $.ajax({
+ type: "GET",
+ dataType: "json",
+ url: "security/",
+ success: function(data, status, jqXHR) {
+ var e = new Error();
+ var securities = [];
+ var security_map = {};
+ e.fromJSON(data);
+ if (e.isError()) {
+ this.setState({error: e});
+ } else {
+ for (var i = 0; i < data.securities.length; i++) {
+ var s = new Security();
+ s.fromJSON(data.securities[i]);
+ securities.push(s);
+ security_map[s.SecurityId] = s;
+ }
+ }
+ this.setState({securities: securities, security_map: security_map});
+ }.bind(this),
+ error: this.ajaxError
+ });
+ },
+ getAccounts: function() {
+ if (!this.state.session.isSession()) {
+ this.setState({accounts: [], account_map: {}});
+ return;
+ }
+ $.ajax({
+ type: "GET",
+ dataType: "json",
+ url: "account/",
+ success: function(data, status, jqXHR) {
+ var e = new Error();
+ var accounts = [];
+ var account_map = {};
+ e.fromJSON(data);
+ if (e.isError()) {
+ this.setState({error: e});
+ } else {
+ for (var i = 0; i < data.accounts.length; i++) {
+ var a = new Account();
+ a.fromJSON(data.accounts[i]);
+ accounts.push(a);
+ account_map[a.AccountId] = a;
+ }
+ //Populate Children arrays in account objects
+ for (var i = 0; i < accounts.length; i++) {
+ var a = accounts[i];
+ if (!a.isRootAccount())
+ account_map[a.ParentAccountId].Children.push(a);
+ }
+ }
+ this.setState({accounts: accounts, account_map: account_map});
+ }.bind(this),
+ error: this.ajaxError
+ });
+ },
+ handleErrorClear: function() {
+ this.setState({error: new Error()});
+ },
+ handleLoginSubmit: function(user) {
+ $.ajax({
+ type: "POST",
+ dataType: "json",
+ url: "session/",
+ data: {user: user.toJSON()},
+ success: function(data, status, jqXHR) {
+ var e = new Error();
+ e.fromJSON(data);
+ if (e.isError()) {
+ this.setState({error: e});
+ } else {
+ this.getSession();
+ this.setHash("home");
+ }
+ }.bind(this),
+ error: this.ajaxError
+ });
+ },
+ handleLogoutSubmit: function() {
+ this.setState({accounts: [], account_map: {}});
+ $.ajax({
+ type: "DELETE",
+ dataType: "json",
+ url: "session/",
+ success: function(data, status, jqXHR) {
+ var e = new Error();
+ e.fromJSON(data);
+ if (e.isError()) {
+ this.setState({error: e});
+ }
+ this.setState({session: new Session(), user: new User()});
+ }.bind(this),
+ error: this.ajaxError
+ });
+ },
+ handleAccountSettings: function() {
+ this.setState({showAccountSettingsModal: true});
+ },
+ handleSettingsSubmitted: function(user) {
+ this.setState({
+ user: user,
+ showAccountSettingsModal: false
+ });
+ },
+ handleSettingsCanceled: function(user) {
+ this.setState({showAccountSettingsModal: false});
+ },
+ handleCreateNewUser: function() {
+ this.setHash("new_user");
+ },
+ handleGoHome: function(user) {
+ this.setHash("home");
+ },
+ handleCreateAccount: function(account) {
+ $.ajax({
+ type: "POST",
+ dataType: "json",
+ url: "account/",
+ data: {account: account.toJSON()},
+ success: function(data, status, jqXHR) {
+ var e = new Error();
+ e.fromJSON(data);
+ if (e.isError()) {
+ this.setState({error: e});
+ } else {
+ this.getAccounts();
+ }
+ }.bind(this),
+ error: this.ajaxError
+ });
+ },
+ handleUpdateAccount: function(account) {
+ $.ajax({
+ type: "PUT",
+ dataType: "json",
+ url: "account/"+account.AccountId+"/",
+ data: {account: account.toJSON()},
+ success: function(data, status, jqXHR) {
+ var e = new Error();
+ e.fromJSON(data);
+ if (e.isError()) {
+ this.setState({error: e});
+ } else {
+ this.getAccounts();
+ }
+ }.bind(this),
+ error: this.ajaxError
+ });
+ },
+ handleDeleteAccount: function(account) {
+ $.ajax({
+ type: "DELETE",
+ dataType: "json",
+ url: "account/"+account.AccountId+"/",
+ success: function(data, status, jqXHR) {
+ var e = new Error();
+ e.fromJSON(data);
+ if (e.isError()) {
+ this.setState({error: e});
+ } else {
+ this.getAccounts();
+ }
+ }.bind(this),
+ error: this.ajaxError
+ });
+ },
+ render: function() {
+ var mainContent;
+ if (this.state.hash == "new_user") {
+ mainContent =
+ } else {
+ if (this.state.user.isUser())
+ mainContent = (
+
+
+
+
+ Scheduled transactions go here...
+ Budgets go here...
+ Reports go here...
+ );
+ else
+ mainContent = (
+
+
+ MoneyGo
+ Go manage your money.
+
+ );
+ }
+
+ return (
+
+ );
+ }
+});
diff --git a/static/NewUserForm.js b/static/NewUserForm.js
new file mode 100644
index 0000000..22a3d2e
--- /dev/null
+++ b/static/NewUserForm.js
@@ -0,0 +1,147 @@
+var React = require('react');
+
+var Panel = require('react-bootstrap').Panel;
+var Input = require('react-bootstrap').Input;
+var Button = require('react-bootstrap').Button;
+var ButtonGroup = require('react-bootstrap').ButtonGroup;
+
+module.exports = React.createClass({
+ getInitialState: function() {
+ return {error: "",
+ name: "",
+ username: "",
+ email: "",
+ password: "",
+ confirm_password: "",
+ passwordChanged: false,
+ initial_password: ""};
+ },
+ passwordValidationState: function() {
+ if (this.state.passwordChanged) {
+ if (this.state.password.length >= 10)
+ return "success";
+ else if (this.state.password.length >= 6)
+ return "warning";
+ else
+ return "error";
+ }
+ },
+ confirmPasswordValidationState: function() {
+ if (this.state.confirm_password.length > 0) {
+ if (this.state.confirm_password == this.state.password)
+ return "success";
+ else
+ return "error";
+ }
+ },
+ handleCancel: function() {
+ if (this.props.onCancel != null)
+ this.props.onCancel();
+ },
+ handleChange: function() {
+ if (this.refs.password.getValue() != this.state.initial_password)
+ this.setState({passwordChanged: true});
+ this.setState({
+ name: this.refs.name.getValue(),
+ username: this.refs.username.getValue(),
+ email: this.refs.email.getValue(),
+ password: this.refs.password.getValue(),
+ confirm_password: this.refs.confirm_password.getValue()
+ });
+ },
+ handleSubmit: function(e) {
+ var u = new User();
+ var error = "";
+ e.preventDefault();
+
+ u.Name = this.state.name;
+ u.Username = this.state.username;
+ u.Email = this.state.email;
+ u.Password = this.state.password;
+ if (u.Password != this.state.confirm_password) {
+ this.setState({error: "Error: password do not match"});
+ return;
+ }
+
+ this.handleCreateNewUser(u);
+ },
+ handleCreateNewUser: function(user) {
+ $.ajax({
+ type: "POST",
+ dataType: "json",
+ url: "user/",
+ data: {user: user.toJSON()},
+ success: function(data, status, jqXHR) {
+ var e = new Error();
+ e.fromJSON(data);
+ if (e.isError()) {
+ this.setState({error: e});
+ } else {
+ this.props.onNewUser();
+ }
+ }.bind(this),
+ error: function(jqXHR, status, error) {
+ var e = new Error();
+ e.ErrorId = 5;
+ e.ErrorString = "Request Failed: " + status + error;
+ this.setState({error: e});
+ }.bind(this),
+ });
+ },
+ render: function() {
+ var title = Create New User
;
+ return (
+
+ {this.state.error}
+
+
+ );
+ }
+});
diff --git a/static/top_bar.js b/static/TopBar.js
similarity index 90%
rename from static/top_bar.js
rename to static/TopBar.js
index 241fbc6..766ff5c 100644
--- a/static/top_bar.js
+++ b/static/TopBar.js
@@ -1,11 +1,11 @@
-// Import all the objects we want to use from ReactBootstrap
-var Alert = ReactBootstrap.Alert;
+var React = require('react');
+var ReactBootstrap = require('react-bootstrap');
+var Alert = ReactBootstrap.Alert;
var Input = ReactBootstrap.Input;
var Button = ReactBootstrap.Button;
var DropdownButton = ReactBootstrap.DropdownButton;
var MenuItem = ReactBootstrap.MenuItem;
-
var Row = ReactBootstrap.Row;
var Col = ReactBootstrap.Col;
@@ -62,7 +62,7 @@ const LoginBar = React.createClass({
});
const LogoutBar = React.createClass({
- handleOnSelect: function(key) {
+ handleOnSelect: function(e, key) {
if (key == 1) {
if (this.props.onAccountSettings != null)
this.props.onAccountSettings();
@@ -79,7 +79,7 @@ const LogoutBar = React.createClass({
-
+
@@ -91,7 +91,8 @@ const LogoutBar = React.createClass({
}
});
-const TopBar = React.createClass({
+module.exports = React.createClass({
+ displayName: "TopBar",
render: function() {
var barContents;
var errorAlert;
diff --git a/static/external/fonts/rw-widgets.eot b/static/external/fonts/rw-widgets.eot
deleted file mode 100644
index 78b52e1..0000000
Binary files a/static/external/fonts/rw-widgets.eot and /dev/null differ
diff --git a/static/external/fonts/rw-widgets.svg b/static/external/fonts/rw-widgets.svg
deleted file mode 100644
index dc047a1..0000000
--- a/static/external/fonts/rw-widgets.svg
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/static/external/fonts/rw-widgets.ttf b/static/external/fonts/rw-widgets.ttf
deleted file mode 100644
index e6901bf..0000000
Binary files a/static/external/fonts/rw-widgets.ttf and /dev/null differ
diff --git a/static/external/fonts/rw-widgets.woff b/static/external/fonts/rw-widgets.woff
deleted file mode 100644
index fc7902d..0000000
Binary files a/static/external/fonts/rw-widgets.woff and /dev/null differ
diff --git a/static/external/react-bootstrap/react-bootstrap.min.js b/static/external/react-bootstrap/react-bootstrap.min.js
deleted file mode 100644
index 4b5b720..0000000
--- a/static/external/react-bootstrap/react-bootstrap.min.js
+++ /dev/null
@@ -1,11 +0,0 @@
-!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):"object"==typeof exports?exports.ReactBootstrap=t(require("react")):e.ReactBootstrap=t(e.React)}(this,function(e){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0});var o=r(39),s=n(o),a=r(40),i=n(a),l=r(22),u=n(l),p=r(41),d=n(p),f=r(3),c=n(f),h=r(42),m=n(h),y=r(9),v=n(y),g=r(14),b=n(g),P=r(23),O=n(P),T=r(43),_=n(T),w=r(47),C=n(w),E=r(44),N=n(E),x=r(45),k=n(x),S=r(46),M=n(S),j=r(10),D=n(j),I=r(48),A=n(I),B=r(15),K=n(B),L=r(16),H=n(L),R=r(11),F=n(R),W=r(24),U=n(W),z=r(26),V=n(z),q=r(50),G=n(q),Y=r(51),Q=n(Y),Z=r(27),J=n(Z),X=r(52),$=n(X),ee=r(53),te=n(ee),re=r(54),ne=n(re),oe=r(55),se=n(oe),ae=r(56),ie=n(ae),le=r(57),ue=n(le),pe=r(30),de=n(pe),fe=r(31),ce=n(fe),he=r(28),me=n(he),ye=r(29),ve=n(ye),ge=r(32),be=n(ge),Pe=r(59),Oe=n(Pe),Te=r(33),_e=n(Te),we=r(58),Ce=n(we),Ee=r(60),Ne=n(Ee),xe=r(18),ke=n(xe),Se=r(34),Me=n(Se),je=r(61),De=n(je),Ie=r(64),Ae=n(Ie),Be=r(66),Ke=n(Be),Le=r(35),He=n(Le),Re=r(62),Fe=n(Re),We=r(63),Ue=n(We),ze=r(67),Ve=n(ze),qe=r(68),Ge=n(qe),Ye=r(70),Qe=n(Ye),Ze=r(71),Je=n(Ze),Xe=r(72),$e=n(Xe),et=r(74),tt=n(et),rt=r(75),nt=n(rt),ot=r(73),st=n(ot),at=r(76),it=n(at),lt=r(77),ut=n(lt),pt=r(80),dt=n(pt),ft=r(78),ct=n(ft),ht=r(12),mt=n(ht),yt=r(19),vt=n(yt),gt=r(36),bt=n(gt);t["default"]={Accordion:s["default"],Affix:i["default"],AffixMixin:u["default"],Alert:d["default"],BootstrapMixin:c["default"],Badge:m["default"],Button:v["default"],ButtonGroup:b["default"],ButtonInput:O["default"],ButtonToolbar:_["default"],CollapsibleNav:C["default"],Carousel:N["default"],CarouselItem:k["default"],Col:M["default"],CollapsibleMixin:D["default"],DropdownButton:A["default"],DropdownMenu:K["default"],DropdownStateMixin:H["default"],FadeMixin:F["default"],FormControls:U["default"],Glyphicon:V["default"],Grid:G["default"],Input:Q["default"],Interpolate:J["default"],Jumbotron:$["default"],Label:te["default"],ListGroup:ne["default"],ListGroupItem:se["default"],MenuItem:ie["default"],Modal:ue["default"],ModalHeader:de["default"],ModalTitle:ce["default"],ModalBody:me["default"],ModalFooter:ve["default"],Nav:be["default"],Navbar:Oe["default"],NavItem:_e["default"],ModalTrigger:Ce["default"],Overlay:Me["default"],OverlayTrigger:Ne["default"],OverlayMixin:ke["default"],PageHeader:De["default"],Panel:Ke["default"],PanelGroup:He["default"],PageItem:Fe["default"],Pager:Ue["default"],Pagination:Ae["default"],Popover:Ve["default"],Portal:vt["default"],Position:bt["default"],ProgressBar:Ge["default"],Row:Qe["default"],SplitButton:Je["default"],SubNav:$e["default"],TabbedArea:tt["default"],Table:nt["default"],TabPane:st["default"],Thumbnail:it["default"],Tooltip:ut["default"],utils:dt["default"],Well:ct["default"],styleMaps:mt["default"]},e.exports=t["default"]},function(t,r){t.exports=e},function(e,t,r){var n;/*!
- Copyright (c) 2015 Jed Watson.
- Licensed under the MIT License (MIT), see
- http://jedwatson.github.io/classnames
- */
-!function(){"use strict";function o(){for(var e="",t=0;t1){var a=o(e),i=a[0],l=a.slice(1),u=""+l.join(", ")+" and "+i;return new Error("Invalid prop '"+r+"', only one of the following may be provided: "+u)}}return t}function p(e){if(void 0===e)throw new Error("No validations provided");if(!(e instanceof Array))throw new Error("Invalid argument must be an array");if(0===e.length)throw new Error("No validations provided");return function(t,r,n){for(var o=0;o>",m={isRequiredForA11y:function(e){return function(t,r,n){return null===t[r]?new Error("The prop `"+r+"` is required to make "+n+" accessible for users using assistive technologies such as screen readers `"):e(t,r,n)}},mountable:i(),elementType:d(),keyOf:l,singlePropFrom:u,all:p};t["default"]=m,e.exports=t["default"]},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function o(e,t,r){var n=0;return u["default"].Children.map(e,function(e){if(u["default"].isValidElement(e)){var o=n;return n++,t.call(r,e,o)}return e})}function s(e,t,r){var n=0;return u["default"].Children.forEach(e,function(e){u["default"].isValidElement(e)&&(t.call(r,e,n),n++)})}function a(e){var t=0;return u["default"].Children.forEach(e,function(e){u["default"].isValidElement(e)&&t++}),t}function i(e){var t=!1;return u["default"].Children.forEach(e,function(e){!t&&u["default"].isValidElement(e)&&(t=!0)}),t}Object.defineProperty(t,"__esModule",{value:!0});var l=r(1),u=n(l);t["default"]={map:o,forEach:s,numberOf:a,hasValidComponent:i},e.exports=t["default"]},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function o(e){var t=c["default"].findDOMNode(e);return t&&t.ownerDocument||document}function s(e){var t=o(e);return t.defaultView?t.defaultView:t.parentWindow}function a(e){var t=o(e);try{return t.activeElement||t.body}catch(r){return t.body}}function i(e){return o(e).defaultView.getComputedStyle(e,null)}function l(e){if(window.jQuery)return window.jQuery(e).offset();var t=o(e).documentElement,r={top:0,left:0};return"undefined"!=typeof e.getBoundingClientRect&&(r=e.getBoundingClientRect()),{top:r.top+window.pageYOffset-t.clientTop,left:r.left+window.pageXOffset-t.clientLeft}}function u(e,t){var r=void 0,n=void 0;return window.jQuery?t?(r=window.jQuery(e).offset(),n=window.jQuery(t).offset(),{top:r.top-n.top,left:r.left-n.left}):window.jQuery(e).position():(n={top:0,left:0},"fixed"===i(e).position?r=e.getBoundingClientRect():(t||(t=p(e)),r=l(e),"HTML"!==t.nodeName&&(n=l(t)),n.top+=parseInt(i(t).borderTopWidth,10),n.left+=parseInt(i(t).borderLeftWidth,10)),{top:r.top-n.top-parseInt(i(e).marginTop,10),left:r.left-n.left-parseInt(i(e).marginLeft,10)})}function p(e){for(var t=o(e).documentElement,r=e.offsetParent||t;r&&"HTML"!==r.nodeName&&"static"===i(r).position;)r=r.offsetParent;return r||t}function d(e,t){function r(e,t){for(;t;){if(t===e)return!0;t=t.parentNode}return!1}return e&&e.contains?e.contains(t):e&&e.compareDocumentPosition?e===t||!!(16&e.compareDocumentPosition(t)):r(e,t)}Object.defineProperty(t,"__esModule",{value:!0});var f=r(1),c=n(f),h=!("undefined"==typeof window||!window.document||!window.document.createElement);t["default"]={canUseDom:h,contains:d,ownerWindow:s,ownerDocument:o,getComputedStyles:i,getOffset:l,getPosition:u,activeElement:a,offsetParent:p},e.exports=t["default"]},function(e,t){"use strict";function r(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];return t.filter(function(e){return null!=e}).reduce(function(e,t){if("function"!=typeof t)throw new Error("Invalid Argument Type, must only provide functions, undefined, or null.");return null===e?t:function(){for(var r=arguments.length,n=Array(r),o=0;r>o;o++)n[o]=arguments[o];e.apply(this,n),t.apply(this,n)}},null)}Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=r,e.exports=t["default"]},function(e,t,r){"use strict";function n(e,t,r){}Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=n,e.exports=t["default"]},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0});var o=Object.assign||function(e){for(var t=1;t` Component","http://react-bootstrap.github.io/components.html#utilities-portal")}})},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0});var o=r(1),s=n(o),a=r(4),i=n(a),l=r(18),u=s["default"].createClass({displayName:"Portal",propTypes:{container:i["default"].mountable},mixins:[l.OverlayMixin],renderOverlay:function(){return this.props.children?s["default"].Children.only(this.props.children):null},render:function(){return null}});t["default"]=u,e.exports=t["default"]},function(e,t){"use strict";function r(){var e=document.createElement("div"),t=e.style;"AnimationEvent"in window||delete a.animationend.animation,"TransitionEvent"in window||delete a.transitionend.transition;for(var r in a){var n=a[r];for(var o in n)if(o in t){i.push(n[o]);break}}}function n(e,t,r){e.addEventListener(t,r,!1)}function o(e,t,r){e.removeEventListener(t,r,!1)}Object.defineProperty(t,"__esModule",{value:!0});var s=!("undefined"==typeof window||!window.document||!window.document.createElement),a={transitionend:{transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"mozTransitionEnd",OTransition:"oTransitionEnd",msTransition:"MSTransitionEnd"},animationend:{animation:"animationend",WebkitAnimation:"webkitAnimationEnd",MozAnimation:"mozAnimationEnd",OAnimation:"oAnimationEnd",msAnimation:"MSAnimationEnd"}},i=[];s&&r();var l={addEndEventListener:function(e,t){return 0===i.length?void window.setTimeout(t,0):void i.forEach(function(r){n(e,r,t)})},removeEndEventListener:function(e,t){0!==i.length&&i.forEach(function(r){o(e,r,t)})}};t["default"]=l,e.exports=t["default"]},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function o(e,t,r){var n=i.singlePropFrom(l)(e,t,r);if(!n){var o=a["default"].PropTypes.oneOfType(u);n=o(e,t,r)}return n}Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=o;var s=r(1),a=n(s),i=r(4),l=["children","value"],u=[a["default"].PropTypes.number,a["default"].PropTypes.string];e.exports=t["default"]},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0});var o=r(1),s=n(o),a=r(6),i=n(a),l=r(13),u=n(l),p={propTypes:{offset:s["default"].PropTypes.number,offsetTop:s["default"].PropTypes.number,offsetBottom:s["default"].PropTypes.number},getInitialState:function(){return{affixClass:"affix-top"}},getPinnedOffset:function(e){return this.pinnedOffset?this.pinnedOffset:(e.className=e.className.replace(/affix-top|affix-bottom|affix/,""),e.className+=e.className.length?" affix":"affix",this.pinnedOffset=i["default"].getOffset(e).top-window.pageYOffset,this.pinnedOffset)},checkPosition:function(){var e=void 0,t=void 0,r=void 0,n=void 0,o=void 0,a=void 0,l=void 0,u=void 0,p=void 0;this.isMounted()&&(e=s["default"].findDOMNode(this),t=document.documentElement.offsetHeight,r=window.pageYOffset,n=i["default"].getOffset(e),"top"===this.affixed&&(n.top+=r),o=null!=this.props.offsetTop?this.props.offsetTop:this.props.offset,a=null!=this.props.offsetBottom?this.props.offsetBottom:this.props.offset,(null!=o||null!=a)&&(null==o&&(o=0),null==a&&(a=0),l=null!=this.unpin&&r+this.unpin<=n.top?!1:null!=a&&n.top+e.offsetHeight>=t-a?"bottom":null!=o&&o>=r?"top":!1,this.affixed!==l&&(null!=this.unpin&&(e.style.top=""),u="affix"+(l?"-"+l:""),this.affixed=l,this.unpin="bottom"===l?this.getPinnedOffset(e):null,"bottom"===l&&(e.className=e.className.replace(/affix-top|affix-bottom|affix/,"affix-bottom"),p=t-a-e.offsetHeight-i["default"].getOffset(e).top),this.setState({affixClass:u,affixPositionTop:p}))))},checkPositionWithEventLoop:function(){setTimeout(this.checkPosition,0)},componentDidMount:function(){this._onWindowScrollListener=u["default"].listen(window,"scroll",this.checkPosition),this._onDocumentClickListener=u["default"].listen(i["default"].ownerDocument(this),"click",this.checkPositionWithEventLoop)},componentWillUnmount:function(){this._onWindowScrollListener&&this._onWindowScrollListener.remove(),this._onDocumentClickListener&&this._onDocumentClickListener.remove()},componentDidUpdate:function(e,t){t.affixClass===this.state.affixClass&&this.checkPositionWithEventLoop()}};t["default"]=p,e.exports=t["default"]},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){var r={};for(var n in e)t.indexOf(n)>=0||Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n]);return r}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n]);return r}Object.defineProperty(t,"__esModule",{value:!0});var s=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n]);return r}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n]);return r}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n]);return r}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(e.__proto__=t)}function i(e,t){return function(r){var n=function(e){function t(){s(this,t),null!=e&&e.apply(this,arguments)}return a(t,e),u(t,[{key:"getChildContext",value:function(){return this.props.context}},{key:"render",value:function(){var e=this.props,t=e.wrapped,r=(e.context,o(e,["wrapped","context"]));return d["default"].cloneElement(t,r)}}]),t}(d["default"].Component);n.childContextTypes=r;var i=function(){function r(){s(this,r)}return u(r,[{key:"render",value:function(){var r=l({},this.props);return r[t]=this.getWrappedOverlay(),d["default"].createElement(e,r,this.props.children)}},{key:"getWrappedOverlay",value:function(){return d["default"].createElement(n,{context:this.context,wrapped:this.props[t]})}}]),r}();return i.contextTypes=r,i}}Object.defineProperty(t,"__esModule",{value:!0});var l=Object.assign||function(e){for(var t=1;ti?-i:l>a?a-l:0}function s(e,t,r,n){var o=u.getContainerDimensions(r),s=o.width,a=e-n,i=e+n+t;return 0>a?-a:i>s?s-i:0}Object.defineProperty(t,"__esModule",{value:!0});var a=Object.assign||function(e){for(var t=1;t1||"string"==typeof this.props.children||"number"==typeof this.props.children},render:function(){var e={"pull-right":this.props.pullRight,badge:this.hasContent()};return a["default"].createElement("span",o({},this.props,{className:p["default"](this.props.className,e)}),this.props.children)}});t["default"]=d,e.exports=t["default"]},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0});var o=Object.assign||function(e){for(var t=1;tt?"prev":"next"},componentWillReceiveProps:function(e){var t=this.getActiveIndex();null!=e.activeIndex&&e.activeIndex!==t&&(clearTimeout(this.timeout),this.setState({previousActiveIndex:t,direction:null!=e.direction?e.direction:this.getDirection(t,e.activeIndex)}))},componentDidMount:function(){this.waitForNext()},componentWillUnmount:function(){clearTimeout(this.timeout)},next:function(e){e&&e.preventDefault();var t=this.getActiveIndex()+1,r=f["default"].numberOf(this.props.children);if(t>r-1){if(!this.props.wrap)return;t=0}this.handleSelect(t,"next")},prev:function(e){e&&e.preventDefault();var t=this.getActiveIndex()-1;if(0>t){if(!this.props.wrap)return;t=f["default"].numberOf(this.props.children)-1;
-}this.handleSelect(t,"prev")},pause:function(){this.isPaused=!0,clearTimeout(this.timeout)},play:function(){this.isPaused=!1,this.waitForNext()},waitForNext:function(){!this.isPaused&&this.props.slide&&this.props.interval&&null==this.props.activeIndex&&(this.timeout=setTimeout(this.next,this.props.interval))},handleMouseOver:function(){this.props.pauseOnHover&&this.pause()},handleMouseOut:function(){this.isPaused&&this.play()},render:function(){var e={carousel:!0,slide:this.props.slide};return a["default"].createElement("div",o({},this.props,{className:l["default"](this.props.className,e),onMouseOver:this.handleMouseOver,onMouseOut:this.handleMouseOut}),this.props.indicators?this.renderIndicators():null,a["default"].createElement("div",{className:"carousel-inner",ref:"inner"},f["default"].map(this.props.children,this.renderItem)),this.props.controls?this.renderControls():null)},renderPrev:function(){return a["default"].createElement("a",{className:"left carousel-control",href:"#prev",key:0,onClick:this.prev},this.props.prevIcon)},renderNext:function(){return a["default"].createElement("a",{className:"right carousel-control",href:"#next",key:1,onClick:this.next},this.props.nextIcon)},renderControls:function(){if(!this.props.wrap){var e=this.getActiveIndex(),t=f["default"].numberOf(this.props.children);return[0!==e?this.renderPrev():null,e!==t-1?this.renderNext():null]}return[this.renderPrev(),this.renderNext()]},renderIndicator:function(e,t){var r=t===this.getActiveIndex()?"active":null;return a["default"].createElement("li",{key:t,className:r,onClick:this.handleSelect.bind(this,t,null)})},renderIndicators:function(){var e=[];return f["default"].forEach(this.props.children,function(t,r){e.push(this.renderIndicator(t,r)," ")},this),a["default"].createElement("ol",{className:"carousel-indicators"},e)},getActiveIndex:function(){return null!=this.props.activeIndex?this.props.activeIndex:this.state.activeIndex},handleItemAnimateOutEnd:function(){this.setState({previousActiveIndex:null,direction:null},function(){this.waitForNext(),this.props.onSlideEnd&&this.props.onSlideEnd()})},renderItem:function(e,t){var r=this.getActiveIndex(),n=t===r,o=null!=this.state.previousActiveIndex&&this.state.previousActiveIndex===t&&this.props.slide;return s.cloneElement(e,{active:n,ref:e.ref,key:e.key?e.key:t,index:t,animateOut:o,animateIn:n&&null!=this.state.previousActiveIndex&&this.props.slide,direction:this.state.direction,onAnimateOutEnd:o?this.handleItemAnimateOutEnd:null})},handleSelect:function(e,t){clearTimeout(this.timeout);var r=this.getActiveIndex();if(t=t||this.getDirection(r,e),this.props.onSelect&&this.props.onSelect(e,t),null==this.props.activeIndex&&e!==r){if(null!=this.state.previousActiveIndex)return;this.setState({activeIndex:e,previousActiveIndex:r,direction:t})}}});t["default"]=m,e.exports=t["default"]},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0});var o=Object.assign||function(e){for(var t=1;t=0&&(t["col-"+o+this.props[n]]=!0),n=r+"Push",o=r+"-push-",this.props[n]>=0&&(t["col-"+o+this.props[n]]=!0),n=r+"Pull",o=r+"-pull-",this.props[n]>=0&&(t["col-"+o+this.props[n]]=!0)},this),a["default"].createElement(e,o({},this.props,{className:l["default"](this.props.className,t)}),this.props.children)}});t["default"]=c,e.exports=t["default"]},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0});var o=r(1),s=n(o),a=r(3),i=n(a),l=r(10),u=n(l),p=r(2),d=n(p),f=r(6),c=n(f),h=r(5),m=n(h),y=r(7),v=n(y),g=s["default"].createClass({displayName:"CollapsibleNav",mixins:[i["default"],u["default"]],propTypes:{onSelect:s["default"].PropTypes.func,activeHref:s["default"].PropTypes.string,activeKey:s["default"].PropTypes.any,collapsible:s["default"].PropTypes.bool,expanded:s["default"].PropTypes.bool,eventKey:s["default"].PropTypes.any},getCollapsibleDOMNode:function(){return s["default"].findDOMNode(this)},getCollapsibleDimensionValue:function(){var e=0,t=this.refs;for(var r in t)if(t.hasOwnProperty(r)){var n=s["default"].findDOMNode(t[r]),o=n.offsetHeight,a=c["default"].getComputedStyles(n);e+=o+parseInt(a.marginTop,10)+parseInt(a.marginBottom,10)}return e},render:function(){var e=this.props.collapsible?this.getCollapsibleClassSet("navbar-collapse"):null,t=this.props.collapsible?this.renderCollapsibleNavChildren:this.renderChildren;return s["default"].createElement("div",{eventKey:this.props.eventKey,className:d["default"](this.props.className,e)},m["default"].map(this.props.children,t))},getChildActiveProp:function(e){return e.props.active?!0:null!=this.props.activeKey&&e.props.eventKey===this.props.activeKey?!0:null!=this.props.activeHref&&e.props.href===this.props.activeHref?!0:e.props.active},renderChildren:function(e,t){var r=e.key?e.key:t;return o.cloneElement(e,{activeKey:this.props.activeKey,activeHref:this.props.activeHref,ref:"nocollapse_"+r,key:r,navItem:!0})},renderCollapsibleNavChildren:function(e,t){var r=e.key?e.key:t;return o.cloneElement(e,{active:this.getChildActiveProp(e),activeKey:this.props.activeKey,activeHref:this.props.activeHref,onSelect:v["default"](e.props.onSelect,this.props.onSelect),ref:"collapsible_"+r,key:r,navItem:!0})}});t["default"]=g,e.exports=t["default"]},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0});var o=Object.assign||function(e){for(var t=1;t-1?(v["default"]("Input type="+this.props.type,"ButtonInput"),u["default"].createElement(c["default"],this.props)):"static"===this.props.type?(v["default"]("Input type=static","StaticText"),u["default"].createElement(m["default"].Static,this.props)):i(Object.getPrototypeOf(t.prototype),"render",this).call(this)}}]),t}(d["default"]);t["default"]=g,e.exports=t["default"]},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0});var o=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n]);return r}function s(e,t){var r=_["default"].ownerDocument(t);return e===r.body||e===r.documentElement?r.documentElement.clientHeight:e.clientHeight}function a(e){return e.props.container&&c["default"].findDOMNode(e.props.container)||_["default"].ownerDocument(e).body}function i(e,t){return function(r,n,o){var s=t;return void 0===r[e]&&(s=s.isRequired),s(r,n,o)}}function l(e){var t=[];return c["default"].Children.forEach(e,function(e){return t.push(e)}),t}function u(e,t){var r=_["default"].ownerDocument(e),n=!r.addEventListener,o=void 0;return L&&L.remove(),n?(document.attachEvent("onfocusin",t),o=function(){return document.detachEvent("onfocusin",t)}):(document.addEventListener("focus",t,!0),o=function(){return document.removeEventListener("focus",t,!0)}),L={remove:o}}function p(){if(void 0!==H)return H;var e=document.createElement("div");e.style.position="absolute",e.style.top="-9999px",e.style.width="50px",e.style.height="50px",e.style.overflow="scroll",document.body.appendChild(e),H=e.offsetWidth-e.clientWidth,document.body.removeChild(e),e=null}Object.defineProperty(t,"__esModule",{value:!0});var d=Object.assign||function(e){for(var t=1;ts(n,this),this._originalPadding=n.style.paddingRight,this._containerIsOverflowing&&(n.style.paddingRight=parseInt(this._originalPadding||0,10)+p()+"px"),this.props.backdrop&&this.iosClickHack(),this.setState(this._getStyles(),function(){return e.focusModalContent()})},componentDidUpdate:function(e){if(this.props.backdrop&&this.props.backdrop!==e.backdrop&&(this.iosClickHack(),this.setState(this._getStyles())),this.props.container!==e.container){var t=a(this);this._containerIsOverflowing=t.scrollHeight>s(t,this)}},componentWillUnmount:function(){this._onDocumentKeyupListener.remove(),this._onWindowResizeListener.remove(),this._onFocusinListener&&this._onFocusinListener.remove();var e=a(this);e.style.paddingRight=this._originalPadding,e.className=e.className.replace(/ ?modal-open/,""),this.restoreLastFocus()},handleBackdropClick:function(e){e.target===e.currentTarget&&this._getHide()()},handleDocumentKeyUp:function(e){this.props.keyboard&&27===e.keyCode&&this._getHide()()},handleWindowResize:function(){this.setState(this._getStyles())},checkForFocus:function(){if(_["default"].canUseDom)try{this.lastFocus=document.activeElement}catch(e){}},focusModalContent:function(){var e=c["default"].findDOMNode(this.refs.modal),t=_["default"].activeElement(this),r=t&&_["default"].contains(e,t);this.props.autoFocus&&!r&&(this.lastFocus=t,e.focus())},restoreLastFocus:function(){this.lastFocus&&(this.lastFocus.focus(),this.lastFocus=null)},enforceFocus:function(){if(this.isMounted()){var e=_["default"].activeElement(this),t=c["default"].findDOMNode(this.refs.modal);t===e||_["default"].contains(t,e)||t.focus()}},_getStyles:function(){if(!_["default"].canUseDom)return{};var e=c["default"].findDOMNode(this.refs.modal),t=e.scrollHeight,r=a(this),n=this._containerIsOverflowing,o=t>s(r,this);return{dialogStyles:{paddingRight:n&&!o?p():void 0,paddingLeft:!n&&o?p():void 0}}}}),F=c["default"].createClass({displayName:"Modal",propTypes:d({},k["default"].propTypes,R.propTypes),defaultProps:{show:null},render:function(){var e=this.props,t=e.show,r=o(e,["show"]),n=c["default"].createElement(R,r,this.props.children);return this.props.__isUsedInModalTrigger||null==t?n:c["default"].createElement(k["default"],{container:r.container},t&&n)}});F.Body=M["default"],F.Header=D["default"],F.Title=A["default"],F.Footer=K["default"],t["default"]=F,e.exports=t["default"]},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function o(e){return function(){for(var t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];return p["default"]("The Modal prop `onRequestHide`","the `onHide` prop"),e.apply(void 0,r)}}Object.defineProperty(t,"__esModule",{value:!0});var s=r(1),a=n(s),i=r(4),l=n(i),u=r(8),p=n(u),d=r(7),f=n(d),c=r(37),h=n(c),m=r(18),y=a["default"].createClass({displayName:"ModalTrigger",mixins:[m.OverlayMixin],propTypes:{modal:a["default"].PropTypes.node.isRequired,container:l["default"].mountable,onBlur:a["default"].PropTypes.func,onFocus:a["default"].PropTypes.func,onMouseOut:a["default"].PropTypes.func,onMouseOver:a["default"].PropTypes.func},getInitialState:function(){return{isOverlayShown:!1}},show:function(){this.setState({isOverlayShown:!0})},hide:function(){this.setState({isOverlayShown:!1})},toggle:function(){this.setState({isOverlayShown:!this.state.isOverlayShown})},renderOverlay:function(){var e=this.props.modal;return this.state.isOverlayShown?s.cloneElement(e,{onHide:this.hide,onRequestHide:o(this.hide),__isUsedInModalTrigger:!0}):a["default"].createElement("span",null)},render:function(){var e=a["default"].Children.only(this.props.children),t={};return t.onClick=f["default"](e.props.onClick,this.toggle),t.onMouseOver=f["default"](e.props.onMouseOver,this.props.onMouseOver),t.onMouseOut=f["default"](e.props.onMouseOut,this.props.onMouseOut),t.onFocus=f["default"](e.props.onFocus,this.props.onFocus),t.onBlur=f["default"](e.props.onBlur,this.props.onBlur),s.cloneElement(e,t)}});y.withContext=h["default"](y,"modal");var v=a["default"].createClass({displayName:"DepreciatedModalTrigger",componentWillMount:function(){p["default"]("The `ModalTrigger` component","the `Modal` component directly","http://react-bootstrap.github.io/components.html#modals")},render:function(){return a["default"].createElement(y,this.props)}});v.withContext=y.withContext,v.ModalTrigger=y,t["default"]=v,e.exports=t["default"]},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0});var o=Object.assign||function(e){for(var t=1;t=0:e===t}Object.defineProperty(t,"__esModule",{value:!0});var s=Object.assign||function(e){for(var t=1;t1?d:1,n=l>=t+s,n?r=t+s-1:(r=l,t=l-s+1)}else t=1,r=l;for(var c=t;r>=c;c++)e.push(a["default"].createElement(f["default"],{key:c,eventKey:c,active:c===i,onSelect:u},c));return s&&n&&p&&e.push(a["default"].createElement(f["default"],{key:"ellipsis",disabled:!0},a["default"].createElement("span",{"aria-label":"More"},"..."))),e},renderPrev:function(){return this.props.prev?a["default"].createElement(f["default"],{key:"prev",eventKey:this.props.activePage-1,disabled:1===this.props.activePage,onSelect:this.props.onSelect},a["default"].createElement("span",{"aria-label":"Previous"},"‹")):null},renderNext:function(){return this.props.next?a["default"].createElement(f["default"],{key:"next",eventKey:this.props.activePage+1,disabled:this.props.activePage===this.props.items,onSelect:this.props.onSelect},a["default"].createElement("span",{"aria-label":"Next"},"›")):null},renderFirst:function(){return this.props.first?a["default"].createElement(f["default"],{key:"first",eventKey:1,disabled:1===this.props.activePage,onSelect:this.props.onSelect},a["default"].createElement("span",{"aria-label":"First"},"«")):null},renderLast:function(){return this.props.last?a["default"].createElement(f["default"],{key:"last",eventKey:this.props.items,disabled:this.props.activePage===this.props.items,onSelect:this.props.onSelect},a["default"].createElement("span",{"aria-label":"Last"},"»")):null},render:function(){return a["default"].createElement("ul",o({},this.props,{className:l["default"](this.props.className,this.getBsClassSet())}),this.renderFirst(),this.renderPrev(),this.renderPageButtons(),this.renderNext(),this.renderLast())}});t["default"]=c,e.exports=t["default"]},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0});var o=r(1),s=n(o),a=r(2),i=n(a),l=r(3),u=n(l),p=r(79),d=n(p),f=s["default"].createClass({displayName:"PaginationButton",mixins:[u["default"]],propTypes:{className:s["default"].PropTypes.string,eventKey:s["default"].PropTypes.oneOfType([s["default"].PropTypes.string,s["default"].PropTypes.number]),onSelect:s["default"].PropTypes.func,disabled:s["default"].PropTypes.bool,active:s["default"].PropTypes.bool},getDefaultProps:function(){return{active:!1,disabled:!1}},handleClick:function(e){if(e.preventDefault(),this.props.onSelect){var t=d["default"](this.props.eventKey);this.props.onSelect(e,t)}},render:function(){var e=this.getBsClassSet();return e.active=this.props.active,e.disabled=this.props.disabled,s["default"].createElement("li",{className:i["default"](this.props.className,e)},s["default"].createElement("a",{href:"#",onClick:this.handleClick},this.props.children))}});t["default"]=f,e.exports=t["default"]},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0});var o=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n]);return r}function s(e){var t=void 0;return f["default"].forEach(e,function(e){null==t&&(t=e.props.eventKey)}),t}Object.defineProperty(t,"__esModule",{value:!0});
-var a=Object.assign||function(e){for(var t=1;t li.rw-list-optgroup,
-ul.rw-selectlist > li.rw-list-optgroup {
- font-weight: bold;
-}
-ul.rw-list > li.rw-list-option,
-ul.rw-selectlist > li.rw-list-option {
- cursor: pointer;
- border: 1px solid transparent;
- padding-left: 10px;
- padding-right: 10px;
- border-radius: 3px;
-}
-ul.rw-list > li.rw-list-option:hover,
-ul.rw-selectlist > li.rw-list-option:hover {
- background-color: #e6e6e6;
- border-color: #adadad;
-}
-ul.rw-list > li.rw-list-option.rw-state-focus,
-ul.rw-selectlist > li.rw-list-option.rw-state-focus {
- background-color: #ffffff;
- border: #66afe9 1px solid;
- color: #333333;
-}
-ul.rw-list > li.rw-list-option.rw-state-selected,
-ul.rw-selectlist > li.rw-list-option.rw-state-selected {
- background-color: #adadad;
- border: #adadad 1px solid;
- color: #333333;
-}
-ul.rw-list.rw-list-grouped > li.rw-list-optgroup {
- padding-left: 10px;
-}
-ul.rw-list.rw-list-grouped > li.rw-list-option {
- padding-left: 20px;
-}
-.rw-widget {
- position: relative;
-}
-.rw-open.rw-widget,
-.rw-open > .rw-multiselect-wrapper {
- border-bottom-right-radius: 0;
- border-bottom-left-radius: 0;
-}
-.rw-open-up.rw-widget,
-.rw-open-up > .rw-multiselect-wrapper {
- border-top-right-radius: 0;
- border-top-left-radius: 0;
-}
-.rw-combobox .rw-list,
-.rw-datetimepicker .rw-list,
-.rw-numberpicker .rw-list,
-.rw-dropdownlist .rw-list,
-.rw-multiselect .rw-list {
- max-height: 200px;
- height: auto;
-}
-.rw-widget {
- background-color: #ffffff;
- border: #cccccc 1px solid;
- border-radius: 4px;
-}
-.rw-widget .rw-input {
- border-bottom-left-radius: 4px;
- border-top-left-radius: 4px;
-}
-.rw-rtl.rw-widget .rw-input {
- border-bottom-left-radius: 0;
- border-top-left-radius: 0;
- border-bottom-right-radius: 4px;
- border-top-right-radius: 4px;
-}
-.rw-widget > .rw-select {
- border-left: #cccccc 1px solid;
-}
-.rw-rtl.rw-widget > .rw-select {
- border-right: #cccccc 1px solid;
- border-left: none;
-}
-.rw-widget.rw-state-focus,
-.rw-widget.rw-state-focus:hover {
- -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
- box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
- border-color: #66afe9;
- outline: 0;
-}
-.rw-widget.rw-state-readonly,
-.rw-widget.rw-state-readonly > .rw-multiselect-wrapper {
- cursor: not-allowed;
-}
-.rw-widget.rw-state-disabled,
-.rw-widget.rw-state-disabled:hover,
-.rw-widget.rw-state-disabled:active {
- -webkit-box-shadow: none;
- box-shadow: none;
- background-color: #eeeeee;
- border-color: #cccccc;
-}
-.rw-combobox,
-.rw-datetimepicker,
-.rw-numberpicker,
-.rw-dropdownlist {
- padding-right: 1.9em;
-}
-.rw-combobox.rw-rtl,
-.rw-datetimepicker.rw-rtl,
-.rw-numberpicker.rw-rtl,
-.rw-dropdownlist.rw-rtl {
- padding-right: 0;
- padding-left: 1.9em;
-}
-.rw-combobox > .rw-input,
-.rw-datetimepicker > .rw-input,
-.rw-numberpicker > .rw-input,
-.rw-dropdownlist > .rw-input {
- width: 100%;
- border: none;
- outline: 0;
-}
-.rw-combobox > .rw-input::-moz-placeholder,
-.rw-datetimepicker > .rw-input::-moz-placeholder,
-.rw-numberpicker > .rw-input::-moz-placeholder,
-.rw-dropdownlist > .rw-input::-moz-placeholder {
- color: #999999;
- opacity: 1;
-}
-.rw-combobox > .rw-input:-ms-input-placeholder,
-.rw-datetimepicker > .rw-input:-ms-input-placeholder,
-.rw-numberpicker > .rw-input:-ms-input-placeholder,
-.rw-dropdownlist > .rw-input:-ms-input-placeholder {
- color: #999999;
-}
-.rw-combobox > .rw-input::-webkit-input-placeholder,
-.rw-datetimepicker > .rw-input::-webkit-input-placeholder,
-.rw-numberpicker > .rw-input::-webkit-input-placeholder,
-.rw-dropdownlist > .rw-input::-webkit-input-placeholder {
- color: #999999;
-}
-.rw-select {
- position: absolute;
- width: 1.9em;
- height: 100%;
- right: 0;
-}
-.rw-select.rw-btn,
-.rw-select > .rw-btn {
- height: 100%;
- vertical-align: middle;
- outline: 0;
-}
-.rw-rtl .rw-select {
- left: 0;
- right: auto;
-}
-.rw-multiselect,
-.rw-combobox input.rw-input,
-.rw-datetimepicker input.rw-input,
-.rw-numberpicker input.rw-input {
- -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
- box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
-}
-.rw-combobox:active,
-.rw-datetimepicker:active,
-.rw-dropdownlist:active,
-.rw-header > .rw-btn:active,
-.rw-numberpicker .rw-btn.rw-state-active,
-.rw-combobox:active.rw-state-focus,
-.rw-datetimepicker:active.rw-state-focus,
-.rw-dropdownlist:active.rw-state-focus,
-.rw-header > .rw-btn:active.rw-state-focus,
-.rw-numberpicker .rw-btn.rw-state-active.rw-state-focus {
- background-image: none;
- -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
- box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
-}
-.rw-combobox:hover,
-.rw-datetimepicker:hover,
-.rw-numberpicker:hover,
-.rw-dropdownlist:hover {
- background-color: #e6e6e6;
- border-color: #adadad;
-}
-.rw-dropdownlist.rw-state-disabled,
-.rw-dropdownlist.rw-state-readonly {
- cursor: not-allowed;
-}
-.rw-dropdownlist > .rw-input {
- background-color: transparent;
- padding-top: 0;
- padding-bottom: 0;
-}
-.rw-dropdownlist > .rw-select,
-.rw-dropdownlist > .rw-select.rw-rtl {
- border-width: 0;
-}
-.rw-numberpicker .rw-btn {
- display: block;
- height: 1.143em;
- line-height: 1.143em;
- width: 100%;
- border-width: 0;
-}
diff --git a/static/external/react-widgets/loader-big.gif b/static/external/react-widgets/loader-big.gif
deleted file mode 100644
index 1106645..0000000
Binary files a/static/external/react-widgets/loader-big.gif and /dev/null differ
diff --git a/static/external/react-widgets/loading.gif b/static/external/react-widgets/loading.gif
deleted file mode 100644
index ded8d36..0000000
Binary files a/static/external/react-widgets/loading.gif and /dev/null differ
diff --git a/static/external/react-widgets/react-widgets.css b/static/external/react-widgets/react-widgets.css
deleted file mode 100644
index a0227a8..0000000
--- a/static/external/react-widgets/react-widgets.css
+++ /dev/null
@@ -1,730 +0,0 @@
-/* Noramlize.css */
-.rw-btn,
-.rw-input {
- color: inherit;
- font: inherit;
- margin: 0;
-}
-button.rw-input {
- overflow: visible;
-}
-button.rw-input,
-select.rw-input {
- text-transform: none;
-}
-button.rw-input,
-html input[type="button"].rw-input,
-input[type="reset"].rw-input,
-input[type="submit"].rw-input {
- -webkit-appearance: button;
- cursor: pointer;
-}
-button[disabled].rw-input,
-html input[disabled].rw-input {
- cursor: not-allowed;
-}
-button.rw-input::-moz-focus-inner,
-input.rw-input::-moz-focus-inner {
- border: 0;
- padding: 0;
-}
-/* -------------- */
-.rw-sr {
- position: absolute;
- width: 1px;
- height: 1px;
- margin: -1px;
- padding: 0;
- overflow: hidden;
- clip: rect(0, 0, 0, 0);
- border: 0;
-}
-.rw-widget,
-.rw-widget * {
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
-}
-.rw-widget:before,
-.rw-widget *:before,
-.rw-widget:after,
-.rw-widget *:after {
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
-}
-@font-face {
- font-family: 'RwWidgets';
- src: url('../fonts/rw-widgets.eot?v=4.1.0');
- src: url('../fonts/rw-widgets.eot?#iefix&v=4.1.0') format('embedded-opentype'), url('../fonts/rw-widgets.woff?v=4.1.0') format('woff'), url('../fonts/rw-widgets.ttf?v=4.1.0') format('truetype'), url('../fonts/rw-widgets.svg?v=4.1.0#fontawesomeregular') format('svg');
- font-weight: normal;
- font-style: normal;
-}
-.rw-i {
- display: inline-block;
- font-family: RwWidgets;
- font-style: normal;
- font-weight: normal;
- line-height: 1em;
- font-variant: normal;
- text-transform: none;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-.rw-i-caret-down:before {
- content: '\e803';
-}
-.rw-i-caret-up:before {
- content: '\e800';
-}
-.rw-i-caret-left:before {
- content: '\e801';
-}
-.rw-i-caret-right:before {
- content: '\e802';
-}
-.rw-i-clock-o:before {
- content: '\e805';
-}
-.rw-i-calendar:before {
- content: '\e804';
-}
-.rw-i-search:before {
- content: '\e806';
-}
-/* for debugging */
-.rw-widget {
- outline: 0;
- -moz-background-clip: border-box;
- -webkit-background-clip: border-box;
- background-clip: border-box;
-}
-.rw-btn {
- color: #333333;
- line-height: 2.286em;
- display: inline-block;
- margin: 0;
- text-align: center;
- vertical-align: middle;
- background: none;
- background-image: none;
- border: 1px solid transparent;
- padding: 0;
- white-space: nowrap;
-}
-.rw-rtl {
- direction: rtl;
-}
-.rw-input {
- color: #555555;
- height: 2.286em;
- padding: 0.429em 0.857em;
- background-color: #ffffff;
-}
-.rw-input[disabled] {
- -webkit-box-shadow: none;
- box-shadow: none;
- cursor: not-allowed;
- opacity: 1;
- background-color: #eeeeee;
- border-color: #cccccc;
-}
-.rw-input[readonly] {
- cursor: not-allowed;
-}
-.rw-filter-input {
- position: relative;
- width: 100%;
- padding-right: 1.9em;
- border: #cccccc 1px solid;
- border-radius: 4px;
- margin-bottom: 2px;
-}
-.rw-rtl .rw-filter-input {
- padding-left: 1.9em;
- padding-right: 0;
-}
-.rw-filter-input > .rw-input {
- width: 100%;
- border: none;
- outline: none;
-}
-.rw-filter-input > span {
- margin-top: -2px;
-}
-.rw-i.rw-loading {
- background: url("../img/loading.gif") no-repeat center;
- width: 16px;
- height: 100%;
-}
-.rw-i.rw-loading:before {
- content: "";
-}
-.rw-loading-mask {
- border-radius: 4px;
- position: relative;
-}
-.rw-loading-mask:after {
- content: '';
- background: url("../img/loader-big.gif") no-repeat center;
- position: absolute;
- background-color: #fff;
- opacity: 0.7;
- top: 0;
- left: 0;
- height: 100%;
- width: 100%;
-}
-.rw-now {
- font-weight: 600;
-}
-.rw-state-focus {
- background-color: #ffffff;
- border: #66afe9 1px solid;
- color: #333333;
-}
-.rw-state-selected {
- background-color: #adadad;
- border: #adadad 1px solid;
- color: #333333;
-}
-.rw-state-disabled {
- -webkit-box-shadow: none;
- box-shadow: none;
- cursor: not-allowed;
- opacity: 1;
-}
-.rw-btn,
-.rw-dropdownlist {
- cursor: pointer;
-}
-.rw-btn[disabled],
-.rw-state-disabled .rw-btn,
-.rw-state-readonly .rw-btn {
- -webkit-box-shadow: none;
- box-shadow: none;
- pointer-events: none;
- cursor: not-allowed;
- filter: alpha(opacity=65);
- opacity: .65;
-}
-ul.rw-list,
-.rw-selectlist {
- margin: 0;
- padding-left: 0;
- list-style: none;
- padding: 5px 0;
- overflow: auto;
- outline: 0;
- height: 100%;
-}
-ul.rw-list > li,
-.rw-selectlist > li {
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-}
-ul.rw-list > li.rw-list-optgroup,
-.rw-selectlist > li.rw-list-optgroup {
- font-weight: bold;
-}
-ul.rw-list > li.rw-list-option,
-ul.rw-list > li.rw-list-empty,
-.rw-selectlist > li.rw-list-option,
-.rw-selectlist > li.rw-list-empty {
- padding-left: 10px;
- padding-right: 10px;
-}
-ul.rw-list > li.rw-list-option,
-.rw-selectlist > li.rw-list-option {
- cursor: pointer;
- border: 1px solid transparent;
- border-radius: 3px;
-}
-ul.rw-list > li.rw-list-option:hover,
-.rw-selectlist > li.rw-list-option:hover {
- background-color: #e6e6e6;
- border-color: #adadad;
-}
-ul.rw-list > li.rw-list-option.rw-state-focus,
-.rw-selectlist > li.rw-list-option.rw-state-focus {
- background-color: #ffffff;
- border: #66afe9 1px solid;
- color: #333333;
-}
-ul.rw-list > li.rw-list-option.rw-state-selected,
-.rw-selectlist > li.rw-list-option.rw-state-selected {
- background-color: #adadad;
- border: #adadad 1px solid;
- color: #333333;
-}
-ul.rw-list.rw-list-grouped > li.rw-list-optgroup,
-.rw-selectlist.rw-list-grouped > li.rw-list-optgroup {
- padding-left: 10px;
-}
-ul.rw-list.rw-list-grouped > li.rw-list-option,
-.rw-selectlist.rw-list-grouped > li.rw-list-option {
- padding-left: 20px;
-}
-.rw-widget {
- position: relative;
-}
-.rw-open.rw-widget,
-.rw-open > .rw-multiselect-wrapper {
- border-bottom-right-radius: 0;
- border-bottom-left-radius: 0;
-}
-.rw-open-up.rw-widget,
-.rw-open-up > .rw-multiselect-wrapper {
- border-top-right-radius: 0;
- border-top-left-radius: 0;
-}
-.rw-combobox .rw-list,
-.rw-datetimepicker .rw-list,
-.rw-numberpicker .rw-list,
-.rw-dropdownlist .rw-list,
-.rw-multiselect .rw-list {
- max-height: 200px;
- height: auto;
-}
-.rw-widget {
- background-color: #ffffff;
- border: #cccccc 1px solid;
- border-radius: 4px;
-}
-.rw-widget .rw-input {
- border-bottom-left-radius: 4px;
- border-top-left-radius: 4px;
-}
-.rw-rtl.rw-widget .rw-input {
- border-bottom-left-radius: 0;
- border-top-left-radius: 0;
- border-bottom-right-radius: 4px;
- border-top-right-radius: 4px;
-}
-.rw-widget > .rw-select {
- border-left: #cccccc 1px solid;
-}
-.rw-rtl.rw-widget > .rw-select {
- border-right: #cccccc 1px solid;
- border-left: none;
-}
-.rw-widget.rw-state-focus,
-.rw-widget.rw-state-focus:hover {
- -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
- box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
- border-color: #66afe9;
- outline: 0;
-}
-.rw-widget.rw-state-readonly,
-.rw-widget.rw-state-readonly > .rw-multiselect-wrapper {
- cursor: not-allowed;
-}
-.rw-widget.rw-state-disabled,
-.rw-widget.rw-state-disabled:hover,
-.rw-widget.rw-state-disabled:active {
- -webkit-box-shadow: none;
- box-shadow: none;
- background-color: #eeeeee;
- border-color: #cccccc;
-}
-.rw-combobox,
-.rw-datetimepicker,
-.rw-numberpicker,
-.rw-dropdownlist {
- padding-right: 1.9em;
-}
-.rw-combobox.rw-rtl,
-.rw-datetimepicker.rw-rtl,
-.rw-numberpicker.rw-rtl,
-.rw-dropdownlist.rw-rtl {
- padding-right: 0;
- padding-left: 1.9em;
-}
-.rw-combobox > .rw-input,
-.rw-datetimepicker > .rw-input,
-.rw-numberpicker > .rw-input,
-.rw-dropdownlist > .rw-input {
- width: 100%;
- border: none;
- outline: 0;
-}
-.rw-combobox > .rw-input::-moz-placeholder,
-.rw-datetimepicker > .rw-input::-moz-placeholder,
-.rw-numberpicker > .rw-input::-moz-placeholder,
-.rw-dropdownlist > .rw-input::-moz-placeholder {
- color: #999999;
- opacity: 1;
-}
-.rw-combobox > .rw-input:-ms-input-placeholder,
-.rw-datetimepicker > .rw-input:-ms-input-placeholder,
-.rw-numberpicker > .rw-input:-ms-input-placeholder,
-.rw-dropdownlist > .rw-input:-ms-input-placeholder {
- color: #999999;
-}
-.rw-combobox > .rw-input::-webkit-input-placeholder,
-.rw-datetimepicker > .rw-input::-webkit-input-placeholder,
-.rw-numberpicker > .rw-input::-webkit-input-placeholder,
-.rw-dropdownlist > .rw-input::-webkit-input-placeholder {
- color: #999999;
-}
-.rw-placeholder {
- color: #999999;
-}
-.rw-select {
- position: absolute;
- width: 1.9em;
- height: 100%;
- right: 0;
-}
-.rw-select.rw-btn,
-.rw-select > .rw-btn {
- height: 100%;
- vertical-align: middle;
- outline: 0;
-}
-.rw-rtl .rw-select {
- left: 0;
- right: auto;
-}
-.rw-multiselect,
-.rw-combobox input.rw-input,
-.rw-datetimepicker input.rw-input,
-.rw-numberpicker input.rw-input {
- -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
- box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
-}
-.rw-combobox:active,
-.rw-datetimepicker:active,
-.rw-dropdownlist:active,
-.rw-header > .rw-btn:active,
-.rw-numberpicker .rw-btn.rw-state-active,
-.rw-combobox:active.rw-state-focus,
-.rw-datetimepicker:active.rw-state-focus,
-.rw-dropdownlist:active.rw-state-focus,
-.rw-header > .rw-btn:active.rw-state-focus,
-.rw-numberpicker .rw-btn.rw-state-active.rw-state-focus {
- background-image: none;
- -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
- box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
-}
-.rw-combobox:hover,
-.rw-datetimepicker:hover,
-.rw-numberpicker:hover,
-.rw-dropdownlist:hover {
- background-color: #e6e6e6;
- border-color: #adadad;
-}
-.rw-dropdownlist.rw-state-disabled,
-.rw-dropdownlist.rw-state-readonly {
- cursor: not-allowed;
-}
-.rw-dropdownlist > .rw-input {
- line-height: 2.286em;
- background-color: transparent;
- padding-top: 0;
- padding-bottom: 0;
- padding-right: 0;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
-}
-.rw-dropdownlist.rw-rtl > .rw-input {
- padding: 0.429em 0.857em;
- padding-top: 0;
- padding-bottom: 0;
- padding-left: 0;
-}
-.rw-dropdownlist > .rw-select,
-.rw-dropdownlist.rw-rtl > .rw-select {
- border-width: 0;
-}
-.rw-numberpicker .rw-btn {
- display: block;
- height: 1.143em;
- line-height: 1.143em;
- width: 100%;
- border-width: 0;
-}
-.rw-popup {
- position: absolute;
- -webkit-box-shadow: 0 5px 6px rgba(0, 0, 0, 0.2);
- box-shadow: 0 5px 6px rgba(0, 0, 0, 0.2);
- border-top-right-radius: 0;
- border-top-left-radius: 0;
- border-bottom-right-radius: 3px;
- border-bottom-left-radius: 3px;
- border: #cccccc 1px solid;
- background: #ffffff;
- padding: 2px;
- overflow: auto;
- margin-bottom: 10px;
- left: 10px;
- right: 10px;
-}
-.rw-dropup > .rw-popup {
- margin-bottom: 0;
- margin-top: 10px;
- border-top-right-radius: 3px;
- border-top-left-radius: 3px;
- border-bottom-right-radius: 0;
- border-bottom-left-radius: 0;
- -webkit-box-shadow: 0 0 6px rgba(0, 0, 0, 0.2);
- box-shadow: 0 0 6px rgba(0, 0, 0, 0.2);
-}
-.rw-popup-container {
- position: absolute;
- top: 100%;
- margin-top: 1px;
- z-index: 1005;
- left: -11px;
- right: -11px;
-}
-.rw-popup-container.rw-dropup {
- top: auto;
- bottom: 100%;
-}
-.rw-popup-container.rw-calendar-popup {
- right: auto;
- width: 18em;
-}
-.rw-datetimepicker .rw-btn {
- width: 1.8em;
-}
-.rw-datetimepicker.rw-has-neither {
- padding-left: 0;
- padding-right: 0;
-}
-.rw-datetimepicker.rw-has-neither .rw-input {
- border-radius: 4px;
-}
-.rw-datetimepicker.rw-has-both {
- padding-right: 3.8em;
-}
-.rw-datetimepicker.rw-has-both.rw-rtl {
- padding-right: 0;
- padding-left: 3.8em;
-}
-.rw-datetimepicker.rw-has-both > .rw-select {
- width: 3.8em;
- height: 100%;
-}
-.rw-calendar {
- background-color: #ffffff;
-}
-.rw-calendar thead > tr {
- border-bottom: 2px solid #cccccc;
-}
-.rw-calendar .rw-header {
- padding-bottom: 5px;
-}
-.rw-calendar .rw-header .rw-btn-left,
-.rw-calendar .rw-header .rw-btn-right {
- width: 12.5%;
-}
-.rw-calendar .rw-header .rw-btn-view {
- width: 75%;
- background-color: #eeeeee;
- border-radius: 4px;
-}
-.rw-calendar .rw-header .rw-btn-view[disabled] {
- -webkit-box-shadow: none;
- box-shadow: none;
- cursor: not-allowed;
-}
-.rw-calendar .rw-footer {
- border-top: 1px solid #cccccc;
-}
-.rw-calendar .rw-footer .rw-btn {
- width: 100%;
- white-space: normal;
-}
-.rw-calendar .rw-footer .rw-btn:hover {
- background-color: #e6e6e6;
-}
-.rw-calendar .rw-footer .rw-btn[disabled] {
- -webkit-box-shadow: none;
- box-shadow: none;
- cursor: not-allowed;
-}
-.rw-calendar-grid {
- height: 14.28571429em;
- table-layout: fixed;
- width: 100%;
-}
-.rw-calendar-grid th {
- text-align: right;
- padding: 0 .4em 0 .1em;
-}
-.rw-calendar-grid .rw-btn {
- width: 100%;
- text-align: right;
-}
-.rw-calendar-grid td .rw-btn {
- border-radius: 4px;
- padding: 0 .4em 0 .1em;
- outline: 0;
-}
-.rw-calendar-grid td .rw-btn:hover {
- background-color: #e6e6e6;
-}
-.rw-calendar-grid td .rw-btn.rw-off-range {
- color: #b3b3b3;
-}
-.rw-calendar-grid.rw-nav-view .rw-btn {
- padding: .25em 0 .3em;
- display: block;
- overflow: hidden;
- text-align: center;
- white-space: normal;
-}
-.rw-selectlist {
- padding: 2px;
-}
-.rw-selectlist > ul {
- height: 100%;
- overflow: auto;
-}
-.rw-selectlist > ul > li.rw-list-option {
- position: relative;
- min-height: 27px;
- cursor: auto;
- padding-left: 5px;
-}
-.rw-selectlist > ul > li.rw-list-option > label > input {
- position: absolute;
- margin: 4px 0 0 -20px;
-}
-.rw-selectlist > ul > li.rw-list-option > label {
- padding-left: 20px;
- line-height: 1.423em;
- display: inline-block;
-}
-.rw-selectlist.rw-rtl > ul > li.rw-list-option {
- padding-left: 0;
- padding-right: 5px;
-}
-.rw-selectlist.rw-rtl > ul > li.rw-list-option > label > input {
- margin: 4px -20px 0 0px;
-}
-.rw-selectlist.rw-rtl > ul > li.rw-list-option > label {
- padding-left: 0;
- padding-right: 20px;
-}
-.rw-selectlist.rw-rtl > ul > li.rw-list-option {
- padding-left: 0;
- padding-right: 5px;
-}
-.rw-selectlist.rw-rtl > ul > li.rw-list-option > label > input {
- margin: 4px -20px 0 0px;
-}
-.rw-selectlist.rw-rtl > ul > li.rw-list-option > label {
- padding-left: 0;
- padding-right: 20px;
-}
-.rw-selectlist.rw-state-disabled > ul > li:hover,
-.rw-selectlist.rw-state-readonly > ul > li:hover {
- background: none;
- border-color: transparent;
-}
-.rw-multiselect {
- background-color: #ffffff;
-}
-.rw-multiselect:hover {
- border-color: #adadad;
-}
-.rw-multiselect-wrapper {
- border-radius: 4px;
- position: relative;
- cursor: text;
-}
-.rw-multiselect-wrapper:before,
-.rw-multiselect-wrapper:after {
- content: " ";
- display: table;
-}
-.rw-multiselect-wrapper:after {
- clear: both;
-}
-.rw-multiselect-wrapper i.rw-loading {
- position: absolute;
- right: 3px;
-}
-.rw-multiselect-wrapper > .rw-input {
- float: left;
- outline: 0;
- border-width: 0;
- line-height: normal;
- width: auto;
- max-width: 100%;
-}
-.rw-multiselect-wrapper > .rw-input::-moz-placeholder {
- color: #999999;
- opacity: 1;
-}
-.rw-multiselect-wrapper > .rw-input:-ms-input-placeholder {
- color: #999999;
-}
-.rw-multiselect-wrapper > .rw-input::-webkit-input-placeholder {
- color: #999999;
-}
-.rw-state-readonly > .rw-multiselect-wrapper,
-.rw-state-disabled > .rw-multiselect-wrapper {
- cursor: not-allowed;
-}
-.rw-rtl .rw-multiselect-wrapper > .rw-input {
- float: right;
-}
-.rw-multiselect-create-tag {
- border-top: 1px #cccccc solid;
- padding-top: 5px;
- margin-top: 5px;
-}
-.rw-multiselect-taglist {
- margin: 0;
- padding-left: 0;
- list-style: none;
- padding-right: 0;
-}
-.rw-multiselect-taglist > li {
- display: inline-block;
- padding-left: 5px;
- padding-right: 5px;
-}
-.rw-multiselect-taglist > li {
- float: left;
- display: inline-block;
- margin: 1px;
- padding: 0.214em 0.15em 0.214em 0.4em;
- line-height: 1.4em;
- text-align: center;
- vertical-align: middle;
- white-space: nowrap;
- border-radius: 3px;
- border: 1px solid #cccccc;
- background-color: #cccccc;
- cursor: pointer;
-}
-.rw-multiselect-taglist > li.rw-state-focus {
- background-color: #ffffff;
- border: #66afe9 1px solid;
- color: #333333;
-}
-.rw-multiselect-taglist > li.rw-state-readonly,
-.rw-multiselect-taglist > li.rw-state-disabled,
-.rw-multiselect.rw-state-readonly .rw-multiselect-taglist > li,
-.rw-multiselect.rw-state-disabled .rw-multiselect-taglist > li {
- cursor: not-allowed;
- filter: alpha(opacity=65);
- opacity: .65;
-}
-.rw-multiselect-taglist > li .rw-btn {
- outline: 0;
- font-size: 115%;
- line-height: normal;
-}
-.rw-rtl .rw-multiselect-taglist > li {
- float: right;
-}
diff --git a/static/external/react-widgets/react-widgets.js b/static/external/react-widgets/react-widgets.js
deleted file mode 100644
index 7fa648f..0000000
--- a/static/external/react-widgets/react-widgets.js
+++ /dev/null
@@ -1,9 +0,0 @@
-/*! v"2.7.1" | (c) 2015 Jason Quense | https://github.com/jquense/react-widgets/blob/master/License.txt */
-this.ReactWidgets=function(e){function t(n){if(s[n])return s[n].exports;var r=s[n]={exports:{},id:n,loaded:!1};return e[n].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var s={};return t.m=e,t.c=s,t.p="",t(0)}([function(e,t,s){"use strict";e.exports={DropdownList:s(5),Combobox:s(40),Calendar:s(2),DateTimePicker:s(3),NumberPicker:s(4),Multiselect:s(6),SelectList:s(7),configure:s(8),utils:{ReplaceTransitionGroup:s(9),SlideTransition:s(10)}}},function(e,t,s){"use strict";function n(e,t,s){return a.number.format(e,t,s)}var r=s(13),i=s(11),o=s(20),a=s(35).locale,p=function(e){return e.format||a.number.formats["default"]};e.exports=i.createClass({displayName:"NumberPickerInput",propTypes:{value:i.PropTypes.number,format:o.numberFormat,parse:i.PropTypes.func.isRequired,culture:i.PropTypes.string,min:i.PropTypes.number,onChange:i.PropTypes.func.isRequired,onKeyDown:i.PropTypes.func},getDefaultProps:function(){return{value:null,editing:!1,parse:function(e,t){return a.number.parse(e,t)}}},getDefaultState:function(e){var t=e.editing?e.value:n(e.value,p(e),e.culture);return(null==t||isNaN(e.value))&&(t=""),{stringValue:""+t}},getInitialState:function(){return this.getDefaultState(this.props)},componentWillReceiveProps:function(e){this.setState(this.getDefaultState(e))},render:function(){var e=this.state.stringValue;return i.createElement("input",r._extends({},this.props,{type:"text",className:"rw-input",onChange:this._change,onBlur:this._finish,"aria-disabled":this.props.disabled,"aria-readonly":this.props.readOnly,disabled:this.props.disabled,readOnly:this.props.readOnly,value:e}))},_change:function(e){var t=e.target.value,s=this.props.parse(e.target.value,this.props.culture),n=this.isValid(s);return null==t||""===t.trim()?this.props.onChange(null):n&&s!==this.props.value&&!this.isAtDelimiter(s,t)?this.props.onChange(s):void((!isNaN(s)||this.isAtDelimiter(s,t))&&this.current(e.target.value))},_finish:function(){var e=this.state.stringValue,t=this.props.parse(e,this.props.culture);!isNaN(t)&&(t=this.props.min},current:function(e){this.setState({stringValue:e})}})},function(e,t,s){"use strict";function n(e){return e&&!isNaN(e.getTime())?e:null}function r(e){return p._extends({moveBack:"navigate back",moveForward:"navigate forward"},e)}var i,o,a,p=s(13),l=s(11),u=s(48),c=s(19),d=s(29),h=s(30),f=s(31),m=s(32),y=s(33),v=s(34),g=s(35).locale,T=s(20),b=s(50),w=s(10),_=s(36),x=s(37),P=s(14),D=x.directions,O=function(e){return Object.keys(e).map(function(t){return e[t]})},N=function(e){return P.transform(e,function(e,t,s){e[t]=s},{})},C=x.calendarViews,E=O(C),I=N(x.calendarViewHierarchy),k=x.calendarViewHierarchy,S=x.calendarViewUnits,R=(i={},i[C.MONTH]=f,i[C.YEAR]=m,i[C.DECADE]=y,i[C.CENTURY]=v,i),F={ArrowDown:D.DOWN,ArrowUp:D.UP,ArrowRight:D.RIGHT,ArrowLeft:D.LEFT},L=(o={},o[D.LEFT]=D.RIGHT,o[D.RIGHT]=D.LEFT,o),M=(a={},a[C.YEAR]=1,a[C.DECADE]=10,a[C.CENTURY]=100,a),A=function(e,t){return e[t+"Format"]||g.date.formats[t]},V={onChange:l.PropTypes.func,value:l.PropTypes.instanceOf(Date),min:l.PropTypes.instanceOf(Date),max:l.PropTypes.instanceOf(Date),initialView:l.PropTypes.oneOf(E),finalView:function(e,t,s){var n=l.PropTypes.oneOf(E)(e,t,s);return n?n:E.indexOf(e[t])r?this.setState({view:i=e.initialView}):r>s&&this.setState({view:i=e.finalView}),_.eq(o,n(this.props.value),S[i])||this.setState({currentDate:o?new Date(o):new Date})},render:function(){var e=this,t=P.omit(this.props,Object.keys(V)),s=t.className,n=p.objectWithoutProperties(t,["className"]),i=R[this.state.view],o=P.pick(this.props,Object.keys(c.type(i).propTypes)),a=this.state.view,f=r(this.props.messages),m=this.props.disabled||this.props.readOnly,y=this.state.currentDate,v=new Date,g=!_.inRange(v,this.props.min,this.props.max,a),T=this._id("_view_label"),b=this.state.view+"_"+_[this.state.view](y),x=this._id("_view");return l.createElement("div",p._extends({},n,{onKeyDown:this._keyDown,onFocus:this._maybeHandle(this._focus.bind(null,!0),!0),onBlur:this._focus.bind(null,!1),className:u(s,"rw-calendar","rw-widget",{"rw-state-focus":this.state.focused,"rw-state-disabled":this.props.disabled,"rw-state-readonly":this.props.readOnly,"rw-rtl":this.isRtl()})}),l.createElement(d,{label:this._label(),labelId:T,messages:f,upDisabled:m||this.state.view===this.props.finalView,prevDisabled:m||!_.inRange(this.nextDate(D.LEFT),this.props.min,this.props.max,a),nextDisabled:m||!_.inRange(this.nextDate(D.RIGHT),this.props.min,this.props.max,a),onViewChange:this._maybeHandle(this.navigate.bind(null,D.UP,null)),onMoveLeft:this._maybeHandle(this.navigate.bind(null,D.LEFT,null)),onMoveRight:this._maybeHandle(this.navigate.bind(null,D.RIGHT,null))}),l.createElement(w,{ref:"animation",duration:n.duration,direction:this.state.slideDirection,onAnimate:function(){return e._focus(!0)}},l.createElement(i,p._extends({},o,{tabIndex:"-1",key:b,id:x,"aria-labelledby":T,today:v,value:this.props.value,focused:this.state.currentDate,onChange:this._maybeHandle(this.change),onKeyDown:this._maybeHandle(this._keyDown)}))),this.props.footer&&l.createElement(h,{value:v,format:this.props.footerFormat,culture:this.props.culture,disabled:this.props.disabled||g,readOnly:this.props.readOnly,onClick:this._maybeHandle(this.select)}))},navigate:function(e,t){var s=this.state.view,n=e===D.LEFT||e===D.UP?"right":"left";t||(t=-1!==[D.LEFT,D.RIGHT].indexOf(e)?this.nextDate(e):this.state.currentDate),e===D.DOWN&&(s=I[s]||s),e===D.UP&&(s=k[s]||s),this.isValidView(s)&&_.inRange(t,this.props.min,this.props.max,s)&&(this.notify("onNavigate",[t,n,s]),this._focus(!0,"nav"),this.setState({currentDate:t,slideDirection:n,view:s}))},_focus:function(e,t){var s=this;-1!==+this.props.tabIndex&&this.setTimeout("focus",function(){e&&c.findDOMNode(s).focus(),e!==s.state.focused&&(s.notify(e?"onFocus":"onBlur",t),s.setState({focused:e}))})},change:function(e){var t=this;return setTimeout(function(){return t._focus(!0)}),this.props.onChange&&this.state.view===this.props.initialView?this.notify("onChange",e):void this.navigate(D.DOWN,e)},select:function(e){var t=this.props.initialView,s=t!==this.state.view||_.gt(e,this.state.currentDate)?"left":"right";this.notify("onChange",e),this.isValidView(t)&&_.inRange(e,this.props.min,this.props.max,t)&&(this._focus(!0,"nav"),this.setState({currentDate:e,slideDirection:s,view:t}))},nextDate:function(e){var t=e===D.LEFT?"subtract":"add",s=this.state.view,n=s===C.MONTH?s:C.YEAR,r=M[s]||1;return _[t](this.state.currentDate,1*r,n)},_keyDown:function(e){var t=e.ctrlKey,s=e.key,n=F[s],r=this.state.currentDate,i=this.state.view,o=S[i],a=r;return"Enter"===s?(e.preventDefault(),this.change(r)):(n&&(t?(e.preventDefault(),this.navigate(n)):(this.isRtl()&&L[n]&&(n=L[n]),a=_.move(a,this.props.min,this.props.max,i,n),_.eq(r,a,o)||(e.preventDefault(),_.gt(a,r,i)?this.navigate(D.RIGHT,a):_.lt(a,r,i)?this.navigate(D.LEFT,a):this.setState({currentDate:a})))),void this.notify("onKeyDown",[e]))},_label:function(){var e=this.props,t=e.culture,s=p.objectWithoutProperties(e,["culture"]),n=this.state.view,r=this.state.currentDate;return"month"===n?g.date.format(r,A(s,"header"),t):"year"===n?g.date.format(r,A(s,"year"),t):"decade"===n?g.date.format(_.startOf(r,"decade"),A(s,"decade"),t):"century"===n?g.date.format(_.startOf(r,"century"),A(s,"century"),t):void 0},inRangeValue:function(e){var t=n(e);return null===t?t:_.max(_.min(t,this.props.max),this.props.min)},isValidView:function(e){var t=E.indexOf(this.props.initialView),s=E.indexOf(this.props.finalView),n=E.indexOf(e);return n>=t&&s>=n}});e.exports=b(U,{value:"onChange"}),e.exports.BaseCalendar=U},function(e,t,s){"use strict";function n(e){var t=null!=e[v.CALENDAR]?e.calendar:!0,s=null!=e[v.TIME]?e.time:!0;return e.format?e.format:t&&s||!t&&!s?m.date.formats["default"]:m.date.formats[t?"date":"time"]}function r(e,t,s){var n="";return e instanceof Date&&!isNaN(e.getTime())&&(n=m.date.format(e,t,s)),n}function i(e,t,s){for(var n,r=0;r=0||Object.prototype.hasOwnProperty.call(e,n)&&(s[n]=e[n]);return s},t._extends=Object.assign||function(e){for(var t=1;t1?t-1:0),n=1;t>n;n++)s[n-1]=arguments[n];return"function"==typeof e?e.apply(void 0,s):e},isShallowEqual:function(e,t){return e===t?!0:e instanceof Date&&t instanceof Date?e.getTime()===t.getTime():"object"!=typeof e&&"object"!=typeof t?e===t:typeof e!=typeof t?!1:i(e,t)},transform:function(e,t,s){return a.each(e,t.bind(null,s=s||(Array.isArray(e)?[]:{}))),s},each:function(e,t,s){if(Array.isArray(e))return e.forEach(t,s);for(var r in e)n(e,r)&&t.call(s,e[r],r,e)},pick:function(e,t){return t=[].concat(t),a.transform(e,function(e,s,n){-1!==t.indexOf(n)&&(e[n]=s)},{})},omit:function(e,t){return t=[].concat(t),a.transform(e,function(e,s,n){-1===t.indexOf(n)&&(e[n]=s)},{})},find:function(e,t,s){var r;if(Array.isArray(e))return e.every(function(n,i){return t.call(s,n,i,e)?(r=n,!1):!0}),r;for(var i in e)if(n(e,i)&&t.call(s,e[i],i,e))return e[i]},chunk:function(e,t){var s=0,n=e?e.length:0,r=[];for(t=Math.max(+t||1,1);n>s;)r.push(e.slice(s,s+=t));return r},splat:function(e){return null==e?[]:[].concat(e)},noop:function(){},uniqueId:function(e){return""+((null==e?"":e)+ ++o)},isFirstFocusedRender:function(e){return e._firstFocus||e.state.focused&&(e._firstFocus=!0)},ifNotDisabled:function(e,t){return 1===arguments.length&&(t=e,e=!1),function(){for(var s=arguments.length,n=Array(s),r=0;s>r;r++)n[r]=arguments[r];return this.isDisabled()||!e&&this.isReadOnly()?void 0:t.apply(this,n)}}}},function(e,t,s){"use strict";var n={eq:function(e,t){return e===t},neq:function(e,t){return e!==t},gt:function(e,t){return e>t},gte:function(e,t){return e>=t},lt:function(e,t){return t>e},lte:function(e,t){return t>=e},contains:function(e,t){return-1!==e.indexOf(t)},startsWith:function(e,t){return 0===e.lastIndexOf(t,0)},endsWith:function(e,t){var s=e.length-t.length,n=e.indexOf(t,s);return-1!==n&&n===s}};e.exports=n},function(e,t,s){"use strict";function n(e,t){var s,n,r=l.animate.TRANSLATION_MAP;return r&&r[e]?(s={},s[d]=""+r[e]+"("+t+")",s):(n={},n[e]=t,n)}function r(e){var t=o.Children.map(e,function(e){return e});for(var s in t)return s}var i=s(13),o=s(11),a=s(58),p=s(56),l=s(35),u=s(48),c=s(19),d=l.animate.transform,h=o.createClass({displayName:"PopupContent",render:function(){var e=this.props.children;return e?(e=o.Children.only(this.props.children),c.cloneElement(e,{className:u(e.props.className,"rw-popup rw-widget")})):o.createElement("span",{className:"rw-popup rw-widget"})}});e.exports=o.createClass({displayName:"Popup",propTypes:{open:o.PropTypes.bool,dropUp:o.PropTypes.bool,duration:o.PropTypes.number,onRequestClose:o.PropTypes.func.isRequired,onClosing:o.PropTypes.func,onOpening:o.PropTypes.func,onClose:o.PropTypes.func,onOpen:o.PropTypes.func},getInitialState:function(){return{}},getDefaultProps:function(){return{duration:200,open:!1,onClosing:function(){},onOpening:function(){},onClose:function(){},onOpen:function(){}}},componentWillMount:function(){!this.props.open&&(this._initialPosition=!0)},componentWillReceiveProps:function(e){this.setState({contentChanged:r(e.children)!==r(this.props.children)})},componentDidUpdate:function(e){var t=e.open&&!this.props.open,s=!e.open&&this.props.open,n=this.props.open;s?this.open():t?this.close():n&&this.height()},render:function(){var e=this.props,t=e.className,s=e.open,n=e.dropUp,r=i.objectWithoutProperties(e,["className","open","dropUp"]),a=s?"block":void 0;return this._initialPosition&&(a="none"),o.createElement("div",i._extends({},r,{style:i._extends({display:a,height:this.state.height},r.style),className:u(t,"rw-popup-container",{"rw-dropup":n})}),o.createElement(h,{ref:"content"},this.props.children))},reset:function(){var e=c.findDOMNode(this),t=c.findDOMNode(this.refs.content),s={display:"block",overflow:"hidden"};a(e,s),this.height(),a(t,n("top",this.props.dropUp?"100%":"-100%"))},height:function f(){var e=c.findDOMNode(this),t=c.findDOMNode(this.refs.content),s=parseInt(a(t,"margin-top"),10)+parseInt(a(t,"margin-bottom"),10),f=p(t)+(isNaN(s)?0:s);this.state.height!==f&&(e.style.height=f+"px",this.setState({height:f}))},open:function(){var e=this,t=c.findDOMNode(this),s=c.findDOMNode(this.refs.content);this.ORGINAL_POSITION=a(s,"position"),this._isOpening=!0,this._initialPosition?(this._initialPosition=!1,this.reset()):this.height(),this.props.onOpening(),t.className+=" rw-popup-animating",s.style.position="absolute",l.animate(s,{top:0},e.props.duration,"ease",function(){e._isOpening&&(t.className=t.className.replace(/ ?rw-popup-animating/g,""),s.style.position=e.ORGINAL_POSITION,t.style.overflow="visible",e.ORGINAL_POSITION=null,e.props.onOpen())})},close:function(e){var t=this,s=c.findDOMNode(this.refs.content),n=c.findDOMNode(this);this.ORGINAL_POSITION=a(s,"position"),this._isOpening=!1,this.height(),this.props.onClosing(),n.style.overflow="hidden",n.className+=" rw-popup-animating",s.style.position="absolute",l.animate(s,{top:this.props.dropUp?"100%":"-100%"},void 0===e?this.props.duration:e,"ease",function(){t._isOpening||(s.style.position=t.ORGINAL_POSITION,n.className=n.className.replace(/ ?rw-popup-animating/g,""),n.style.display="none",t.ORGINAL_POSITION=null,t.props.onClose())})}})},function(e,t,s){"use strict";var n=s(13),r=s(11),i=s(48);e.exports=r.createClass({displayName:"exports",render:function(){var e=this.props,t=e.className,s=e.children,o=n.objectWithoutProperties(e,["className","children"]);return r.createElement("button",n._extends({},o,{type:"button",className:i(t,"rw-btn")}),s)}})},function(e,t,s){"use strict";var n=s(13),r=s(11),i=s(60),o=s(19);e.exports=r.createClass({displayName:"ComboboxInput",propTypes:{value:r.PropTypes.string,onChange:r.PropTypes.func.isRequired},componentDidUpdate:function(){var e=o.findDOMNode(this),t=this.props.value;if(this.isSuggesting()){var s=t.toLowerCase().indexOf(this._last.toLowerCase())+this._last.length,n=t.length-s;s>=0&&i(e,s,s+n)}},getDefaultProps:function(){return{value:""}},render:function(){return r.createElement("input",n._extends({},this.props,{type:"text","aria-disabled":this.props.disabled,"aria-readonly":this.props.readOnly,className:this.props.className+" rw-input",onKeyDown:this.props.onKeyDown,onChange:this._change,value:null==this.props.value?"":this.props.value}))},isSuggesting:function(){var e=this.props.value,t=null!=this._last&&-1!==e.toLowerCase().indexOf(this._last.toLowerCase());return this.props.suggest&&t},accept:function(e){var t=o.findDOMNode(this).value||"",s=t.length;this._last=null,e&&i(o.findDOMNode(this),s,s)},_change:function(e){var t=e.target.value,s=!!this.props.placeholder;(!s||t||t!==(this.props.value||""))&&(this._last=t,this.props.onChange(e,t))},focus:function(){o.findDOMNode(this).focus()}})},function(e,t,s){"use strict";var n=s(11),r=s(14),i=n.version.split(".").map(parseFloat);e.exports={version:function(){return i},type:function(e){return 0===i[0]&&i[1]>=13?e:e.type},findDOMNode:function(e){return n.findDOMNode?n.findDOMNode(e):e.getDOMNode()},cloneElement:function(e,t){return n.cloneElement?n.cloneElement(e,t):(r.each(t,function(t,s){return e.props[s]=t}),e)}}},function(e,t,s){"use strict";function n(e){function t(t,s,n,r,i){return r=r||"<>",null!=s[n]?e(s,n,r,i):t?new Error("Required prop `"+n+"` was not specified in `"+r+"`."):void 0}var s=t.bind(null,!1);return s.isRequired=t.bind(null,!0),s}var r=s(11),i=s(35).locale,o=s(15),a=Object.keys(o).filter(function(e){return"filter"!==e});e.exports={elementType:n(function(e,t,s){if("function"!=typeof e[t]){if(r.isValidElement(e[t]))return new Error("Invalid prop `"+t+"` specified in `"+s+"`. Expected an Element `type`, not an actual Element");if("string"!=typeof e[t])return new Error("Invalid prop `"+t+"` specified in `"+s+"`. Expected an Element `type` such as a tag name or return value of React.createClass(...)")}return!0}),numberFormat:n(function(){for(var e,t=arguments.length,s=Array(t),n=0;t>n;n++)s[n]=arguments[n];return(e=i.number).propType.apply(e,s)}),dateFormat:n(function(){for(var e,t=arguments.length,s=Array(t),n=0;t>n;n++)s[n]=arguments[n];return(e=i.date).propType.apply(e,s)}),accessor:r.PropTypes.oneOfType([r.PropTypes.string,r.PropTypes.func]),message:r.PropTypes.oneOfType([r.PropTypes.func,r.PropTypes.string]),filter:r.PropTypes.oneOfType([r.PropTypes.func,r.PropTypes.bool,r.PropTypes.oneOf(a)])}},function(e,t,s){"use strict";var n=s(13),r=s(11),i=s(53),o=s(20),a=s(19),p=s(48),l=s(14);e.exports=r.createClass({displayName:"List",mixins:[s(23),s(26),s(59)],propTypes:{data:r.PropTypes.array,onSelect:r.PropTypes.func,onMove:r.PropTypes.func,itemComponent:o.elementType,groupComponent:o.elementType,selected:r.PropTypes.any,focused:r.PropTypes.any,valueField:r.PropTypes.string,textField:o.accessor,optID:r.PropTypes.string,groupBy:o.accessor,messages:r.PropTypes.shape({emptyList:o.message})},getDefaultProps:function(){return{optID:"",onSelect:function(){},data:[],messages:{emptyList:"There are no items in this list"}}},getInitialState:function(){var e=[];return{groups:this._group(this.props.groupBy,this.props.data,e),sortedKeys:e}},componentWillReceiveProps:function(e){var t=[];(e.data!==this.props.data||e.groupBy!==this.props.groupBy)&&this.setState({groups:this._group(e.groupBy,e.data,t),sortedKeys:t})},componentDidMount:function(e){this.move()},componentDidUpdate:function(){this.move()},render:function(){var e,t=this,s=l.omit(this.props,["data","selectedIndex"]),i=s.className,o=n.objectWithoutProperties(s,["className"]),a=this.state.groups,p=[],u=-1;return p=this.props.data.length?this.state.sortedKeys.reduce(function(s,n){e=a[n],s.push(t._renderGroupHeader(n));for(var r=0;re&&this.isDisabled(e,!0);)e++;e!==t&&this.setState({focused:e})},last:function(){for(var e=this.props.value.length-1;e>-1&&this.isDisabled(e,!0);)e--;e>=0&&this.setState({focused:e})},next:function(){for(var e=this.state.focused+1,t=this.props.value.length;t>e&&this.isDisabled(e,!0);)e++;return null!==this.state.focused?e>=t?this.clear():void this.setState({focused:e}):void 0},prev:function(){var e=this.state.focused;for(null===e&&(e=this.props.value.length),e--;e>-1&&this.isDisabled(e,!0);)e--;e>=0&&this.setState({focused:e})}})},function(e,t,s){"use strict";var n=s(13),r=s(11),i=s(36),o=s(12),a=s(19),p=s(35).locale,l=s(20),u=s(14),c=function(e){return e.format||p.date.formats.time};e.exports=r.createClass({displayName:"TimeList",propTypes:{value:r.PropTypes.instanceOf(Date),min:r.PropTypes.instanceOf(Date),max:r.PropTypes.instanceOf(Date),step:r.PropTypes.number,itemComponent:l.elementType,format:l.dateFormat,onSelect:r.PropTypes.func,preserveDate:r.PropTypes.bool,culture:r.PropTypes.string},mixins:[s(24)],getDefaultProps:function(){return{step:30,onSelect:function(){},min:new Date(1900,0,1),max:new Date(2099,11,31),preserveDate:!0,delay:300}},getInitialState:function(){var e=this._dates(this.props),t=this._closestDate(e,this.props.value);return{focusedItem:t||e[0],dates:e}},componentWillReceiveProps:function(e){var t=this._dates(e),s=this._closestDate(t,e.value),n=!i.eq(e.value,this.props.value,"minutes"),r=!i.eq(e.min,this.props.min,"minutes"),o=!i.eq(e.max,this.props.max,"minutes");(n||r||o)&&this.setState({focusedItem:s||t[0],dates:t})},render:function(){var e=this.state.dates,t=this._closestDate(e,this.props.value);return r.createElement(o,n._extends({},u.pick(this.props,Object.keys(a.type(o).propTypes)),{ref:"list",data:e,textField:"label",valueField:"date",selected:t,focused:this.state.focusedItem,itemComponent:this.props.itemComponent,onSelect:this.props.onSelect}))},_closestDate:function(e,t){var s,n=6e4*this.props.step,r=null;return t?(t=new Date(Math.floor(t.getTime()/n)*n),s=i.format(t,this.props.format,this.props.culture),e.some(function(e){return e.label===s?r=e:void 0}),r):null},_data:function(){return this.state.dates},_dates:function(e){for(var t=[],s=0,n=this._dateValues(e),r=n.min,o=i.date(r);i.date(r)===o&&i.lte(r,n.max);)s++,t.push({date:r,label:p.date.format(r,c(e),e.culture)}),r=i.add(r,e.step||30,"minutes");return t},_dateValues:function(e){var t,s,n=e.value||i.today(),r=e.preserveDate,o=e.min,a=e.max;return r?(t=i.today(),s=i.tomorrow(),{min:i.eq(n,o,"day")?i.merge(t,o):t,max:i.eq(n,a,"day")?i.merge(t,a):s}):(t=i.startOf(i.merge(new Date,o),"minutes"),s=i.startOf(i.merge(new Date,a),"minutes"),i.lte(s,t)&&i.gt(a,o,"day")&&(s=i.tomorrow()),{min:t,max:s})},_keyDown:function(e){var t=this,s=e.key,n=String.fromCharCode(e.keyCode),r=this.state.focusedItem,i=this.refs.list;"End"===s?this.setState({focusedItem:i.last()}):"Home"===s?this.setState({focusedItem:i.first()}):"Enter"===s?this.props.onSelect(r):"ArrowDown"===s?(e.preventDefault(),this.setState({focusedItem:i.next(r)})):"ArrowUp"===s?(e.preventDefault(),this.setState({focusedItem:i.prev(r)})):(e.preventDefault(),this.search(n,function(e){t.setState({focusedItem:e})}))},scrollTo:function(){this.refs.list.move&&this.refs.list.move()},search:function(e,t){var s=this,n=((this._searchTerm||"")+e).toLowerCase();this._searchTerm=n,this.setTimeout("search",function(){var e=s.refs.list,r=e.next(s.state.focusedItem,n);s._searchTerm="",r&&t(r)},this.props.delay)}})},function(e,t,s){"use strict";function n(e){return!isNaN(e.getTime())}function r(e,t,s){var r="";return e instanceof Date&&n(e)&&(r=u.date.format(e,t,s)),r}function i(e,t,s){return function(){e&&e.apply(s,arguments),t&&t.apply(s,arguments)}}var o=s(13),a=s(11),p=s(48),l=(s(36),s(19)),u=s(35).locale,c=s(20);e.exports=a.createClass({displayName:"DatePickerInput",propTypes:{format:c.dateFormat.isRequired,editFormat:c.dateFormat,parse:a.PropTypes.func.isRequired,value:a.PropTypes.instanceOf(Date),onChange:a.PropTypes.func.isRequired,culture:a.PropTypes.string},getDefaultProps:function(){return{textValue:""}},componentWillReceiveProps:function(e){var t=r(e.value,e.editing&&e.editFormat?e.editFormat:e.format,e.culture);this.startValue=t,this.setState({textValue:t})},getInitialState:function(){var e=r(this.props.value,this.props.editing&&this.props.editFormat?this.props.editFormat:this.props.format,this.props.culture);return this.startValue=e,{textValue:e}},render:function(){var e=this.state.textValue;return a.createElement("input",o._extends({},this.props,{type:"text",className:p({"rw-input":!0}),value:e,"aria-disabled":this.props.disabled,"aria-readonly":this.props.readOnly,disabled:this.props.disabled,readOnly:this.props.readOnly,onChange:this._change,onBlur:i(this.props.blur,this._blur,this)}))},_change:function(e){this.setState({textValue:e.target.value}),this._needsFlush=!0},_blur:function(e){var t=e.target.value;this._needsFlush&&(this._needsFlush=!1,this.props.onChange(this.props.parse(t),t))},focus:function(){l.findDOMNode(this).focus()}})},function(e,t,s){"use strict";function n(e,t,s,n,r){var i="function"==typeof n?n(s,r,e):t.call(e,s,n,r);return o(null==i||"string"==typeof i,"`localizer format(..)` must return a string, null, or undefined"),i}function r(e,t){}var i=s(13),o=s(52),a=s(14),p=(a.has,s(11)),l=["default"],u=p.PropTypes.oneOfType([p.PropTypes.string,p.PropTypes.func]),c=["default","date","time","header","footer","dayOfMonth","month","year","decade","century"],d=function f(e){var t=this,s=e.format,a=e.parse,p=e.precision,c=e.formats,d=e.propType;i.classCallCheck(this,f),o("function"==typeof s,"number localizer `format(..)` must be a function"),o("function"==typeof a,"number localizer `parse(..)` must be a function"),r(l,c),this.propType=d||u,this.formats=c,this.precision=p||function(){return null},this.format=function(e,r,i){return n(t,s,e,r,i)},this.parse=function(e,s){var n=a.call(t,e,s);return o(null==n||"number"==typeof n,"number localizer `parse(..)` must return a number, null, or undefined"),n}},h=function m(e){var t=this;i.classCallCheck(this,m),o("function"==typeof e.format,"date localizer `format(..)` must be a function"),o("function"==typeof e.parse,"date localizer `parse(..)` must be a function"),o("function"==typeof e.firstOfWeek,"date localizer `firstOfWeek(..)` must be a function"),r(c,e.formats),this.propType=e.propType||u,this.formats=e.formats,this.startOfWeek=e.firstOfWeek,this.format=function(s,r,i){return n(t,e.format,s,r,i)},this.parse=function(s,n,r){var i=e.parse.call(t,s,n,r);return o(null==i||i instanceof Date&&!isNaN(i.getTime()),"date localizer `parse(..)` must return a valid Date, null, or undefined"),i}};e.exports={NumberLocalizer:d,DateLocalizer:h}},function(e,t,s){"use strict";function n(e){function t(t){return t?(i.globalize||e).findClosestCulture(t):(i.globalize||e).culture()}function s(e){return e=t(e),e&&e.calendar.firstDay||0}function n(e){var n=t(arguments[1]),i=n.name,o=s(n),a=function l(){var l=n.calendar.days.namesShort.slice();return 0===o?l:l.concat(l.splice(0,o))},p=r[i]||(r[i]=a());return p[e]}var r=Object.create(null),i=new a({formats:{date:"d",time:"t","default":"f",header:"MMMM yyyy",footer:"D",weekday:n,dayOfMonth:"dd",month:"MMM",year:"yyyy",decade:function(e,t,s){return""+s.format(e,s.formats.year,t)+" - "+s.format(p.endOf(e,"decade"),s.formats.year,t)},century:function(e,t,s){return""+s.format(e,s.formats.year,t)+" - "+s.format(p.endOf(e,"century"),s.formats.year,t)}},firstOfWeek:s,parse:function(t,s,n){return(this.globalize||e).parseDate(t,s,n)},format:function(t,s,n){return(this.globalize||e).format(t,s,n)}});return i.globalize=e,i}function r(e){function t(t){return t?(s.globalize||e).findClosestCulture(t):(s.globalize||e).culture()}var s=new o({formats:{"default":"D"},parse:function(t,s){return(this.globalize||e).parseFloat(t,10,s)},format:function(t,s,n){return(this.globalize||e).format(t,s,n)},precision:function(e,s){var n=t(s),r=n.numberFormat;return"string"==typeof e?e.length>1?parseFloat(e.substr(1)):(-1!==e.indexOf("p")&&(r=r.percent),-1!==e.indexOf("c")&&(r=r.curency),r.decimals||null):null}});return s.globalize=e,s}var i=s(46),o=i.NumberLocalizer,a=i.DateLocalizer,p=s(63);e.exports={globalizeNumberLocalizer:r,globalizeDateLocalizer:n}},function(e,t,s){/*!
- Copyright (c) 2015 Jed Watson.
- Licensed under the MIT License (MIT), see
- http://jedwatson.github.io/classnames
- */
-function n(){for(var e,t="",s=0;si;i++)r[i]=arguments[i];t&&t.call.apply(t,[e].concat(r)),s&&s.call.apply(s,[e].concat(r))}}function o(e,t,s){return a(e,t.bind(null,s=s||(Array.isArray(e)?[]:{}))),s}function a(e,t,s){if(Array.isArray(e))return e.forEach(t,s);for(var n in e)p(e,n)&&t.call(s,e[n],n,e)}function p(e,t){return e?Object.prototype.hasOwnProperty.call(e,t):!1}var l=s(64),u=s(11);s(52),u.version.split(".").map(parseFloat);e.exports=function(e,t,s){function p(e,s){for(var r=arguments.length,i=Array(r>2?r-2:0),o=2;r>o;o++)i[o-2]=arguments[o];var a=n(e),p=this.props[t[e]];a&&c(this.props,a)&&!p&&(p=this.props[a].requestChange),p&&(this._notifying=!0,p.call.apply(p,[this,s].concat(i)),this._notifying=!1),this.setState(function(){var t={};return t[e]=s,t}())}function c(e,t){return void 0!==e[t]}var d=e.displayName||e.name||"Component",h={};return d=d[0].toUpperCase()+d.substr(1),s=s||{},u.createClass({displayName:"Uncontrolled"+d,propTypes:h,getInitialState:function(){var e=this.props,s=Object.keys(t);return o(s,function(t,s){t[s]=e[r(s)]},{})},shouldComponentUpdate:function(){return!this._notifying},render:function(){var r=this,o={},d=this.props,h=(d.valueLink,d.checkedLink,l.objectWithoutProperties(d,["valueLink","checkedLink"]));return a(t,function(e,t){var s=n(t),i=r.props[t];s&&!c(r.props,t)&&c(r.props,s)&&(i=r.props[s].value),o[t]=void 0!==i?i:r.state[t],o[e]=p.bind(r,t)}),o=l._extends({},h,o),a(s,function(e,t){return o[t]=i(r,e,o[t])}),u.createElement(e,o)}})}},function(e,t,s){function n(){try{return document.activeElement||document.body}catch(e){return document.body}}e.exports=n},function(e,t,s){"use strict";var n=function(e,t,s,n,r,i,o,a){if(!e){var p;if(void 0===t)p=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[s,n,r,i,o,a],u=0;p=new Error("Invariant Violation: "+t.replace(/%s/g,function(){return l[u++]}))}throw p.framesToPop=1,p}};e.exports=n},function(e,t,s){"use strict";var n=s(68),r=n;e.exports=r},function(e,t,s){"use strict";var n=s(65),r=function(){var e=n&&document.documentElement;return e&&e.contains?function(e,t){return e.contains(t)}:e&&e.compareDocumentPosition?function(e,t){return e===t||!!(16&e.compareDocumentPosition(t))}:function(e,t){if(t)do if(t===e)return!0;while(t=t.parentNode);return!1}}();e.exports=r},function(e,t,s){"use strict";var n=s(66),r=s(67);e.exports=function(e,t){var s=r(e);return s?s.innerWidth:t?e.clientWidth:n(e).width}},function(e,t,s){"use strict";var n=s(66),r=s(67);e.exports=function(e,t){var s=r(e);return s?s.innerHeight:t?e.clientHeight:n(e).height}},function(e,t,s){"use strict";var n=s(66),r=s(56),i=s(70),o=s(69),a=s(71),p=s(67);e.exports=function(e,t){var s,l,u,c,d,h,f,m=n(e),y={top:0,left:0};if(e){s=t||i(e),c=p(s),l=o(s),h=r(s,!0),c=p(s),c||(y=n(s)),m={top:m.top-y.top,left:m.left-y.left,height:m.height,width:m.width},d=m.height,u=m.top+(c?0:l),f=u+d,l=l>u?u:f>l+h?f-h:l;var v=a(function(){return o(s,l)});return function(){return a.cancel(v)}}}},function(e,t,s){"use strict";var n=s(72),r=s(73),i=s(74),o=s(75),a=Object.prototype.hasOwnProperty;e.exports=function(e,t,s){var p="",l=t;if("string"==typeof t){if(void 0===s)return e.style[n(t)]||i(e).getPropertyValue(t);(l={})[t]=s}for(var u in l)a.call(l,u)&&(l[u]||0===l[u]?p+=r(u)+":"+l[u]+";":o(e,r(u)));e.style.cssText+=";"+p}},function(e,t,s){"use strict";function n(e,t,s,n){var r,i,p=o.startsWith,l=-1,u=t.length;for(s=s.toLowerCase();++ln,i=r&&a._dataText.call(e,t[l]).toLowerCase(),r&&p(i,s))return t[l]}function r(e,t,s,n){var r,i,p=o.startsWith,l=t.length;for(s=s.toLowerCase();--l>=0;)if(r=r||n>l,i=r&&a._dataText.call(e,t[l]).toLowerCase(),r&&p(i,s))return t[l]}var i=s(11),o=s(15),a=s(26);e.exports={propTypes:{textField:i.PropTypes.string},first:function(){return this._data()[0]},last:function(){var e=this._data();return e[e.length-1]},prev:function(e,t){var s=this._data(),n=s.indexOf(e);return-1===n&&(n=s.length),t?r(this,s,t,n):--n<0?s[0]:s[n]},next:function(e,t){var s=this._data(),r=s.indexOf(e);return t?n(this,s,t,r):++r===s.length?s[s.length-1]:s[r]}}},function(e,t,s){"use strict";function n(e){var t,s,n,r;if(void 0!==e.selectionStart)t=e.selectionStart,s=e.selectionEnd;else try{e.focus(),n=e.createTextRange(),r=n.duplicate(),n.moveToBookmark(document.selection.createRange().getBookmark()),r.setEndPoint("EndToStart",n),t=r.text.length,s=t+n.text.length}catch(i){}return{start:t,end:s}}function r(e,t,s){var n;try{void 0!==e.selectionStart?(e.focus(),e.setSelectionRange(t,s)):(e.focus(),n=e.createTextRange(),n.collapse(!0),n.moveStart("character",t),n.moveEnd("character",s-t),n.select())}catch(r){}}e.exports=function(e,t,s){return void 0===t?n(e):void r(e,t,s)}},function(e,t,s){"use strict";var n=s(11);e.exports={contextTypes:{isRtl:n.PropTypes.bool},isRtl:function(){return!!this.context.isRtl}}},function(e,t,s){"use strict";function n(e,t,s,n,d){function h(t){t.target===t.currentTarget&&(f=!0,a(t.target,p.end,h),i(e,u),d&&d.call(this))}var f,m=[],y={target:e,currentTarget:e},v={},g="";"function"==typeof n&&(d=n,n=null),p.end||(s=0),void 0===s&&(s=200);for(var T in t)l.call(t,T)&&(/(top|bottom)/.test(T)?g+=c[T]+"("+t[T]+") ":(v[T]=t[T],m.push(r(T))));g&&(v[p.transform]=g,m.push(p.transform)),s>0&&(v[p.property]=m.join(", "),v[p.duration]=s/1e3+"s",v[p.delay]="0s",v[p.timing]=n||"linear",o(e,p.end,h),setTimeout(function(){f||h(y)},s+500)),e.clientLeft,i(e,v),0>=s&&setTimeout(h.bind(null,y),0)}var r=s(76),i=s(58),o=s(77),a=s(78),p=s(79),l=Object.prototype.hasOwnProperty,u={},c={left:"translateX",right:"translateX",top:"translateY",bottom:"translateY"};u[p.property]=u[p.duration]=u[p.delay]=u[p.timing]="",n.endEvent=p.end,n.transform=p.transform,n.TRANSLATION_MAP=c,e.exports=n},function(e,t,s){function n(e,t){var s=y.month(e),n=s+t;return e=y.month(e,n),0>n&&(n=12+t),y.month(e)!==n%12&&(e=y.date(e,0)),e}function r(e){return function(t,s){return void 0===s?t["get"+e]():(t=new Date(t),t["set"+e](s),t)}}function i(e){return function(t,s,n){return e(+y.startOf(t,n),+y.startOf(s,n))}}var o="milliseconds",a="seconds",p="minutes",l="hours",u="day",c="week",d="month",h="year",f="decade",m="century",y=e.exports={add:function(e,t,s){switch(e=new Date(e),s){case o:case a:case p:case l:case h:return y[s](e,y[s](e)+t);case u:return y.date(e,y.date(e)+t);case c:return y.date(e,y.date(e)+7*t);case d:return n(e,t);case f:return y.year(e,y.year(e)+10*t);case m:return y.year(e,y.year(e)+100*t)}throw new TypeError('Invalid units: "'+s+'"')},subtract:function(e,t,s){return y.add(e,-t,s)},startOf:function(e,t,s){switch(e=new Date(e),t){case"century":case"decade":case"year":e=y.month(e,0);case"month":e=y.date(e,1);case"week":case"day":e=y.hours(e,0);case"hours":e=y.minutes(e,0);case"minutes":e=y.seconds(e,0);case"seconds":e=y.milliseconds(e,0)}return t===f&&(e=y.subtract(e,y.year(e)%10,"year")),t===m&&(e=y.subtract(e,y.year(e)%100,"year")),t===c&&(e=y.weekday(e,0,s)),e},endOf:function(e,t,s){return e=new Date(e),e=y.startOf(e,t,s),e=y.add(e,1,t),e=y.subtract(e,1,o)},eq:i(function(e,t){return e===t}),neq:i(function(e,t){return e!==t}),gt:i(function(e,t){return e>t}),gte:i(function(e,t){return e>=t}),lt:i(function(e,t){return t>e}),lte:i(function(e,t){return t>=e}),min:function(){return new Date(Math.min.apply(Math,arguments))},max:function(){return new Date(Math.max.apply(Math,arguments))},inRange:function(e,t,s,n){return n=n||"day",!(t&&!y.gte(e,t,n)||s&&!y.lte(e,s,n))},milliseconds:r("Milliseconds"),seconds:r("Seconds"),minutes:r("Minutes"),hours:r("Hours"),day:r("Day"),date:r("Date"),month:r("Month"),year:r("FullYear"),decade:function(e,t){return void 0===t?y.year(y.startOf(e,f)):y.add(e,t+10,h)},century:function(e,t){return void 0===t?y.year(y.startOf(e,m)):y.add(e,t+100,h)},weekday:function(e,t,s){var n=(y.day(e)+7-(s||0))%7;return void 0===t?n:y.add(e,t-n,u)}}},function(e,t,s){var n,r,i;!function(s,o){r=[t],n=o,i="function"==typeof n?n.apply(t,r):n,!(void 0!==i&&(e.exports=i))}(this,function(e){var t=e;t.objectWithoutProperties=function(e,t){var s={};for(var n in e)t.indexOf(n)>=0||Object.prototype.hasOwnProperty.call(e,n)&&(s[n]=e[n]);return s},t._extends=Object.assign||function(e){for(var t=1;t
MoneyGo
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/static/main.js b/static/main.js
new file mode 100644
index 0000000..f28e7ed
--- /dev/null
+++ b/static/main.js
@@ -0,0 +1,23 @@
+var React = require('react');
+var ReactDOM = require('react-dom');
+
+var Globalize = require('globalize');
+var globalizeLocalizer = require('react-widgets/lib/localizers/globalize');
+
+var MoneyGoApp = require('./MoneyGoApp.js');
+
+// Setup globalization for react-widgets
+//Globalize.load(require("cldr-data").entireSupplemental());
+Globalize.load(
+ require("cldr-data/main/en/ca-gregorian"),
+ require("cldr-data/main/en/numbers"),
+ require("cldr-data/supplemental/likelySubtags"),
+ require("cldr-data/supplemental/timeData"),
+ require("cldr-data/supplemental/weekData")
+);
+Globalize.locale('en');
+globalizeLocalizer(Globalize);
+
+$(document).ready(function() {
+ ReactDOM.render(, document.getElementById("content"));
+});
diff --git a/static/ui.js b/static/ui.js
deleted file mode 100644
index 173be08..0000000
--- a/static/ui.js
+++ /dev/null
@@ -1,620 +0,0 @@
-// Import all the objects we want to use from ReactBootstrap
-var Jumbotron = ReactBootstrap.Jumbotron;
-var TabbedArea = ReactBootstrap.TabbedArea;
-var TabPane = ReactBootstrap.TabPane;
-var Panel = ReactBootstrap.Panel;
-var ButtonGroup = ReactBootstrap.ButtonGroup;
-var Modal = ReactBootstrap.Modal;
-
-const NewUserForm = React.createClass({
- getInitialState: function() {
- return {error: "",
- name: "",
- username: "",
- email: "",
- password: "",
- confirm_password: "",
- passwordChanged: false,
- initial_password: ""};
- },
- passwordValidationState: function() {
- if (this.state.passwordChanged) {
- if (this.state.password.length >= 10)
- return "success";
- else if (this.state.password.length >= 6)
- return "warning";
- else
- return "error";
- }
- },
- confirmPasswordValidationState: function() {
- if (this.state.confirm_password.length > 0) {
- if (this.state.confirm_password == this.state.password)
- return "success";
- else
- return "error";
- }
- },
- handleCancel: function() {
- if (this.props.onCancel != null)
- this.props.onCancel();
- },
- handleChange: function() {
- if (this.refs.password.getValue() != this.state.initial_password)
- this.setState({passwordChanged: true});
- this.setState({
- name: this.refs.name.getValue(),
- username: this.refs.username.getValue(),
- email: this.refs.email.getValue(),
- password: this.refs.password.getValue(),
- confirm_password: this.refs.confirm_password.getValue()
- });
- },
- handleSubmit: function(e) {
- var u = new User();
- var error = "";
- e.preventDefault();
-
- u.Name = this.state.name;
- u.Username = this.state.username;
- u.Email = this.state.email;
- u.Password = this.state.password;
- if (u.Password != this.state.confirm_password) {
- this.setState({error: "Error: password do not match"});
- return;
- }
-
- this.handleCreateNewUser(u);
- },
- handleCreateNewUser: function(user) {
- $.ajax({
- type: "POST",
- dataType: "json",
- url: "user/",
- data: {user: user.toJSON()},
- success: function(data, status, jqXHR) {
- var e = new Error();
- e.fromJSON(data);
- if (e.isError()) {
- this.setState({error: e});
- } else {
- this.props.onNewUser();
- }
- }.bind(this),
- error: function(jqXHR, status, error) {
- var e = new Error();
- e.ErrorId = 5;
- e.ErrorString = "Request Failed: " + status + error;
- this.setState({error: e});
- }.bind(this),
- });
- },
- render: function() {
- var title = Create New User
;
- return (
-
- {this.state.error}
-
-
- );
- }
-});
-
-const AccountSettingsModal = React.createClass({
- _getInitialState: function(props) {
- return {error: "",
- name: props.user.Name,
- username: props.user.Username,
- email: props.user.Email,
- password: BogusPassword,
- confirm_password: BogusPassword,
- passwordChanged: false,
- initial_password: BogusPassword};
- },
- getInitialState: function() {
- return this._getInitialState(this.props);
- },
- componentWillReceiveProps: function(nextProps) {
- if (nextProps.show && !this.props.show) {
- this.setState(this._getInitialState(nextProps));
- }
- },
- passwordValidationState: function() {
- if (this.state.passwordChanged) {
- if (this.state.password.length >= 10)
- return "success";
- else if (this.state.password.length >= 6)
- return "warning";
- else
- return "error";
- }
- },
- confirmPasswordValidationState: function() {
- if (this.state.confirm_password.length > 0) {
- if (this.state.confirm_password == this.state.password)
- return "success";
- else
- return "error";
- }
- },
- handleCancel: function() {
- if (this.props.onCancel != null)
- this.props.onCancel();
- },
- handleChange: function() {
- if (this.refs.password.getValue() != this.state.initial_password)
- this.setState({passwordChanged: true});
- this.setState({
- name: this.refs.name.getValue(),
- username: this.refs.username.getValue(),
- email: this.refs.email.getValue(),
- password: this.refs.password.getValue(),
- confirm_password: this.refs.confirm_password.getValue()
- });
- },
- handleSubmit: function(e) {
- var u = new User();
- var error = "";
- e.preventDefault();
-
- u.UserId = this.props.user.UserId;
- u.Name = this.state.name;
- u.Username = this.state.username;
- u.Email = this.state.email;
- if (this.state.passwordChanged) {
- u.Password = this.state.password;
- if (u.Password != this.state.confirm_password) {
- this.setState({error: "Error: password do not match"});
- return;
- }
- } else {
- u.Password = BogusPassword;
- }
-
- this.handleSaveSettings(u);
- },
- handleSaveSettings: function(user) {
- $.ajax({
- type: "PUT",
- dataType: "json",
- url: "user/"+user.UserId+"/",
- data: {user: user.toJSON()},
- success: function(data, status, jqXHR) {
- var e = new Error();
- e.fromJSON(data);
- if (e.isError()) {
- this.setState({error: e});
- } else {
- user.Password = "";
- this.props.onSubmit(user);
- }
- }.bind(this),
- error: function(jqXHR, status, error) {
- var e = new Error();
- e.ErrorId = 5;
- e.ErrorString = "Request Failed: " + status + error;
- this.setState({error: e});
- }.bind(this),
- });
- },
- render: function() {
- return (
-
-
- Edit Account Settings
-
-
- {this.state.error}
-
-
-
-
-
-
-
-
-
- );
- }
-});
-
-const MoneyGoApp = React.createClass({
- getInitialState: function() {
- return {
- hash: "home",
- session: new Session(),
- user: new User(),
- accounts: [],
- account_map: {},
- securities: [],
- security_map: {},
- error: new Error(),
- showAccountSettingsModal: false
- };
- },
- componentDidMount: function() {
- this.getSession();
- this.handleHashChange();
- if ("onhashchange" in window) {
- window.onhashchange = this.handleHashChange;
- }
- },
- handleHashChange: function() {
- var hash = location.hash.replace(/^#/, '');
- if (hash.length == 0)
- hash = "home";
- if (hash != this.state.hash)
- this.setHash(hash);
- },
- setHash: function(hash) {
- location.hash = hash;
- if (this.state.hash != hash)
- this.setState({hash: hash});
- },
- ajaxError: function(jqXHR, status, error) {
- var e = new Error();
- e.ErrorId = 5;
- e.ErrorString = "Request Failed: " + status + error;
- this.setState({error: e});
- },
- getSession: function() {
- $.ajax({
- type: "GET",
- dataType: "json",
- url: "session/",
- success: function(data, status, jqXHR) {
- var e = new Error();
- var s = new Session();
- e.fromJSON(data);
- if (e.isError()) {
- if (e.ErrorId != 1 /* Not Signed In*/)
- this.setState({error: e});
- } else {
- s.fromJSON(data);
- }
- this.setState({session: s});
- this.getUser();
- this.getAccounts();
- this.getSecurities();
- }.bind(this),
- error: this.ajaxError
- });
- },
- getUser: function() {
- if (!this.state.session.isSession())
- return;
- $.ajax({
- type: "GET",
- dataType: "json",
- url: "user/"+this.state.session.UserId+"/",
- success: function(data, status, jqXHR) {
- var e = new Error();
- var u = new User();
- e.fromJSON(data);
- if (e.isError()) {
- this.setState({error: e});
- } else {
- u.fromJSON(data);
- }
- this.setState({user: u});
- }.bind(this),
- error: this.ajaxError
- });
- },
- getSecurities: function() {
- if (!this.state.session.isSession()) {
- this.setState({securities: [], security_map: {}});
- return;
- }
- $.ajax({
- type: "GET",
- dataType: "json",
- url: "security/",
- success: function(data, status, jqXHR) {
- var e = new Error();
- var securities = [];
- var security_map = {};
- e.fromJSON(data);
- if (e.isError()) {
- this.setState({error: e});
- } else {
- for (var i = 0; i < data.securities.length; i++) {
- var s = new Security();
- s.fromJSON(data.securities[i]);
- securities.push(s);
- security_map[s.SecurityId] = s;
- }
- }
- this.setState({securities: securities, security_map: security_map});
- }.bind(this),
- error: this.ajaxError
- });
- },
- getAccounts: function() {
- if (!this.state.session.isSession()) {
- this.setState({accounts: [], account_map: {}});
- return;
- }
- $.ajax({
- type: "GET",
- dataType: "json",
- url: "account/",
- success: function(data, status, jqXHR) {
- var e = new Error();
- var accounts = [];
- var account_map = {};
- e.fromJSON(data);
- if (e.isError()) {
- this.setState({error: e});
- } else {
- for (var i = 0; i < data.accounts.length; i++) {
- var a = new Account();
- a.fromJSON(data.accounts[i]);
- accounts.push(a);
- account_map[a.AccountId] = a;
- }
- //Populate Children arrays in account objects
- for (var i = 0; i < accounts.length; i++) {
- var a = accounts[i];
- if (!a.isRootAccount())
- account_map[a.ParentAccountId].Children.push(a);
- }
- }
- this.setState({accounts: accounts, account_map: account_map});
- }.bind(this),
- error: this.ajaxError
- });
- },
- handleErrorClear: function() {
- this.setState({error: new Error()});
- },
- handleLoginSubmit: function(user) {
- $.ajax({
- type: "POST",
- dataType: "json",
- url: "session/",
- data: {user: user.toJSON()},
- success: function(data, status, jqXHR) {
- var e = new Error();
- e.fromJSON(data);
- if (e.isError()) {
- this.setState({error: e});
- } else {
- this.getSession();
- this.setHash("home");
- }
- }.bind(this),
- error: this.ajaxError
- });
- },
- handleLogoutSubmit: function() {
- this.setState({accounts: [], account_map: {}});
- $.ajax({
- type: "DELETE",
- dataType: "json",
- url: "session/",
- success: function(data, status, jqXHR) {
- var e = new Error();
- e.fromJSON(data);
- if (e.isError()) {
- this.setState({error: e});
- }
- this.setState({session: new Session(), user: new User()});
- }.bind(this),
- error: this.ajaxError
- });
- },
- handleAccountSettings: function() {
- this.setState({showAccountSettingsModal: true});
- },
- handleSettingsSubmitted: function(user) {
- this.setState({
- user: user,
- showAccountSettingsModal: false
- });
- },
- handleSettingsCanceled: function(user) {
- this.setState({showAccountSettingsModal: false});
- },
- handleCreateNewUser: function() {
- this.setHash("new_user");
- },
- handleGoHome: function(user) {
- this.setHash("home");
- },
- handleCreateAccount: function(account) {
- $.ajax({
- type: "POST",
- dataType: "json",
- url: "account/",
- data: {account: account.toJSON()},
- success: function(data, status, jqXHR) {
- var e = new Error();
- e.fromJSON(data);
- if (e.isError()) {
- this.setState({error: e});
- } else {
- this.getAccounts();
- }
- }.bind(this),
- error: this.ajaxError
- });
- },
- handleUpdateAccount: function(account) {
- $.ajax({
- type: "PUT",
- dataType: "json",
- url: "account/"+account.AccountId+"/",
- data: {account: account.toJSON()},
- success: function(data, status, jqXHR) {
- var e = new Error();
- e.fromJSON(data);
- if (e.isError()) {
- this.setState({error: e});
- } else {
- this.getAccounts();
- }
- }.bind(this),
- error: this.ajaxError
- });
- },
- handleDeleteAccount: function(account) {
- $.ajax({
- type: "DELETE",
- dataType: "json",
- url: "account/"+account.AccountId+"/",
- success: function(data, status, jqXHR) {
- var e = new Error();
- e.fromJSON(data);
- if (e.isError()) {
- this.setState({error: e});
- } else {
- this.getAccounts();
- }
- }.bind(this),
- error: this.ajaxError
- });
- },
- render: function() {
- var mainContent;
- if (this.state.hash == "new_user") {
- mainContent =
- } else {
- if (this.state.user.isUser())
- mainContent =
-
-
-
-
- Scheduled transactions go here...
- Budgets go here...
- Reports go here...
-
- else
- mainContent =
-
-
- MoneyGo
- Go manage your money.
-
-
- }
-
- return (
-
- );
- }
-});
-
-React.render(, document.getElementById("content"));