You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by be...@apache.org on 2016/02/01 18:40:20 UTC
[1/6] fauxton commit: updated refs/heads/master to e6450a0
Repository: couchdb-fauxton
Updated Branches:
refs/heads/master 574af6a8b -> e6450a0d0
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/documents/index-editor/tests/viewIndex.componentsSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/documents/index-editor/tests/viewIndex.componentsSpec.react.jsx b/app/addons/documents/index-editor/tests/viewIndex.componentsSpec.react.jsx
index 67df4e5..e217d3c 100644
--- a/app/addons/documents/index-editor/tests/viewIndex.componentsSpec.react.jsx
+++ b/app/addons/documents/index-editor/tests/viewIndex.componentsSpec.react.jsx
@@ -16,8 +16,9 @@ define([
'addons/documents/index-editor/actions',
'addons/documents/resources',
'testUtils',
- "react"
-], function (FauxtonAPI, Views, Stores, Actions, Documents, utils, React) {
+ "react",
+ 'react-dom'
+], function (FauxtonAPI, Views, Stores, Actions, Documents, utils, React, ReactDOM) {
FauxtonAPI.router = new FauxtonAPI.Router([]);
var assert = utils.assert;
@@ -53,7 +54,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
describe('getReduceValue', function () {
@@ -169,12 +170,12 @@ define([
afterEach(function () {
restore(Actions.newDesignDoc);
restore(Actions.designDocChange);
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('calls new design doc on new selected', function () {
var spy = sinon.spy(Actions, 'newDesignDoc');
- TestUtils.Simulate.change($(selectorEl.getDOMNode()).find('#ddoc')[0], {
+ TestUtils.Simulate.change($(ReactDOM.findDOMNode(selectorEl)).find('#ddoc')[0], {
target: {
value: 'new'
}
@@ -185,7 +186,7 @@ define([
it('calls design doc changed on a different design doc selected', function () {
var spy = sinon.spy(Actions, 'designDocChange');
- TestUtils.Simulate.change($(selectorEl.getDOMNode()).find('#ddoc')[0], {
+ TestUtils.Simulate.change($(ReactDOM.findDOMNode(selectorEl)).find('#ddoc')[0], {
target: {
value: 'another-doc'
}
@@ -197,7 +198,7 @@ define([
it('calls design doc changed on new design doc entered', function () {
var spy = sinon.spy(Actions, 'designDocChange');
Actions.newDesignDoc();
- TestUtils.Simulate.change($(selectorEl.getDOMNode()).find('#new-ddoc')[0], {
+ TestUtils.Simulate.change($(ReactDOM.findDOMNode(selectorEl)).find('#new-ddoc')[0], {
target: {
value: 'new-doc-entered'
}
@@ -207,12 +208,12 @@ define([
});
it('does not filter usual design docs', function () {
- assert.ok(/_design\/test-doc/.test($(selectorEl.getDOMNode()).text()));
+ assert.ok(/_design\/test-doc/.test($(ReactDOM.findDOMNode(selectorEl)).text()));
});
it('filters mango docs', function () {
selectorEl = TestUtils.renderIntoDocument(<Views.DesignDocSelector/>, container);
- assert.notOk(/_design\/123mango/.test($(selectorEl.getDOMNode()).text()));
+ assert.notOk(/_design\/123mango/.test($(ReactDOM.findDOMNode(selectorEl)).text()));
});
});
@@ -228,7 +229,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
sandbox.restore();
});
@@ -253,7 +254,7 @@ define([
it('calls changeViewName on view name change', function () {
var viewName = 'new-name';
var spy = sandbox.spy(Actions, 'changeViewName');
- var el = $(editorEl.getDOMNode()).find('#index-name')[0];
+ var el = $(ReactDOM.findDOMNode(editorEl)).find('#index-name')[0];
TestUtils.Simulate.change(el, {
target: {
value: viewName
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/documents/index-results/index-results.components.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/documents/index-results/index-results.components.react.jsx b/app/addons/documents/index-results/index-results.components.react.jsx
index 40af4e2..f809883 100644
--- a/app/addons/documents/index-results/index-results.components.react.jsx
+++ b/app/addons/documents/index-results/index-results.components.react.jsx
@@ -423,7 +423,7 @@ function (app, FauxtonAPI, React, Stores, Actions, Components, Documents, Fauxto
disabled={this.props.isLoading}
title="Select all docs that can be..." /> : null}
- <ReactCSSTransitionGroup transitionName="slow-fade">
+ <ReactCSSTransitionGroup transitionName="slow-fade" transitionEnterTimeout={500} transitionLeaveTimeout={300}>
{this.getDocumentList()}
</ReactCSSTransitionGroup>
</div>
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/documents/index-results/tests/index-results.componentsSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/documents/index-results/tests/index-results.componentsSpec.react.jsx b/app/addons/documents/index-results/tests/index-results.componentsSpec.react.jsx
index 7182cb6..7bde20b 100644
--- a/app/addons/documents/index-results/tests/index-results.componentsSpec.react.jsx
+++ b/app/addons/documents/index-results/tests/index-results.componentsSpec.react.jsx
@@ -16,11 +16,11 @@ define([
'addons/documents/index-results/stores',
'addons/documents/resources',
'addons/databases/resources',
-
'addons/documents/tests/document-test-helper',
'testUtils',
- "react"
-], function (FauxtonAPI, Views, IndexResultsActions, Stores, Documents, Databases, documentTestHelper, utils, React) {
+ "react",
+ 'react-dom'
+], function (FauxtonAPI, Views, IndexResultsActions, Stores, Documents, Databases, documentTestHelper, utils, React, ReactDOM) {
FauxtonAPI.router = new FauxtonAPI.Router([]);
var assert = utils.assert;
@@ -39,7 +39,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(React.findDOMNode(instance).parentNode);
+ ReactDOM.unmountComponentAtNode(ReactDOM.findDOMNode(instance).parentNode);
store.reset();
});
@@ -51,7 +51,7 @@ define([
IndexResultsActions.resultsListReset();
instance = TestUtils.renderIntoDocument(<Views.List />, container);
- var $el = $(instance.getDOMNode());
+ var $el = $(ReactDOM.findDOMNode(instance));
assert.equal($el.text(), 'No Index Created Yet!');
});
@@ -74,7 +74,7 @@ define([
instance = TestUtils.renderIntoDocument(<Views.List />, container);
- var $el = $(instance.getDOMNode());
+ var $el = $(ReactDOM.findDOMNode(instance));
assert.equal($el.text(), 'I <3 Hamburg');
});
});
@@ -93,7 +93,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(React.findDOMNode(instance).parentNode);
+ ReactDOM.unmountComponentAtNode(ReactDOM.findDOMNode(instance).parentNode);
store.reset();
});
@@ -112,7 +112,7 @@ define([
container
);
- var $el = $(instance.getDOMNode());
+ var $el = $(ReactDOM.findDOMNode(instance));
assert.ok($el.find('.tableview-checkbox-cell input').length === 0);
});
@@ -143,7 +143,7 @@ define([
container
);
- var $el = $(instance.getDOMNode());
+ var $el = $(ReactDOM.findDOMNode(instance));
assert.ok($el.find('.tableview-checkbox-cell input').length > 0);
});
@@ -168,7 +168,7 @@ define([
container
);
- var $el = $(instance.getDOMNode());
+ var $el = $(ReactDOM.findDOMNode(instance));
assert.ok($el.find('.tableview-checkbox-cell input').length === 0);
});
@@ -188,7 +188,7 @@ define([
container
);
- var $el = $(instance.getDOMNode());
+ var $el = $(ReactDOM.findDOMNode(instance));
assert.ok($el.find('.tableview-checkbox-cell input').length === 0);
});
@@ -208,7 +208,7 @@ define([
container
);
- var $el = $(instance.getDOMNode());
+ var $el = $(ReactDOM.findDOMNode(instance));
assert.ok($el.find('.tableview-checkbox-cell input').length > 0);
});
@@ -228,7 +228,7 @@ define([
container
);
- var $el = $(instance.getDOMNode());
+ var $el = $(ReactDOM.findDOMNode(instance));
assert.ok($el.find('.js-row-select').length > 0);
});
@@ -247,7 +247,7 @@ define([
container
);
- var $el = $(instance.getDOMNode());
+ var $el = $(ReactDOM.findDOMNode(instance));
assert.notOk($el.hasClass('show-select'));
});
@@ -261,7 +261,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(React.findDOMNode(instance).parentNode);
+ ReactDOM.unmountComponentAtNode(ReactDOM.findDOMNode(instance).parentNode);
store.reset();
});
@@ -282,7 +282,7 @@ define([
container
);
- var $el = $(instance.getDOMNode());
+ var $el = $(ReactDOM.findDOMNode(instance));
var $targetNode = $el.find('td.tableview-el-last').prev();
var formattedDoc = JSON.stringify(doc.object, null, ' ');
@@ -300,7 +300,7 @@ define([
container
);
- var $el = $(instance.getDOMNode());
+ var $el = $(ReactDOM.findDOMNode(instance));
assert.equal($el.find('.icon-filter').length, 0);
@@ -318,7 +318,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(React.findDOMNode(instance).parentNode);
+ ReactDOM.unmountComponentAtNode(ReactDOM.findDOMNode(instance).parentNode);
store.reset();
});
@@ -329,7 +329,7 @@ define([
container
);
- var $el = $(instance.getDOMNode());
+ var $el = $(ReactDOM.findDOMNode(instance));
assert.ok($el.find('.loading-lines').length === 1);
});
@@ -341,7 +341,7 @@ define([
container
);
- var $el = $(instance.getDOMNode());
+ var $el = $(ReactDOM.findDOMNode(instance));
assert.ok($el.find('.loading-lines').length === 0);
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/documents/mango/tests/mango.componentsSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/documents/mango/tests/mango.componentsSpec.react.jsx b/app/addons/documents/mango/tests/mango.componentsSpec.react.jsx
index 2c126ad..5b276f9 100644
--- a/app/addons/documents/mango/tests/mango.componentsSpec.react.jsx
+++ b/app/addons/documents/mango/tests/mango.componentsSpec.react.jsx
@@ -16,13 +16,12 @@ define([
'addons/documents/mango/mango.stores',
'addons/documents/mango/mango.actions',
'addons/documents/mango/mango.actiontypes',
-
'addons/documents/resources',
'addons/databases/resources',
-
'testUtils',
- 'react'
-], function (FauxtonAPI, Views, Stores, MangoActions, ActionTypes, Resources, Databases, utils, React) {
+ 'react',
+ 'react-dom'
+], function (FauxtonAPI, Views, Stores, MangoActions, ActionTypes, Resources, Databases, utils, React, ReactDOM) {
var assert = utils.assert;
var TestUtils = React.addons.TestUtils;
@@ -40,7 +39,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('renders a default index definition', function () {
@@ -58,7 +57,7 @@ define([
<Views.MangoIndexEditorController description="foo" />,
container
);
- var $el = $(editor.getDOMNode());
+ var $el = $(ReactDOM.findDOMNode(editor));
assert.equal($el.find('.db-title').text(), 'testdb');
});
@@ -68,7 +67,7 @@ define([
<Views.MangoIndexEditorController description="CouchDB Query is great!" />,
container
);
- var $el = $(editor.getDOMNode());
+ var $el = $(ReactDOM.findDOMNode(editor));
assert.equal($el.find('.editor-description').text(), 'CouchDB Query is great!');
});
@@ -123,7 +122,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('lists our available indexes', function () {
@@ -131,7 +130,7 @@ define([
<Views.MangoQueryEditorController description="foo" />,
container
);
- var $el = $(editor.getDOMNode());
+ var $el = $(ReactDOM.findDOMNode(editor));
assert.equal($el.find('.mango-available-indexes').length, 1);
assert.include(
@@ -145,7 +144,7 @@ define([
});
it('has a default query', function () {
- editor = React.render(
+ editor = ReactDOM.render(
<Views.MangoQueryEditorController description="foo" />,
container
);
@@ -183,7 +182,7 @@ define([
<Views.MangoQueryEditorController description="foo" />,
container
);
- var $el = $(editor.getDOMNode());
+ var $el = $(ReactDOM.findDOMNode(editor));
assert.equal($el.find('.info-changed-query').length, 1);
});
@@ -192,7 +191,7 @@ define([
<Views.MangoQueryEditorController description="foo" />,
container
);
- var $el = $(editor.getDOMNode());
+ var $el = $(ReactDOM.findDOMNode(editor));
assert.equal($el.find('.db-title').text(), 'testdb');
});
@@ -202,7 +201,7 @@ define([
<Views.MangoQueryEditorController description="CouchDB Query is great!" />,
container
);
- var $el = $(editor.getDOMNode());
+ var $el = $(ReactDOM.findDOMNode(editor));
assert.equal($el.find('.editor-description').text(), 'CouchDB Query is great!');
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/documents/pagination/tests/pagination.componentSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/documents/pagination/tests/pagination.componentSpec.react.jsx b/app/addons/documents/pagination/tests/pagination.componentSpec.react.jsx
index 7c6c07e..afeaaac 100644
--- a/app/addons/documents/pagination/tests/pagination.componentSpec.react.jsx
+++ b/app/addons/documents/pagination/tests/pagination.componentSpec.react.jsx
@@ -14,8 +14,8 @@ define([
'addons/documents/pagination/pagination.react',
'testUtils',
'react',
-
-], function (FauxtonAPI, Views, utils, React) {
+ 'react-dom'
+], function (FauxtonAPI, Views, utils, React, ReactDOM) {
FauxtonAPI.router = new FauxtonAPI.Router([]);
@@ -39,11 +39,11 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(React.findDOMNode(selectorEl).parentNode);
+ ReactDOM.unmountComponentAtNode(ReactDOM.findDOMNode(selectorEl).parentNode);
});
it('on new select calls callback with new page size', function () {
- var selectEl = $(selectorEl.getDOMNode()).find('#select-per-page')[0];
+ var selectEl = $(ReactDOM.findDOMNode(selectorEl)).find('#select-per-page')[0];
var perPage = 5;
TestUtils.Simulate.change(selectEl, {
target: {
@@ -63,7 +63,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(React.findDOMNode(selectorEl).parentNode);
+ ReactDOM.unmountComponentAtNode(ReactDOM.findDOMNode(selectorEl).parentNode);
});
it('shows the amount of fields, none hidden', function () {
@@ -73,7 +73,7 @@ define([
container
);
- var text = $(selectorEl.getDOMNode()).find('.shown-fields').text();
+ var text = $(ReactDOM.findDOMNode(selectorEl)).find('.shown-fields').text();
assert.equal('Showing 7 columns.', text);
});
@@ -85,7 +85,7 @@ define([
container
);
- var text = $(selectorEl.getDOMNode()).find('.shown-fields').text();
+ var text = $(ReactDOM.findDOMNode(selectorEl)).find('.shown-fields').text();
assert.equal('Showing 5 of 7 columns.', text);
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/documents/queryoptions/queryoptions.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/documents/queryoptions/queryoptions.react.jsx b/app/addons/documents/queryoptions/queryoptions.react.jsx
index 977edba..ff8b76c 100644
--- a/app/addons/documents/queryoptions/queryoptions.react.jsx
+++ b/app/addons/documents/queryoptions/queryoptions.react.jsx
@@ -14,12 +14,13 @@ define([
'app',
'api',
'react',
+ 'react-dom',
'addons/documents/queryoptions/stores',
'addons/documents/queryoptions/actions',
- 'addons/components/react-components.react',
+ 'addons/components/react-components.react'
],
-function (app, FauxtonAPI, React, Stores, Actions, Components) {
+function (app, FauxtonAPI, React, ReactDOM, Stores, Actions, Components) {
var store = Stores.queryOptionsStore;
var Tray = Components.Tray;
var TrayContents = Components.TrayContents;
@@ -127,8 +128,8 @@ function (app, FauxtonAPI, React, Stores, Actions, Components) {
updateBetweenKeys: function () {
this.props.updateBetweenKeys({
- startkey: React.findDOMNode(this.refs.startkey).value,
- endkey: React.findDOMNode(this.refs.endkey).value,
+ startkey: ReactDOM.findDOMNode(this.refs.startkey).value,
+ endkey: ReactDOM.findDOMNode(this.refs.endkey).value,
include: this.props.betweenKeys.include
});
},
@@ -390,7 +391,7 @@ A key value is the first parameter emitted in a map function. For example emit("
KeySearchFields: KeySearchFields,
AdditionalParams: AdditionalParams,
render: function (el) {
- React.render(<QueryOptionsController />, $(el)[0]);
+ ReactDOM.render(<QueryOptionsController />, $(el)[0]);
}
};
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/documents/queryoptions/tests/queryoptions.componentsSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/documents/queryoptions/tests/queryoptions.componentsSpec.react.jsx b/app/addons/documents/queryoptions/tests/queryoptions.componentsSpec.react.jsx
index b782d48..47ed9c8 100644
--- a/app/addons/documents/queryoptions/tests/queryoptions.componentsSpec.react.jsx
+++ b/app/addons/documents/queryoptions/tests/queryoptions.componentsSpec.react.jsx
@@ -16,8 +16,9 @@ define([
'addons/documents/queryoptions/actions',
'addons/documents/resources',
'testUtils',
- "react"
-], function (FauxtonAPI, Views, Stores, Actions, Documents, utils, React) {
+ "react",
+ 'react-dom'
+], function (FauxtonAPI, Views, Stores, Actions, Documents, utils, React, ReactDOM) {
FauxtonAPI.router = new FauxtonAPI.Router([]);
var assert = utils.assert;
@@ -32,7 +33,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
describe('MainFieldsView', function () {
@@ -52,7 +53,7 @@ define([
it('updates group level', function () {
var spy = sinon.spy();
mainFieldsEl = TestUtils.renderIntoDocument(<Views.MainFieldsView updateGroupLevel={spy} reduce={true} includeDocs={false} showReduce={true}/>, container);
- var el = $(mainFieldsEl.getDOMNode()).find('#qoGroupLevel')[0];
+ var el = $(ReactDOM.findDOMNode(mainFieldsEl)).find('#qoGroupLevel')[0];
TestUtils.Simulate.change(el, {target: {value: 'exact'}});
assert.ok(spy.calledOnce);
@@ -61,7 +62,7 @@ define([
it('toggles include docs on change', function () {
var spy = sinon.spy();
mainFieldsEl = TestUtils.renderIntoDocument(<Views.MainFieldsView toggleIncludeDocs={spy} reduce={false} includeDocs={false} showReduce={false}/>, container);
- var el = $(mainFieldsEl.getDOMNode()).find('#qoIncludeDocs')[0];
+ var el = $(ReactDOM.findDOMNode(mainFieldsEl)).find('#qoIncludeDocs')[0];
TestUtils.Simulate.change(el);
assert.ok(spy.calledOnce);
@@ -72,7 +73,7 @@ define([
mainFieldsEl = TestUtils.renderIntoDocument(
<Views.MainFieldsView reduce={false} includeDocs={false} showReduce={false} docURL={customDocURL} />,
container);
- assert.equal($(React.findDOMNode(mainFieldsEl)).find('.help-link').attr('href'), customDocURL);
+ assert.equal($(ReactDOM.findDOMNode(mainFieldsEl)).find('.help-link').attr('href'), customDocURL);
});
});
@@ -88,7 +89,7 @@ define([
toggleByKeys={spy}
/>, container);
- var el = $(keysEl.getDOMNode()).find('#byKeys')[0];
+ var el = $(ReactDOM.findDOMNode(keysEl)).find('#byKeys')[0];
TestUtils.Simulate.click(el);
assert.ok(spy.calledOnce);
});
@@ -102,7 +103,7 @@ define([
betweenKeys={{}}
/>, container);
- var el = $(keysEl.getDOMNode()).find('#betweenKeys')[0];
+ var el = $(ReactDOM.findDOMNode(keysEl)).find('#betweenKeys')[0];
TestUtils.Simulate.click(el);
assert.ok(spy.calledOnce);
});
@@ -116,7 +117,7 @@ define([
betweenKeys={{}}
/>, container);
- var el = $(keysEl.getDOMNode()).find('#keys-input')[0];
+ var el = $(ReactDOM.findDOMNode(keysEl)).find('#keys-input')[0];
TestUtils.Simulate.change(el, {target: {value: 'boom'}});
assert.ok(spy.calledWith('boom'));
});
@@ -135,7 +136,7 @@ define([
betweenKeys={betweenKeys}
/>, container);
- var el = $(keysEl.getDOMNode()).find('#endkey')[0];
+ var el = $(ReactDOM.findDOMNode(keysEl)).find('#endkey')[0];
TestUtils.Simulate.change(el, {target: {value: 'boom'}});
assert.ok(spy.calledOnce);
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/documents/sidebar/sidebar.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/documents/sidebar/sidebar.react.jsx b/app/addons/documents/sidebar/sidebar.react.jsx
index 660fff5..dd5abc2 100644
--- a/app/addons/documents/sidebar/sidebar.react.jsx
+++ b/app/addons/documents/sidebar/sidebar.react.jsx
@@ -14,16 +14,16 @@ define([
'app',
'api',
'react',
+ 'react-dom',
'addons/documents/sidebar/stores',
'addons/documents/sidebar/actions',
'addons/components/react-components.react',
'addons/documents/views',
'addons/documents/helpers',
-
'plugins/prettify'
],
-function (app, FauxtonAPI, React, Stores, Actions, Components, DocumentViews, DocumentHelper) {
+function (app, FauxtonAPI, React, ReactDOM, Stores, Actions, Components, DocumentViews, DocumentHelper) {
var DeleteDBModal = DocumentViews.Views.DeleteDBModal;
var store = Stores.sidebarStore;
var LoadLines = Components.LoadLines;
@@ -135,7 +135,7 @@ function (app, FauxtonAPI, React, Stores, Actions, Components, DocumentViews, Do
e.preventDefault();
var newToggleState = !this.props.contentVisible;
var state = newToggleState ? 'show' : 'hide';
- $(React.findDOMNode(this)).find('.accordion-body').collapse(state);
+ $(ReactDOM.findDOMNode(this)).find('.accordion-body').collapse(state);
this.props.toggle(this.props.designDocName, this.props.title);
},
@@ -221,7 +221,7 @@ function (app, FauxtonAPI, React, Stores, Actions, Components, DocumentViews, Do
e.preventDefault();
var newToggleState = !this.props.contentVisible;
var state = newToggleState ? 'show' : 'hide';
- $(React.findDOMNode(this)).find('#' + this.props.designDocName).collapse(state);
+ $(ReactDOM.findDOMNode(this)).find('#' + this.props.designDocName).collapse(state);
this.props.toggle(this.props.designDocName);
},
@@ -326,7 +326,7 @@ function (app, FauxtonAPI, React, Stores, Actions, Components, DocumentViews, Do
this.dbModal = new DeleteDBModal({
database: this.props.database,
isSystemDatabase: (/^_/).test(this.props.database.id),
- el: React.findDOMNode(this)
+ el: ReactDOM.findDOMNode(this)
});
this.dbModal.render();
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/documents/sidebar/tests/sidebar.componentsSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/documents/sidebar/tests/sidebar.componentsSpec.react.jsx b/app/addons/documents/sidebar/tests/sidebar.componentsSpec.react.jsx
index ec3a046..a57fc28 100644
--- a/app/addons/documents/sidebar/tests/sidebar.componentsSpec.react.jsx
+++ b/app/addons/documents/sidebar/tests/sidebar.componentsSpec.react.jsx
@@ -12,9 +12,10 @@
define([
'api',
'react',
+ 'react-dom',
'testUtils',
'addons/documents/sidebar/sidebar.react'
-], function (FauxtonAPI, React, utils, Components) {
+], function (FauxtonAPI, React, ReactDOM, utils, Components) {
var assert = utils.assert;
var TestUtils = React.addons.TestUtils;
var DesignDoc = Components.DesignDoc;
@@ -28,7 +29,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('confirm only single sub-option is shown by default (metadata link)', function () {
@@ -41,7 +42,7 @@ define([
designDoc={{}}
designDocName="id"
databaseName="db-name" />, container);
- var subOptions = $(React.findDOMNode(el)).find('.accordion-body li');
+ var subOptions = $(ReactDOM.findDOMNode(el)).find('.accordion-body li');
assert.equal(subOptions.length, 1);
});
@@ -64,7 +65,7 @@ define([
}}
designDocName="id"
databaseName="db-name" />, container);
- var subOptions = $(React.findDOMNode(el)).find('.accordion-body li');
+ var subOptions = $(ReactDOM.findDOMNode(el)).find('.accordion-body li');
assert.equal(subOptions.length, 3); // 1 for "Metadata" row, 1 for Type List row ("search indexes") and one for the index itself
});
@@ -83,7 +84,7 @@ define([
designDoc={{}} // note that this is empty
designDocName="id"
databaseName="db-name" />, container);
- var subOptions = $(React.findDOMNode(el)).find('.accordion-body li');
+ var subOptions = $(ReactDOM.findDOMNode(el)).find('.accordion-body li');
assert.equal(subOptions.length, 1);
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/documents/tests/helpersSpec.js
----------------------------------------------------------------------
diff --git a/app/addons/documents/tests/helpersSpec.js b/app/addons/documents/tests/helpersSpec.js
new file mode 100644
index 0000000..0f2ba29
--- /dev/null
+++ b/app/addons/documents/tests/helpersSpec.js
@@ -0,0 +1,31 @@
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy of
+// the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.
+define([
+ 'api',
+ 'addons/documents/helpers',
+ 'testUtils'
+], function (FauxtonAPI, Helpers, testUtils) {
+ var assert = testUtils.assert;
+
+ describe('Helpers', function () {
+
+ describe('parseJSON', function () {
+ it('replaces "\\n" with actual newlines', function () {
+ var string = 'I am a string\\nwith\\nfour\\nlinebreaks\\nin';
+ var result = Helpers.parseJSON(string);
+ assert.equal(result.match(/\n/g).length, 4);
+ });
+ });
+
+ });
+
+});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/fauxton/components.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/fauxton/components.react.jsx b/app/addons/fauxton/components.react.jsx
index 1eecb46..7847f0a 100644
--- a/app/addons/fauxton/components.react.jsx
+++ b/app/addons/fauxton/components.react.jsx
@@ -14,6 +14,7 @@ define([
'app',
'api',
'react',
+ 'react-dom',
'ZeroClipboard',
'libs/react-bootstrap',
@@ -21,7 +22,7 @@ define([
'velocity.ui'
],
-function (app, FauxtonAPI, React, ZeroClipboard, ReactBootstrap) {
+function (app, FauxtonAPI, React, ReactDOM, ZeroClipboard, ReactBootstrap) {
var Modal = ReactBootstrap.Modal;
@@ -60,7 +61,7 @@ function (app, FauxtonAPI, React, ZeroClipboard, ReactBootstrap) {
},
componentDidMount: function () {
- var el = React.findDOMNode(this);
+ var el = ReactDOM.findDOMNode(this);
this.clipboard = new ZeroClipboard(el);
this.clipboard.on('load', function () {
this.clipboard.on('mouseup', function () {
@@ -94,7 +95,7 @@ function (app, FauxtonAPI, React, ZeroClipboard, ReactBootstrap) {
},
componentDidMount: function () {
- var el = React.findDOMNode(this.refs["copy-text-" + this.props.uniqueKey]);
+ var el = ReactDOM.findDOMNode(this.refs["copy-text-" + this.props.uniqueKey]);
this.clipboard = new ZeroClipboard(el);
this.clipboard.on('load', function () {
this.clipboard.on('mouseup', function () {
@@ -215,7 +216,7 @@ function (app, FauxtonAPI, React, ZeroClipboard, ReactBootstrap) {
show: function (done) {
this.setState({show: true});
- $(React.findDOMNode(this.refs.myself)).velocity('transition.slideDownIn', FauxtonAPI.constants.MISC.TRAY_TOGGLE_SPEED, function () {
+ $(ReactDOM.findDOMNode(this.refs.myself)).velocity('transition.slideDownIn', FauxtonAPI.constants.MISC.TRAY_TOGGLE_SPEED, function () {
if (done) {
done(true);
}
@@ -223,7 +224,7 @@ function (app, FauxtonAPI, React, ZeroClipboard, ReactBootstrap) {
},
hide: function (done) {
- $(React.findDOMNode(this.refs.myself)).velocity('reverse', FauxtonAPI.constants.MISC.TRAY_TOGGLE_SPEED, function () {
+ $(ReactDOM.findDOMNode(this.refs.myself)).velocity('reverse', FauxtonAPI.constants.MISC.TRAY_TOGGLE_SPEED, function () {
this.setState({show: false});
if (done) {
done(false);
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/fauxton/navigation/components.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/fauxton/navigation/components.react.jsx b/app/addons/fauxton/navigation/components.react.jsx
index 0310530..bc06215 100644
--- a/app/addons/fauxton/navigation/components.react.jsx
+++ b/app/addons/fauxton/navigation/components.react.jsx
@@ -13,11 +13,12 @@ define([
'app',
'api',
'react',
+ 'react-dom',
'addons/fauxton/navigation/stores',
'addons/fauxton/navigation/actions'
],
-function (app, FauxtonAPI, React, Stores, Actions) {
+function (app, FauxtonAPI, React, ReactDOM, Stores, Actions) {
var navBarStore = Stores.navBarStore;
var Footer = React.createClass({
@@ -152,7 +153,7 @@ function (app, FauxtonAPI, React, Stores, Actions) {
return {
renderNavBar: function (el) {
- React.render(<NavBar/>, el);
+ ReactDOM.render(<NavBar/>, el);
},
NavBar: NavBar,
Burger: Burger
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/fauxton/navigation/tests/componentsSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/fauxton/navigation/tests/componentsSpec.react.jsx b/app/addons/fauxton/navigation/tests/componentsSpec.react.jsx
index 2820ef4..2b4708c 100644
--- a/app/addons/fauxton/navigation/tests/componentsSpec.react.jsx
+++ b/app/addons/fauxton/navigation/tests/componentsSpec.react.jsx
@@ -16,8 +16,9 @@ define([
'core/auth',
'addons/auth/base',
'testUtils',
- "react"
-], function (FauxtonAPI, Views, Actions, Auth, BaseAuth, utils, React) {
+ "react",
+ 'react-dom'
+], function (FauxtonAPI, Views, Actions, Auth, BaseAuth, utils, React, ReactDOM) {
var assert = utils.assert;
var TestUtils = React.addons.TestUtils;
@@ -34,11 +35,11 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('dispatch TOGGLE_NAVBAR_MENU on click', function () {
- TestUtils.Simulate.click(burgerEl.getDOMNode());
+ TestUtils.Simulate.click(ReactDOM.findDOMNode(burgerEl));
assert.ok(toggleMenu.calledOnce);
});
@@ -57,13 +58,13 @@ define([
FauxtonAPI.session.trigger('change');
// confirm the logout link is present
- var matches = React.findDOMNode(el).outerHTML.match(/Logout/);
+ var matches = ReactDOM.findDOMNode(el).outerHTML.match(/Logout/);
assert.equal(matches.length, 1);
// now confirm there's still only a single logout link after publishing multiple
FauxtonAPI.session.trigger('change');
FauxtonAPI.session.trigger('change');
- matches = React.findDOMNode(el).outerHTML.match(/Logout/);
+ matches = ReactDOM.findDOMNode(el).outerHTML.match(/Logout/);
assert.equal(matches.length, 1);
FauxtonAPI.session.isLoggedIn.restore();
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/fauxton/notifications/notifications.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/fauxton/notifications/notifications.react.jsx b/app/addons/fauxton/notifications/notifications.react.jsx
index 443e687..2991a6f 100644
--- a/app/addons/fauxton/notifications/notifications.react.jsx
+++ b/app/addons/fauxton/notifications/notifications.react.jsx
@@ -14,6 +14,7 @@ define([
'app',
'api',
'react',
+ 'react-dom',
'addons/fauxton/notifications/actions',
'addons/fauxton/notifications/stores',
'addons/fauxton/components.react',
@@ -22,7 +23,7 @@ define([
'velocity.ui'
],
-function (app, FauxtonAPI, React, Actions, Stores, Components) {
+function (app, FauxtonAPI, React, ReactDOM, Actions, Stores, Components) {
var notificationStore = Stores.notificationStore;
var Clipboard = Components.Clipboard;
@@ -197,18 +198,18 @@ function (app, FauxtonAPI, React, Actions, Stores, Components) {
show = this.props.item.type === this.props.filter;
}
if (show) {
- $(React.findDOMNode(this)).velocity({ opacity: 1, height: this.state.elementHeight }, this.props.transitionSpeed);
+ $(ReactDOM.findDOMNode(this)).velocity({ opacity: 1, height: this.state.elementHeight }, this.props.transitionSpeed);
return;
}
this.hide();
},
getHeight: function () {
- return $(React.findDOMNode(this)).outerHeight(true);
+ return $(ReactDOM.findDOMNode(this)).outerHeight(true);
},
hide: function (onHidden) {
- $(React.findDOMNode(this)).velocity({ opacity: 0, height: 0 }, this.props.transitionSpeed, function () {
+ $(ReactDOM.findDOMNode(this)).velocity({ opacity: 0, height: 0 }, this.props.transitionSpeed, function () {
if (onHidden) {
onHidden();
}
@@ -255,7 +256,7 @@ function (app, FauxtonAPI, React, Actions, Stores, Components) {
NotificationRow: NotificationRow,
renderNotificationCenter: function (el) {
- return React.render(<NotificationCenterPanel />, el);
+ return ReactDOM.render(<NotificationCenterPanel />, el);
}
};
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/fauxton/notifications/tests/componentsSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/fauxton/notifications/tests/componentsSpec.react.jsx b/app/addons/fauxton/notifications/tests/componentsSpec.react.jsx
index b72eac5..ab8d432 100644
--- a/app/addons/fauxton/notifications/tests/componentsSpec.react.jsx
+++ b/app/addons/fauxton/notifications/tests/componentsSpec.react.jsx
@@ -15,8 +15,9 @@ define([
'addons/fauxton/notifications/stores',
'testUtils',
'react',
+ 'react-dom',
'moment'
-], function (FauxtonAPI, Views, Stores, utils, React, moment) {
+], function (FauxtonAPI, Views, Stores, utils, React, ReactDOM, moment) {
var assert = utils.assert;
var TestUtils = React.addons.TestUtils;
@@ -52,7 +53,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('shows all notification types when "all" filter applied', function () {
@@ -60,22 +61,22 @@ define([
<Views.NotificationRow filter="all" item={notifications.success} />,
container
);
- assert.equal($(row1.getDOMNode()).attr('aria-hidden'), 'false');
- React.unmountComponentAtNode(container);
+ assert.equal($(ReactDOM.findDOMNode(row1)).attr('aria-hidden'), 'false');
+ ReactDOM.unmountComponentAtNode(container);
var row2 = TestUtils.renderIntoDocument(
<Views.NotificationRow filter="all" item={notifications.error} />,
container
);
- assert.equal($(row2.getDOMNode()).attr('aria-hidden'), 'false');
- React.unmountComponentAtNode(container);
+ assert.equal($(ReactDOM.findDOMNode(row2)).attr('aria-hidden'), 'false');
+ ReactDOM.unmountComponentAtNode(container);
var row3 = TestUtils.renderIntoDocument(
<Views.NotificationRow filter="all" item={notifications.info} />,
container
);
- assert.equal($(row3.getDOMNode()).attr('aria-hidden'), 'false');
- React.unmountComponentAtNode(container);
+ assert.equal($(ReactDOM.findDOMNode(row3)).attr('aria-hidden'), 'false');
+ ReactDOM.unmountComponentAtNode(container);
});
it('hides notification when filter doesn\'t match', function () {
@@ -83,7 +84,7 @@ define([
<Views.NotificationRow filter="success" item={notifications.info} />,
container
);
- assert.equal($(rowEl.getDOMNode()).attr('aria-hidden'), 'true');
+ assert.equal($(ReactDOM.findDOMNode(rowEl)).attr('aria-hidden'), 'true');
});
it('shows notification when filter exact match', function () {
@@ -91,7 +92,7 @@ define([
<Views.NotificationRow filter="info" item={notifications.info} />,
container
);
- assert.equal($(rowEl.getDOMNode()).attr('aria-hidden'), 'false');
+ assert.equal($(ReactDOM.findDOMNode(rowEl)).attr('aria-hidden'), 'false');
});
});
@@ -106,7 +107,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('shows all notifications by default', function () {
@@ -118,7 +119,7 @@ define([
store.addNotification({ type: 'error', msg: 'Error #3' });
var panelEl = TestUtils.renderIntoDocument(<Views.NotificationCenterPanel />, container);
- assert.equal($(panelEl.getDOMNode()).find('.notification-list li[aria-hidden=false]').length, 6);
+ assert.equal($(ReactDOM.findDOMNode(panelEl)).find('.notification-list li[aria-hidden=false]').length, 6);
});
it('clicking on a filter icon filters applies appropriate filter', function () {
@@ -132,16 +133,16 @@ define([
var panelEl = TestUtils.renderIntoDocument(<Views.NotificationCenterPanel />, container);
// there are 2 success messages
- TestUtils.Simulate.click($(panelEl.getDOMNode()).find('.notification-filter li[data-filter="success"]')[0]);
- assert.equal($(panelEl.getDOMNode()).find('.notification-list li[aria-hidden=false]').length, 2);
+ TestUtils.Simulate.click($(ReactDOM.findDOMNode(panelEl)).find('.notification-filter li[data-filter="success"]')[0]);
+ assert.equal($(ReactDOM.findDOMNode(panelEl)).find('.notification-list li[aria-hidden=false]').length, 2);
// 3 errors
- TestUtils.Simulate.click($(panelEl.getDOMNode()).find('.notification-filter li[data-filter="error"]')[0]);
- assert.equal($(panelEl.getDOMNode()).find('.notification-list li[aria-hidden=false]').length, 3);
+ TestUtils.Simulate.click($(ReactDOM.findDOMNode(panelEl)).find('.notification-filter li[data-filter="error"]')[0]);
+ assert.equal($(ReactDOM.findDOMNode(panelEl)).find('.notification-list li[aria-hidden=false]').length, 3);
// 1 info
- TestUtils.Simulate.click($(panelEl.getDOMNode()).find('.notification-filter li[data-filter="info"]')[0]);
- assert.equal($(panelEl.getDOMNode()).find('.notification-list li[aria-hidden=false]').length, 1);
+ TestUtils.Simulate.click($(ReactDOM.findDOMNode(panelEl)).find('.notification-filter li[data-filter="info"]')[0]);
+ assert.equal($(ReactDOM.findDOMNode(panelEl)).find('.notification-list li[aria-hidden=false]').length, 1);
});
it('clear all clears all notifications', function () {
@@ -151,10 +152,10 @@ define([
store.addNotification({ type: 'error', msg: 'Error #3' });
var panelEl = TestUtils.renderIntoDocument(<Views.NotificationCenterPanel />, container);
- assert.equal($(panelEl.getDOMNode()).find('.notification-list li[aria-hidden=false]').length, 4);
- TestUtils.Simulate.click($(panelEl.getDOMNode()).find('footer input')[0]);
+ assert.equal($(ReactDOM.findDOMNode(panelEl)).find('.notification-list li[aria-hidden=false]').length, 4);
+ TestUtils.Simulate.click($(ReactDOM.findDOMNode(panelEl)).find('footer input')[0]);
- assert.equal($(panelEl.getDOMNode()).find('.notification-list li[aria-hidden=false]').length, 0);
+ assert.equal($(ReactDOM.findDOMNode(panelEl)).find('.notification-list li[aria-hidden=false]').length, 0);
});
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/fauxton/tests/componentsSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/fauxton/tests/componentsSpec.react.jsx b/app/addons/fauxton/tests/componentsSpec.react.jsx
index 3c7870f..fe77e8a 100644
--- a/app/addons/fauxton/tests/componentsSpec.react.jsx
+++ b/app/addons/fauxton/tests/componentsSpec.react.jsx
@@ -13,8 +13,9 @@ define([
'api',
'addons/fauxton/components.react',
'testUtils',
- 'react'
-], function (FauxtonAPI, Views, utils, React) {
+ 'react',
+ 'react-dom'
+], function (FauxtonAPI, Views, utils, React, ReactDOM) {
var assert = utils.assert;
var TestUtils = React.addons.TestUtils;
@@ -37,7 +38,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
FauxtonAPI.constants.MISC.TRAY_TOGGLE_SPEED = oldToggleSpeed;
});
@@ -94,7 +95,7 @@ define([
var trayEl = this.refs.tray;
var externalEl = this.refs.externalElement;
trayEl.show(function () {
- TestUtils.Simulate.click(React.findDOMNode(externalEl));
+ TestUtils.Simulate.click(ReactDOM.findDOMNode(externalEl));
assert.ok(spy.calledOnce);
});
},
@@ -112,7 +113,7 @@ define([
var reactEl = TestUtils.renderIntoDocument(React.createElement(wrapper), container);
reactEl.runTest();
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
});
@@ -131,7 +132,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('renders 20-wise pages per default', function () {
@@ -218,7 +219,7 @@ define([
<Views.Pagination page={1} total={100} onClick={spy} />,
container
);
- var links = React.findDOMNode(pageEl).getElementsByTagName("a");
+ var links = ReactDOM.findDOMNode(pageEl).getElementsByTagName("a");
TestUtils.Simulate.click(links[3]);
@@ -237,7 +238,7 @@ define([
<Views.Pagination page={currentPage} total={200} onClick={spy} />,
container
);
- var links = React.findDOMNode(pageEl).getElementsByTagName("a");
+ var links = ReactDOM.findDOMNode(pageEl).getElementsByTagName("a");
TestUtils.Simulate.click(links[0]);
assert.ok(spy.calledWith(currentPage - 1));
@@ -256,22 +257,22 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('shows a clipboard icon by default', function () {
var clipboard = TestUtils.renderIntoDocument(<Views.Clipboard text="copy me" />, container);
- assert.equal($(clipboard.getDOMNode()).find('.icon-paste').length, 1);
+ assert.equal($(ReactDOM.findDOMNode(clipboard)).find('.icon-paste').length, 1);
});
it('shows text if specified', function () {
var clipboard = TestUtils.renderIntoDocument(<Views.Clipboard displayType="text" text="copy me" />, container);
- assert.equal($(clipboard.getDOMNode()).find('.icon-paste').length, 0);
+ assert.equal($(ReactDOM.findDOMNode(clipboard)).find('.icon-paste').length, 0);
});
it('shows custom text if specified ', function () {
var clipboard = TestUtils.renderIntoDocument(<Views.Clipboard displayType="text" textDisplay='booyah!' text="copy me" />, container);
- assert.ok(/booyah!/.test($(clipboard.getDOMNode())[0].outerHTML));
+ assert.ok(/booyah!/.test($(ReactDOM.findDOMNode(clipboard))[0].outerHTML));
});
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/permissions/tests/componentsSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/permissions/tests/componentsSpec.react.jsx b/app/addons/permissions/tests/componentsSpec.react.jsx
index 795f4cb..2b2feb6 100644
--- a/app/addons/permissions/tests/componentsSpec.react.jsx
+++ b/app/addons/permissions/tests/componentsSpec.react.jsx
@@ -16,8 +16,9 @@ define([
'addons/permissions/components.react',
'addons/permissions/actions',
'testUtils',
- "react"
- ], function (FauxtonAPI, Databases, Permissions, Views, Actions, utils, React) {
+ "react",
+ 'react-dom'
+ ], function (FauxtonAPI, Databases, Permissions, Views, Actions, utils, React, ReactDOM) {
var assert = utils.assert;
var restore = utils.restore;
var TestUtils = React.addons.TestUtils;
@@ -50,7 +51,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('on Add triggers add action', function () {
@@ -81,17 +82,17 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('adds user on submit', function () {
- var input = $(el.getDOMNode()).find('input')[0];
+ var input = $(ReactDOM.findDOMNode(el)).find('input')[0];
TestUtils.Simulate.change(input, {
target: {
value: 'newusername'
}
});
- var form = $(el.getDOMNode()).find('.permission-item-form')[0];
+ var form = $(ReactDOM.findDOMNode(el)).find('.permission-item-form')[0];
TestUtils.Simulate.submit(form);
var options = addSpy.args[0][0];
@@ -101,13 +102,13 @@ define([
});
it('adds role on submit', function () {
- var input = $(el.getDOMNode()).find('input')[1];
+ var input = $(ReactDOM.findDOMNode(el)).find('input')[1];
TestUtils.Simulate.change(input, {
target: {
value: 'newrole'
}
});
- var form = $(el.getDOMNode()).find('.permission-item-form')[1];
+ var form = $(ReactDOM.findDOMNode(el)).find('.permission-item-form')[1];
TestUtils.Simulate.submit(form);
var options = addSpy.args[0][0];
@@ -118,7 +119,7 @@ define([
it('stores new name on change', function () {
var newName = 'newName';
- var dom = $(el.getDOMNode()).find('.item')[0];
+ var dom = $(ReactDOM.findDOMNode(el)).find('.item')[0];
TestUtils.Simulate.change(dom, {
target: {
@@ -131,7 +132,7 @@ define([
it('stores new role on change', function () {
var newRole = 'newRole';
- var dom = $(el.getDOMNode()).find('.item')[1];
+ var dom = $(ReactDOM.findDOMNode(el)).find('.item')[1];
TestUtils.Simulate.change(dom, {
target: {
@@ -153,11 +154,11 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('triggers remove on click', function () {
- var dom = $(el.getDOMNode()).find('.close')[0];
+ var dom = $(ReactDOM.findDOMNode(el)).find('.close')[0];
TestUtils.Simulate.click(dom);
assert.ok(removeSpy.calledOnce);
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/setup/tests/setupComponentsSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/setup/tests/setupComponentsSpec.react.jsx b/app/addons/setup/tests/setupComponentsSpec.react.jsx
index ead1f98..b6a8b86 100644
--- a/app/addons/setup/tests/setupComponentsSpec.react.jsx
+++ b/app/addons/setup/tests/setupComponentsSpec.react.jsx
@@ -14,8 +14,9 @@ define([
'addons/setup/setup.react',
'addons/setup/setup.stores',
'testUtils',
- 'react'
-], function (FauxtonAPI, Views, Stores, utils, React) {
+ 'react',
+ 'react-dom'
+], function (FauxtonAPI, Views, Stores, utils, React, ReactDOM) {
var assert = utils.assert;
var TestUtils = React.addons.TestUtils;
@@ -31,7 +32,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('fires callbacks on change, ip', function () {
@@ -40,7 +41,7 @@ define([
container
);
- var node = $(optSettings.getDOMNode()).find('.setup-input-ip')[0];
+ var node = $(ReactDOM.findDOMNode(optSettings)).find('.setup-input-ip')[0];
TestUtils.Simulate.change(node, {target: {value: 'Hello, world'}});
assert.ok(changeHandler.calledOnce);
@@ -52,7 +53,7 @@ define([
container
);
- var node = $(optSettings.getDOMNode()).find('.setup-input-port')[0];
+ var node = $(ReactDOM.findDOMNode(optSettings)).find('.setup-input-port')[0];
TestUtils.Simulate.change(node, {target: {value: 'Hello, world'}});
assert.ok(changeHandler.calledOnce);
@@ -74,12 +75,12 @@ define([
afterEach(function () {
utils.restore(Stores.setupStore.getIsAdminParty);
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
Stores.setupStore.reset();
});
it('changes the values in the store for additional nodes', function () {
- var $addNodesSection = $(controller.getDOMNode()).find('.setup-add-nodes-section');
+ var $addNodesSection = $(ReactDOM.findDOMNode(controller)).find('.setup-add-nodes-section');
TestUtils.Simulate.change($addNodesSection.find('.setup-input-ip')[0], {target: {value: '192.168.13.37'}});
TestUtils.Simulate.change($addNodesSection.find('.setup-input-port')[0], {target: {value: '1337'}});
TestUtils.Simulate.change($addNodesSection.find('.input-remote-node')[0], {target: {value: 'node2.local'}});
@@ -91,7 +92,7 @@ define([
});
it('changes the values in the store for the setup node', function () {
- var $setupNodesSection = $(controller.getDOMNode()).find('.setup-setupnode-section');
+ var $setupNodesSection = $(ReactDOM.findDOMNode(controller)).find('.setup-setupnode-section');
TestUtils.Simulate.change($setupNodesSection.find('.setup-input-ip')[0], {target: {value: '192.168.42.42'}});
TestUtils.Simulate.change($setupNodesSection.find('.setup-input-port')[0], {target: {value: '4242'}});
TestUtils.Simulate.change($setupNodesSection.find('.setup-username')[0], {target: {value: 'tester'}});
@@ -120,12 +121,12 @@ define([
afterEach(function () {
utils.restore(Stores.setupStore.getIsAdminParty);
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
Stores.setupStore.reset();
});
it('changes the values in the store for the setup node', function () {
- var $setupNodesSection = $(controller.getDOMNode()).find('.setup-setupnode-section');
+ var $setupNodesSection = $(ReactDOM.findDOMNode(controller)).find('.setup-setupnode-section');
TestUtils.Simulate.change($setupNodesSection.find('.setup-input-ip')[0], {target: {value: '192.168.13.42'}});
TestUtils.Simulate.change($setupNodesSection.find('.setup-input-port')[0], {target: {value: '1342'}});
TestUtils.Simulate.change($setupNodesSection.find('.setup-username')[0], {target: {value: 'tester'}});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/verifyinstall/tests/componentsSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/verifyinstall/tests/componentsSpec.react.jsx b/app/addons/verifyinstall/tests/componentsSpec.react.jsx
index e345a70..b0a48bc 100644
--- a/app/addons/verifyinstall/tests/componentsSpec.react.jsx
+++ b/app/addons/verifyinstall/tests/componentsSpec.react.jsx
@@ -14,11 +14,12 @@ define([
'app',
'api',
'react',
+ 'react-dom',
'testUtils',
'addons/verifyinstall/constants',
'addons/verifyinstall/components.react'
-], function (app, FauxtonAPI, React, testUtils, Constants, Components) {
+], function (app, FauxtonAPI, React, ReactDOM, testUtils, Constants, Components) {
FauxtonAPI.router = new FauxtonAPI.Router([]);
var assert = testUtils.assert;
@@ -43,7 +44,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('confirm all result fields blank before tests ran', function () {
@@ -51,7 +52,7 @@ define([
el = ReactTestUtils.renderIntoDocument(<Components.VerifyInstallResults testResults={testResults} />, container);
tests.forEach(function (test) {
- assert.equal($(el.getDOMNode()).find('#' + test.id).html(), '');
+ assert.equal($(ReactDOM.findDOMNode(el)).find('#' + test.id).html(), '');
});
});
@@ -68,7 +69,7 @@ define([
el = ReactTestUtils.renderIntoDocument(<Components.VerifyInstallResults testResults={copy} />, container);
// now look at the DOM for that element. It should contain a tick char
- assert.equal($(el.getDOMNode()).find('#' + test.id + ' span').html(), '✓');
+ assert.equal($(ReactDOM.findDOMNode(el)).find('#' + test.id + ' span').html(), '✓');
});
});
@@ -85,7 +86,7 @@ define([
el = ReactTestUtils.renderIntoDocument(<Components.VerifyInstallResults testResults={copy} />, container);
// now look at the DOM for that element. It should contain an error char
- assert.equal($(el.getDOMNode()).find('#' + test.id + ' span').html(), '✗');
+ assert.equal($(ReactDOM.findDOMNode(el)).find('#' + test.id + ' span').html(), '✗');
});
});
});
@@ -99,14 +100,14 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('calls verify function on click', function () {
var stub = { func: function () { } };
var spy = sinon.spy(stub, 'func');
el = ReactTestUtils.renderIntoDocument(<Components.VerifyInstallButton verify={stub.func} isVerifying={false} />, container);
- ReactTestUtils.Simulate.click($(el.getDOMNode())[0]);
+ ReactTestUtils.Simulate.click($(ReactDOM.findDOMNode(el))[0]);
assert.ok(spy.calledOnce);
});
@@ -114,20 +115,20 @@ define([
var stub = { func: function () { } };
var spy = sinon.spy(stub, 'func');
el = ReactTestUtils.renderIntoDocument(<Components.VerifyInstallButton verify={stub.func} isVerifying={true} />, container);
- ReactTestUtils.Simulate.click($(el.getDOMNode())[0]);
+ ReactTestUtils.Simulate.click($(ReactDOM.findDOMNode(el))[0]);
assert.notOk(spy.calledOnce);
});
it('shows appropriate default label', function () {
var stub = { func: function () { } };
el = ReactTestUtils.renderIntoDocument(<Components.VerifyInstallButton verify={stub.func} isVerifying={false} />, container);
- assert.equal($(el.getDOMNode()).html(), 'Verify Installation');
+ assert.equal($(ReactDOM.findDOMNode(el)).html(), 'Verify Installation');
});
it('shows appropriate label during verification', function () {
var stub = { func: function () { } };
el = ReactTestUtils.renderIntoDocument(<Components.VerifyInstallButton verify={stub.func} isVerifying={true} />, container);
- assert.equal($(el.getDOMNode()).html(), 'Verifying');
+ assert.equal($(ReactDOM.findDOMNode(el)).html(), 'Verifying');
});
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/config.js
----------------------------------------------------------------------
diff --git a/app/config.js b/app/config.js
index 8f289e6..8097509 100644
--- a/app/config.js
+++ b/app/config.js
@@ -35,6 +35,7 @@ require.config({
"velocity.ui": "../assets/js/plugins/velocity.ui",
"react-autocomplete": "../assets/js/plugins/react-autocomplete",
react: "../assets/js/libs/react",
+ 'react-dom': "../assets/js/libs/react-dom",
flux: "../assets/js/libs/flux",
"es5-shim": "../assets/js/libs/es5-shim",
"css.escape": "../assets/js/libs/css.escape",
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/core/routeObject.js
----------------------------------------------------------------------
diff --git a/app/core/routeObject.js b/app/core/routeObject.js
index 79f6f28..7e82dc1 100644
--- a/app/core/routeObject.js
+++ b/app/core/routeObject.js
@@ -13,9 +13,10 @@
define([
'core/base',
'react',
+ 'react-dom',
'backbone'
],
-function (FauxtonAPI, React, Backbone) {
+function (FauxtonAPI, React, ReactDOM, Backbone) {
var RouteObject = function (options) {
this._options = options;
@@ -135,7 +136,7 @@ function (FauxtonAPI, React, Backbone) {
renderReactComponents: function () {
_.each(this.reactComponents, function (componentInfo, selector) {
if ($(selector)[0]) {
- React.render(React.createElement(componentInfo.component, componentInfo.props), $(selector)[0]);
+ ReactDOM.render(React.createElement(componentInfo.component, componentInfo.props), $(selector)[0]);
}
});
},
@@ -260,7 +261,7 @@ function (FauxtonAPI, React, Backbone) {
removeComponent: function (selector) {
if (_.has(this.reactComponents, selector)) {
if ($(selector)[0]) {
- React.unmountComponentAtNode($(selector)[0]);
+ ReactDOM.unmountComponentAtNode($(selector)[0]);
}
this.reactComponents[selector] = null;
delete this.reactComponents[selector];
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/core/tests/routeObjectSpec.js
----------------------------------------------------------------------
diff --git a/app/core/tests/routeObjectSpec.js b/app/core/tests/routeObjectSpec.js
index bcb8760..d32de12 100644
--- a/app/core/tests/routeObjectSpec.js
+++ b/app/core/tests/routeObjectSpec.js
@@ -12,8 +12,9 @@
define([
'api',
'react',
+ 'react-dom',
'testUtils'
-], function (FauxtonAPI, React, testUtils) {
+], function (FauxtonAPI, React, ReactDOM, testUtils) {
var assert = testUtils.assert,
restore = testUtils.restore,
RouteObject = FauxtonAPI.RouteObject,
@@ -196,11 +197,11 @@ define([
describe('removeComponent', function () {
afterEach(function () {
- restore(React.unmountComponentAtNode);
+ restore(ReactDOM.unmountComponentAtNode);
});
it('removes existing components via React', function () {
- var spy = sinon.stub(React, 'unmountComponentAtNode');
+ var spy = sinon.stub(ReactDOM, 'unmountComponentAtNode');
var fakeSelector = 'remove-selector';
var container = document.createElement('div');
@@ -220,7 +221,7 @@ define([
});
it('removes existing components key', function () {
- var spy = sinon.stub(React, 'unmountComponentAtNode');
+ var spy = sinon.stub(ReactDOM, 'unmountComponentAtNode');
var fakeSelector = 'remove-selector';
testRouteObject.reactComponents[fakeSelector] = React.createElement('div');
@@ -231,7 +232,7 @@ define([
});
it('does nothing for non existing component', function () {
- var spy = sinon.spy(React, 'unmountComponentAtNode');
+ var spy = sinon.spy(ReactDOM, 'unmountComponentAtNode');
var fakeSelector = 'remove-selector';
testRouteObject.removeComponent(fakeSelector);
[4/6] fauxton commit: updated refs/heads/master to e6450a0
Posted by be...@apache.org.
react-bootstrap updated to 0.28.2
Project: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/commit/cab6fc2d
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/tree/cab6fc2d
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/diff/cab6fc2d
Branch: refs/heads/master
Commit: cab6fc2d364edd26b49bac3a5572530fe292c39f
Parents: d0cb3d8
Author: Ben Keen <be...@gmail.com>
Authored: Tue Jan 19 10:48:53 2016 -0800
Committer: Ben Keen <be...@gmail.com>
Committed: Mon Feb 1 08:39:35 2016 -0800
----------------------------------------------------------------------
assets/js/libs/react-bootstrap.js | 27366 ++++++++++++++++---------------
1 file changed, 14092 insertions(+), 13274 deletions(-)
----------------------------------------------------------------------
[3/6] fauxton commit: updated refs/heads/master to e6450a0
Posted by be...@apache.org.
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/cab6fc2d/assets/js/libs/react-bootstrap.js
----------------------------------------------------------------------
diff --git a/assets/js/libs/react-bootstrap.js b/assets/js/libs/react-bootstrap.js
index caef22b..e02b0bf 100644
--- a/assets/js/libs/react-bootstrap.js
+++ b/assets/js/libs/react-bootstrap.js
@@ -1,16265 +1,17083 @@
(function webpackUniversalModuleDefinition(root, factory) {
- if(typeof exports === 'object' && typeof module === 'object')
- module.exports = factory(require("react"));
- else if(typeof define === 'function' && define.amd)
- define(["react"], factory);
- else if(typeof exports === 'object')
- exports["ReactBootstrap"] = factory(require("react"));
- else
- root["ReactBootstrap"] = factory(root["React"]);
-})(this, function(__WEBPACK_EXTERNAL_MODULE_4__) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory(require("react"), require("react-dom"));
+ else if(typeof define === 'function' && define.amd)
+ define(["react", "react-dom"], factory);
+ else if(typeof exports === 'object')
+ exports["ReactBootstrap"] = factory(require("react"), require("react-dom"));
+ else
+ root["ReactBootstrap"] = factory(root["React"], root["ReactDOM"]);
+})(this, function(__WEBPACK_EXTERNAL_MODULE_4__, __WEBPACK_EXTERNAL_MODULE_63__) {
return /******/ (function(modules) { // webpackBootstrap
-/******/ // The module cache
-/******/ var installedModules = {};
+/******/ // The module cache
+/******/ var installedModules = {};
-/******/ // The require function
-/******/ function __webpack_require__(moduleId) {
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
-/******/ // Check if module is in cache
-/******/ if(installedModules[moduleId])
-/******/ return installedModules[moduleId].exports;
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId])
+/******/ return installedModules[moduleId].exports;
-/******/ // Create a new module (and put it into the cache)
-/******/ var module = installedModules[moduleId] = {
-/******/ exports: {},
-/******/ id: moduleId,
-/******/ loaded: false
-/******/ };
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ exports: {},
+/******/ id: moduleId,
+/******/ loaded: false
+/******/ };
-/******/ // Execute the module function
-/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-/******/ // Flag the module as loaded
-/******/ module.loaded = true;
+/******/ // Flag the module as loaded
+/******/ module.loaded = true;
-/******/ // Return the exports of the module
-/******/ return module.exports;
-/******/ }
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
-/******/ // expose the modules object (__webpack_modules__)
-/******/ __webpack_require__.m = modules;
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
-/******/ // expose the module cache
-/******/ __webpack_require__.c = installedModules;
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
-/******/ // __webpack_public_path__
-/******/ __webpack_require__.p = "";
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
-/******/ // Load entry module and return exports
-/******/ return __webpack_require__(0);
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ function(module, exports, __webpack_require__) {
- 'use strict';
+ 'use strict';
- var _interopRequireDefault = __webpack_require__(1)['default'];
+ var _interopRequireDefault = __webpack_require__(1)['default'];
- var _interopRequireWildcard = __webpack_require__(2)['default'];
+ var _interopRequireWildcard = __webpack_require__(2)['default'];
- exports.__esModule = true;
+ exports.__esModule = true;
- var _utilsChildrenValueInputValidation = __webpack_require__(3);
+ var _utilsChildrenValueInputValidation = __webpack_require__(3);
- var _utilsChildrenValueInputValidation2 = _interopRequireDefault(_utilsChildrenValueInputValidation);
+ var _utilsChildrenValueInputValidation2 = _interopRequireDefault(_utilsChildrenValueInputValidation);
- var _utilsCreateChainedFunction = __webpack_require__(6);
+ var _utilsCreateChainedFunction = __webpack_require__(6);
- var _utilsCreateChainedFunction2 = _interopRequireDefault(_utilsCreateChainedFunction);
+ var _utilsCreateChainedFunction2 = _interopRequireDefault(_utilsCreateChainedFunction);
- var _utilsValidComponentChildren = __webpack_require__(7);
+ var _utilsValidComponentChildren = __webpack_require__(7);
- var _utilsValidComponentChildren2 = _interopRequireDefault(_utilsValidComponentChildren);
+ var _utilsValidComponentChildren2 = _interopRequireDefault(_utilsValidComponentChildren);
- var _Accordion2 = __webpack_require__(8);
+ var _utilsBootstrapUtils = __webpack_require__(8);
- var _Accordion3 = _interopRequireDefault(_Accordion2);
+ var _utilsBootstrapUtils2 = _interopRequireDefault(_utilsBootstrapUtils);
- exports.Accordion = _Accordion3['default'];
+ var _Accordion2 = __webpack_require__(34);
- var _Affix2 = __webpack_require__(32);
+ var _Accordion3 = _interopRequireDefault(_Accordion2);
- var _Affix3 = _interopRequireDefault(_Affix2);
+ exports.Accordion = _Accordion3['default'];
- exports.Affix = _Affix3['default'];
+ var _Alert2 = __webpack_require__(38);
- var _AffixMixin2 = __webpack_require__(33);
+ var _Alert3 = _interopRequireDefault(_Alert2);
- var _AffixMixin3 = _interopRequireDefault(_AffixMixin2);
+ exports.Alert = _Alert3['default'];
- exports.AffixMixin = _AffixMixin3['default'];
+ var _Badge2 = __webpack_require__(39);
- var _Alert2 = __webpack_require__(43);
+ var _Badge3 = _interopRequireDefault(_Badge2);
- var _Alert3 = _interopRequireDefault(_Alert2);
+ exports.Badge = _Badge3['default'];
- exports.Alert = _Alert3['default'];
+ var _Breadcrumb2 = __webpack_require__(40);
- var _Badge2 = __webpack_require__(44);
+ var _Breadcrumb3 = _interopRequireDefault(_Breadcrumb2);
- var _Badge3 = _interopRequireDefault(_Badge2);
+ exports.Breadcrumb = _Breadcrumb3['default'];
- exports.Badge = _Badge3['default'];
+ var _BreadcrumbItem2 = __webpack_require__(41);
- var _BootstrapMixin2 = __webpack_require__(28);
+ var _BreadcrumbItem3 = _interopRequireDefault(_BreadcrumbItem2);
- var _BootstrapMixin3 = _interopRequireDefault(_BootstrapMixin2);
+ exports.BreadcrumbItem = _BreadcrumbItem3['default'];
- exports.BootstrapMixin = _BootstrapMixin3['default'];
+ var _Button2 = __webpack_require__(51);
- var _Breadcrumb2 = __webpack_require__(45);
+ var _Button3 = _interopRequireDefault(_Button2);
- var _Breadcrumb3 = _interopRequireDefault(_Breadcrumb2);
+ exports.Button = _Button3['default'];
- exports.Breadcrumb = _Breadcrumb3['default'];
+ var _ButtonGroup2 = __webpack_require__(54);
- var _BreadcrumbItem2 = __webpack_require__(46);
+ var _ButtonGroup3 = _interopRequireDefault(_ButtonGroup2);
- var _BreadcrumbItem3 = _interopRequireDefault(_BreadcrumbItem2);
+ exports.ButtonGroup = _ButtonGroup3['default'];
- exports.BreadcrumbItem = _BreadcrumbItem3['default'];
+ var _ButtonInput2 = __webpack_require__(56);
- var _Button2 = __webpack_require__(62);
+ var _ButtonInput3 = _interopRequireDefault(_ButtonInput2);
- var _Button3 = _interopRequireDefault(_Button2);
+ exports.ButtonInput = _ButtonInput3['default'];
- exports.Button = _Button3['default'];
+ var _ButtonToolbar2 = __webpack_require__(60);
- var _ButtonGroup2 = __webpack_require__(68);
+ var _ButtonToolbar3 = _interopRequireDefault(_ButtonToolbar2);
- var _ButtonGroup3 = _interopRequireDefault(_ButtonGroup2);
+ exports.ButtonToolbar = _ButtonToolbar3['default'];
- exports.ButtonGroup = _ButtonGroup3['default'];
+ var _Carousel2 = __webpack_require__(61);
- var _ButtonInput2 = __webpack_require__(64);
+ var _Carousel3 = _interopRequireDefault(_Carousel2);
- var _ButtonInput3 = _interopRequireDefault(_ButtonInput2);
+ exports.Carousel = _Carousel3['default'];
- exports.ButtonInput = _ButtonInput3['default'];
+ var _CarouselItem2 = __webpack_require__(62);
- var _ButtonToolbar2 = __webpack_require__(70);
+ var _CarouselItem3 = _interopRequireDefault(_CarouselItem2);
- var _ButtonToolbar3 = _interopRequireDefault(_ButtonToolbar2);
+ exports.CarouselItem = _CarouselItem3['default'];
- exports.ButtonToolbar = _ButtonToolbar3['default'];
+ var _Col2 = __webpack_require__(65);
- var _Carousel2 = __webpack_require__(71);
+ var _Col3 = _interopRequireDefault(_Col2);
- var _Carousel3 = _interopRequireDefault(_Carousel2);
+ exports.Col = _Col3['default'];
- exports.Carousel = _Carousel3['default'];
+ var _CollapsibleNav2 = __webpack_require__(66);
- var _CarouselItem2 = __webpack_require__(72);
+ var _CollapsibleNav3 = _interopRequireDefault(_CollapsibleNav2);
- var _CarouselItem3 = _interopRequireDefault(_CarouselItem2);
+ exports.CollapsibleNav = _CollapsibleNav3['default'];
- exports.CarouselItem = _CarouselItem3['default'];
+ var _Dropdown2 = __webpack_require__(82);
- var _Col2 = __webpack_require__(74);
+ var _Dropdown3 = _interopRequireDefault(_Dropdown2);
- var _Col3 = _interopRequireDefault(_Col2);
+ exports.Dropdown = _Dropdown3['default'];
- exports.Col = _Col3['default'];
+ var _DropdownButton2 = __webpack_require__(168);
- var _CollapsibleNav2 = __webpack_require__(79);
+ var _DropdownButton3 = _interopRequireDefault(_DropdownButton2);
- var _CollapsibleNav3 = _interopRequireDefault(_CollapsibleNav2);
+ exports.DropdownButton = _DropdownButton3['default'];
- exports.CollapsibleNav = _CollapsibleNav3['default'];
+ var _Glyphicon2 = __webpack_require__(59);
- var _Dropdown2 = __webpack_require__(92);
+ var _Glyphicon3 = _interopRequireDefault(_Glyphicon2);
- var _Dropdown3 = _interopRequireDefault(_Dropdown2);
+ exports.Glyphicon = _Glyphicon3['default'];
- exports.Dropdown = _Dropdown3['default'];
+ var _Grid2 = __webpack_require__(170);
- var _DropdownButton2 = __webpack_require__(177);
+ var _Grid3 = _interopRequireDefault(_Grid2);
- var _DropdownButton3 = _interopRequireDefault(_DropdownButton2);
+ exports.Grid = _Grid3['default'];
- exports.DropdownButton = _DropdownButton3['default'];
+ var _Image2 = __webpack_require__(171);
- var _Glyphicon2 = __webpack_require__(67);
+ var _Image3 = _interopRequireDefault(_Image2);
- var _Glyphicon3 = _interopRequireDefault(_Glyphicon2);
+ exports.Image = _Image3['default'];
- exports.Glyphicon = _Glyphicon3['default'];
+ var _Input2 = __webpack_require__(172);
- var _Grid2 = __webpack_require__(178);
+ var _Input3 = _interopRequireDefault(_Input2);
- var _Grid3 = _interopRequireDefault(_Grid2);
+ exports.Input = _Input3['default'];
- exports.Grid = _Grid3['default'];
+ var _Interpolate2 = __webpack_require__(175);
- var _Image2 = __webpack_require__(179);
+ var _Interpolate3 = _interopRequireDefault(_Interpolate2);
- var _Image3 = _interopRequireDefault(_Image2);
+ exports.Interpolate = _Interpolate3['default'];
- exports.Image = _Image3['default'];
+ var _Jumbotron2 = __webpack_require__(176);
- var _Input2 = __webpack_require__(180);
+ var _Jumbotron3 = _interopRequireDefault(_Jumbotron2);
- var _Input3 = _interopRequireDefault(_Input2);
+ exports.Jumbotron = _Jumbotron3['default'];
- exports.Input = _Input3['default'];
+ var _Label2 = __webpack_require__(177);
- var _Interpolate2 = __webpack_require__(183);
+ var _Label3 = _interopRequireDefault(_Label2);
- var _Interpolate3 = _interopRequireDefault(_Interpolate2);
+ exports.Label = _Label3['default'];
- exports.Interpolate = _Interpolate3['default'];
+ var _ListGroup2 = __webpack_require__(178);
- var _Jumbotron2 = __webpack_require__(184);
+ var _ListGroup3 = _interopRequireDefault(_ListGroup2);
- var _Jumbotron3 = _interopRequireDefault(_Jumbotron2);
+ exports.ListGroup = _ListGroup3['default'];
- exports.Jumbotron = _Jumbotron3['default'];
+ var _ListGroupItem2 = __webpack_require__(179);
- var _Label2 = __webpack_require__(185);
+ var _ListGroupItem3 = _interopRequireDefault(_ListGroupItem2);
- var _Label3 = _interopRequireDefault(_Label2);
+ exports.ListGroupItem = _ListGroupItem3['default'];
- exports.Label = _Label3['default'];
+ var _MenuItem2 = __webpack_require__(180);
- var _ListGroup2 = __webpack_require__(186);
+ var _MenuItem3 = _interopRequireDefault(_MenuItem2);
- var _ListGroup3 = _interopRequireDefault(_ListGroup2);
+ exports.MenuItem = _MenuItem3['default'];
- exports.ListGroup = _ListGroup3['default'];
+ var _Modal2 = __webpack_require__(181);
- var _ListGroupItem2 = __webpack_require__(187);
+ var _Modal3 = _interopRequireDefault(_Modal2);
- var _ListGroupItem3 = _interopRequireDefault(_ListGroupItem2);
+ exports.Modal = _Modal3['default'];
- exports.ListGroupItem = _ListGroupItem3['default'];
+ var _ModalBody2 = __webpack_require__(188);
- var _MenuItem2 = __webpack_require__(188);
+ var _ModalBody3 = _interopRequireDefault(_ModalBody2);
- var _MenuItem3 = _interopRequireDefault(_MenuItem2);
+ exports.ModalBody = _ModalBody3['default'];
- exports.MenuItem = _MenuItem3['default'];
+ var _ModalFooter2 = __webpack_require__(191);
- var _Modal2 = __webpack_require__(189);
+ var _ModalFooter3 = _interopRequireDefault(_ModalFooter2);
- var _Modal3 = _interopRequireDefault(_Modal2);
+ exports.ModalFooter = _ModalFooter3['default'];
- exports.Modal = _Modal3['default'];
+ var _ModalHeader2 = __webpack_require__(189);
- var _ModalBody2 = __webpack_require__(200);
+ var _ModalHeader3 = _interopRequireDefault(_ModalHeader2);
- var _ModalBody3 = _interopRequireDefault(_ModalBody2);
+ exports.ModalHeader = _ModalHeader3['default'];
- exports.ModalBody = _ModalBody3['default'];
+ var _ModalTitle2 = __webpack_require__(190);
- var _ModalFooter2 = __webpack_require__(203);
+ var _ModalTitle3 = _interopRequireDefault(_ModalTitle2);
- var _ModalFooter3 = _interopRequireDefault(_ModalFooter2);
+ exports.ModalTitle = _ModalTitle3['default'];
- exports.ModalFooter = _ModalFooter3['default'];
+ var _Nav2 = __webpack_require__(207);
- var _ModalHeader2 = __webpack_require__(201);
+ var _Nav3 = _interopRequireDefault(_Nav2);
- var _ModalHeader3 = _interopRequireDefault(_ModalHeader2);
+ exports.Nav = _Nav3['default'];
- exports.ModalHeader = _ModalHeader3['default'];
+ var _Navbar2 = __webpack_require__(208);
- var _ModalTitle2 = __webpack_require__(202);
+ var _Navbar3 = _interopRequireDefault(_Navbar2);
- var _ModalTitle3 = _interopRequireDefault(_ModalTitle2);
+ exports.Navbar = _Navbar3['default'];
- exports.ModalTitle = _ModalTitle3['default'];
+ var _NavBrand2 = __webpack_require__(210);
- var _Nav2 = __webpack_require__(204);
+ var _NavBrand3 = _interopRequireDefault(_NavBrand2);
- var _Nav3 = _interopRequireDefault(_Nav2);
+ exports.NavBrand = _NavBrand3['default'];
- exports.Nav = _Nav3['default'];
+ var _NavbarBrand2 = __webpack_require__(211);
- var _Navbar2 = __webpack_require__(205);
+ var _NavbarBrand3 = _interopRequireDefault(_NavbarBrand2);
- var _Navbar3 = _interopRequireDefault(_Navbar2);
+ exports.NavbarBrand = _NavbarBrand3['default'];
- exports.Navbar = _Navbar3['default'];
+ var _NavDropdown2 = __webpack_require__(215);
- var _NavBrand2 = __webpack_require__(206);
+ var _NavDropdown3 = _interopRequireDefault(_NavDropdown2);
- var _NavBrand3 = _interopRequireDefault(_NavBrand2);
+ exports.NavDropdown = _NavDropdown3['default'];
- exports.NavBrand = _NavBrand3['default'];
+ var _NavItem2 = __webpack_require__(216);
- var _NavDropdown2 = __webpack_require__(207);
+ var _NavItem3 = _interopRequireDefault(_NavItem2);
- var _NavDropdown3 = _interopRequireDefault(_NavDropdown2);
+ exports.NavItem = _NavItem3['default'];
- exports.NavDropdown = _NavDropdown3['default'];
+ var _Overlay2 = __webpack_require__(217);
- var _NavItem2 = __webpack_require__(208);
+ var _Overlay3 = _interopRequireDefault(_Overlay2);
- var _NavItem3 = _interopRequireDefault(_NavItem2);
+ exports.Overlay = _Overlay3['default'];
- exports.NavItem = _NavItem3['default'];
+ var _OverlayTrigger2 = __webpack_require__(226);
- var _Overlay2 = __webpack_require__(209);
+ var _OverlayTrigger3 = _interopRequireDefault(_OverlayTrigger2);
- var _Overlay3 = _interopRequireDefault(_Overlay2);
+ exports.OverlayTrigger = _OverlayTrigger3['default'];
- exports.Overlay = _Overlay3['default'];
+ var _PageHeader2 = __webpack_require__(227);
- var _OverlayTrigger2 = __webpack_require__(218);
+ var _PageHeader3 = _interopRequireDefault(_PageHeader2);
- var _OverlayTrigger3 = _interopRequireDefault(_OverlayTrigger2);
+ exports.PageHeader = _PageHeader3['default'];
- exports.OverlayTrigger = _OverlayTrigger3['default'];
+ var _PageItem2 = __webpack_require__(228);
- var _PageHeader2 = __webpack_require__(221);
+ var _PageItem3 = _interopRequireDefault(_PageItem2);
- var _PageHeader3 = _interopRequireDefault(_PageHeader2);
+ exports.PageItem = _PageItem3['default'];
- exports.PageHeader = _PageHeader3['default'];
+ var _Pager2 = __webpack_require__(229);
- var _PageItem2 = __webpack_require__(222);
+ var _Pager3 = _interopRequireDefault(_Pager2);
- var _PageItem3 = _interopRequireDefault(_PageItem2);
+ exports.Pager = _Pager3['default'];
- exports.PageItem = _PageItem3['default'];
+ var _Pagination2 = __webpack_require__(230);
- var _Pager2 = __webpack_require__(223);
+ var _Pagination3 = _interopRequireDefault(_Pagination2);
- var _Pager3 = _interopRequireDefault(_Pager2);
+ exports.Pagination = _Pagination3['default'];
- exports.Pager = _Pager3['default'];
+ var _Panel2 = __webpack_require__(233);
- var _Pagination2 = __webpack_require__(224);
+ var _Panel3 = _interopRequireDefault(_Panel2);
- var _Pagination3 = _interopRequireDefault(_Pagination2);
+ exports.Panel = _Panel3['default'];
- exports.Pagination = _Pagination3['default'];
+ var _PanelGroup2 = __webpack_require__(35);
- var _Panel2 = __webpack_require__(227);
+ var _PanelGroup3 = _interopRequireDefault(_PanelGroup2);
- var _Panel3 = _interopRequireDefault(_Panel2);
+ exports.PanelGroup = _PanelGroup3['default'];
- exports.Panel = _Panel3['default'];
+ var _Popover2 = __webpack_require__(234);
- var _PanelGroup2 = __webpack_require__(25);
+ var _Popover3 = _interopRequireDefault(_Popover2);
- var _PanelGroup3 = _interopRequireDefault(_PanelGroup2);
+ exports.Popover = _Popover3['default'];
- exports.PanelGroup = _PanelGroup3['default'];
+ var _ProgressBar2 = __webpack_require__(235);
- var _Popover2 = __webpack_require__(228);
+ var _ProgressBar3 = _interopRequireDefault(_ProgressBar2);
- var _Popover3 = _interopRequireDefault(_Popover2);
+ exports.ProgressBar = _ProgressBar3['default'];
- exports.Popover = _Popover3['default'];
+ var _ResponsiveEmbed2 = __webpack_require__(236);
- var _ProgressBar2 = __webpack_require__(229);
+ var _ResponsiveEmbed3 = _interopRequireDefault(_ResponsiveEmbed2);
- var _ProgressBar3 = _interopRequireDefault(_ProgressBar2);
+ exports.ResponsiveEmbed = _ResponsiveEmbed3['default'];
- exports.ProgressBar = _ProgressBar3['default'];
+ var _Row2 = __webpack_require__(237);
- var _ResponsiveEmbed2 = __webpack_require__(230);
+ var _Row3 = _interopRequireDefault(_Row2);
- var _ResponsiveEmbed3 = _interopRequireDefault(_ResponsiveEmbed2);
+ exports.Row = _Row3['default'];
- exports.ResponsiveEmbed = _ResponsiveEmbed3['default'];
+ var _SafeAnchor2 = __webpack_require__(42);
- var _Row2 = __webpack_require__(231);
+ var _SafeAnchor3 = _interopRequireDefault(_SafeAnchor2);
- var _Row3 = _interopRequireDefault(_Row2);
+ exports.SafeAnchor = _SafeAnchor3['default'];
- exports.Row = _Row3['default'];
+ var _SplitButton3 = __webpack_require__(238);
- var _SafeAnchor2 = __webpack_require__(47);
+ var _SplitButton4 = _interopRequireDefault(_SplitButton3);
- var _SafeAnchor3 = _interopRequireDefault(_SafeAnchor2);
+ exports.SplitButton = _SplitButton4['default'];
- exports.SafeAnchor = _SafeAnchor3['default'];
+ var _SplitButton5 = _interopRequireDefault(_SplitButton3);
- var _SplitButton3 = __webpack_require__(232);
+ exports.SplitButton = _SplitButton5['default'];
- var _SplitButton4 = _interopRequireDefault(_SplitButton3);
+ var _Tab2 = __webpack_require__(240);
- exports.SplitButton = _SplitButton4['default'];
+ var _Tab3 = _interopRequireDefault(_Tab2);
- var _SplitButton5 = _interopRequireDefault(_SplitButton3);
+ exports.Tab = _Tab3['default'];
- exports.SplitButton = _SplitButton5['default'];
+ var _Table2 = __webpack_require__(241);
- var _styleMaps2 = __webpack_require__(29);
+ var _Table3 = _interopRequireDefault(_Table2);
- var _styleMaps3 = _interopRequireDefault(_styleMaps2);
+ exports.Table = _Table3['default'];
- exports.styleMaps = _styleMaps3['default'];
+ var _Tabs2 = __webpack_require__(242);
- var _SubNav2 = __webpack_require__(234);
+ var _Tabs3 = _interopRequireDefault(_Tabs2);
- var _SubNav3 = _interopRequireDefault(_SubNav2);
+ exports.Tabs = _Tabs3['default'];
- exports.SubNav = _SubNav3['default'];
+ var _Thumbnail2 = __webpack_require__(243);
- var _Tab2 = __webpack_require__(235);
+ var _Thumbnail3 = _interopRequireDefault(_Thumbnail2);
- var _Tab3 = _interopRequireDefault(_Tab2);
+ exports.Thumbnail = _Thumbnail3['default'];
- exports.Tab = _Tab3['default'];
+ var _Tooltip2 = __webpack_require__(244);
- var _Table2 = __webpack_require__(236);
+ var _Tooltip3 = _interopRequireDefault(_Tooltip2);
- var _Table3 = _interopRequireDefault(_Table2);
+ exports.Tooltip = _Tooltip3['default'];
- exports.Table = _Table3['default'];
+ var _Well2 = __webpack_require__(245);
- var _Tabs2 = __webpack_require__(237);
+ var _Well3 = _interopRequireDefault(_Well2);
- var _Tabs3 = _interopRequireDefault(_Tabs2);
+ exports.Well = _Well3['default'];
- exports.Tabs = _Tabs3['default'];
+ var _Collapse2 = __webpack_require__(67);
- var _Thumbnail2 = __webpack_require__(238);
+ var _Collapse3 = _interopRequireDefault(_Collapse2);
- var _Thumbnail3 = _interopRequireDefault(_Thumbnail2);
+ exports.Collapse = _Collapse3['default'];
- exports.Thumbnail = _Thumbnail3['default'];
+ var _Fade2 = __webpack_require__(186);
- var _Tooltip2 = __webpack_require__(239);
+ var _Fade3 = _interopRequireDefault(_Fade2);
- var _Tooltip3 = _interopRequireDefault(_Tooltip2);
+ exports.Fade = _Fade3['default'];
- exports.Tooltip = _Tooltip3['default'];
+ var _FormControls2 = __webpack_require__(173);
- var _Well2 = __webpack_require__(240);
+ var _FormControls = _interopRequireWildcard(_FormControls2);
- var _Well3 = _interopRequireDefault(_Well2);
-
- exports.Well = _Well3['default'];
-
- var _Collapse2 = __webpack_require__(80);
-
- var _Collapse3 = _interopRequireDefault(_Collapse2);
-
- exports.Collapse = _Collapse3['default'];
-
- var _Fade2 = __webpack_require__(198);
-
- var _Fade3 = _interopRequireDefault(_Fade2);
-
- exports.Fade = _Fade3['default'];
-
- var _FormControls2 = __webpack_require__(181);
-
- var _FormControls = _interopRequireWildcard(_FormControls2);
-
- exports.FormControls = _FormControls;
- var utils = {
- childrenValueInputValidation: _utilsChildrenValueInputValidation2['default'],
- createChainedFunction: _utilsCreateChainedFunction2['default'],
- ValidComponentChildren: _utilsValidComponentChildren2['default']
- };
- exports.utils = utils;
+ exports.FormControls = _FormControls;
+ var utils = {
+ bootstrapUtils: _utilsBootstrapUtils2['default'],
+ childrenValueInputValidation: _utilsChildrenValueInputValidation2['default'],
+ createChainedFunction: _utilsCreateChainedFunction2['default'],
+ ValidComponentChildren: _utilsValidComponentChildren2['default']
+ };
+ exports.utils = utils;
/***/ },
/* 1 */
/***/ function(module, exports) {
- "use strict";
+ "use strict";
- exports["default"] = function (obj) {
- return obj && obj.__esModule ? obj : {
- "default": obj
- };
- };
+ exports["default"] = function (obj) {
+ return obj && obj.__esModule ? obj : {
+ "default": obj
+ };
+ };
- exports.__esModule = true;
+ exports.__esModule = true;
/***/ },
/* 2 */
/***/ function(module, exports) {
- "use strict";
+ "use strict";
- exports["default"] = function (obj) {
- if (obj && obj.__esModule) {
- return obj;
- } else {
- var newObj = {};
+ exports["default"] = function (obj) {
+ if (obj && obj.__esModule) {
+ return obj;
+ } else {
+ var newObj = {};
- if (obj != null) {
- for (var key in obj) {
- if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];
- }
- }
+ if (obj != null) {
+ for (var key in obj) {
+ if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];
+ }
+ }
- newObj["default"] = obj;
- return newObj;
- }
- };
+ newObj["default"] = obj;
+ return newObj;
+ }
+ };
- exports.__esModule = true;
+ exports.__esModule = true;
/***/ },
/* 3 */
/***/ function(module, exports, __webpack_require__) {
- 'use strict';
+ 'use strict';
- var _interopRequireDefault = __webpack_require__(1)['default'];
+ var _interopRequireDefault = __webpack_require__(1)['default'];
- exports.__esModule = true;
- exports['default'] = valueValidation;
+ exports.__esModule = true;
+ exports['default'] = valueValidation;
- var _react = __webpack_require__(4);
+ var _react = __webpack_require__(4);
- var _react2 = _interopRequireDefault(_react);
+ var _react2 = _interopRequireDefault(_react);
- var _reactPropTypesLibSinglePropFrom = __webpack_require__(5);
+ var _reactPropTypesLibSinglePropFrom = __webpack_require__(5);
- var _reactPropTypesLibSinglePropFrom2 = _interopRequireDefault(_reactPropTypesLibSinglePropFrom);
+ var _reactPropTypesLibSinglePropFrom2 = _interopRequireDefault(_reactPropTypesLibSinglePropFrom);
- function valueValidation(props, propName, componentName) {
- var error = _reactPropTypesLibSinglePropFrom2['default']('children', 'value')(props, propName, componentName);
+ function valueValidation(props, propName, componentName) {
+ var error = _reactPropTypesLibSinglePropFrom2['default']('children', 'value')(props, propName, componentName);
- if (!error) {
- error = _react2['default'].PropTypes.node(props, propName, componentName);
- }
+ if (!error) {
+ error = _react2['default'].PropTypes.node(props, propName, componentName);
+ }
- return error;
- }
+ return error;
+ }
- module.exports = exports['default'];
+ module.exports = exports['default'];
/***/ },
/* 4 */
/***/ function(module, exports) {
- module.exports = __WEBPACK_EXTERNAL_MODULE_4__;
+ module.exports = __WEBPACK_EXTERNAL_MODULE_4__;
/***/ },
/* 5 */
/***/ function(module, exports) {
- /**
- * Checks if only one of the listed properties is in use. An error is given
- * if multiple have a value
- *
- * @param props
- * @param propName
- * @param componentName
- * @returns {Error|undefined}
- */
- 'use strict';
-
- exports.__esModule = true;
- exports['default'] = createSinglePropFromChecker;
-
- function createSinglePropFromChecker() {
- for (var _len = arguments.length, arrOfProps = Array(_len), _key = 0; _key < _len; _key++) {
- arrOfProps[_key] = arguments[_key];
- }
-
- function validate(props, propName, componentName) {
- var usedPropCount = arrOfProps.map(function (listedProp) {
- return props[listedProp];
- }).reduce(function (acc, curr) {
- return acc + (curr !== undefined ? 1 : 0);
- }, 0);
-
- if (usedPropCount > 1) {
- var first = arrOfProps[0];
- var others = arrOfProps.slice(1);
-
- var message = others.join(', ') + ' and ' + first;
- return new Error('Invalid prop \'' + propName + '\', only one of the following ' + ('may be provided: ' + message));
- }
- }
- return validate;
- }
-
- module.exports = exports['default'];
+ /**
+ * Checks if only one of the listed properties is in use. An error is given
+ * if multiple have a value
+ *
+ * @param props
+ * @param propName
+ * @param componentName
+ * @returns {Error|undefined}
+ */
+ 'use strict';
+
+ exports.__esModule = true;
+ exports['default'] = createSinglePropFromChecker;
+
+ function createSinglePropFromChecker() {
+ for (var _len = arguments.length, arrOfProps = Array(_len), _key = 0; _key < _len; _key++) {
+ arrOfProps[_key] = arguments[_key];
+ }
+
+ function validate(props, propName, componentName) {
+ var usedPropCount = arrOfProps.map(function (listedProp) {
+ return props[listedProp];
+ }).reduce(function (acc, curr) {
+ return acc + (curr !== undefined ? 1 : 0);
+ }, 0);
+
+ if (usedPropCount > 1) {
+ var first = arrOfProps[0];
+ var others = arrOfProps.slice(1);
+
+ var message = others.join(', ') + ' and ' + first;
+ return new Error('Invalid prop \'' + propName + '\', only one of the following ' + ('may be provided: ' + message));
+ }
+ }
+ return validate;
+ }
+
+ module.exports = exports['default'];
/***/ },
/* 6 */
/***/ function(module, exports) {
- /**
- * Safe chained function
- *
- * Will only create a new function if needed,
- * otherwise will pass back existing functions or null.
- *
- * @param {function} functions to chain
- * @returns {function|null}
- */
- 'use strict';
-
- exports.__esModule = true;
- function createChainedFunction() {
- for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {
- funcs[_key] = arguments[_key];
- }
-
- return funcs.filter(function (f) {
- return f != null;
- }).reduce(function (acc, f) {
- if (typeof f !== 'function') {
- throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.');
- }
-
- if (acc === null) {
- return f;
- }
-
- return function chainedFunction() {
- for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
- args[_key2] = arguments[_key2];
- }
-
- acc.apply(this, args);
- f.apply(this, args);
- };
- }, null);
- }
-
- exports['default'] = createChainedFunction;
- module.exports = exports['default'];
+ /**
+ * Safe chained function
+ *
+ * Will only create a new function if needed,
+ * otherwise will pass back existing functions or null.
+ *
+ * @param {function} functions to chain
+ * @returns {function|null}
+ */
+ 'use strict';
+
+ exports.__esModule = true;
+ function createChainedFunction() {
+ for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {
+ funcs[_key] = arguments[_key];
+ }
+
+ return funcs.filter(function (f) {
+ return f != null;
+ }).reduce(function (acc, f) {
+ if (typeof f !== 'function') {
+ throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.');
+ }
+
+ if (acc === null) {
+ return f;
+ }
+
+ return function chainedFunction() {
+ for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
+ args[_key2] = arguments[_key2];
+ }
+
+ acc.apply(this, args);
+ f.apply(this, args);
+ };
+ }, null);
+ }
+
+ exports['default'] = createChainedFunction;
+ module.exports = exports['default'];
/***/ },
/* 7 */
/***/ function(module, exports, __webpack_require__) {
- 'use strict';
-
- var _interopRequireDefault = __webpack_require__(1)['default'];
-
- exports.__esModule = true;
-
- var _react = __webpack_require__(4);
-
- var _react2 = _interopRequireDefault(_react);
-
- /**
- * Maps children that are typically specified as `props.children`,
- * but only iterates over children that are "valid components".
- *
- * The mapFunction provided index will be normalised to the components mapped,
- * so an invalid component would not increase the index.
- *
- * @param {?*} children Children tree container.
- * @param {function(*, int)} mapFunction.
- * @param {*} mapContext Context for mapFunction.
- * @return {object} Object containing the ordered map of results.
- */
- function mapValidComponents(children, func, context) {
- var index = 0;
-
- return _react2['default'].Children.map(children, function (child) {
- if (_react2['default'].isValidElement(child)) {
- var lastIndex = index;
- index++;
- return func.call(context, child, lastIndex);
- }
-
- return child;
- });
- }
-
- /**
- * Iterates through children that are typically specified as `props.children`,
- * but only iterates over children that are "valid components".
- *
- * The provided forEachFunc(child, index) will be called for each
- * leaf child with the index reflecting the position relative to "valid components".
- *
- * @param {?*} children Children tree container.
- * @param {function(*, int)} forEachFunc.
- * @param {*} forEachContext Context for forEachContext.
- */
- function forEachValidComponents(children, func, context) {
- var index = 0;
-
- return _react2['default'].Children.forEach(children, function (child) {
- if (_react2['default'].isValidElement(child)) {
- func.call(context, child, index);
- index++;
- }
- });
- }
-
- /**
- * Count the number of "valid components" in the Children container.
- *
- * @param {?*} children Children tree container.
- * @returns {number}
- */
- function numberOfValidComponents(children) {
- var count = 0;
-
- _react2['default'].Children.forEach(children, function (child) {
- if (_react2['default'].isValidElement(child)) {
- count++;
- }
- });
-
- return count;
- }
-
- /**
- * Determine if the Child container has one or more "valid components".
- *
- * @param {?*} children Children tree container.
- * @returns {boolean}
- */
- function hasValidComponent(children) {
- var hasValid = false;
-
- _react2['default'].Children.forEach(children, function (child) {
- if (!hasValid && _react2['default'].isValidElement(child)) {
- hasValid = true;
- }
- });
-
- return hasValid;
- }
-
- function find(children, finder) {
- var child = undefined;
-
- forEachValidComponents(children, function (c, idx) {
- if (!child && finder(c, idx, children)) {
- child = c;
- }
- });
-
- return child;
- }
-
- /**
- * Finds children that are typically specified as `props.children`,
- * but only iterates over children that are "valid components".
- *
- * The provided forEachFunc(child, index) will be called for each
- * leaf child with the index reflecting the position relative to "valid components".
- *
- * @param {?*} children Children tree container.
- * @param {function(*, int)} findFunc.
- * @param {*} findContext Context for findContext.
- * @returns {array} of children that meet the findFunc return statement
- */
- function findValidComponents(children, func, context) {
- var index = 0;
- var returnChildren = [];
-
- _react2['default'].Children.forEach(children, function (child) {
- if (_react2['default'].isValidElement(child)) {
- if (func.call(context, child, index)) {
- returnChildren.push(child);
- }
- index++;
- }
- });
-
- return returnChildren;
- }
-
- exports['default'] = {
- map: mapValidComponents,
- forEach: forEachValidComponents,
- numberOf: numberOfValidComponents,
- find: find,
- findValidComponents: findValidComponents,
- hasValidComponent: hasValidComponent
- };
- module.exports = exports['default'];
+ 'use strict';
+
+ var _interopRequireDefault = __webpack_require__(1)['default'];
+
+ exports.__esModule = true;
+
+ var _react = __webpack_require__(4);
+
+ var _react2 = _interopRequireDefault(_react);
+
+ /**
+ * Maps children that are typically specified as `props.children`,
+ * but only iterates over children that are "valid components".
+ *
+ * The mapFunction provided index will be normalised to the components mapped,
+ * so an invalid component would not increase the index.
+ *
+ * @param {?*} children Children tree container.
+ * @param {function(*, int)} mapFunction.
+ * @param {*} mapContext Context for mapFunction.
+ * @return {object} Object containing the ordered map of results.
+ */
+ function mapValidComponents(children, func, context) {
+ var index = 0;
+
+ return _react2['default'].Children.map(children, function (child) {
+ if (_react2['default'].isValidElement(child)) {
+ var lastIndex = index;
+ index++;
+ return func.call(context, child, lastIndex);
+ }
+
+ return child;
+ });
+ }
+
+ /**
+ * Iterates through children that are typically specified as `props.children`,
+ * but only iterates over children that are "valid components".
+ *
+ * The provided forEachFunc(child, index) will be called for each
+ * leaf child with the index reflecting the position relative to "valid components".
+ *
+ * @param {?*} children Children tree container.
+ * @param {function(*, int)} forEachFunc.
+ * @param {*} forEachContext Context for forEachContext.
+ */
+ function forEachValidComponents(children, func, context) {
+ var index = 0;
+
+ return _react2['default'].Children.forEach(children, function (child) {
+ if (_react2['default'].isValidElement(child)) {
+ func.call(context, child, index);
+ index++;
+ }
+ });
+ }
+
+ /**
+ * Count the number of "valid components" in the Children container.
+ *
+ * @param {?*} children Children tree container.
+ * @returns {number}
+ */
+ function numberOfValidComponents(children) {
+ var count = 0;
+
+ _react2['default'].Children.forEach(children, function (child) {
+ if (_react2['default'].isValidElement(child)) {
+ count++;
+ }
+ });
+
+ return count;
+ }
+
+ /**
+ * Determine if the Child container has one or more "valid components".
+ *
+ * @param {?*} children Children tree container.
+ * @returns {boolean}
+ */
+ function hasValidComponent(children) {
+ var hasValid = false;
+
+ _react2['default'].Children.forEach(children, function (child) {
+ if (!hasValid && _react2['default'].isValidElement(child)) {
+ hasValid = true;
+ }
+ });
+
+ return hasValid;
+ }
+
+ function find(children, finder) {
+ var child = undefined;
+
+ forEachValidComponents(children, function (c, idx) {
+ if (!child && finder(c, idx, children)) {
+ child = c;
+ }
+ });
+
+ return child;
+ }
+
+ /**
+ * Finds children that are typically specified as `props.children`,
+ * but only iterates over children that are "valid components".
+ *
+ * The provided forEachFunc(child, index) will be called for each
+ * leaf child with the index reflecting the position relative to "valid components".
+ *
+ * @param {?*} children Children tree container.
+ * @param {function(*, int)} findFunc.
+ * @param {*} findContext Context for findContext.
+ * @returns {array} of children that meet the findFunc return statement
+ */
+ function findValidComponents(children, func, context) {
+ var index = 0;
+ var returnChildren = [];
+
+ _react2['default'].Children.forEach(children, function (child) {
+ if (_react2['default'].isValidElement(child)) {
+ if (func.call(context, child, index)) {
+ returnChildren.push(child);
+ }
+ index++;
+ }
+ });
+
+ return returnChildren;
+ }
+
+ exports['default'] = {
+ map: mapValidComponents,
+ forEach: forEachValidComponents,
+ numberOf: numberOfValidComponents,
+ find: find,
+ findValidComponents: findValidComponents,
+ hasValidComponent: hasValidComponent
+ };
+ module.exports = exports['default'];
/***/ },
/* 8 */
/***/ function(module, exports, __webpack_require__) {
- 'use strict';
+ 'use strict';
+
+ var _extends = __webpack_require__(9)['default'];
+
+ var _interopRequireDefault = __webpack_require__(1)['default'];
+
+ exports.__esModule = true;
+
+ var _react = __webpack_require__(4);
+
+ var _styleMaps = __webpack_require__(25);
+
+ var _styleMaps2 = _interopRequireDefault(_styleMaps);
- var _extends = __webpack_require__(9)['default'];
+ var _invariant = __webpack_require__(32);
- var _interopRequireDefault = __webpack_require__(1)['default'];
+ var _invariant2 = _interopRequireDefault(_invariant);
- exports.__esModule = true;
+ var _warning = __webpack_require__(33);
- var _react = __webpack_require__(4);
+ var _warning2 = _interopRequireDefault(_warning);
- var _react2 = _interopRequireDefault(_react);
+ function curry(fn) {
+ return function () {
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
- var _PanelGroup = __webpack_require__(25);
+ var last = args[args.length - 1];
+ if (typeof last === 'function') {
+ return fn.apply(undefined, args);
+ }
+ return function (Component) {
+ return fn.apply(undefined, args.concat([Component]));
+ };
+ };
+ }
- var _PanelGroup2 = _interopRequireDefault(_PanelGroup);
+ function prefix(props, variant) {
+ if (props === undefined) props = {};
- var Accordion = _react2['default'].createClass({
- displayName: 'Accordion',
+ !(props.bsClass || '').trim() ? true ? _invariant2['default'](false, 'A `bsClass` prop is required for this component') : _invariant2['default'](false) : undefined;
+ return props.bsClass + (variant ? '-' + variant : '');
+ }
- render: function render() {
- return _react2['default'].createElement(
- _PanelGroup2['default'],
- _extends({}, this.props, { accordion: true }),
- this.props.children
- );
- }
- });
+ var bsClass = curry(function (defaultClass, Component) {
+ var propTypes = Component.propTypes || (Component.propTypes = {});
+ var defaultProps = Component.defaultProps || (Component.defaultProps = {});
- exports['default'] = Accordion;
- module.exports = exports['default'];
+ propTypes.bsClass = _react.PropTypes.string;
+ defaultProps.bsClass = defaultClass;
+
+ return Component;
+ });
+
+ exports.bsClass = bsClass;
+ var bsStyles = curry(function (styles, defaultStyle, Component) {
+ if (typeof defaultStyle !== 'string') {
+ Component = defaultStyle;
+ defaultStyle = undefined;
+ }
+
+ var existing = Component.STYLES || [];
+ var propTypes = Component.propTypes || {};
+
+ styles.forEach(function (style) {
+ if (existing.indexOf(style) === -1) {
+ existing.push(style);
+ }
+ });
+
+ var propType = _react.PropTypes.oneOf(existing);
+
+ // expose the values on the propType function for documentation
+ Component.STYLES = propType._values = existing;
+
+ Component.propTypes = _extends({}, propTypes, {
+ bsStyle: propType
+ });
+
+ if (defaultStyle !== undefined) {
+ var defaultProps = Component.defaultProps || (Component.defaultProps = {});
+ defaultProps.bsStyle = defaultStyle;
+ }
+
+ return Component;
+ });
+
+ exports.bsStyles = bsStyles;
+ var bsSizes = curry(function (sizes, defaultSize, Component) {
+ if (typeof defaultSize !== 'string') {
+ Component = defaultSize;
+ defaultSize = undefined;
+ }
+
+ var existing = Component.SIZES || [];
+ var propTypes = Component.propTypes || {};
+
+ sizes.forEach(function (size) {
+ if (existing.indexOf(size) === -1) {
+ existing.push(size);
+ }
+ });
+
+ var values = existing.reduce(function (result, size) {
+ if (_styleMaps2['default'].SIZES[size] && _styleMaps2['default'].SIZES[size] !== size) {
+ result.push(_styleMaps2['default'].SIZES[size]);
+ }
+ return result.concat(size);
+ }, []);
+
+ var propType = _react.PropTypes.oneOf(values);
+
+ propType._values = values;
+
+ // expose the values on the propType function for documentation
+ Component.SIZES = existing;
+
+ Component.propTypes = _extends({}, propTypes, {
+ bsSize: propType
+ });
+
+ if (defaultSize !== undefined) {
+ var defaultProps = Component.defaultProps || (Component.defaultProps = {});
+ defaultProps.bsSize = defaultSize;
+ }
+
+ return Component;
+ });
+
+ exports.bsSizes = bsSizes;
+ exports['default'] = {
+
+ prefix: prefix,
+
+ getClassSet: function getClassSet(props) {
+ var classes = {};
+ var bsClassName = prefix(props);
+
+ if (bsClassName) {
+ var bsSize = undefined;
+
+ classes[bsClassName] = true;
+
+ if (props.bsSize) {
+ bsSize = _styleMaps2['default'].SIZES[props.bsSize] || bsSize;
+ }
+
+ if (bsSize) {
+ classes[prefix(props, bsSize)] = true;
+ }
+
+ if (props.bsStyle) {
+ if (props.bsStyle.indexOf(prefix(props)) === 0) {
+ true ? _warning2['default'](false, // small migration convenience, since the old method required manual prefixing
+ 'bsStyle will automatically prefix custom values with the bsClass, so there is no ' + 'need to append it manually. (bsStyle: ' + props.bsStyle + ', bsClass: ' + prefix(props) + ')') : undefined;
+ classes[props.bsStyle] = true;
+ } else {
+ classes[prefix(props, props.bsStyle)] = true;
+ }
+ }
+ }
+
+ return classes;
+ },
+
+ /**
+ * Add a style variant to a Component. Mutates the propTypes of the component
+ * in order to validate the new variant.
+ */
+ addStyle: function addStyle(Component, styleVariant) {
+ bsStyles(styleVariant, Component);
+ }
+ };
+ var _curry = curry;
+ exports._curry = _curry;
/***/ },
/* 9 */
/***/ function(module, exports, __webpack_require__) {
- "use strict";
+ "use strict";
- var _Object$assign = __webpack_require__(10)["default"];
+ var _Object$assign = __webpack_require__(10)["default"];
- exports["default"] = _Object$assign || function (target) {
- for (var i = 1; i < arguments.length; i++) {
- var source = arguments[i];
+ exports["default"] = _Object$assign || function (target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
- for (var key in source) {
- if (Object.prototype.hasOwnProperty.call(source, key)) {
- target[key] = source[key];
- }
- }
- }
+ for (var key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key];
+ }
+ }
+ }
- return target;
- };
+ return target;
+ };
- exports.__esModule = true;
+ exports.__esModule = true;
/***/ },
/* 10 */
/***/ function(module, exports, __webpack_require__) {
- module.exports = { "default": __webpack_require__(11), __esModule: true };
+ module.exports = { "default": __webpack_require__(11), __esModule: true };
/***/ },
/* 11 */
/***/ function(module, exports, __webpack_require__) {
- __webpack_require__(12);
- module.exports = __webpack_require__(15).Object.assign;
+ __webpack_require__(12);
+ module.exports = __webpack_require__(15).Object.assign;
/***/ },
/* 12 */
/***/ function(module, exports, __webpack_require__) {
- // 19.1.3.1 Object.assign(target, source)
- var $def = __webpack_require__(13);
+ // 19.1.3.1 Object.assign(target, source)
+ var $export = __webpack_require__(13);
- $def($def.S + $def.F, 'Object', {assign: __webpack_require__(16)});
+ $export($export.S + $export.F, 'Object', {assign: __webpack_require__(18)});
/***/ },
/* 13 */
/***/ function(module, exports, __webpack_require__) {
- var global = __webpack_require__(14)
- , core = __webpack_require__(15)
- , PROTOTYPE = 'prototype';
- var ctx = function(fn, that){
- return function(){
- return fn.apply(that, arguments);
- };
- };
- var $def = function(type, name, source){
- var key, own, out, exp
- , isGlobal = type & $def.G
- , isProto = type & $def.P
- , target = isGlobal ? global : type & $def.S
- ? global[name] : (global[name] || {})[PROTOTYPE]
- , exports = isGlobal ? core : core[name] || (core[name] = {});
- if(isGlobal)source = name;
- for(key in source){
- // contains in native
- own = !(type & $def.F) && target && key in target;
- if(own && key in exports)continue;
- // export native or passed
- out = own ? target[key] : source[key];
- // prevent global pollution for namespaces
- if(isGlobal && typeof target[key] != 'function')exp = source[key];
- // bind timers to global for call from export context
- else if(type & $def.B && own)exp = ctx(out, global);
- // wrap global constructors for prevent change them in library
- else if(type & $def.W && target[key] == out)!function(C){
- exp = function(param){
- return this instanceof C ? new C(param) : C(param);
- };
- exp[PROTOTYPE] = C[PROTOTYPE];
- }(out);
- else exp = isProto && typeof out == 'function' ? ctx(Function.call, out) : out;
- // export
- exports[key] = exp;
- if(isProto)(exports[PROTOTYPE] || (exports[PROTOTYPE] = {}))[key] = out;
- }
- };
- // type bitmap
- $def.F = 1; // forced
- $def.G = 2; // global
- $def.S = 4; // static
- $def.P = 8; // proto
- $def.B = 16; // bind
- $def.W = 32; // wrap
- module.exports = $def;
+ var global = __webpack_require__(14)
+ , core = __webpack_require__(15)
+ , ctx = __webpack_require__(16)
+ , PROTOTYPE = 'prototype';
+
+ var $export = function(type, name, source){
+ var IS_FORCED = type & $export.F
+ , IS_GLOBAL = type & $export.G
+ , IS_STATIC = type & $export.S
+ , IS_PROTO = type & $export.P
+ , IS_BIND = type & $export.B
+ , IS_WRAP = type & $export.W
+ , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})
+ , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]
+ , key, own, out;
+ if(IS_GLOBAL)source = name;
+ for(key in source){
+ // contains in native
+ own = !IS_FORCED && target && key in target;
+ if(own && key in exports)continue;
+ // export native or passed
+ out = own ? target[key] : source[key];
+ // prevent global pollution for namespaces
+ exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
+ // bind timers to global for call from export context
+ : IS_BIND && own ? ctx(out, global)
+ // wrap global constructors for prevent change them in library
+ : IS_WRAP && target[key] == out ? (function(C){
+ var F = function(param){
+ return this instanceof C ? new C(param) : C(param);
+ };
+ F[PROTOTYPE] = C[PROTOTYPE];
+ return F;
+ // make static versions for prototype methods
+ })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
+ if(IS_PROTO)(exports[PROTOTYPE] || (exports[PROTOTYPE] = {}))[key] = out;
+ }
+ };
+ // type bitmap
+ $export.F = 1; // forced
+ $export.G = 2; // global
+ $export.S = 4; // static
+ $export.P = 8; // proto
+ $export.B = 16; // bind
+ $export.W = 32; // wrap
+ module.exports = $export;
/***/ },
/* 14 */
/***/ function(module, exports) {
- // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
- var UNDEFINED = 'undefined';
- var global = module.exports = typeof window != UNDEFINED && window.Math == Math
- ? window : typeof self != UNDEFINED && self.Math == Math ? self : Function('return this')();
- if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef
+ // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
+ var global = module.exports = typeof window != 'undefined' && window.Math == Math
+ ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
+ if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef
/***/ },
/* 15 */
/***/ function(module, exports) {
- var core = module.exports = {version: '1.2.1'};
- if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef
+ var core = module.exports = {version: '1.2.6'};
+ if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef
/***/ },
/* 16 */
/***/ function(module, exports, __webpack_require__) {
- // 19.1.2.1 Object.assign(target, source, ...)
- var toObject = __webpack_require__(17)
- , IObject = __webpack_require__(19)
- , enumKeys = __webpack_require__(21)
- , has = __webpack_require__(23);
-
- // should work with symbols and should have deterministic property order (V8 bug)
- module.exports = __webpack_require__(24)(function(){
- var a = Object.assign
- , A = {}
- , B = {}
- , S = Symbol()
- , K = 'abcdefghijklmnopqrst';
- A[S] = 7;
- K.split('').forEach(function(k){ B[k] = k; });
- return a({}, A)[S] != 7 || Object.keys(a({}, B)).join('') != K;
- }) ? function assign(target, source){ // eslint-disable-line no-unused-vars
- var T = toObject(target)
- , l = arguments.length
- , i = 1;
- while(l > i){
- var S = IObject(arguments[i++])
- , keys = enumKeys(S)
- , length = keys.length
- , j = 0
- , key;
- while(length > j)if(has(S, key = keys[j++]))T[key] = S[key];
- }
- return T;
- } : Object.assign;
+ // optional / simple context binding
+ var aFunction = __webpack_require__(17);
+ module.exports = function(fn, that, length){
+ aFunction(fn);
+ if(that === undefined)return fn;
+ switch(length){
+ case 1: return function(a){
+ return fn.call(that, a);
+ };
+ case 2: return function(a, b){
+ return fn.call(that, a, b);
+ };
+ case 3: return function(a, b, c){
+ return fn.call(that, a, b, c);
+ };
+ }
+ return function(/* ...args */){
+ return fn.apply(that, arguments);
+ };
+ };
/***/ },
/* 17 */
-/***/ function(module, exports, __webpack_require__) {
+/***/ function(module, exports) {
- // 7.1.13 ToObject(argument)
- var defined = __webpack_require__(18);
- module.exports = function(it){
- return Object(defined(it));
- };
+ module.exports = function(it){
+ if(typeof it != 'function')throw TypeError(it + ' is not a function!');
+ return it;
+ };
/***/ },
/* 18 */
-/***/ function(module, exports) {
+/***/ function(module, exports, __webpack_require__) {
- // 7.2.1 RequireObjectCoercible(argument)
- module.exports = function(it){
- if(it == undefined)throw TypeError("Can't call method on " + it);
- return it;
- };
+ // 19.1.2.1 Object.assign(target, source, ...)
+ var $ = __webpack_require__(19)
+ , toObject = __webpack_require__(20)
+ , IObject = __webpack_require__(22);
+
+ // should work with symbols and should have deterministic property order (V8 bug)
+ module.exports = __webpack_require__(24)(function(){
+ var a = Object.assign
+ , A = {}
+ , B = {}
+ , S = Symbol()
+ , K = 'abcdefghijklmnopqrst';
+ A[S] = 7;
+ K.split('').forEach(function(k){ B[k] = k; });
+ return a({}, A)[S] != 7 || Object.keys(a({}, B)).join('') != K;
+ }) ? function assign(target, source){ // eslint-disable-line no-unused-vars
+ var T = toObject(target)
+ , $$ = arguments
+ , $$len = $$.length
+ , index = 1
+ , getKeys = $.getKeys
+ , getSymbols = $.getSymbols
+ , isEnum = $.isEnum;
+ while($$len > index){
+ var S = IObject($$[index++])
+ , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)
+ , length = keys.length
+ , j = 0
+ , key;
+ while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];
+ }
+ return T;
+ } : Object.assign;
/***/ },
/* 19 */
-/***/ function(module, exports, __webpack_require__) {
+/***/ function(module, exports) {
- // indexed object, fallback for non-array-like ES3 strings
- var cof = __webpack_require__(20);
- module.exports = 0 in Object('z') ? Object : function(it){
- return cof(it) == 'String' ? it.split('') : Object(it);
- };
+ var $Object = Object;
+ module.exports = {
+ create: $Object.create,
+ getProto: $Object.getPrototypeOf,
+ isEnum: {}.propertyIsEnumerable,
+ getDesc: $Object.getOwnPropertyDescriptor,
+ setDesc: $Object.defineProperty,
+ setDescs: $Object.defineProperties,
+ getKeys: $Object.keys,
+ getNames: $Object.getOwnPropertyNames,
+ getSymbols: $Object.getOwnPropertySymbols,
+ each: [].forEach
+ };
/***/ },
/* 20 */
-/***/ function(module, exports) {
-
- var toString = {}.toString;
+/***/ function(module, exports, __webpack_require__) {
- module.exports = function(it){
- return toString.call(it).slice(8, -1);
- };
+ // 7.1.13 ToObject(argument)
+ var defined = __webpack_require__(21);
+ module.exports = function(it){
+ return Object(defined(it));
+ };
/***/ },
/* 21 */
-/***/ function(module, exports, __webpack_require__) {
+/***/ function(module, exports) {
- // all enumerable object keys, includes symbols
- var $ = __webpack_require__(22);
- module.exports = function(it){
- var keys = $.getKeys(it)
- , getSymbols = $.getSymbols;
- if(getSymbols){
- var symbols = getSymbols(it)
- , isEnum = $.isEnum
- , i = 0
- , key;
- while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))keys.push(key);
- }
- return keys;
- };
+ // 7.2.1 RequireObjectCoercible(argument)
+ module.exports = function(it){
+ if(it == undefined)throw TypeError("Can't call method on " + it);
+ return it;
+ };
/***/ },
/* 22 */
-/***/ function(module, exports) {
+/***/ function(module, exports, __webpack_require__) {
- var $Object = Object;
- module.exports = {
- create: $Object.create,
- getProto: $Object.getPrototypeOf,
- isEnum: {}.propertyIsEnumerable,
- getDesc: $Object.getOwnPropertyDescriptor,
- setDesc: $Object.defineProperty,
- setDescs: $Object.defineProperties,
- getKeys: $Object.keys,
- getNames: $Object.getOwnPropertyNames,
- getSymbols: $Object.getOwnPropertySymbols,
- each: [].forEach
- };
+ // fallback for non-array-like ES3 and non-enumerable old V8 strings
+ var cof = __webpack_require__(23);
+ module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){
+ return cof(it) == 'String' ? it.split('') : Object(it);
+ };
/***/ },
/* 23 */
/***/ function(module, exports) {
- var hasOwnProperty = {}.hasOwnProperty;
- module.exports = function(it, key){
- return hasOwnProperty.call(it, key);
- };
+ var toString = {}.toString;
+
+ module.exports = function(it){
+ return toString.call(it).slice(8, -1);
+ };
/***/ },
/* 24 */
/***/ function(module, exports) {
- module.exports = function(exec){
- try {
- return !!exec();
- } catch(e){
- return true;
- }
- };
+ module.exports = function(exec){
+ try {
+ return !!exec();
+ } catch(e){
+ return true;
+ }
+ };
/***/ },
/* 25 */
/***/ function(module, exports, __webpack_require__) {
- /* eslint react/prop-types: [2, {ignore: "bsStyle"}] */
- /* BootstrapMixin contains `bsStyle` type validation */
-
- 'use strict';
-
- var _objectWithoutProperties = __webpack_require__(26)['default'];
-
- var _extends = __webpack_require__(9)['default'];
-
- var _interopRequireDefault = __webpack_require__(1)['default'];
+ 'use strict';
+
+ var _Object$assign = __webpack_require__(10)['default'];
+
+ var _Object$create = __webpack_require__(26)['default'];
+
+ var _Object$keys = __webpack_require__(28)['default'];
+
+ exports.__esModule = true;
+
+ var constant = function constant(obj) {
+ return _Object$assign(_Object$create({
+ values: function values() {
+ var _this = this;
+
+ return _Object$keys(this).map(function (k) {
+ return _this[k];
+ });
+ }
+ }), obj);
+ };
+
+ var styleMaps = {
+
+ SIZES: {
+ 'large': 'lg',
+ 'medium': 'md',
+ 'small': 'sm',
+ 'xsmall': 'xs',
+ 'lg': 'lg',
+ 'md': 'md',
+ 'sm': 'sm',
+ 'xs': 'xs'
+ },
+ GRID_COLUMNS: 12
+ };
+
+ var Sizes = constant({
+ LARGE: 'large',
+ MEDIUM: 'medium',
+ SMALL: 'small',
+ XSMALL: 'xsmall'
+ });
+
+ exports.Sizes = Sizes;
+ var State = constant({
+ SUCCESS: 'success',
+ WARNING: 'warning',
+ DANGER: 'danger',
+ INFO: 'info'
+ });
+
+ exports.State = State;
+ var DEFAULT = 'default';
+ exports.DEFAULT = DEFAULT;
+ var PRIMARY = 'primary';
+ exports.PRIMARY = PRIMARY;
+ var LINK = 'link';
+ exports.LINK = LINK;
+ var INVERSE = 'inverse';
+
+ exports.INVERSE = INVERSE;
+ exports['default'] = styleMaps;
- exports.__esModule = true;
-
- var _react = __webpack_require__(4);
-
- var _react2 = _interopRequireDefault(_react);
-
- var _classnames = __webpack_require__(27);
+/***/ },
+/* 26 */
+/***/ function(module, exports, __webpack_require__) {
- var _classnames2 = _interopRequireDefault(_classnames);
+ module.exports = { "default": __webpack_require__(27), __esModule: true };
- var _BootstrapMixin = __webpack_require__(28);
+/***/ },
+/* 27 */
+/***/ function(module, exports, __webpack_require__) {
- var _BootstrapMixin2 = _interopRequireDefault(_BootstrapMixin);
+ var $ = __webpack_require__(19);
+ module.exports = function create(P, D){
+ return $.create(P, D);
+ };
- var _utilsValidComponentChildren = __webpack_require__(7);
+/***/ },
+/* 28 */
+/***/ function(module, exports, __webpack_require__) {
- var _utilsValidComponentChildren2 = _interopRequireDefault(_utilsValidComponentChildren);
+ module.exports = { "default": __webpack_require__(29), __esModule: true };
- var PanelGroup = _react2['default'].createClass({
- displayName: 'PanelGroup',
+/***/ },
+/* 29 */
+/***/ function(module, exports, __webpack_require__) {
- mixins: [_BootstrapMixin2['default']],
+ __webpack_require__(30);
+ module.exports = __webpack_require__(15).Object.keys;
- propTypes: {
- accordion: _react2['default'].PropTypes.bool,
- activeKey: _react2['default'].PropTypes.any,
- className: _react2['default'].PropTypes.string,
- children: _react2['default'].PropTypes.node,
- defaultActiveKey: _react2['default'].PropTypes.any,
- onSelect: _react2['default'].PropTypes.func
- },
+/***/ },
+/* 30 */
+/***/ function(module, exports, __webpack_require__) {
- getDefaultProps: function getDefaultProps() {
- return {
- accordion: false,
- bsClass: 'panel-group'
- };
- },
+ // 19.1.2.14 Object.keys(O)
+ var toObject = __webpack_require__(20);
- getInitialState: function getInitialState() {
- var defaultActiveKey = this.props.defaultActiveKey;
+ __webpack_require__(31)('keys', function($keys){
+ return function keys(it){
+ return $keys(toObject(it));
+ };
+ });
- return {
- activeKey: defaultActiveKey
- };
- },
+/***/ },
+/* 31 */
+/***/ function(module, exports, __webpack_require__) {
- render: function render() {
- var classes = this.getBsClassSet();
- var _props = this.props;
- var className = _props.className;
+ // most Object methods by ES6 should accept primitives
+ var $export = __webpack_require__(13)
+ , core = __webpack_require__(15)
+ , fails = __webpack_require__(24);
+ module.exports = function(KEY, exec){
+ var fn = (core.Object || {})[KEY] || Object[KEY]
+ , exp = {};
+ exp[KEY] = exec(fn);
+ $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp);
+ };
- var props = _objectWithoutProperties(_props, ['className']);
+/***/ },
+/* 32 */
+/***/ function(module, exports, __webpack_require__) {
- if (this.props.accordion) {
- props.role = 'tablist';
- }
- return _react2['default'].createElement(
- 'div',
- _extends({}, props, { className: _classnames2['default'](className, classes), onSelect: null }),
- _utilsValidComponentChildren2['default'].map(props.children, this.renderPanel)
- );
- },
+ /**
+ * Copyright 2013-2015, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+
+ 'use strict';
+
+ /**
+ * Use invariant() to assert state which your program assumes to be true.
+ *
+ * Provide sprintf-style format (only %s is supported) and arguments
+ * to provide information about what broke and what you were
+ * expecting.
+ *
+ * The invariant message will be stripped in production, but the invariant
+ * will remain to ensure logic does not differ in production.
+ */
+
+ var invariant = function(condition, format, a, b, c, d, e, f) {
+ if (true) {
+ if (format === undefined) {
+ throw new Error('invariant requires an error message argument');
+ }
+ }
+
+ if (!condition) {
+ var error;
+ if (format === undefined) {
+ error = new Error(
+ 'Minified exception occurred; use the non-minified dev environment ' +
+ 'for the full error message and additional helpful warnings.'
+ );
+ } else {
+ var args = [a, b, c, d, e, f];
+ var argIndex = 0;
+ error = new Error(
+ format.replace(/%s/g, function() { return args[argIndex++]; })
+ );
+ error.name = 'Invariant Violation';
+ }
+
+ error.framesToPop = 1; // we don't care about invariant's own frame
+ throw error;
+ }
+ };
+
+ module.exports = invariant;
- renderPanel: function renderPanel(child, index) {
- var activeKey = this.props.activeKey != null ? this.props.activeKey : this.state.activeKey;
- var props = {
- bsStyle: child.props.bsStyle || this.props.bsStyle,
- key: child.key ? child.key : index,
- ref: child.ref
- };
+/***/ },
+/* 33 */
+/***/ function(module, exports, __webpack_require__) {
- if (this.props.accordion) {
- props.headerRole = 'tab';
- props.panelRole = 'tabpanel';
- props.collapsible = true;
- props.expanded = child.props.eventKey === activeKey;
- props.onSelect = this.handleSelect;
- }
+ /**
+ * Copyright 2014-2015, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+
+ 'use strict';
+
+ /**
+ * Similar to invariant but only logs a warning if the condition is not met.
+ * This can be used to log issues in development environments in critical
+ * paths. Removing the logging code for production environments will keep the
+ * same logic and follow the same code paths.
+ */
+
+ var warning = function() {};
+
+ if (true) {
+ warning = function(condition, format, args) {
+ var len = arguments.length;
+ args = new Array(len > 2 ? len - 2 : 0);
+ for (var key = 2; key < len; key++) {
+ args[key - 2] = arguments[key];
+ }
+ if (format === undefined) {
+ throw new Error(
+ '`warning(condition, format, ...args)` requires a warning ' +
+ 'message argument'
+ );
+ }
+
+ if (format.length < 10 || (/^[s\W]*$/).test(format)) {
+ throw new Error(
+ 'The warning format should be able to uniquely identify this ' +
+ 'warning. Please, use a more descriptive format than: ' + format
+ );
+ }
+
+ if (!condition) {
+ var argIndex = 0;
+ var message = 'Warning: ' +
+ format.replace(/%s/g, function() {
+ return args[argIndex++];
+ });
+ if (typeof console !== 'undefined') {
+ console.error(message);
+ }
+ try {
+ // This error was thrown as a convenience so that you can use this stack
+ // to find the callsite that caused this warning to fire.
+ throw new Error(message);
+ } catch(x) {}
+ }
+ };
+ }
+
+ module.exports = warning;
- return _react.cloneElement(child, props);
- },
- shouldComponentUpdate: function shouldComponentUpdate() {
- // Defer any updates to this component during the `onSelect` handler.
- return !this._isChanging;
- },
+/***/ },
+/* 34 */
+/***/ function(module, exports, __webpack_require__) {
- handleSelect: function handleSelect(e, key) {
- e.preventDefault();
+ 'use strict';
- if (this.props.onSelect) {
- this._isChanging = true;
- this.props.onSelect(key);
- this._isChanging = false;
- }
+ var _extends = __webpack_require__(9)['default'];
- if (this.state.activeKey === key) {
- key = null;
- }
+ var _interopRequireDefault = __webpack_require__(1)['default'];
- this.setState({
- activeKey: key
- });
- }
- });
+ exports.__esModule = true;
- exports['default'] = PanelGroup;
- module.exports = exports['default'];
+ var _react = __webpack_require__(4);
-/***/ },
-/* 26 */
-/***/ function(module, exports) {
+ var _react2 = _interopRequireDefault(_react);
- "use strict";
+ var _PanelGroup = __webpack_require__(35);
- exports["default"] = function (obj, keys) {
- var target = {};
+ var _PanelGroup2 = _interopRequireDefault(_PanelGroup);
- for (var i in obj) {
- if (keys.indexOf(i) >= 0) continue;
- if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;
- target[i] = obj[i];
- }
+ var Accordion = _react2['default'].createClass({
+ displayName: 'Accordion',
- return target;
- };
+ render: function render() {
+ return _react2['default'].createElement(
+ _PanelGroup2['default'],
+ _extends({}, this.props, { accordion: true }),
+ this.props.children
+ );
+ }
+ });
- exports.__esModule = true;
+ exports['default'] = Accordion;
+ module.exports = exports['default'];
/***/ },
-/* 27 */
+/* 35 */
/***/ function(module, exports, __webpack_require__) {
- var __WEBPACK_AMD_DEFINE_RESULT__;/*!
- Copyright (c) 2015 Jed Watson.
- Licensed under the MIT License (MIT), see
- http://jedwatson.github.io/classnames
- */
- /* global define */
-
- (function () {
- 'use strict';
+ 'use strict';
- var hasOwn = {}.hasOwnProperty;
+ var _objectWithoutProperties = __webpack_require__(36)['default'];
- function classNames () {
- var classes = '';
+ var _extends = __webpack_require__(9)['default'];
- for (var i = 0; i < arguments.length; i++) {
- var arg = arguments[i];
- if (!arg) continue;
+ var _interopRequireDefault = __webpack_require__(1)['default'];
- var argType = typeof arg;
+ exports.__esModule = true;
- if (argType === 'string' || argType === 'number') {
- classes += ' ' + arg;
- } else if (Array.isArray(arg)) {
- classes += ' ' + classNames.apply(null, arg);
- } else if (argType === 'object') {
- for (var key in arg) {
- if (hasOwn.call(arg, key) && arg[key]) {
- classes += ' ' + key;
- }
- }
- }
- }
+ var _react = __webpack_require__(4);
- return classes.substr(1);
- }
+ var _react2 = _interopRequireDefault(_react);
- if (typeof module !== 'undefined' && module.exports) {
- module.exports = classNames;
- } else if (true) {
- // register as 'classnames', consistent with npm package name
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function () {
- return classNames;
- }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
- } else {
- window.classNames = classNames;
- }
- }());
+ var _classnames = __webpack_require__(37);
+ var _classnames2 = _interopRequireDefault(_classnames);
-/***/ },
-/* 28 */
-/***/ function(module, exports, __webpack_require__) {
+ var _utilsBootstrapUtils = __webpack_require__(8);
- 'use strict';
+ var _utilsBootstrapUtils2 = _interopRequireDefault(_utilsBootstrapUtils);
- var _interopRequireDefault = __webpack_require__(1)['default'];
+ var _utilsValidComponentChildren = __webpack_require__(7);
- exports.__esModule = true;
+ var _utilsValidComponentChildren2 = _interopRequireDefault(_utilsValidComponentChildren);
- var _react = __webpack_require__(4);
+ var PanelGroup = _react2['default'].createClass({
+ displayName: 'PanelGroup',
- var _react2 = _interopRequireDefault(_react);
+ propTypes: {
+ accordion: _react2['default'].PropTypes.bool,
+ activeKey: _react2['default'].PropTypes.any,
+ className: _react2['default'].PropTypes.string,
+ children: _react2['default'].PropTypes.node,
+ defaultActiveKey: _react2['default'].PropTypes.any,
+ onSelect: _react2['default'].PropTypes.func
+ },
- var _styleMaps = __webpack_require__(29);
+ getDefaultProps: function getDefaultProps() {
+ return {
+ accordion: false
+ };
+ },
- var _styleMaps2 = _interopRequireDefault(_styleMaps);
+ getInitialState: function getInitialState() {
+ var defaultActiveKey = this.props.defaultActiveKey;
- var _reactPropTypesLibKeyOf = __webpack_require__(30);
+ return {
+ activeKey: defaultActiveKey
+ };
+ },
- var _reactPropTypesLibKeyOf2 = _interopRequireDefault(_reactPropTypesLibKeyOf);
+ render: function render() {
+ var classes = _utilsBootstrapUtils2['default'].getClassSet(this.props);
+ var _props = this.props;
+ var className = _props.className;
- var BootstrapMixin = {
- propTypes: {
- /**
- * bootstrap className
- * @private
- */
- bsClass: _reactPropTypesLibKeyOf2['default'](_styleMaps2['default'].CLASSES),
- /**
- * Style variants
- * @type {("default"|"primary"|"success"|"info"|"warning"|"danger"|"link")}
- */
- bsStyle: _react2['default'].PropTypes.oneOf(_styleMaps2['default'].STYLES),
- /**
- * Size variants
- * @type {("xsmall"|"small"|"medium"|"large"|"xs"|"sm"|"md"|"lg")}
- */
- bsSize: _reactPropTypesLibKeyOf2['default'](_styleMaps2['default'].SIZES)
- },
+ var props = _objectWithoutProperties(_props, ['className']);
- getBsClassSet: function getBsClassSet() {
- var classes = {};
+ if (this.props.accordion) {
+ props.role = 'tablist';
+ }
+ return _react2['default'].createElement(
+ 'div',
+ _extends({}, props, { className: _classnames2['default'](className, classes), onSelect: null }),
+ _utilsValidComponentChildren2['default'].map(props.children, this.renderPanel)
+ );
+ },
- var bsClass = this.props.bsClass && _styleMaps2['default'].CLASSES[this.props.bsClass];
- if (bsClass) {
- classes[bsClass] = true;
+ renderPanel: function renderPanel(child, index) {
+ var activeKey = this.props.activeKey != null ? this.props.activeKey : this.state.activeKey;
- var prefix = bsClass + '-';
+ var props = {
+ bsStyle: child.props.bsStyle || this.props.bsStyle,
+ key: child.key ? child.key : index,
+ ref: child.ref
+ };
- var bsSize = this.props.bsSize && _styleMaps2['default'].SIZES[this.props.bsSize];
- if (bsSize) {
- classes[prefix + bsSize] = true;
- }
+ if (this.props.accordion) {
+ props.headerRole = 'tab';
+ props.panelRole = 'tabpanel';
+ props.collapsible = true;
+ props.expanded = child.props.eventKey === activeKey;
+ props.onSelect = this.handleSelect;
+ }
- if (this.props.bsStyle) {
- if (_styleMaps2['default'].STYLES.indexOf(this.props.bsStyle) >= 0) {
- classes[prefix + this.props.bsStyle] = true;
- } else {
- classes[this.props.bsStyle] = true;
- }
- }
- }
+ return _react.cloneElement(child, props);
+ },
- return classes;
- },
+ shouldComponentUpdate: function shouldComponentUpdate() {
+ // Defer any updates to this component during the `onSelect` handler.
+ return !this._isChanging;
+ },
- prefixClass: function prefixClass(subClass) {
- return _styleMaps2['default'].CLASSES[this.props.bsClass] + '-' + subClass;
- }
- };
+ handleSelect: function handleSelect(e, key) {
+ e.preventDefault();
- exports['default'] = BootstrapMixin;
- module.exports = exports['default'];
+ if (this.props.onSelect) {
+ this._isChanging = true;
+ this.props.onSelect(key);
+ this._isChanging = false;
+ }
-/***/ },
-/* 29 */
-/***/ function(module, exports) {
+ if (this.state.activeKey === key) {
+ key = null;
+ }
- 'use strict';
-
- exports.__esModule = true;
- var styleMaps = {
- CLASSES: {
- 'alert': 'alert',
- 'button': 'btn',
- 'button-group': 'btn-group',
- 'button-toolbar': 'btn-toolbar',
- 'column': 'col',
- 'input-group': 'input-group',
- 'form': 'form',
- 'glyphicon': 'glyphicon',
- 'label': 'label',
- 'thumbnail': 'thumbnail',
- 'list-group-item': 'list-group-item',
- 'panel': 'panel',
- 'panel-group': 'panel-group',
- 'pagination': 'pagination',
- 'progress-bar': 'progress-bar',
- 'nav': 'nav',
- 'navbar': 'navbar',
- 'modal': 'modal',
- 'row': 'row',
- 'well': 'well'
- },
- STYLES: ['default', 'primary', 'success', 'info', 'warning', 'danger', 'link', 'inline', 'tabs', 'pills'],
- addStyle: function addStyle(name) {
- styleMaps.STYLES.push(name);
- },
- SIZES: {
- 'large': 'lg',
- 'medium': 'md',
- 'small': 'sm',
- 'xsmall': 'xs',
- 'lg': 'lg',
- 'md': 'md',
- 'sm': 'sm',
- 'xs': 'xs'
- },
- GRID_COLUMNS: 12
- };
-
- exports['default'] = styleMaps;
- module.exports = exports['default'];
+ this.setState({
+ activeKey: key
+ });
+ }
+ });
+
+ exports['default'] = _utilsBootstrapUtils.bsClass('panel-group', PanelGroup);
+ module.exports = exports['default'];
/***/ },
-/* 30 */
-/***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
+/* 36 */
+/***/ function(module, exports) {
- exports.__esModule = true;
- exports['default'] = keyOf;
+ "use strict";
- var _common = __webpack_require__(31);
+ exports["default"] = function (obj, keys) {
+ var target = {};
- /**
- * Checks whether a prop matches a key of an associated object
- *
- * @param props
- * @param propName
- * @param componentName
- * @returns {Error|undefined}
- */
+ for (var i in obj) {
+ if (keys.indexOf(i) >= 0) continue;
+ if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;
+ target[i] = obj[i];
+ }
- function keyOf(obj) {
- function validate(props, propName, componentName) {
- var propValue = props[propName];
- if (!obj.hasOwnProperty(propValue)) {
- var valuesString = JSON.stringify(Object.keys(obj));
- return new Error(_common.errMsg(props, propName, componentName, ', expected one of ' + valuesString + '.'));
- }
- }
- return _common.createChainableTypeChecker(validate);
- }
+ return target;
+ };
- module.exports = exports['default'];
+ exports.__esModule = true;
/***/ },
-/* 31 */
-/***/ function(module, exports) {
-
- 'use strict';
-
- exports.__esModule = true;
- exports.errMsg = errMsg;
- exports.createChainableTypeChecker = createChainableTypeChecker;
-
- function errMsg(props, propName, componentName, msgContinuation) {
- return 'Invalid prop \'' + propName + '\' of value \'' + props[propName] + '\'' + (' supplied to \'' + componentName + '\'' + msgContinuation);
- }
-
- /**
- * Create chain-able isRequired validator
- *
- * Largely copied directly from:
- * https://github.com/facebook/react/blob/0.11-stable/src/core/ReactPropTypes.js#L94
- */
-
- function createChainableTypeChecker(validate) {
- function checkType(isRequired, props, propName, componentName) {
- componentName = componentName || '<<anonymous>>';
- if (props[propName] == null) {
- if (isRequired) {
- return new Error('Required prop \'' + propName + '\' was not specified in \'' + componentName + '\'.');
- }
- } else {
- return validate(props, propName, componentName);
- }
- }
+/* 37 */
+/***/ function(module, exports, __webpack_require__) {
- var chainedCheckType = checkType.bind(null, false);
- chainedCheckType.isRequired = checkType.bind(null, true);
+ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
+ Copyright (c) 2016 Jed Watson.
+ Licensed under the MIT License (MIT), see
+ http://jedwatson.github.io/classnames
+ */
+ /* global define */
+
+ (function () {
+ 'use strict';
+
+ var hasOwn = {}.hasOwnProperty;
+
+ function classNames () {
+ var classes = [];
+
+ for (var i = 0; i < arguments.length; i++) {
+ var arg = arguments[i];
+ if (!arg) continue;
+
+ var argType = typeof arg;
+
+ if (argType === 'string' || argType === 'number') {
+ classes.push(arg);
+ } else if (Array.isArray(arg)) {
+ classes.push(classNames.apply(null, arg));
+ } else if (argType === 'object') {
+ for (var key in arg) {
+ if (hasOwn.call(arg, key) && arg[key]) {
+ classes.push(key);
+ }
+ }
+ }
+ }
+
+ return classes.join(' ');
+ }
+
+ if (typeof module !== 'undefined' && module.exports) {
+ module.exports = classNames;
+ } else if (true) {
+ // register as 'classnames', consistent with npm package name
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {
+ return classNames;
+ }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
+ } else {
+ window.classNames = classNames;
+ }
+ }());
- return chainedCheckType;
- }
/***/ },
-/* 32 */
+/* 38 */
/***/ function(module, exports, __webpack_require__) {
- 'use strict';
+ 'use strict';
- var _extends = __webpack_require__(9)['default'];
+ var _extends = __webpack_require__(9)['default'];
- var _interopRequireDefault = __webpack_require__(1)['default'];
+ var _interopRequireDefault = __webpack_require__(1)['default'];
- exports.__esModule = true;
+ exports.__esModule = true;
- var _react = __webpack_require__(4);
+ var _react = __webpack_require__(4);
- var _react2 = _interopRequireDefault(_react);
+ var _react2 = _interopRequireDefault(_react);
- var _classnames = __webpack_require__(27);
+ var _classnames = __webpack_require__(37);
- var _classnames2 = _interopRequireDefault(_classnames);
+ var _classnames2 = _interopRequireDefault(_classnames);
- var _AffixMixin = __webpack_require__(33);
+ var _utilsBootstrapUtils = __webpack_require__(8);
- var _AffixMixin2 = _interopRequireDefault(_AffixMixin);
+ var _utilsBootstrapUtils2 = _interopRequireDefault(_utilsBootstrapUtils);
- var Affix = _react2['default'].createClass({
- displayName: 'Affix',
+ var _styleMaps = __webpack_require__(25);
- mixins: [_AffixMixin2['default']],
+ var Alert = _react2['default'].createClass({
+ displayName: 'Alert',
- render: function render() {
- var holderStyle = _extends({
- top: this.state.affixPositionTop
- }, this.props.style);
+ propTypes: {
+ onDismiss: _react2['default'].PropTypes.func,
+ dismissAfter: _react2['default'].PropTypes.number,
+ closeLabel: _react2['default'].PropTypes.string
+ },
- // eslint-disable-line react/prop-types
- return _react2['default'].createElement(
- 'div',
- _extends({}, this.props, {
- className: _classnames2['default'](this.props.className, this.state.affixClass),
- style: holderStyle }),
- this.props.children
- );
- }
- });
+ getDefaultProps: function getDefaultProps() {
+ return {
+ closeLabel: 'Close Alert'
+ };
+ },
- exports['default'] = Affix;
- module.exports = exports['default'];
- // we don't want to expose the `style` property
-
-/***/ },
-/* 33 */
-/***/ function(module, exports, __webpack_require__) {
+ renderDismissButton: function renderDismissButton() {
+ return _react2['default'].createElement(
+ 'button',
+ {
+ type: 'button',
+ className: 'close',
+ onClick: this.props.onDismiss,
+ 'aria-hidden': 'true',
+ tabIndex: '-1' },
+ _react2['default'].createElement(
+ 'span',
+ null,
+ '×'
+ )
+ );
+ },
- 'use strict';
+ renderSrOnlyDismissButton: function renderSrOnlyDismissButton() {
+ return _react2['default'].createElement(
+ 'button',
+ {
+ type: 'button',
+ className: 'close sr-only',
+ onClick: this.props.onDismiss },
+ this.props.closeLabel
+ );
+ },
- var _interopRequireDefault = __webpack_require__(1)['default'];
+ render: function render() {
+ var classes = _utilsBootstrapUtils2['default'].getClassSet(this.props);
+ var isDismissable = !!this.props.onDismiss;
- exports.__esModule = true;
+ classes[_utilsBootstrapUtils2['default'].prefix(this.props, 'dismissable')] = isDismissable;
- var _react = __webpack_require__(4);
+ return _react2['default'].createElement(
+ 'div',
+ _extends({}, this.props, { role: 'alert', className: _classnames2['default'](this.props.className, classes) }),
+ isDismissable ? this.renderDismissButton() : null,
+ this.props.children,
+ isDismissable ? this.renderSrOnlyDismissButton() : null
+ );
+ },
- var _react2 = _interopRequireDefault(_react);
+ componentDidMount: function componentDidMount() {
+ if (this.props.dismissAfter && this.props.onDismiss) {
+ this.dismissTimer = setTimeout(this.props.onDismiss, this.props.dismissAfter);
+ }
+ },
- var _utilsDomUtils = __webpack_require__(34);
+ componentWillUnmount: function componentWillUnmount() {
+ clearTimeout(this.dismissTimer);
+ }
+ });
- var _utilsDomUtils2 = _interopRequireDefault(_utilsDomUtils);
+ exports['default'] = _utilsBootstrapUtils.bsStyles(_styleMaps.State.values(), _styleMaps.State.INFO, _utilsBootstrapUtils.bsClass('alert', Alert));
+ module.exports = exports['default'];
- var _domHelpersQueryOffset = __webpack_require__(38);
+/***/ },
+/* 39 */
+/***/ function(module, exports, __webpack_require__) {
- var _domHelpersQueryOffset2 = _interopRequireDefault(_domHelpersQueryOffset);
+ 'use strict';
- var _utilsEventListener = __webpack_require__(42);
+ var _extends = __webpack_require__(9)['default'];
- var _utilsEventListener2 = _interopRequireDefault(_utilsEventListener);
+ var _interopRequireDefault = __webpack_require__(1)['default'];
- var AffixMixin = {
- propTypes: {
- offset: _react2['default'].PropTypes.number,
- offsetTop: _react2['default'].PropTypes.number,
- offsetBottom: _react2['default'].PropTypes.number
- },
+ exports.__esModule = true;
- getInitialState: function getInitialState() {
- return {
- affixClass: 'affix-top'
- };
- },
+ var _react = __webpack_require__(4);
- getPinnedOffset: function getPinnedOffset(DOMNode) {
- if (this.pinnedOffset) {
- return this.pinnedOffset;
- }
+ var _react2 = _interopRequireDefault(_react);
- DOMNode.className = DOMNode.className.replace(/affix-top|affix-bottom|affix/, '');
- DOMNode.className += DOMNode.className.length ? ' affix' : 'affix';
+ var _utilsValidComponentChildren = __webpack_require__(7);
- this.pinnedOffset = _domHelpersQueryOffset2['default'](DOMNode).top - window.pageYOffset;
+ var _utilsValidComponentChildren2 = _interopRequireDefault(_utilsValidComponentChildren);
- return this.pinnedOffset;
- },
+ var _classnames = __webpack_require__(37);
- checkPosition: function checkPosition() {
- var DOMNode = undefined,
- scrollHeight = undefined,
- scrollTop = undefined,
- position = undefined,
- offsetTop = undefined,
- offsetBottom = und
<TRUNCATED>
[5/6] fauxton commit: updated refs/heads/master to e6450a0
Posted by be...@apache.org.
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/d0cb3d81/assets/js/libs/react.js
----------------------------------------------------------------------
diff --git a/assets/js/libs/react.js b/assets/js/libs/react.js
index c1578b7..eb71587 100644
--- a/assets/js/libs/react.js
+++ b/assets/js/libs/react.js
@@ -1,8862 +1,7992 @@
/**
- * React (with addons) v0.13.3
+ * React (with addons) v0.14.6
*/
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.React = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
-/**
- * Copyright 2013-2015, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- * @providesModule ReactWithAddons
- */
+ /**
+ * Copyright 2013-2015, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ *
+ * @providesModule ReactWithAddons
+ */
-/**
- * This module exists purely in the open source project, and is meant as a way
- * to create a separate standalone build of React. This build has "addons", or
- * functionality we've built and think might be useful but doesn't have a good
- * place to live inside React core.
- */
+ /**
+ * This module exists purely in the open source project, and is meant as a way
+ * to create a separate standalone build of React. This build has "addons", or
+ * functionality we've built and think might be useful but doesn't have a good
+ * place to live inside React core.
+ */
-'use strict';
-
-var LinkedStateMixin = _dereq_(25);
-var React = _dereq_(31);
-var ReactComponentWithPureRenderMixin =
- _dereq_(42);
-var ReactCSSTransitionGroup = _dereq_(34);
-var ReactFragment = _dereq_(69);
-var ReactTransitionGroup = _dereq_(98);
-var ReactUpdates = _dereq_(100);
-
-var cx = _dereq_(127);
-var cloneWithProps = _dereq_(122);
-var update = _dereq_(170);
-
-React.addons = {
- CSSTransitionGroup: ReactCSSTransitionGroup,
- LinkedStateMixin: LinkedStateMixin,
- PureRenderMixin: ReactComponentWithPureRenderMixin,
- TransitionGroup: ReactTransitionGroup,
-
- batchedUpdates: ReactUpdates.batchedUpdates,
- classSet: cx,
- cloneWithProps: cloneWithProps,
- createFragment: ReactFragment.create,
- update: update
-};
-
-if ("production" !== "development") {
- React.addons.Perf = _dereq_(61);
- React.addons.TestUtils = _dereq_(95);
-}
-
-module.exports = React;
-
-},{"100":100,"122":122,"127":127,"170":170,"25":25,"31":31,"34":34,"42":42,"61":61,"69":69,"95":95,"98":98}],2:[function(_dereq_,module,exports){
-/**
- * Copyright 2013-2015, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- * @providesModule AutoFocusMixin
- * @typechecks static-only
- */
+ 'use strict';
+
+ var LinkedStateMixin = _dereq_(22);
+ var React = _dereq_(26);
+ var ReactComponentWithPureRenderMixin = _dereq_(37);
+ var ReactCSSTransitionGroup = _dereq_(29);
+ var ReactFragment = _dereq_(64);
+ var ReactTransitionGroup = _dereq_(94);
+ var ReactUpdates = _dereq_(96);
+
+ var cloneWithProps = _dereq_(118);
+ var shallowCompare = _dereq_(140);
+ var update = _dereq_(143);
+ var warning = _dereq_(173);
+
+ var warnedAboutBatchedUpdates = false;
+
+ React.addons = {
+ CSSTransitionGroup: ReactCSSTransitionGroup,
+ LinkedStateMixin: LinkedStateMixin,
+ PureRenderMixin: ReactComponentWithPureRenderMixin,
+ TransitionGroup: ReactTransitionGroup,
+
+ batchedUpdates: function () {
+ if ("development" !== 'production') {
+ "development" !== 'production' ? warning(warnedAboutBatchedUpdates, 'React.addons.batchedUpdates is deprecated. Use ' + 'ReactDOM.unstable_batchedUpdates instead.') : undefined;
+ warnedAboutBatchedUpdates = true;
+ }
+ return ReactUpdates.batchedUpdates.apply(this, arguments);
+ },
+ cloneWithProps: cloneWithProps,
+ createFragment: ReactFragment.create,
+ shallowCompare: shallowCompare,
+ update: update
+ };
+
+ if ("development" !== 'production') {
+ React.addons.Perf = _dereq_(55);
+ React.addons.TestUtils = _dereq_(91);
+ }
+
+ module.exports = React;
+},{"118":118,"140":140,"143":143,"173":173,"22":22,"26":26,"29":29,"37":37,"55":55,"64":64,"91":91,"94":94,"96":96}],2:[function(_dereq_,module,exports){
+ /**
+ * Copyright 2013-2015, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ *
+ * @providesModule AutoFocusUtils
+ * @typechecks static-only
+ */
-'use strict';
+ 'use strict';
-var focusNode = _dereq_(134);
+ var ReactMount = _dereq_(72);
-var AutoFocusMixin = {
- componentDidMount: function() {
- if (this.props.autoFocus) {
- focusNode(this.getDOMNode());
+ var findDOMNode = _dereq_(122);
+ var focusNode = _dereq_(155);
+
+ var Mixin = {
+ componentDidMount: function () {
+ if (this.props.autoFocus) {
+ focusNode(findDOMNode(this));
+ }
}
- }
-};
+ };
-module.exports = AutoFocusMixin;
+ var AutoFocusUtils = {
+ Mixin: Mixin,
-},{"134":134}],3:[function(_dereq_,module,exports){
-/**
- * Copyright 2013-2015 Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- * @providesModule BeforeInputEventPlugin
- * @typechecks static-only
- */
+ focusDOMComponent: function () {
+ focusNode(ReactMount.getNode(this._rootNodeID));
+ }
+ };
+
+ module.exports = AutoFocusUtils;
+},{"122":122,"155":155,"72":72}],3:[function(_dereq_,module,exports){
+ /**
+ * Copyright 2013-2015 Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ *
+ * @providesModule BeforeInputEventPlugin
+ * @typechecks static-only
+ */
-'use strict';
+ 'use strict';
-var EventConstants = _dereq_(16);
-var EventPropagators = _dereq_(21);
-var ExecutionEnvironment = _dereq_(22);
-var FallbackCompositionState = _dereq_(23);
-var SyntheticCompositionEvent = _dereq_(106);
-var SyntheticInputEvent = _dereq_(110);
+ var EventConstants = _dereq_(15);
+ var EventPropagators = _dereq_(19);
+ var ExecutionEnvironment = _dereq_(147);
+ var FallbackCompositionState = _dereq_(20);
+ var SyntheticCompositionEvent = _dereq_(103);
+ var SyntheticInputEvent = _dereq_(107);
-var keyOf = _dereq_(157);
+ var keyOf = _dereq_(166);
-var END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space
-var START_KEYCODE = 229;
+ var END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space
+ var START_KEYCODE = 229;
-var canUseCompositionEvent = (
- ExecutionEnvironment.canUseDOM &&
- 'CompositionEvent' in window
-);
+ var canUseCompositionEvent = ExecutionEnvironment.canUseDOM && 'CompositionEvent' in window;
-var documentMode = null;
-if (ExecutionEnvironment.canUseDOM && 'documentMode' in document) {
- documentMode = document.documentMode;
-}
+ var documentMode = null;
+ if (ExecutionEnvironment.canUseDOM && 'documentMode' in document) {
+ documentMode = document.documentMode;
+ }
// Webkit offers a very useful `textInput` event that can be used to
// directly represent `beforeInput`. The IE `textinput` event is not as
// useful, so we don't use it.
-var canUseTextInputEvent = (
- ExecutionEnvironment.canUseDOM &&
- 'TextEvent' in window &&
- !documentMode &&
- !isPresto()
-);
+ var canUseTextInputEvent = ExecutionEnvironment.canUseDOM && 'TextEvent' in window && !documentMode && !isPresto();
// In IE9+, we have access to composition events, but the data supplied
// by the native compositionend event may be incorrect. Japanese ideographic
// spaces, for instance (\u3000) are not recorded correctly.
-var useFallbackCompositionData = (
- ExecutionEnvironment.canUseDOM &&
- (
- (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11)
- )
-);
+ var useFallbackCompositionData = ExecutionEnvironment.canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);
-/**
- * Opera <= 12 includes TextEvent in window, but does not fire
- * text input events. Rely on keypress instead.
- */
-function isPresto() {
- var opera = window.opera;
- return (
- typeof opera === 'object' &&
- typeof opera.version === 'function' &&
- parseInt(opera.version(), 10) <= 12
- );
-}
+ /**
+ * Opera <= 12 includes TextEvent in window, but does not fire
+ * text input events. Rely on keypress instead.
+ */
+ function isPresto() {
+ var opera = window.opera;
+ return typeof opera === 'object' && typeof opera.version === 'function' && parseInt(opera.version(), 10) <= 12;
+ }
-var SPACEBAR_CODE = 32;
-var SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);
+ var SPACEBAR_CODE = 32;
+ var SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);
-var topLevelTypes = EventConstants.topLevelTypes;
+ var topLevelTypes = EventConstants.topLevelTypes;
// Events and their corresponding property names.
-var eventTypes = {
- beforeInput: {
- phasedRegistrationNames: {
- bubbled: keyOf({onBeforeInput: null}),
- captured: keyOf({onBeforeInputCapture: null})
- },
- dependencies: [
- topLevelTypes.topCompositionEnd,
- topLevelTypes.topKeyPress,
- topLevelTypes.topTextInput,
- topLevelTypes.topPaste
- ]
- },
- compositionEnd: {
- phasedRegistrationNames: {
- bubbled: keyOf({onCompositionEnd: null}),
- captured: keyOf({onCompositionEndCapture: null})
- },
- dependencies: [
- topLevelTypes.topBlur,
- topLevelTypes.topCompositionEnd,
- topLevelTypes.topKeyDown,
- topLevelTypes.topKeyPress,
- topLevelTypes.topKeyUp,
- topLevelTypes.topMouseDown
- ]
- },
- compositionStart: {
- phasedRegistrationNames: {
- bubbled: keyOf({onCompositionStart: null}),
- captured: keyOf({onCompositionStartCapture: null})
- },
- dependencies: [
- topLevelTypes.topBlur,
- topLevelTypes.topCompositionStart,
- topLevelTypes.topKeyDown,
- topLevelTypes.topKeyPress,
- topLevelTypes.topKeyUp,
- topLevelTypes.topMouseDown
- ]
- },
- compositionUpdate: {
- phasedRegistrationNames: {
- bubbled: keyOf({onCompositionUpdate: null}),
- captured: keyOf({onCompositionUpdateCapture: null})
- },
- dependencies: [
- topLevelTypes.topBlur,
- topLevelTypes.topCompositionUpdate,
- topLevelTypes.topKeyDown,
- topLevelTypes.topKeyPress,
- topLevelTypes.topKeyUp,
- topLevelTypes.topMouseDown
- ]
- }
-};
+ var eventTypes = {
+ beforeInput: {
+ phasedRegistrationNames: {
+ bubbled: keyOf({ onBeforeInput: null }),
+ captured: keyOf({ onBeforeInputCapture: null })
+ },
+ dependencies: [topLevelTypes.topCompositionEnd, topLevelTypes.topKeyPress, topLevelTypes.topTextInput, topLevelTypes.topPaste]
+ },
+ compositionEnd: {
+ phasedRegistrationNames: {
+ bubbled: keyOf({ onCompositionEnd: null }),
+ captured: keyOf({ onCompositionEndCapture: null })
+ },
+ dependencies: [topLevelTypes.topBlur, topLevelTypes.topCompositionEnd, topLevelTypes.topKeyDown, topLevelTypes.topKeyPress, topLevelTypes.topKeyUp, topLevelTypes.topMouseDown]
+ },
+ compositionStart: {
+ phasedRegistrationNames: {
+ bubbled: keyOf({ onCompositionStart: null }),
+ captured: keyOf({ onCompositionStartCapture: null })
+ },
+ dependencies: [topLevelTypes.topBlur, topLevelTypes.topCompositionStart, topLevelTypes.topKeyDown, topLevelTypes.topKeyPress, topLevelTypes.topKeyUp, topLevelTypes.topMouseDown]
+ },
+ compositionUpdate: {
+ phasedRegistrationNames: {
+ bubbled: keyOf({ onCompositionUpdate: null }),
+ captured: keyOf({ onCompositionUpdateCapture: null })
+ },
+ dependencies: [topLevelTypes.topBlur, topLevelTypes.topCompositionUpdate, topLevelTypes.topKeyDown, topLevelTypes.topKeyPress, topLevelTypes.topKeyUp, topLevelTypes.topMouseDown]
+ }
+ };
// Track whether we've ever handled a keypress on the space key.
-var hasSpaceKeypress = false;
+ var hasSpaceKeypress = false;
-/**
- * Return whether a native keypress event is assumed to be a command.
- * This is required because Firefox fires `keypress` events for key commands
- * (cut, copy, select-all, etc.) even though no character is inserted.
- */
-function isKeypressCommand(nativeEvent) {
- return (
- (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) &&
- // ctrlKey && altKey is equivalent to AltGr, and is not a command.
- !(nativeEvent.ctrlKey && nativeEvent.altKey)
- );
-}
-
-
-/**
- * Translate native top level events into event types.
- *
- * @param {string} topLevelType
- * @return {object}
- */
-function getCompositionEventType(topLevelType) {
- switch (topLevelType) {
- case topLevelTypes.topCompositionStart:
- return eventTypes.compositionStart;
- case topLevelTypes.topCompositionEnd:
- return eventTypes.compositionEnd;
- case topLevelTypes.topCompositionUpdate:
- return eventTypes.compositionUpdate;
+ /**
+ * Return whether a native keypress event is assumed to be a command.
+ * This is required because Firefox fires `keypress` events for key commands
+ * (cut, copy, select-all, etc.) even though no character is inserted.
+ */
+ function isKeypressCommand(nativeEvent) {
+ return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) &&
+ // ctrlKey && altKey is equivalent to AltGr, and is not a command.
+ !(nativeEvent.ctrlKey && nativeEvent.altKey);
}
-}
-
-/**
- * Does our fallback best-guess model think this event signifies that
- * composition has begun?
- *
- * @param {string} topLevelType
- * @param {object} nativeEvent
- * @return {boolean}
- */
-function isFallbackCompositionStart(topLevelType, nativeEvent) {
- return (
- topLevelType === topLevelTypes.topKeyDown &&
- nativeEvent.keyCode === START_KEYCODE
- );
-}
-/**
- * Does our fallback mode think that this event is the end of composition?
- *
- * @param {string} topLevelType
- * @param {object} nativeEvent
- * @return {boolean}
- */
-function isFallbackCompositionEnd(topLevelType, nativeEvent) {
- switch (topLevelType) {
- case topLevelTypes.topKeyUp:
- // Command keys insert or clear IME input.
- return (END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1);
- case topLevelTypes.topKeyDown:
- // Expect IME keyCode on each keydown. If we get any other
- // code we must have exited earlier.
- return (nativeEvent.keyCode !== START_KEYCODE);
- case topLevelTypes.topKeyPress:
- case topLevelTypes.topMouseDown:
- case topLevelTypes.topBlur:
- // Events are not possible without cancelling IME.
- return true;
- default:
- return false;
+ /**
+ * Translate native top level events into event types.
+ *
+ * @param {string} topLevelType
+ * @return {object}
+ */
+ function getCompositionEventType(topLevelType) {
+ switch (topLevelType) {
+ case topLevelTypes.topCompositionStart:
+ return eventTypes.compositionStart;
+ case topLevelTypes.topCompositionEnd:
+ return eventTypes.compositionEnd;
+ case topLevelTypes.topCompositionUpdate:
+ return eventTypes.compositionUpdate;
+ }
}
-}
-/**
- * Google Input Tools provides composition data via a CustomEvent,
- * with the `data` property populated in the `detail` object. If this
- * is available on the event object, use it. If not, this is a plain
- * composition event and we have nothing special to extract.
- *
- * @param {object} nativeEvent
- * @return {?string}
- */
-function getDataFromCustomEvent(nativeEvent) {
- var detail = nativeEvent.detail;
- if (typeof detail === 'object' && 'data' in detail) {
- return detail.data;
+ /**
+ * Does our fallback best-guess model think this event signifies that
+ * composition has begun?
+ *
+ * @param {string} topLevelType
+ * @param {object} nativeEvent
+ * @return {boolean}
+ */
+ function isFallbackCompositionStart(topLevelType, nativeEvent) {
+ return topLevelType === topLevelTypes.topKeyDown && nativeEvent.keyCode === START_KEYCODE;
}
- return null;
-}
-// Track the current IME composition fallback object, if any.
-var currentComposition = null;
+ /**
+ * Does our fallback mode think that this event is the end of composition?
+ *
+ * @param {string} topLevelType
+ * @param {object} nativeEvent
+ * @return {boolean}
+ */
+ function isFallbackCompositionEnd(topLevelType, nativeEvent) {
+ switch (topLevelType) {
+ case topLevelTypes.topKeyUp:
+ // Command keys insert or clear IME input.
+ return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;
+ case topLevelTypes.topKeyDown:
+ // Expect IME keyCode on each keydown. If we get any other
+ // code we must have exited earlier.
+ return nativeEvent.keyCode !== START_KEYCODE;
+ case topLevelTypes.topKeyPress:
+ case topLevelTypes.topMouseDown:
+ case topLevelTypes.topBlur:
+ // Events are not possible without cancelling IME.
+ return true;
+ default:
+ return false;
+ }
+ }
-/**
- * @param {string} topLevelType Record from `EventConstants`.
- * @param {DOMEventTarget} topLevelTarget The listening component root node.
- * @param {string} topLevelTargetID ID of `topLevelTarget`.
- * @param {object} nativeEvent Native browser event.
- * @return {?object} A SyntheticCompositionEvent.
- */
-function extractCompositionEvent(
- topLevelType,
- topLevelTarget,
- topLevelTargetID,
- nativeEvent
-) {
- var eventType;
- var fallbackData;
-
- if (canUseCompositionEvent) {
- eventType = getCompositionEventType(topLevelType);
- } else if (!currentComposition) {
- if (isFallbackCompositionStart(topLevelType, nativeEvent)) {
- eventType = eventTypes.compositionStart;
- }
- } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {
- eventType = eventTypes.compositionEnd;
- }
-
- if (!eventType) {
+ /**
+ * Google Input Tools provides composition data via a CustomEvent,
+ * with the `data` property populated in the `detail` object. If this
+ * is available on the event object, use it. If not, this is a plain
+ * composition event and we have nothing special to extract.
+ *
+ * @param {object} nativeEvent
+ * @return {?string}
+ */
+ function getDataFromCustomEvent(nativeEvent) {
+ var detail = nativeEvent.detail;
+ if (typeof detail === 'object' && 'data' in detail) {
+ return detail.data;
+ }
return null;
}
- if (useFallbackCompositionData) {
- // The current composition is stored statically and must not be
- // overwritten while composition continues.
- if (!currentComposition && eventType === eventTypes.compositionStart) {
- currentComposition = FallbackCompositionState.getPooled(topLevelTarget);
- } else if (eventType === eventTypes.compositionEnd) {
- if (currentComposition) {
- fallbackData = currentComposition.getData();
+// Track the current IME composition fallback object, if any.
+ var currentComposition = null;
+
+ /**
+ * @param {string} topLevelType Record from `EventConstants`.
+ * @param {DOMEventTarget} topLevelTarget The listening component root node.
+ * @param {string} topLevelTargetID ID of `topLevelTarget`.
+ * @param {object} nativeEvent Native browser event.
+ * @return {?object} A SyntheticCompositionEvent.
+ */
+ function extractCompositionEvent(topLevelType, topLevelTarget, topLevelTargetID, nativeEvent, nativeEventTarget) {
+ var eventType;
+ var fallbackData;
+
+ if (canUseCompositionEvent) {
+ eventType = getCompositionEventType(topLevelType);
+ } else if (!currentComposition) {
+ if (isFallbackCompositionStart(topLevelType, nativeEvent)) {
+ eventType = eventTypes.compositionStart;
}
+ } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {
+ eventType = eventTypes.compositionEnd;
}
- }
- var event = SyntheticCompositionEvent.getPooled(
- eventType,
- topLevelTargetID,
- nativeEvent
- );
+ if (!eventType) {
+ return null;
+ }
- if (fallbackData) {
- // Inject data generated from fallback path into the synthetic event.
- // This matches the property of native CompositionEventInterface.
- event.data = fallbackData;
- } else {
- var customData = getDataFromCustomEvent(nativeEvent);
- if (customData !== null) {
- event.data = customData;
+ if (useFallbackCompositionData) {
+ // The current composition is stored statically and must not be
+ // overwritten while composition continues.
+ if (!currentComposition && eventType === eventTypes.compositionStart) {
+ currentComposition = FallbackCompositionState.getPooled(topLevelTarget);
+ } else if (eventType === eventTypes.compositionEnd) {
+ if (currentComposition) {
+ fallbackData = currentComposition.getData();
+ }
+ }
}
- }
- EventPropagators.accumulateTwoPhaseDispatches(event);
- return event;
-}
+ var event = SyntheticCompositionEvent.getPooled(eventType, topLevelTargetID, nativeEvent, nativeEventTarget);
-/**
- * @param {string} topLevelType Record from `EventConstants`.
- * @param {object} nativeEvent Native browser event.
- * @return {?string} The string corresponding to this `beforeInput` event.
- */
-function getNativeBeforeInputChars(topLevelType, nativeEvent) {
- switch (topLevelType) {
- case topLevelTypes.topCompositionEnd:
- return getDataFromCustomEvent(nativeEvent);
- case topLevelTypes.topKeyPress:
- /**
- * If native `textInput` events are available, our goal is to make
- * use of them. However, there is a special case: the spacebar key.
- * In Webkit, preventing default on a spacebar `textInput` event
- * cancels character insertion, but it *also* causes the browser
- * to fall back to its default spacebar behavior of scrolling the
- * page.
- *
- * Tracking at:
- * https://code.google.com/p/chromium/issues/detail?id=355103
- *
- * To avoid this issue, use the keypress event as if no `textInput`
- * event is available.
- */
- var which = nativeEvent.which;
- if (which !== SPACEBAR_CODE) {
- return null;
+ if (fallbackData) {
+ // Inject data generated from fallback path into the synthetic event.
+ // This matches the property of native CompositionEventInterface.
+ event.data = fallbackData;
+ } else {
+ var customData = getDataFromCustomEvent(nativeEvent);
+ if (customData !== null) {
+ event.data = customData;
}
+ }
- hasSpaceKeypress = true;
- return SPACEBAR_CHAR;
+ EventPropagators.accumulateTwoPhaseDispatches(event);
+ return event;
+ }
- case topLevelTypes.topTextInput:
- // Record the characters to be added to the DOM.
- var chars = nativeEvent.data;
+ /**
+ * @param {string} topLevelType Record from `EventConstants`.
+ * @param {object} nativeEvent Native browser event.
+ * @return {?string} The string corresponding to this `beforeInput` event.
+ */
+ function getNativeBeforeInputChars(topLevelType, nativeEvent) {
+ switch (topLevelType) {
+ case topLevelTypes.topCompositionEnd:
+ return getDataFromCustomEvent(nativeEvent);
+ case topLevelTypes.topKeyPress:
+ /**
+ * If native `textInput` events are available, our goal is to make
+ * use of them. However, there is a special case: the spacebar key.
+ * In Webkit, preventing default on a spacebar `textInput` event
+ * cancels character insertion, but it *also* causes the browser
+ * to fall back to its default spacebar behavior of scrolling the
+ * page.
+ *
+ * Tracking at:
+ * https://code.google.com/p/chromium/issues/detail?id=355103
+ *
+ * To avoid this issue, use the keypress event as if no `textInput`
+ * event is available.
+ */
+ var which = nativeEvent.which;
+ if (which !== SPACEBAR_CODE) {
+ return null;
+ }
- // If it's a spacebar character, assume that we have already handled
- // it at the keypress level and bail immediately. Android Chrome
- // doesn't give us keycodes, so we need to blacklist it.
- if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {
- return null;
- }
+ hasSpaceKeypress = true;
+ return SPACEBAR_CHAR;
- return chars;
+ case topLevelTypes.topTextInput:
+ // Record the characters to be added to the DOM.
+ var chars = nativeEvent.data;
- default:
- // For other native event types, do nothing.
- return null;
- }
-}
+ // If it's a spacebar character, assume that we have already handled
+ // it at the keypress level and bail immediately. Android Chrome
+ // doesn't give us keycodes, so we need to blacklist it.
+ if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {
+ return null;
+ }
-/**
- * For browsers that do not provide the `textInput` event, extract the
- * appropriate string to use for SyntheticInputEvent.
- *
- * @param {string} topLevelType Record from `EventConstants`.
- * @param {object} nativeEvent Native browser event.
- * @return {?string} The fallback string for this `beforeInput` event.
- */
-function getFallbackBeforeInputChars(topLevelType, nativeEvent) {
- // If we are currently composing (IME) and using a fallback to do so,
- // try to extract the composed characters from the fallback object.
- if (currentComposition) {
- if (
- topLevelType === topLevelTypes.topCompositionEnd ||
- isFallbackCompositionEnd(topLevelType, nativeEvent)
- ) {
- var chars = currentComposition.getData();
- FallbackCompositionState.release(currentComposition);
- currentComposition = null;
- return chars;
+ return chars;
+
+ default:
+ // For other native event types, do nothing.
+ return null;
}
- return null;
}
- switch (topLevelType) {
- case topLevelTypes.topPaste:
- // If a paste event occurs after a keypress, throw out the input
- // chars. Paste events should not lead to BeforeInput events.
- return null;
- case topLevelTypes.topKeyPress:
- /**
- * As of v27, Firefox may fire keypress events even when no character
- * will be inserted. A few possibilities:
- *
- * - `which` is `0`. Arrow keys, Esc key, etc.
- *
- * - `which` is the pressed key code, but no char is available.
- * Ex: 'AltGr + d` in Polish. There is no modified character for
- * this key combination and no character is inserted into the
- * document, but FF fires the keypress for char code `100` anyway.
- * No `input` event will occur.
- *
- * - `which` is the pressed key code, but a command combination is
- * being used. Ex: `Cmd+C`. No character is inserted, and no
- * `input` event will occur.
- */
- if (nativeEvent.which && !isKeypressCommand(nativeEvent)) {
- return String.fromCharCode(nativeEvent.which);
+ /**
+ * For browsers that do not provide the `textInput` event, extract the
+ * appropriate string to use for SyntheticInputEvent.
+ *
+ * @param {string} topLevelType Record from `EventConstants`.
+ * @param {object} nativeEvent Native browser event.
+ * @return {?string} The fallback string for this `beforeInput` event.
+ */
+ function getFallbackBeforeInputChars(topLevelType, nativeEvent) {
+ // If we are currently composing (IME) and using a fallback to do so,
+ // try to extract the composed characters from the fallback object.
+ if (currentComposition) {
+ if (topLevelType === topLevelTypes.topCompositionEnd || isFallbackCompositionEnd(topLevelType, nativeEvent)) {
+ var chars = currentComposition.getData();
+ FallbackCompositionState.release(currentComposition);
+ currentComposition = null;
+ return chars;
}
return null;
- case topLevelTypes.topCompositionEnd:
- return useFallbackCompositionData ? null : nativeEvent.data;
- default:
- return null;
- }
-}
-
-/**
- * Extract a SyntheticInputEvent for `beforeInput`, based on either native
- * `textInput` or fallback behavior.
- *
- * @param {string} topLevelType Record from `EventConstants`.
- * @param {DOMEventTarget} topLevelTarget The listening component root node.
- * @param {string} topLevelTargetID ID of `topLevelTarget`.
- * @param {object} nativeEvent Native browser event.
- * @return {?object} A SyntheticInputEvent.
- */
-function extractBeforeInputEvent(
- topLevelType,
- topLevelTarget,
- topLevelTargetID,
- nativeEvent
-) {
- var chars;
-
- if (canUseTextInputEvent) {
- chars = getNativeBeforeInputChars(topLevelType, nativeEvent);
- } else {
- chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);
- }
+ }
- // If no characters are being inserted, no BeforeInput event should
- // be fired.
- if (!chars) {
- return null;
+ switch (topLevelType) {
+ case topLevelTypes.topPaste:
+ // If a paste event occurs after a keypress, throw out the input
+ // chars. Paste events should not lead to BeforeInput events.
+ return null;
+ case topLevelTypes.topKeyPress:
+ /**
+ * As of v27, Firefox may fire keypress events even when no character
+ * will be inserted. A few possibilities:
+ *
+ * - `which` is `0`. Arrow keys, Esc key, etc.
+ *
+ * - `which` is the pressed key code, but no char is available.
+ * Ex: 'AltGr + d` in Polish. There is no modified character for
+ * this key combination and no character is inserted into the
+ * document, but FF fires the keypress for char code `100` anyway.
+ * No `input` event will occur.
+ *
+ * - `which` is the pressed key code, but a command combination is
+ * being used. Ex: `Cmd+C`. No character is inserted, and no
+ * `input` event will occur.
+ */
+ if (nativeEvent.which && !isKeypressCommand(nativeEvent)) {
+ return String.fromCharCode(nativeEvent.which);
+ }
+ return null;
+ case topLevelTypes.topCompositionEnd:
+ return useFallbackCompositionData ? null : nativeEvent.data;
+ default:
+ return null;
+ }
}
- var event = SyntheticInputEvent.getPooled(
- eventTypes.beforeInput,
- topLevelTargetID,
- nativeEvent
- );
-
- event.data = chars;
- EventPropagators.accumulateTwoPhaseDispatches(event);
- return event;
-}
-
-/**
- * Create an `onBeforeInput` event to match
- * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.
- *
- * This event plugin is based on the native `textInput` event
- * available in Chrome, Safari, Opera, and IE. This event fires after
- * `onKeyPress` and `onCompositionEnd`, but before `onInput`.
- *
- * `beforeInput` is spec'd but not implemented in any browsers, and
- * the `input` event does not provide any useful information about what has
- * actually been added, contrary to the spec. Thus, `textInput` is the best
- * available event to identify the characters that have actually been inserted
- * into the target node.
- *
- * This plugin is also responsible for emitting `composition` events, thus
- * allowing us to share composition fallback code for both `beforeInput` and
- * `composition` event types.
- */
-var BeforeInputEventPlugin = {
-
- eventTypes: eventTypes,
-
/**
+ * Extract a SyntheticInputEvent for `beforeInput`, based on either native
+ * `textInput` or fallback behavior.
+ *
* @param {string} topLevelType Record from `EventConstants`.
* @param {DOMEventTarget} topLevelTarget The listening component root node.
* @param {string} topLevelTargetID ID of `topLevelTarget`.
* @param {object} nativeEvent Native browser event.
- * @return {*} An accumulation of synthetic events.
- * @see {EventPluginHub.extractEvents}
- */
- extractEvents: function(
- topLevelType,
- topLevelTarget,
- topLevelTargetID,
- nativeEvent
- ) {
- return [
- extractCompositionEvent(
- topLevelType,
- topLevelTarget,
- topLevelTargetID,
- nativeEvent
- ),
- extractBeforeInputEvent(
- topLevelType,
- topLevelTarget,
- topLevelTargetID,
- nativeEvent
- )
- ];
- }
-};
-
-module.exports = BeforeInputEventPlugin;
-
-},{"106":106,"110":110,"157":157,"16":16,"21":21,"22":22,"23":23}],4:[function(_dereq_,module,exports){
-/**
- * Copyright 2013-2015, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- * @providesModule CSSCore
- * @typechecks
- */
+ * @return {?object} A SyntheticInputEvent.
+ */
+ function extractBeforeInputEvent(topLevelType, topLevelTarget, topLevelTargetID, nativeEvent, nativeEventTarget) {
+ var chars;
-var invariant = _dereq_(150);
+ if (canUseTextInputEvent) {
+ chars = getNativeBeforeInputChars(topLevelType, nativeEvent);
+ } else {
+ chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);
+ }
-/**
- * The CSSCore module specifies the API (and implements most of the methods)
- * that should be used when dealing with the display of elements (via their
- * CSS classes and visibility on screen. It is an API focused on mutating the
- * display and not reading it as no logical state should be encoded in the
- * display of elements.
- */
+ // If no characters are being inserted, no BeforeInput event should
+ // be fired.
+ if (!chars) {
+ return null;
+ }
+
+ var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, topLevelTargetID, nativeEvent, nativeEventTarget);
-var CSSCore = {
+ event.data = chars;
+ EventPropagators.accumulateTwoPhaseDispatches(event);
+ return event;
+ }
/**
- * Adds the class passed in to the element if it doesn't already have it.
+ * Create an `onBeforeInput` event to match
+ * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.
+ *
+ * This event plugin is based on the native `textInput` event
+ * available in Chrome, Safari, Opera, and IE. This event fires after
+ * `onKeyPress` and `onCompositionEnd`, but before `onInput`.
*
- * @param {DOMElement} element the element to set the class on
- * @param {string} className the CSS className
- * @return {DOMElement} the element passed in
+ * `beforeInput` is spec'd but not implemented in any browsers, and
+ * the `input` event does not provide any useful information about what has
+ * actually been added, contrary to the spec. Thus, `textInput` is the best
+ * available event to identify the characters that have actually been inserted
+ * into the target node.
+ *
+ * This plugin is also responsible for emitting `composition` events, thus
+ * allowing us to share composition fallback code for both `beforeInput` and
+ * `composition` event types.
*/
- addClass: function(element, className) {
- ("production" !== "development" ? invariant(
- !/\s/.test(className),
- 'CSSCore.addClass takes only a single class name. "%s" contains ' +
- 'multiple classes.', className
- ) : invariant(!/\s/.test(className)));
+ var BeforeInputEventPlugin = {
- if (className) {
- if (element.classList) {
- element.classList.add(className);
- } else if (!CSSCore.hasClass(element, className)) {
- element.className = element.className + ' ' + className;
- }
+ eventTypes: eventTypes,
+
+ /**
+ * @param {string} topLevelType Record from `EventConstants`.
+ * @param {DOMEventTarget} topLevelTarget The listening component root node.
+ * @param {string} topLevelTargetID ID of `topLevelTarget`.
+ * @param {object} nativeEvent Native browser event.
+ * @return {*} An accumulation of synthetic events.
+ * @see {EventPluginHub.extractEvents}
+ */
+ extractEvents: function (topLevelType, topLevelTarget, topLevelTargetID, nativeEvent, nativeEventTarget) {
+ return [extractCompositionEvent(topLevelType, topLevelTarget, topLevelTargetID, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, topLevelTarget, topLevelTargetID, nativeEvent, nativeEventTarget)];
}
- return element;
- },
+ };
+ module.exports = BeforeInputEventPlugin;
+},{"103":103,"107":107,"147":147,"15":15,"166":166,"19":19,"20":20}],4:[function(_dereq_,module,exports){
/**
- * Removes the class passed in from the element
+ * Copyright 2013-2015, Facebook, Inc.
+ * All rights reserved.
*
- * @param {DOMElement} element the element to set the class on
- * @param {string} className the CSS className
- * @return {DOMElement} the element passed in
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ *
+ * @providesModule CSSProperty
*/
- removeClass: function(element, className) {
- ("production" !== "development" ? invariant(
- !/\s/.test(className),
- 'CSSCore.removeClass takes only a single class name. "%s" contains ' +
- 'multiple classes.', className
- ) : invariant(!/\s/.test(className)));
- if (className) {
- if (element.classList) {
- element.classList.remove(className);
- } else if (CSSCore.hasClass(element, className)) {
- element.className = element.className
- .replace(new RegExp('(^|\\s)' + className + '(?:\\s|$)', 'g'), '$1')
- .replace(/\s+/g, ' ') // multiple spaces to one
- .replace(/^\s*|\s*$/g, ''); // trim the ends
- }
- }
- return element;
- },
+ 'use strict';
/**
- * Helper to add or remove a class from an element based on a condition.
- *
- * @param {DOMElement} element the element to set the class on
- * @param {string} className the CSS className
- * @param {*} bool condition to whether to add or remove the class
- * @return {DOMElement} the element passed in
+ * CSS properties which accept numbers but are not in units of "px".
*/
- conditionClass: function(element, className, bool) {
- return (bool ? CSSCore.addClass : CSSCore.removeClass)(element, className);
- },
+ var isUnitlessNumber = {
+ animationIterationCount: true,
+ boxFlex: true,
+ boxFlexGroup: true,
+ boxOrdinalGroup: true,
+ columnCount: true,
+ flex: true,
+ flexGrow: true,
+ flexPositive: true,
+ flexShrink: true,
+ flexNegative: true,
+ flexOrder: true,
+ fontWeight: true,
+ lineClamp: true,
+ lineHeight: true,
+ opacity: true,
+ order: true,
+ orphans: true,
+ tabSize: true,
+ widows: true,
+ zIndex: true,
+ zoom: true,
+
+ // SVG-related properties
+ fillOpacity: true,
+ stopOpacity: true,
+ strokeDashoffset: true,
+ strokeOpacity: true,
+ strokeWidth: true
+ };
/**
- * Tests whether the element has the class specified.
- *
- * @param {DOMNode|DOMWindow} element the element to set the class on
- * @param {string} className the CSS className
- * @return {boolean} true if the element has the class, false if not
+ * @param {string} prefix vendor-specific prefix, eg: Webkit
+ * @param {string} key style name, eg: transitionDuration
+ * @return {string} style name prefixed with `prefix`, properly camelCased, eg:
+ * WebkitTransitionDuration
*/
- hasClass: function(element, className) {
- ("production" !== "development" ? invariant(
- !/\s/.test(className),
- 'CSS.hasClass takes only a single class name.'
- ) : invariant(!/\s/.test(className)));
- if (element.classList) {
- return !!className && element.classList.contains(className);
- }
- return (' ' + element.className + ' ').indexOf(' ' + className + ' ') > -1;
+ function prefixKey(prefix, key) {
+ return prefix + key.charAt(0).toUpperCase() + key.substring(1);
}
-};
-
-module.exports = CSSCore;
-
-},{"150":150}],5:[function(_dereq_,module,exports){
-/**
- * Copyright 2013-2015, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- * @providesModule CSSProperty
- */
-
-'use strict';
-
-/**
- * CSS properties which accept numbers but are not in units of "px".
- */
-var isUnitlessNumber = {
- boxFlex: true,
- boxFlexGroup: true,
- columnCount: true,
- flex: true,
- flexGrow: true,
- flexPositive: true,
- flexShrink: true,
- flexNegative: true,
- fontWeight: true,
- lineClamp: true,
- lineHeight: true,
- opacity: true,
- order: true,
- orphans: true,
- widows: true,
- zIndex: true,
- zoom: true,
-
- // SVG-related properties
- fillOpacity: true,
- strokeDashoffset: true,
- strokeOpacity: true,
- strokeWidth: true
-};
-
-/**
- * @param {string} prefix vendor-specific prefix, eg: Webkit
- * @param {string} key style name, eg: transitionDuration
- * @return {string} style name prefixed with `prefix`, properly camelCased, eg:
- * WebkitTransitionDuration
- */
-function prefixKey(prefix, key) {
- return prefix + key.charAt(0).toUpperCase() + key.substring(1);
-}
-
-/**
- * Support style names that may come passed in prefixed by adding permutations
- * of vendor prefixes.
- */
-var prefixes = ['Webkit', 'ms', 'Moz', 'O'];
+ /**
+ * Support style names that may come passed in prefixed by adding permutations
+ * of vendor prefixes.
+ */
+ var prefixes = ['Webkit', 'ms', 'Moz', 'O'];
// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an
// infinite loop, because it iterates over the newly added props too.
-Object.keys(isUnitlessNumber).forEach(function(prop) {
- prefixes.forEach(function(prefix) {
- isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];
+ Object.keys(isUnitlessNumber).forEach(function (prop) {
+ prefixes.forEach(function (prefix) {
+ isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];
+ });
});
-});
-
-/**
- * Most style properties can be unset by doing .style[prop] = '' but IE8
- * doesn't like doing that with shorthand properties so for the properties that
- * IE8 breaks on, which are listed here, we instead unset each of the
- * individual properties. See http://bugs.jquery.com/ticket/12385.
- * The 4-value 'clock' properties like margin, padding, border-width seem to
- * behave without any problems. Curiously, list-style works too without any
- * special prodding.
- */
-var shorthandPropertyExpansions = {
- background: {
- backgroundImage: true,
- backgroundPosition: true,
- backgroundRepeat: true,
- backgroundColor: true
- },
- border: {
- borderWidth: true,
- borderStyle: true,
- borderColor: true
- },
- borderBottom: {
- borderBottomWidth: true,
- borderBottomStyle: true,
- borderBottomColor: true
- },
- borderLeft: {
- borderLeftWidth: true,
- borderLeftStyle: true,
- borderLeftColor: true
- },
- borderRight: {
- borderRightWidth: true,
- borderRightStyle: true,
- borderRightColor: true
- },
- borderTop: {
- borderTopWidth: true,
- borderTopStyle: true,
- borderTopColor: true
- },
- font: {
- fontStyle: true,
- fontVariant: true,
- fontWeight: true,
- fontSize: true,
- lineHeight: true,
- fontFamily: true
- }
-};
-
-var CSSProperty = {
- isUnitlessNumber: isUnitlessNumber,
- shorthandPropertyExpansions: shorthandPropertyExpansions
-};
-module.exports = CSSProperty;
-
-},{}],6:[function(_dereq_,module,exports){
-/**
- * Copyright 2013-2015, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- * @providesModule CSSPropertyOperations
- * @typechecks static-only
- */
+ /**
+ * Most style properties can be unset by doing .style[prop] = '' but IE8
+ * doesn't like doing that with shorthand properties so for the properties that
+ * IE8 breaks on, which are listed here, we instead unset each of the
+ * individual properties. See http://bugs.jquery.com/ticket/12385.
+ * The 4-value 'clock' properties like margin, padding, border-width seem to
+ * behave without any problems. Curiously, list-style works too without any
+ * special prodding.
+ */
+ var shorthandPropertyExpansions = {
+ background: {
+ backgroundAttachment: true,
+ backgroundColor: true,
+ backgroundImage: true,
+ backgroundPositionX: true,
+ backgroundPositionY: true,
+ backgroundRepeat: true
+ },
+ backgroundPosition: {
+ backgroundPositionX: true,
+ backgroundPositionY: true
+ },
+ border: {
+ borderWidth: true,
+ borderStyle: true,
+ borderColor: true
+ },
+ borderBottom: {
+ borderBottomWidth: true,
+ borderBottomStyle: true,
+ borderBottomColor: true
+ },
+ borderLeft: {
+ borderLeftWidth: true,
+ borderLeftStyle: true,
+ borderLeftColor: true
+ },
+ borderRight: {
+ borderRightWidth: true,
+ borderRightStyle: true,
+ borderRightColor: true
+ },
+ borderTop: {
+ borderTopWidth: true,
+ borderTopStyle: true,
+ borderTopColor: true
+ },
+ font: {
+ fontStyle: true,
+ fontVariant: true,
+ fontWeight: true,
+ fontSize: true,
+ lineHeight: true,
+ fontFamily: true
+ },
+ outline: {
+ outlineWidth: true,
+ outlineStyle: true,
+ outlineColor: true
+ }
+ };
+
+ var CSSProperty = {
+ isUnitlessNumber: isUnitlessNumber,
+ shorthandPropertyExpansions: shorthandPropertyExpansions
+ };
+
+ module.exports = CSSProperty;
+},{}],5:[function(_dereq_,module,exports){
+ /**
+ * Copyright 2013-2015, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ *
+ * @providesModule CSSPropertyOperations
+ * @typechecks static-only
+ */
-'use strict';
+ 'use strict';
-var CSSProperty = _dereq_(5);
-var ExecutionEnvironment = _dereq_(22);
+ var CSSProperty = _dereq_(4);
+ var ExecutionEnvironment = _dereq_(147);
+ var ReactPerf = _dereq_(78);
-var camelizeStyleName = _dereq_(121);
-var dangerousStyleValue = _dereq_(128);
-var hyphenateStyleName = _dereq_(148);
-var memoizeStringOnly = _dereq_(159);
-var warning = _dereq_(171);
+ var camelizeStyleName = _dereq_(149);
+ var dangerousStyleValue = _dereq_(119);
+ var hyphenateStyleName = _dereq_(160);
+ var memoizeStringOnly = _dereq_(168);
+ var warning = _dereq_(173);
-var processStyleName = memoizeStringOnly(function(styleName) {
- return hyphenateStyleName(styleName);
-});
+ var processStyleName = memoizeStringOnly(function (styleName) {
+ return hyphenateStyleName(styleName);
+ });
-var styleFloatAccessor = 'cssFloat';
-if (ExecutionEnvironment.canUseDOM) {
- // IE8 only supports accessing cssFloat (standard) as styleFloat
- if (document.documentElement.style.cssFloat === undefined) {
- styleFloatAccessor = 'styleFloat';
+ var hasShorthandPropertyBug = false;
+ var styleFloatAccessor = 'cssFloat';
+ if (ExecutionEnvironment.canUseDOM) {
+ var tempStyle = document.createElement('div').style;
+ try {
+ // IE8 throws "Invalid argument." if resetting shorthand style properties.
+ tempStyle.font = '';
+ } catch (e) {
+ hasShorthandPropertyBug = true;
+ }
+ // IE8 only supports accessing cssFloat (standard) as styleFloat
+ if (document.documentElement.style.cssFloat === undefined) {
+ styleFloatAccessor = 'styleFloat';
+ }
}
-}
-if ("production" !== "development") {
- // 'msTransform' is correct, but the other prefixes should be capitalized
- var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;
+ if ("development" !== 'production') {
+ // 'msTransform' is correct, but the other prefixes should be capitalized
+ var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;
- // style values shouldn't contain a semicolon
- var badStyleValueWithSemicolonPattern = /;\s*$/;
+ // style values shouldn't contain a semicolon
+ var badStyleValueWithSemicolonPattern = /;\s*$/;
- var warnedStyleNames = {};
- var warnedStyleValues = {};
+ var warnedStyleNames = {};
+ var warnedStyleValues = {};
- var warnHyphenatedStyleName = function(name) {
- if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {
- return;
- }
+ var warnHyphenatedStyleName = function (name) {
+ if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {
+ return;
+ }
- warnedStyleNames[name] = true;
- ("production" !== "development" ? warning(
- false,
- 'Unsupported style property %s. Did you mean %s?',
- name,
- camelizeStyleName(name)
- ) : null);
- };
+ warnedStyleNames[name] = true;
+ "development" !== 'production' ? warning(false, 'Unsupported style property %s. Did you mean %s?', name, camelizeStyleName(name)) : undefined;
+ };
- var warnBadVendoredStyleName = function(name) {
- if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {
- return;
- }
+ var warnBadVendoredStyleName = function (name) {
+ if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {
+ return;
+ }
- warnedStyleNames[name] = true;
- ("production" !== "development" ? warning(
- false,
- 'Unsupported vendor-prefixed style property %s. Did you mean %s?',
- name,
- name.charAt(0).toUpperCase() + name.slice(1)
- ) : null);
- };
+ warnedStyleNames[name] = true;
+ "development" !== 'production' ? warning(false, 'Unsupported vendor-prefixed style property %s. Did you mean %s?', name, name.charAt(0).toUpperCase() + name.slice(1)) : undefined;
+ };
- var warnStyleValueWithSemicolon = function(name, value) {
- if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {
- return;
- }
+ var warnStyleValueWithSemicolon = function (name, value) {
+ if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {
+ return;
+ }
- warnedStyleValues[value] = true;
- ("production" !== "development" ? warning(
- false,
- 'Style property values shouldn\'t contain a semicolon. ' +
- 'Try "%s: %s" instead.',
- name,
- value.replace(badStyleValueWithSemicolonPattern, '')
- ) : null);
- };
+ warnedStyleValues[value] = true;
+ "development" !== 'production' ? warning(false, 'Style property values shouldn\'t contain a semicolon. ' + 'Try "%s: %s" instead.', name, value.replace(badStyleValueWithSemicolonPattern, '')) : undefined;
+ };
+
+ /**
+ * @param {string} name
+ * @param {*} value
+ */
+ var warnValidStyle = function (name, value) {
+ if (name.indexOf('-') > -1) {
+ warnHyphenatedStyleName(name);
+ } else if (badVendoredStyleNamePattern.test(name)) {
+ warnBadVendoredStyleName(name);
+ } else if (badStyleValueWithSemicolonPattern.test(value)) {
+ warnStyleValueWithSemicolon(name, value);
+ }
+ };
+ }
/**
- * @param {string} name
- * @param {*} value
+ * Operations for dealing with CSS properties.
*/
- var warnValidStyle = function(name, value) {
- if (name.indexOf('-') > -1) {
- warnHyphenatedStyleName(name);
- } else if (badVendoredStyleNamePattern.test(name)) {
- warnBadVendoredStyleName(name);
- } else if (badStyleValueWithSemicolonPattern.test(value)) {
- warnStyleValueWithSemicolon(name, value);
+ var CSSPropertyOperations = {
+
+ /**
+ * Serializes a mapping of style properties for use as inline styles:
+ *
+ * > createMarkupForStyles({width: '200px', height: 0})
+ * "width:200px;height:0;"
+ *
+ * Undefined values are ignored so that declarative programming is easier.
+ * The result should be HTML-escaped before insertion into the DOM.
+ *
+ * @param {object} styles
+ * @return {?string}
+ */
+ createMarkupForStyles: function (styles) {
+ var serialized = '';
+ for (var styleName in styles) {
+ if (!styles.hasOwnProperty(styleName)) {
+ continue;
+ }
+ var styleValue = styles[styleName];
+ if ("development" !== 'production') {
+ warnValidStyle(styleName, styleValue);
+ }
+ if (styleValue != null) {
+ serialized += processStyleName(styleName) + ':';
+ serialized += dangerousStyleValue(styleName, styleValue) + ';';
+ }
+ }
+ return serialized || null;
+ },
+
+ /**
+ * Sets the value for multiple styles on a node. If a value is specified as
+ * '' (empty string), the corresponding style property will be unset.
+ *
+ * @param {DOMElement} node
+ * @param {object} styles
+ */
+ setValueForStyles: function (node, styles) {
+ var style = node.style;
+ for (var styleName in styles) {
+ if (!styles.hasOwnProperty(styleName)) {
+ continue;
+ }
+ if ("development" !== 'production') {
+ warnValidStyle(styleName, styles[styleName]);
+ }
+ var styleValue = dangerousStyleValue(styleName, styles[styleName]);
+ if (styleName === 'float') {
+ styleName = styleFloatAccessor;
+ }
+ if (styleValue) {
+ style[styleName] = styleValue;
+ } else {
+ var expansion = hasShorthandPropertyBug && CSSProperty.shorthandPropertyExpansions[styleName];
+ if (expansion) {
+ // Shorthand property that IE8 won't like unsetting, so unset each
+ // component to placate it
+ for (var individualStyleName in expansion) {
+ style[individualStyleName] = '';
+ }
+ } else {
+ style[styleName] = '';
+ }
+ }
+ }
}
+
};
-}
-/**
- * Operations for dealing with CSS properties.
- */
-var CSSPropertyOperations = {
+ ReactPerf.measureMethods(CSSPropertyOperations, 'CSSPropertyOperations', {
+ setValueForStyles: 'setValueForStyles'
+ });
+ module.exports = CSSPropertyOperations;
+},{"119":119,"147":147,"149":149,"160":160,"168":168,"173":173,"4":4,"78":78}],6:[function(_dereq_,module,exports){
/**
- * Serializes a mapping of style properties for use as inline styles:
+ * Copyright 2013-2015, Facebook, Inc.
+ * All rights reserved.
*
- * > createMarkupForStyles({width: '200px', height: 0})
- * "width:200px;height:0;"
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
*
- * Undefined values are ignored so that declarative programming is easier.
- * The result should be HTML-escaped before insertion into the DOM.
- *
- * @param {object} styles
- * @return {?string}
+ * @providesModule CallbackQueue
*/
- createMarkupForStyles: function(styles) {
- var serialized = '';
- for (var styleName in styles) {
- if (!styles.hasOwnProperty(styleName)) {
- continue;
- }
- var styleValue = styles[styleName];
- if ("production" !== "development") {
- warnValidStyle(styleName, styleValue);
- }
- if (styleValue != null) {
- serialized += processStyleName(styleName) + ':';
- serialized += dangerousStyleValue(styleName, styleValue) + ';';
- }
- }
- return serialized || null;
- },
+
+ 'use strict';
+
+ var PooledClass = _dereq_(25);
+
+ var assign = _dereq_(24);
+ var invariant = _dereq_(161);
/**
- * Sets the value for multiple styles on a node. If a value is specified as
- * '' (empty string), the corresponding style property will be unset.
+ * A specialized pseudo-event module to help keep track of components waiting to
+ * be notified when their DOM representations are available for use.
*
- * @param {DOMElement} node
- * @param {object} styles
+ * This implements `PooledClass`, so you should never need to instantiate this.
+ * Instead, use `CallbackQueue.getPooled()`.
+ *
+ * @class ReactMountReady
+ * @implements PooledClass
+ * @internal
*/
- setValueForStyles: function(node, styles) {
- var style = node.style;
- for (var styleName in styles) {
- if (!styles.hasOwnProperty(styleName)) {
- continue;
- }
- if ("production" !== "development") {
- warnValidStyle(styleName, styles[styleName]);
- }
- var styleValue = dangerousStyleValue(styleName, styles[styleName]);
- if (styleName === 'float') {
- styleName = styleFloatAccessor;
- }
- if (styleValue) {
- style[styleName] = styleValue;
- } else {
- var expansion = CSSProperty.shorthandPropertyExpansions[styleName];
- if (expansion) {
- // Shorthand property that IE8 won't like unsetting, so unset each
- // component to placate it
- for (var individualStyleName in expansion) {
- style[individualStyleName] = '';
- }
- } else {
- style[styleName] = '';
- }
- }
- }
+ function CallbackQueue() {
+ this._callbacks = null;
+ this._contexts = null;
}
-};
-
-module.exports = CSSPropertyOperations;
+ assign(CallbackQueue.prototype, {
-},{"121":121,"128":128,"148":148,"159":159,"171":171,"22":22,"5":5}],7:[function(_dereq_,module,exports){
-/**
- * Copyright 2013-2015, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- * @providesModule CallbackQueue
- */
+ /**
+ * Enqueues a callback to be invoked when `notifyAll` is invoked.
+ *
+ * @param {function} callback Invoked when `notifyAll` is invoked.
+ * @param {?object} context Context to call `callback` with.
+ * @internal
+ */
+ enqueue: function (callback, context) {
+ this._callbacks = this._callbacks || [];
+ this._contexts = this._contexts || [];
+ this._callbacks.push(callback);
+ this._contexts.push(context);
+ },
-'use strict';
+ /**
+ * Invokes all enqueued callbacks and clears the queue. This is invoked after
+ * the DOM representation of a component has been created or updated.
+ *
+ * @internal
+ */
+ notifyAll: function () {
+ var callbacks = this._callbacks;
+ var contexts = this._contexts;
+ if (callbacks) {
+ !(callbacks.length === contexts.length) ? "development" !== 'production' ? invariant(false, 'Mismatched list of contexts in callback queue') : invariant(false) : undefined;
+ this._callbacks = null;
+ this._contexts = null;
+ for (var i = 0; i < callbacks.length; i++) {
+ callbacks[i].call(contexts[i]);
+ }
+ callbacks.length = 0;
+ contexts.length = 0;
+ }
+ },
-var PooledClass = _dereq_(30);
+ /**
+ * Resets the internal queue.
+ *
+ * @internal
+ */
+ reset: function () {
+ this._callbacks = null;
+ this._contexts = null;
+ },
-var assign = _dereq_(29);
-var invariant = _dereq_(150);
+ /**
+ * `PooledClass` looks for this.
+ */
+ destructor: function () {
+ this.reset();
+ }
-/**
- * A specialized pseudo-event module to help keep track of components waiting to
- * be notified when their DOM representations are available for use.
- *
- * This implements `PooledClass`, so you should never need to instantiate this.
- * Instead, use `CallbackQueue.getPooled()`.
- *
- * @class ReactMountReady
- * @implements PooledClass
- * @internal
- */
-function CallbackQueue() {
- this._callbacks = null;
- this._contexts = null;
-}
+ });
-assign(CallbackQueue.prototype, {
+ PooledClass.addPoolingTo(CallbackQueue);
+ module.exports = CallbackQueue;
+},{"161":161,"24":24,"25":25}],7:[function(_dereq_,module,exports){
/**
- * Enqueues a callback to be invoked when `notifyAll` is invoked.
+ * Copyright 2013-2015, Facebook, Inc.
+ * All rights reserved.
*
- * @param {function} callback Invoked when `notifyAll` is invoked.
- * @param {?object} context Context to call `callback` with.
- * @internal
- */
- enqueue: function(callback, context) {
- this._callbacks = this._callbacks || [];
- this._contexts = this._contexts || [];
- this._callbacks.push(callback);
- this._contexts.push(context);
- },
-
- /**
- * Invokes all enqueued callbacks and clears the queue. This is invoked after
- * the DOM representation of a component has been created or updated.
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
*
- * @internal
+ * @providesModule ChangeEventPlugin
*/
- notifyAll: function() {
- var callbacks = this._callbacks;
- var contexts = this._contexts;
- if (callbacks) {
- ("production" !== "development" ? invariant(
- callbacks.length === contexts.length,
- 'Mismatched list of contexts in callback queue'
- ) : invariant(callbacks.length === contexts.length));
- this._callbacks = null;
- this._contexts = null;
- for (var i = 0, l = callbacks.length; i < l; i++) {
- callbacks[i].call(contexts[i]);
- }
- callbacks.length = 0;
- contexts.length = 0;
+
+ 'use strict';
+
+ var EventConstants = _dereq_(15);
+ var EventPluginHub = _dereq_(16);
+ var EventPropagators = _dereq_(19);
+ var ExecutionEnvironment = _dereq_(147);
+ var ReactUpdates = _dereq_(96);
+ var SyntheticEvent = _dereq_(105);
+
+ var getEventTarget = _dereq_(128);
+ var isEventSupported = _dereq_(133);
+ var isTextInputElement = _dereq_(134);
+ var keyOf = _dereq_(166);
+
+ var topLevelTypes = EventConstants.topLevelTypes;
+
+ var eventTypes = {
+ change: {
+ phasedRegistrationNames: {
+ bubbled: keyOf({ onChange: null }),
+ captured: keyOf({ onChangeCapture: null })
+ },
+ dependencies: [topLevelTypes.topBlur, topLevelTypes.topChange, topLevelTypes.topClick, topLevelTypes.topFocus, topLevelTypes.topInput, topLevelTypes.topKeyDown, topLevelTypes.topKeyUp, topLevelTypes.topSelectionChange]
}
- },
+ };
/**
- * Resets the internal queue.
- *
- * @internal
+ * For IE shims
*/
- reset: function() {
- this._callbacks = null;
- this._contexts = null;
- },
+ var activeElement = null;
+ var activeElementID = null;
+ var activeElementValue = null;
+ var activeElementValueProp = null;
/**
- * `PooledClass` looks for this.
+ * SECTION: handle `change` event
*/
- destructor: function() {
- this.reset();
+ function shouldUseChangeEvent(elem) {
+ var nodeName = elem.nodeName && elem.nodeName.toLowerCase();
+ return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';
}
-});
+ var doesChangeEventBubble = false;
+ if (ExecutionEnvironment.canUseDOM) {
+ // See `handleChange` comment below
+ doesChangeEventBubble = isEventSupported('change') && (!('documentMode' in document) || document.documentMode > 8);
+ }
-PooledClass.addPoolingTo(CallbackQueue);
+ function manualDispatchChangeEvent(nativeEvent) {
+ var event = SyntheticEvent.getPooled(eventTypes.change, activeElementID, nativeEvent, getEventTarget(nativeEvent));
+ EventPropagators.accumulateTwoPhaseDispatches(event);
-module.exports = CallbackQueue;
+ // If change and propertychange bubbled, we'd just bind to it like all the
+ // other events and have it go through ReactBrowserEventEmitter. Since it
+ // doesn't, we manually listen for the events and so we have to enqueue and
+ // process the abstract event manually.
+ //
+ // Batching is necessary here in order to ensure that all event handlers run
+ // before the next rerender (including event handlers attached to ancestor
+ // elements instead of directly on the input). Without this, controlled
+ // components don't work properly in conjunction with event bubbling because
+ // the component is rerendered and the value reverted before all the event
+ // handlers can run. See https://github.com/facebook/react/issues/708.
+ ReactUpdates.batchedUpdates(runEventInBatch, event);
+ }
-},{"150":150,"29":29,"30":30}],8:[function(_dereq_,module,exports){
-/**
- * Copyright 2013-2015, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- * @providesModule ChangeEventPlugin
- */
+ function runEventInBatch(event) {
+ EventPluginHub.enqueueEvents(event);
+ EventPluginHub.processEventQueue(false);
+ }
-'use strict';
+ function startWatchingForChangeEventIE8(target, targetID) {
+ activeElement = target;
+ activeElementID = targetID;
+ activeElement.attachEvent('onchange', manualDispatchChangeEvent);
+ }
-var EventConstants = _dereq_(16);
-var EventPluginHub = _dereq_(18);
-var EventPropagators = _dereq_(21);
-var ExecutionEnvironment = _dereq_(22);
-var ReactUpdates = _dereq_(100);
-var SyntheticEvent = _dereq_(108);
+ function stopWatchingForChangeEventIE8() {
+ if (!activeElement) {
+ return;
+ }
+ activeElement.detachEvent('onchange', manualDispatchChangeEvent);
+ activeElement = null;
+ activeElementID = null;
+ }
-var isEventSupported = _dereq_(151);
-var isTextInputElement = _dereq_(153);
-var keyOf = _dereq_(157);
+ function getTargetIDForChangeEvent(topLevelType, topLevelTarget, topLevelTargetID) {
+ if (topLevelType === topLevelTypes.topChange) {
+ return topLevelTargetID;
+ }
+ }
+ function handleEventsForChangeEventIE8(topLevelType, topLevelTarget, topLevelTargetID) {
+ if (topLevelType === topLevelTypes.topFocus) {
+ // stopWatching() should be a noop here but we call it just in case we
+ // missed a blur event somehow.
+ stopWatchingForChangeEventIE8();
+ startWatchingForChangeEventIE8(topLevelTarget, topLevelTargetID);
+ } else if (topLevelType === topLevelTypes.topBlur) {
+ stopWatchingForChangeEventIE8();
+ }
+ }
-var topLevelTypes = EventConstants.topLevelTypes;
+ /**
+ * SECTION: handle `input` event
+ */
+ var isInputEventSupported = false;
+ if (ExecutionEnvironment.canUseDOM) {
+ // IE9 claims to support the input event but fails to trigger it when
+ // deleting text, so we ignore its input events
+ isInputEventSupported = isEventSupported('input') && (!('documentMode' in document) || document.documentMode > 9);
+ }
-var eventTypes = {
- change: {
- phasedRegistrationNames: {
- bubbled: keyOf({onChange: null}),
- captured: keyOf({onChangeCapture: null})
+ /**
+ * (For old IE.) Replacement getter/setter for the `value` property that gets
+ * set on the active element.
+ */
+ var newValueProp = {
+ get: function () {
+ return activeElementValueProp.get.call(this);
},
- dependencies: [
- topLevelTypes.topBlur,
- topLevelTypes.topChange,
- topLevelTypes.topClick,
- topLevelTypes.topFocus,
- topLevelTypes.topInput,
- topLevelTypes.topKeyDown,
- topLevelTypes.topKeyUp,
- topLevelTypes.topSelectionChange
- ]
- }
-};
+ set: function (val) {
+ // Cast to a string so we can do equality checks.
+ activeElementValue = '' + val;
+ activeElementValueProp.set.call(this, val);
+ }
+ };
-/**
- * For IE shims
- */
-var activeElement = null;
-var activeElementID = null;
-var activeElementValue = null;
-var activeElementValueProp = null;
+ /**
+ * (For old IE.) Starts tracking propertychange events on the passed-in element
+ * and override the value property so that we can distinguish user events from
+ * value changes in JS.
+ */
+ function startWatchingForValueChange(target, targetID) {
+ activeElement = target;
+ activeElementID = targetID;
+ activeElementValue = target.value;
+ activeElementValueProp = Object.getOwnPropertyDescriptor(target.constructor.prototype, 'value');
-/**
- * SECTION: handle `change` event
- */
-function shouldUseChangeEvent(elem) {
- return (
- elem.nodeName === 'SELECT' ||
- (elem.nodeName === 'INPUT' && elem.type === 'file')
- );
-}
-
-var doesChangeEventBubble = false;
-if (ExecutionEnvironment.canUseDOM) {
- // See `handleChange` comment below
- doesChangeEventBubble = isEventSupported('change') && (
- (!('documentMode' in document) || document.documentMode > 8)
- );
-}
-
-function manualDispatchChangeEvent(nativeEvent) {
- var event = SyntheticEvent.getPooled(
- eventTypes.change,
- activeElementID,
- nativeEvent
- );
- EventPropagators.accumulateTwoPhaseDispatches(event);
-
- // If change and propertychange bubbled, we'd just bind to it like all the
- // other events and have it go through ReactBrowserEventEmitter. Since it
- // doesn't, we manually listen for the events and so we have to enqueue and
- // process the abstract event manually.
- //
- // Batching is necessary here in order to ensure that all event handlers run
- // before the next rerender (including event handlers attached to ancestor
- // elements instead of directly on the input). Without this, controlled
- // components don't work properly in conjunction with event bubbling because
- // the component is rerendered and the value reverted before all the event
- // handlers can run. See https://github.com/facebook/react/issues/708.
- ReactUpdates.batchedUpdates(runEventInBatch, event);
-}
-
-function runEventInBatch(event) {
- EventPluginHub.enqueueEvents(event);
- EventPluginHub.processEventQueue();
-}
-
-function startWatchingForChangeEventIE8(target, targetID) {
- activeElement = target;
- activeElementID = targetID;
- activeElement.attachEvent('onchange', manualDispatchChangeEvent);
-}
-
-function stopWatchingForChangeEventIE8() {
- if (!activeElement) {
- return;
- }
- activeElement.detachEvent('onchange', manualDispatchChangeEvent);
- activeElement = null;
- activeElementID = null;
-}
-
-function getTargetIDForChangeEvent(
- topLevelType,
- topLevelTarget,
- topLevelTargetID) {
- if (topLevelType === topLevelTypes.topChange) {
- return topLevelTargetID;
- }
-}
-function handleEventsForChangeEventIE8(
- topLevelType,
- topLevelTarget,
- topLevelTargetID) {
- if (topLevelType === topLevelTypes.topFocus) {
- // stopWatching() should be a noop here but we call it just in case we
- // missed a blur event somehow.
- stopWatchingForChangeEventIE8();
- startWatchingForChangeEventIE8(topLevelTarget, topLevelTargetID);
- } else if (topLevelType === topLevelTypes.topBlur) {
- stopWatchingForChangeEventIE8();
- }
-}
+ // Not guarded in a canDefineProperty check: IE8 supports defineProperty only
+ // on DOM elements
+ Object.defineProperty(activeElement, 'value', newValueProp);
+ activeElement.attachEvent('onpropertychange', handlePropertyChange);
+ }
+ /**
+ * (For old IE.) Removes the event listeners from the currently-tracked element,
+ * if any exists.
+ */
+ function stopWatchingForValueChange() {
+ if (!activeElement) {
+ return;
+ }
-/**
- * SECTION: handle `input` event
- */
-var isInputEventSupported = false;
-if (ExecutionEnvironment.canUseDOM) {
- // IE9 claims to support the input event but fails to trigger it when
- // deleting text, so we ignore its input events
- isInputEventSupported = isEventSupported('input') && (
- (!('documentMode' in document) || document.documentMode > 9)
- );
-}
+ // delete restores the original property definition
+ delete activeElement.value;
+ activeElement.detachEvent('onpropertychange', handlePropertyChange);
-/**
- * (For old IE.) Replacement getter/setter for the `value` property that gets
- * set on the active element.
- */
-var newValueProp = {
- get: function() {
- return activeElementValueProp.get.call(this);
- },
- set: function(val) {
- // Cast to a string so we can do equality checks.
- activeElementValue = '' + val;
- activeElementValueProp.set.call(this, val);
+ activeElement = null;
+ activeElementID = null;
+ activeElementValue = null;
+ activeElementValueProp = null;
}
-};
-/**
- * (For old IE.) Starts tracking propertychange events on the passed-in element
- * and override the value property so that we can distinguish user events from
- * value changes in JS.
- */
-function startWatchingForValueChange(target, targetID) {
- activeElement = target;
- activeElementID = targetID;
- activeElementValue = target.value;
- activeElementValueProp = Object.getOwnPropertyDescriptor(
- target.constructor.prototype,
- 'value'
- );
-
- Object.defineProperty(activeElement, 'value', newValueProp);
- activeElement.attachEvent('onpropertychange', handlePropertyChange);
-}
+ /**
+ * (For old IE.) Handles a propertychange event, sending a `change` event if
+ * the value of the active element has changed.
+ */
+ function handlePropertyChange(nativeEvent) {
+ if (nativeEvent.propertyName !== 'value') {
+ return;
+ }
+ var value = nativeEvent.srcElement.value;
+ if (value === activeElementValue) {
+ return;
+ }
+ activeElementValue = value;
-/**
- * (For old IE.) Removes the event listeners from the currently-tracked element,
- * if any exists.
- */
-function stopWatchingForValueChange() {
- if (!activeElement) {
- return;
+ manualDispatchChangeEvent(nativeEvent);
}
- // delete restores the original property definition
- delete activeElement.value;
- activeElement.detachEvent('onpropertychange', handlePropertyChange);
-
- activeElement = null;
- activeElementID = null;
- activeElementValue = null;
- activeElementValueProp = null;
-}
-
-/**
- * (For old IE.) Handles a propertychange event, sending a `change` event if
- * the value of the active element has changed.
- */
-function handlePropertyChange(nativeEvent) {
- if (nativeEvent.propertyName !== 'value') {
- return;
- }
- var value = nativeEvent.srcElement.value;
- if (value === activeElementValue) {
- return;
+ /**
+ * If a `change` event should be fired, returns the target's ID.
+ */
+ function getTargetIDForInputEvent(topLevelType, topLevelTarget, topLevelTargetID) {
+ if (topLevelType === topLevelTypes.topInput) {
+ // In modern browsers (i.e., not IE8 or IE9), the input event is exactly
+ // what we want so fall through here and trigger an abstract event
+ return topLevelTargetID;
+ }
}
- activeElementValue = value;
-
- manualDispatchChangeEvent(nativeEvent);
-}
-/**
- * If a `change` event should be fired, returns the target's ID.
- */
-function getTargetIDForInputEvent(
- topLevelType,
- topLevelTarget,
- topLevelTargetID) {
- if (topLevelType === topLevelTypes.topInput) {
- // In modern browsers (i.e., not IE8 or IE9), the input event is exactly
- // what we want so fall through here and trigger an abstract event
- return topLevelTargetID;
+// For IE8 and IE9.
+ function handleEventsForInputEventIE(topLevelType, topLevelTarget, topLevelTargetID) {
+ if (topLevelType === topLevelTypes.topFocus) {
+ // In IE8, we can capture almost all .value changes by adding a
+ // propertychange handler and looking for events with propertyName
+ // equal to 'value'
+ // In IE9, propertychange fires for most input events but is buggy and
+ // doesn't fire when text is deleted, but conveniently, selectionchange
+ // appears to fire in all of the remaining cases so we catch those and
+ // forward the event if the value has changed
+ // In either case, we don't want to call the event handler if the value
+ // is changed from JS so we redefine a setter for `.value` that updates
+ // our activeElementValue variable, allowing us to ignore those changes
+ //
+ // stopWatching() should be a noop here but we call it just in case we
+ // missed a blur event somehow.
+ stopWatchingForValueChange();
+ startWatchingForValueChange(topLevelTarget, topLevelTargetID);
+ } else if (topLevelType === topLevelTypes.topBlur) {
+ stopWatchingForValueChange();
+ }
}
-}
// For IE8 and IE9.
-function handleEventsForInputEventIE(
- topLevelType,
- topLevelTarget,
- topLevelTargetID) {
- if (topLevelType === topLevelTypes.topFocus) {
- // In IE8, we can capture almost all .value changes by adding a
- // propertychange handler and looking for events with propertyName
- // equal to 'value'
- // In IE9, propertychange fires for most input events but is buggy and
- // doesn't fire when text is deleted, but conveniently, selectionchange
- // appears to fire in all of the remaining cases so we catch those and
- // forward the event if the value has changed
- // In either case, we don't want to call the event handler if the value
- // is changed from JS so we redefine a setter for `.value` that updates
- // our activeElementValue variable, allowing us to ignore those changes
- //
- // stopWatching() should be a noop here but we call it just in case we
- // missed a blur event somehow.
- stopWatchingForValueChange();
- startWatchingForValueChange(topLevelTarget, topLevelTargetID);
- } else if (topLevelType === topLevelTypes.topBlur) {
- stopWatchingForValueChange();
+ function getTargetIDForInputEventIE(topLevelType, topLevelTarget, topLevelTargetID) {
+ if (topLevelType === topLevelTypes.topSelectionChange || topLevelType === topLevelTypes.topKeyUp || topLevelType === topLevelTypes.topKeyDown) {
+ // On the selectionchange event, the target is just document which isn't
+ // helpful for us so just check activeElement instead.
+ //
+ // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire
+ // propertychange on the first input event after setting `value` from a
+ // script and fires only keydown, keypress, keyup. Catching keyup usually
+ // gets it and catching keydown lets us fire an event for the first
+ // keystroke if user does a key repeat (it'll be a little delayed: right
+ // before the second keystroke). Other input methods (e.g., paste) seem to
+ // fire selectionchange normally.
+ if (activeElement && activeElement.value !== activeElementValue) {
+ activeElementValue = activeElement.value;
+ return activeElementID;
+ }
+ }
}
-}
-// For IE8 and IE9.
-function getTargetIDForInputEventIE(
- topLevelType,
- topLevelTarget,
- topLevelTargetID) {
- if (topLevelType === topLevelTypes.topSelectionChange ||
- topLevelType === topLevelTypes.topKeyUp ||
- topLevelType === topLevelTypes.topKeyDown) {
- // On the selectionchange event, the target is just document which isn't
- // helpful for us so just check activeElement instead.
- //
- // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire
- // propertychange on the first input event after setting `value` from a
- // script and fires only keydown, keypress, keyup. Catching keyup usually
- // gets it and catching keydown lets us fire an event for the first
- // keystroke if user does a key repeat (it'll be a little delayed: right
- // before the second keystroke). Other input methods (e.g., paste) seem to
- // fire selectionchange normally.
- if (activeElement && activeElement.value !== activeElementValue) {
- activeElementValue = activeElement.value;
- return activeElementID;
+ /**
+ * SECTION: handle `click` event
+ */
+ function shouldUseClickEvent(elem) {
+ // Use the `click` event to detect changes to checkbox and radio inputs.
+ // This approach works across all browsers, whereas `change` does not fire
+ // until `blur` in IE8.
+ return elem.nodeName && elem.nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');
+ }
+
+ function getTargetIDForClickEvent(topLevelType, topLevelTarget, topLevelTargetID) {
+ if (topLevelType === topLevelTypes.topClick) {
+ return topLevelTargetID;
}
}
-}
+ /**
+ * This plugin creates an `onChange` event that normalizes change events
+ * across form elements. This event fires at a time when it's possible to
+ * change the element's value without seeing a flicker.
+ *
+ * Supported elements are:
+ * - input (see `isTextInputElement`)
+ * - textarea
+ * - select
+ */
+ var ChangeEventPlugin = {
-/**
- * SECTION: handle `click` event
- */
-function shouldUseClickEvent(elem) {
- // Use the `click` event to detect changes to checkbox and radio inputs.
- // This approach works across all browsers, whereas `change` does not fire
- // until `blur` in IE8.
- return (
- elem.nodeName === 'INPUT' &&
- (elem.type === 'checkbox' || elem.type === 'radio')
- );
-}
-
-function getTargetIDForClickEvent(
- topLevelType,
- topLevelTarget,
- topLevelTargetID) {
- if (topLevelType === topLevelTypes.topClick) {
- return topLevelTargetID;
- }
-}
+ eventTypes: eventTypes,
-/**
- * This plugin creates an `onChange` event that normalizes change events
- * across form elements. This event fires at a time when it's possible to
- * change the element's value without seeing a flicker.
- *
- * Supported elements are:
- * - input (see `isTextInputElement`)
- * - textarea
- * - select
- */
-var ChangeEventPlugin = {
+ /**
+ * @param {string} topLevelType Record from `EventConstants`.
+ * @param {DOMEventTarget} topLevelTarget The listening component root node.
+ * @param {string} topLevelTargetID ID of `topLevelTarget`.
+ * @param {object} nativeEvent Native browser event.
+ * @return {*} An accumulation of synthetic events.
+ * @see {EventPluginHub.extractEvents}
+ */
+ extractEvents: function (topLevelType, topLevelTarget, topLevelTargetID, nativeEvent, nativeEventTarget) {
- eventTypes: eventTypes,
+ var getTargetIDFunc, handleEventFunc;
+ if (shouldUseChangeEvent(topLevelTarget)) {
+ if (doesChangeEventBubble) {
+ getTargetIDFunc = getTargetIDForChangeEvent;
+ } else {
+ handleEventFunc = handleEventsForChangeEventIE8;
+ }
+ } else if (isTextInputElement(topLevelTarget)) {
+ if (isInputEventSupported) {
+ getTargetIDFunc = getTargetIDForInputEvent;
+ } else {
+ getTargetIDFunc = getTargetIDForInputEventIE;
+ handleEventFunc = handleEventsForInputEventIE;
+ }
+ } else if (shouldUseClickEvent(topLevelTarget)) {
+ getTargetIDFunc = getTargetIDForClickEvent;
+ }
- /**
- * @param {string} topLevelType Record from `EventConstants`.
- * @param {DOMEventTarget} topLevelTarget The listening component root node.
- * @param {string} topLevelTargetID ID of `topLevelTarget`.
- * @param {object} nativeEvent Native browser event.
- * @return {*} An accumulation of synthetic events.
- * @see {EventPluginHub.extractEvents}
- */
- extractEvents: function(
- topLevelType,
- topLevelTarget,
- topLevelTargetID,
- nativeEvent) {
-
- var getTargetIDFunc, handleEventFunc;
- if (shouldUseChangeEvent(topLevelTarget)) {
- if (doesChangeEventBubble) {
- getTargetIDFunc = getTargetIDForChangeEvent;
- } else {
- handleEventFunc = handleEventsForChangeEventIE8;
+ if (getTargetIDFunc) {
+ var targetID = getTargetIDFunc(topLevelType, topLevelTarget, topLevelTargetID);
+ if (targetID) {
+ var event = SyntheticEvent.getPooled(eventTypes.change, targetID, nativeEvent, nativeEventTarget);
+ event.type = 'change';
+ EventPropagators.accumulateTwoPhaseDispatches(event);
+ return event;
+ }
}
- } else if (isTextInputElement(topLevelTarget)) {
- if (isInputEventSupported) {
- getTargetIDFunc = getTargetIDForInputEvent;
- } else {
- getTargetIDFunc = getTargetIDForInputEventIE;
- handleEventFunc = handleEventsForInputEventIE;
+
+ if (handleEventFunc) {
+ handleEventFunc(topLevelType, topLevelTarget, topLevelTargetID);
}
- } else if (shouldUseClickEvent(topLevelTarget)) {
- getTargetIDFunc = getTargetIDForClickEvent;
}
- if (getTargetIDFunc) {
- var targetID = getTargetIDFunc(
- topLevelType,
- topLevelTarget,
- topLevelTargetID
- );
- if (targetID) {
- var event = SyntheticEvent.getPooled(
- eventTypes.change,
- targetID,
- nativeEvent
- );
- EventPropagators.accumulateTwoPhaseDispatches(event);
- return event;
- }
- }
-
- if (handleEventFunc) {
- handleEventFunc(
- topLevelType,
- topLevelTarget,
- topLevelTargetID
- );
- }
- }
-
-};
-
-module.exports = ChangeEventPlugin;
-
-},{"100":100,"108":108,"151":151,"153":153,"157":157,"16":16,"18":18,"21":21,"22":22}],9:[function(_dereq_,module,exports){
-/**
- * Copyright 2013-2015, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- * @providesModule ClientReactRootIndex
- * @typechecks
- */
-
-'use strict';
-
-var nextReactRootIndex = 0;
-
-var ClientReactRootIndex = {
- createReactRootIndex: function() {
- return nextReactRootIndex++;
- }
-};
-
-module.exports = ClientReactRootIndex;
+ };
-},{}],10:[function(_dereq_,module,exports){
-/**
- * Copyright 2013-2015, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An ad
<TRUNCATED>
[2/6] fauxton commit: updated refs/heads/master to e6450a0
Posted by be...@apache.org.
removing react 14 warnings
Project: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/commit/e6450a0d
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/tree/e6450a0d
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/diff/e6450a0d
Branch: refs/heads/master
Commit: e6450a0d0c9710d79e96bc924c447b8cb12f01b8
Parents: cab6fc2
Author: Ben Keen <be...@gmail.com>
Authored: Tue Jan 19 10:33:45 2016 -0800
Committer: Ben Keen <be...@gmail.com>
Committed: Mon Feb 1 08:39:35 2016 -0800
----------------------------------------------------------------------
app/addons/activetasks/components.react.jsx | 34 ++++++------
.../tests/activetasks.componentsSpec.react.jsx | 13 ++---
app/addons/auth/components.react.jsx | 13 ++---
.../auth/test/auth.componentsSpec.react.jsx | 31 +++++------
app/addons/cluster/tests/clusterSpec.react.jsx | 10 ++--
.../compaction/tests/componentsSpec.react.jsx | 15 +++---
.../components/react-components.react.jsx | 25 +++++----
.../tests/apiBarControllerSpec.react.jsx | 31 +++++------
.../components/tests/beautifySpec.react.jsx | 14 ++---
.../tests/codeEditorPanelSpec.react.jsx | 13 ++---
.../components/tests/codeEditorSpec.react.jsx | 7 +--
.../tests/confirmButtonSpec.react.jsx | 12 ++---
app/addons/components/tests/docSpec.react.jsx | 32 ++++++------
.../tests/headerTogglebuttonSpec.react.jsx | 10 ++--
.../tests/paddedBorderedBoxSpec.react.jsx | 10 ++--
.../tests/stringEditModalSpec.react.jsx | 55 +++-----------------
.../components/tests/styledSelectSpec.react.jsx | 10 ++--
.../components/tests/zenModeSpec.react.jsx | 17 +++---
app/addons/cors/tests/componentsSpec.react.jsx | 55 ++++++++++----------
app/addons/databases/components.react.jsx | 27 +++++-----
.../databases/tests/componentsSpec.react.jsx | 31 +++++------
.../documents/changes/components.react.jsx | 19 ++++---
.../tests/changes.componentsSpec.react.jsx | 53 ++++++++++---------
.../documents/doc-editor/components.react.jsx | 5 +-
.../tests/doc-editor.componentsSpec.react.jsx | 55 +++++++++-----------
app/addons/documents/helpers.js | 6 ++-
.../tests/viewIndex.componentsSpec.react.jsx | 23 ++++----
.../index-results.components.react.jsx | 2 +-
.../index-results.componentsSpec.react.jsx | 40 +++++++-------
.../mango/tests/mango.componentsSpec.react.jsx | 25 +++++----
.../tests/pagination.componentSpec.react.jsx | 14 ++---
.../queryoptions/queryoptions.react.jsx | 11 ++--
.../tests/queryoptions.componentsSpec.react.jsx | 21 ++++----
app/addons/documents/sidebar/sidebar.react.jsx | 10 ++--
.../tests/sidebar.componentsSpec.react.jsx | 11 ++--
app/addons/documents/tests/helpersSpec.js | 31 +++++++++++
app/addons/fauxton/components.react.jsx | 11 ++--
.../fauxton/navigation/components.react.jsx | 5 +-
.../navigation/tests/componentsSpec.react.jsx | 13 ++---
.../notifications/notifications.react.jsx | 11 ++--
.../tests/componentsSpec.react.jsx | 43 +++++++--------
.../fauxton/tests/componentsSpec.react.jsx | 25 ++++-----
.../permissions/tests/componentsSpec.react.jsx | 25 ++++-----
.../setup/tests/setupComponentsSpec.react.jsx | 21 ++++----
.../tests/componentsSpec.react.jsx | 21 ++++----
app/config.js | 1 +
app/core/routeObject.js | 7 +--
app/core/tests/routeObjectSpec.js | 11 ++--
48 files changed, 504 insertions(+), 481 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/activetasks/components.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/activetasks/components.react.jsx b/app/addons/activetasks/components.react.jsx
index 7e65399..b8d294c 100644
--- a/app/addons/activetasks/components.react.jsx
+++ b/app/addons/activetasks/components.react.jsx
@@ -14,12 +14,13 @@ define([
'app',
'api',
'react',
+ 'react-dom',
'addons/activetasks/stores',
'addons/activetasks/resources',
'addons/activetasks/actions',
'addons/components/react-components.react',
'addons/fauxton/components.react'
-], function (app, FauxtonAPI, React, Stores, Resources, Actions, Components, ComponentsReact) {
+], function (app, FauxtonAPI, React, ReactDOM, Stores, Resources, Actions, Components, ComponentsReact) {
var activeTasksStore = Stores.activeTasksStore;
var ReactCSSTransitionGroup = React.addons.CSSTransitionGroup;
@@ -263,21 +264,20 @@ define([
var th_class = 'header-field ' + this.props.headerName;
return (
- <input
- type="radio"
- name="header-field"
- id={this.props.headerName}
- value={this.props.headerName}
- className="header-field radio"
- onChange={this.onTableHeaderClick}>
- <td className={th_class + " tableheader"} value={this.props.headerName}>
- <label
- className="header-field label-text active-tasks-header noselect"
- htmlFor={this.props.headerName}>
- {this.props.displayName} {arrow}
- </label>
- </td>
- </input>
+ <td className={th_class + " tableheader"} value={this.props.headerName}>
+ <input
+ type="radio"
+ name="header-field"
+ id={this.props.headerName}
+ value={this.props.headerName}
+ className="header-field radio"
+ onChange={this.onTableHeaderClick} />
+ <label
+ className="header-field label-text active-tasks-header noselect"
+ htmlFor={this.props.headerName}>
+ {this.props.displayName} {arrow}
+ </label>
+ </td>
);
}
});
@@ -396,7 +396,7 @@ define([
e.preventDefault();
this.refs.view_source_sequence_btn.toggle(function (shown) {
if (shown) {
- React.findDOMNode(this.refs.view_source_sequence_btn).focus();
+ ReactDOM.findDOMNode(this.refs.view_source_sequence_btn).focus();
}
}.bind(this));
},
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/activetasks/tests/activetasks.componentsSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/activetasks/tests/activetasks.componentsSpec.react.jsx b/app/addons/activetasks/tests/activetasks.componentsSpec.react.jsx
index 6db8f66..6ad4413 100644
--- a/app/addons/activetasks/tests/activetasks.componentsSpec.react.jsx
+++ b/app/addons/activetasks/tests/activetasks.componentsSpec.react.jsx
@@ -16,9 +16,10 @@ define([
'addons/activetasks/stores',
'addons/activetasks/tests/fakeActiveTaskResponse',
'react',
+ 'react-dom',
'addons/activetasks/actions',
'testUtils'
-], function (FauxtonAPI, ActiveTasks, Components, Stores, fakedResponse, React, Actions, utils) {
+], function (FauxtonAPI, ActiveTasks, Components, Stores, fakedResponse, React, ReactDOM, Actions, utils) {
var assert = utils.assert;
var restore = utils.restore;
var TestUtils = React.addons.TestUtils;
@@ -39,7 +40,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(pollingWidgetDiv);
+ ReactDOM.unmountComponentAtNode(pollingWidgetDiv);
restore(Actions.changePollingInterval);
});
@@ -67,7 +68,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(tableDiv);
+ ReactDOM.unmountComponentAtNode(tableDiv);
restore(window.confirm);
});
@@ -88,7 +89,7 @@ define([
it('should trigger change to radio buttons', function () {
_.each(radioIDs, function (radioID) {
spy = sinon.spy(Actions, 'switchTab');
- TestUtils.Simulate.change($(table.getDOMNode()).find('#' + radioID)[0]);
+ TestUtils.Simulate.change($(ReactDOM.findDOMNode(table)).find('#' + radioID)[0]);
assert.ok(spy.calledOnce);
spy.restore();
});
@@ -96,7 +97,7 @@ define([
it('should trigger change to search term', function () {
spy = sinon.spy(Actions, 'setSearchTerm');
- TestUtils.Simulate.change($(table.getDOMNode()).find('.searchbox')[0], {target: {value: 'searching'}});
+ TestUtils.Simulate.change($(ReactDOM.findDOMNode(table)).find('.searchbox')[0], {target: {value: 'searching'}});
assert.ok(spy.calledOnce);
});
});
@@ -118,7 +119,7 @@ define([
it('should trigger change to which header to sort by', function () {
_.each(headerNames, function (header) {
spy = sinon.spy(Actions, 'sortByColumnHeader');
- TestUtils.Simulate.change($(table.getDOMNode()).find('#' + header)[0]);
+ TestUtils.Simulate.change($(ReactDOM.findDOMNode(table)).find('#' + header)[0]);
assert.ok(spy.calledOnce);
spy.restore();
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/auth/components.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/auth/components.react.jsx b/app/addons/auth/components.react.jsx
index d4d1abb..448c7c0 100644
--- a/app/addons/auth/components.react.jsx
+++ b/app/addons/auth/components.react.jsx
@@ -14,9 +14,10 @@ define([
'app',
'api',
'react',
+ 'react-dom',
'addons/auth/stores',
'addons/auth/actions'
-], function (app, FauxtonAPI, React, AuthStores, AuthActions) {
+], function (app, FauxtonAPI, React, ReactDOM, AuthStores, AuthActions) {
var changePasswordStore = AuthStores.changePasswordStore;
var createAdminStore = AuthStores.createAdminStore;
@@ -64,8 +65,8 @@ define([
if (this.state.username !== '' || this.state.password !== '') {
return false;
}
- var username = (this.props.testBlankUsername) ? this.props.testBlankUsername : React.findDOMNode(this.refs.username).value;
- var password = (this.props.testBlankPassword) ? this.props.testBlankPassword : React.findDOMNode(this.refs.password).value;
+ var username = (this.props.testBlankUsername) ? this.props.testBlankUsername : ReactDOM.findDOMNode(this.refs.username).value;
+ var password = (this.props.testBlankPassword) ? this.props.testBlankPassword : ReactDOM.findDOMNode(this.refs.password).value;
this.setState({ username: username, password: password }); // doesn't set immediately, hence separate login() call
this.login(username, password);
@@ -77,7 +78,7 @@ define([
},
componentDidMount: function () {
- React.findDOMNode(this.refs.username).focus();
+ ReactDOM.findDOMNode(this.refs.username).focus();
},
render: function () {
@@ -128,7 +129,7 @@ define([
},
componentDidMount: function () {
- React.findDOMNode(this.refs.password).focus();
+ ReactDOM.findDOMNode(this.refs.password).focus();
changePasswordStore.on('change', this.onChange, this);
},
@@ -203,7 +204,7 @@ define([
},
componentDidMount: function () {
- React.findDOMNode(this.refs.username).focus();
+ ReactDOM.findDOMNode(this.refs.username).focus();
createAdminStore.on('change', this.onChange, this);
},
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/auth/test/auth.componentsSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/auth/test/auth.componentsSpec.react.jsx b/app/addons/auth/test/auth.componentsSpec.react.jsx
index 5113147..f8315bb 100644
--- a/app/addons/auth/test/auth.componentsSpec.react.jsx
+++ b/app/addons/auth/test/auth.componentsSpec.react.jsx
@@ -12,11 +12,12 @@
define([
'api',
'react',
+ 'react-dom',
'testUtils',
'addons/auth/components.react',
'addons/auth/stores',
'addons/auth/actions'
-], function (FauxtonAPI, React, utils, Components, Stores, Actions) {
+], function (FauxtonAPI, React, ReactDOM, utils, Components, Stores, Actions) {
var assert = utils.assert;
var TestUtils = React.addons.TestUtils;
@@ -34,14 +35,14 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
createAdminSidebarStore.reset();
Actions.login.restore();
});
it('should trigger login event when form submitted', function () {
loginForm = TestUtils.renderIntoDocument(<Components.LoginForm />, container);
- TestUtils.Simulate.submit($(loginForm.getDOMNode()).find('#login')[0]);
+ TestUtils.Simulate.submit($(ReactDOM.findDOMNode(loginForm)).find('#login')[0]);
assert.ok(stub.calledOnce);
});
@@ -55,7 +56,7 @@ define([
testBlankPassword={password}
/>, container);
- TestUtils.Simulate.submit($(loginForm.getDOMNode()).find('#login')[0]);
+ TestUtils.Simulate.submit($(ReactDOM.findDOMNode(loginForm)).find('#login')[0]);
assert.ok(stub.calledOnce);
// confirm Actions.login() received the values that weren't in the DOM
@@ -75,24 +76,24 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('should call action to update password on field change', function () {
var spy = sinon.spy(Actions, 'updateChangePasswordField');
- TestUtils.Simulate.change($(changePasswordForm.getDOMNode()).find('#password')[0], { target: { value: 'bobsyouruncle' }});
+ TestUtils.Simulate.change($(ReactDOM.findDOMNode(changePasswordForm)).find('#password')[0], { target: { value: 'bobsyouruncle' }});
assert.ok(spy.calledOnce);
});
it('should call action to update password confirm on field change', function () {
var spy = sinon.spy(Actions, 'updateChangePasswordConfirmField');
- TestUtils.Simulate.change($(changePasswordForm.getDOMNode()).find('#password-confirm')[0], { target: { value: 'hotdiggity' }});
+ TestUtils.Simulate.change($(ReactDOM.findDOMNode(changePasswordForm)).find('#password-confirm')[0], { target: { value: 'hotdiggity' }});
assert.ok(spy.calledOnce);
});
it('should call action to submit form', function () {
var stub = sinon.stub(Actions, 'changePassword', function () {});
- TestUtils.Simulate.submit($(changePasswordForm.getDOMNode()).find('#change-password')[0]);
+ TestUtils.Simulate.submit($(ReactDOM.findDOMNode(changePasswordForm)).find('#change-password')[0]);
assert.ok(stub.calledOnce);
});
});
@@ -106,18 +107,18 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('should call action to update username on field change', function () {
var spy = sinon.spy(Actions, 'updateCreateAdminUsername');
- TestUtils.Simulate.change($(createAdminForm.getDOMNode()).find('#username')[0], { target: { value: 'catsmeow' }});
+ TestUtils.Simulate.change($(ReactDOM.findDOMNode(createAdminForm)).find('#username')[0], { target: { value: 'catsmeow' }});
assert.ok(spy.calledOnce);
});
it('should call action to update password confirm on field change', function () {
var spy = sinon.spy(Actions, 'updateCreateAdminPassword');
- TestUtils.Simulate.change($(createAdminForm.getDOMNode()).find('#password')[0], { target: { value: 'topnotch' }});
+ TestUtils.Simulate.change($(ReactDOM.findDOMNode(createAdminForm)).find('#password')[0], { target: { value: 'topnotch' }});
assert.ok(spy.calledOnce);
});
});
@@ -132,16 +133,16 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('confirm the default selected nav item is the change pwd page', function () {
- assert.equal($(createAdminSidebar.getDOMNode()).find('.active').find('a').attr('href'), '#changePassword');
+ assert.equal($(ReactDOM.findDOMNode(createAdminSidebar)).find('.active').find('a').attr('href'), '#changePassword');
});
it('confirm clicking a sidebar nav item selects it in the DOM', function () {
- TestUtils.Simulate.click($(createAdminSidebar.getDOMNode()).find('li[data-page="addAdmin"]').find('a')[0]);
- assert.equal($(createAdminSidebar.getDOMNode()).find('.active').find('a').attr('href'), '#addAdmin');
+ TestUtils.Simulate.click($(ReactDOM.findDOMNode(createAdminSidebar)).find('li[data-page="addAdmin"]').find('a')[0]);
+ assert.equal($(ReactDOM.findDOMNode(createAdminSidebar)).find('.active').find('a').attr('href'), '#addAdmin');
});
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/cluster/tests/clusterSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/cluster/tests/clusterSpec.react.jsx b/app/addons/cluster/tests/clusterSpec.react.jsx
index 9a6c3b5..08e3625 100644
--- a/app/addons/cluster/tests/clusterSpec.react.jsx
+++ b/app/addons/cluster/tests/clusterSpec.react.jsx
@@ -14,10 +14,10 @@ define([
'addons/cluster/cluster.react',
'addons/cluster/cluster.actions',
'addons/cluster/cluster.stores',
-
'testUtils',
- 'react'
-], function (FauxtonAPI, ClusterComponent, ClusterActions, ClusterStores, utils, React) {
+ 'react',
+ 'react-dom'
+], function (FauxtonAPI, ClusterComponent, ClusterActions, ClusterStores, utils, React, ReactDOM) {
var assert = utils.assert;
var TestUtils = React.addons.TestUtils;
@@ -47,11 +47,11 @@ define([
afterEach(function () {
ClusterStores.nodesStore.reset();
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('renders the amount of nodes', function () {
- assert.ok(/6 nodes/.test($(controller.getDOMNode()).text()), 'finds 6 nodes');
+ assert.ok(/6 nodes/.test($(ReactDOM.findDOMNode(controller)).text()), 'finds 6 nodes');
});
});
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/compaction/tests/componentsSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/compaction/tests/componentsSpec.react.jsx b/app/addons/compaction/tests/componentsSpec.react.jsx
index 5c6a18a..08fb02e 100644
--- a/app/addons/compaction/tests/componentsSpec.react.jsx
+++ b/app/addons/compaction/tests/componentsSpec.react.jsx
@@ -14,8 +14,9 @@ define([
'addons/compaction/components.react',
'addons/compaction/actions',
'testUtils',
- "react"
-], function (FauxtonAPI, Views, Actions, utils, React) {
+ 'react',
+ 'react-dom'
+], function (FauxtonAPI, Views, Actions, utils, React, ReactDOM) {
FauxtonAPI.router = new FauxtonAPI.Router([]);
var assert = utils.assert;
@@ -37,7 +38,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('triggers compact database action', function () {
@@ -69,11 +70,11 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('calls cleanupView on button click', function () {
- var el = $(cleanupViewEl.getDOMNode()).find('button')[0];
+ var el = $(ReactDOM.findDOMNode(cleanupViewEl)).find('button')[0];
TestUtils.Simulate.click(el, {});
assert.ok(spy.calledOnce);
@@ -95,11 +96,11 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('calls compact database on button click', function () {
- var el = $(compactViewEl.getDOMNode()).find('button')[0];
+ var el = $(ReactDOM.findDOMNode(compactViewEl)).find('button')[0];
TestUtils.Simulate.click(el, {});
assert.ok(spy.calledOnce);
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/components/react-components.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/components/react-components.react.jsx b/app/addons/components/react-components.react.jsx
index a471637..606d50b 100644
--- a/app/addons/components/react-components.react.jsx
+++ b/app/addons/components/react-components.react.jsx
@@ -14,14 +14,16 @@ define([
'app',
'api',
'react',
+ 'react-dom',
'addons/components/stores',
'addons/fauxton/components.react',
+ 'addons/documents/helpers',
'ace/ace',
'plugins/beautify',
'libs/react-bootstrap'
],
-function (app, FauxtonAPI, React, Stores, FauxtonComponents, ace, beautifyHelper, ReactBootstrap) {
+function (app, FauxtonAPI, React, ReactDOM, Stores, FauxtonComponents, Helpers, ace, beautifyHelper, ReactBootstrap) {
var ReactCSSTransitionGroup = React.addons.CSSTransitionGroup;
var componentStore = Stores.componentStore;
@@ -450,7 +452,7 @@ function (app, FauxtonAPI, React, Stores, FauxtonComponents, ace, beautifyHelper
},
setupAce: function (props, shouldUpdateCode) {
- this.editor = ace.edit(React.findDOMNode(this.refs.ace));
+ this.editor = ace.edit(ReactDOM.findDOMNode(this.refs.ace));
// suppresses an Ace editor error
this.editor.$blockScrolling = Infinity;
@@ -770,14 +772,14 @@ function (app, FauxtonAPI, React, Stores, FauxtonComponents, ace, beautifyHelper
}
var val = '';
if (!prevProps.visible && this.props.visible) {
- val = JSON.parse('"' + this.props.value + '"'); // this ensures newlines are converted
+ val = Helpers.parseJSON(this.props.value);
}
this.initEditor(val);
},
initEditor: function (val) {
- this.editor = ace.edit(React.findDOMNode(this.refs.stringEditor));
+ this.editor = ace.edit(ReactDOM.findDOMNode(this.refs.stringEditor));
this.editor.$blockScrolling = Infinity; // suppresses an Ace editor error
this.editor.setShowPrintMargin(false);
this.editor.setOption('highlightActiveLine', true);
@@ -857,8 +859,8 @@ function (app, FauxtonAPI, React, Stores, FauxtonComponents, ace, beautifyHelper
},
componentDidMount: function () {
- $(React.findDOMNode(this.refs.exit)).tooltip({ placement: 'left' });
- $(React.findDOMNode(this.refs.theme)).tooltip({ placement: 'left' });
+ $(ReactDOM.findDOMNode(this.refs.exit)).tooltip({ placement: 'left' });
+ $(ReactDOM.findDOMNode(this.refs.theme)).tooltip({ placement: 'left' });
},
exitZenMode: function () {
@@ -1194,7 +1196,8 @@ function (app, FauxtonAPI, React, Stores, FauxtonComponents, ace, beautifyHelper
render: function () {
return (
- <ReactCSSTransitionGroup transitionName="tray" transitionAppear={true} component="div">
+ <ReactCSSTransitionGroup transitionName="tray" transitionAppear={true} component="div" transitionAppearTimeout={500}
+ transitionEnterTimeout={500} transitionLeaveTimeout={300}>
{this.getChildren()}
</ReactCSSTransitionGroup>
);
@@ -1246,7 +1249,7 @@ function (app, FauxtonAPI, React, Stores, FauxtonComponents, ace, beautifyHelper
renderChildren: function () {
return React.Children.map(this.props.children, function (child, key) {
- return React.addons.cloneWithProps(child, {
+ return React.cloneElement(child, {
trayVisible: this.state.trayVisible,
selected: this.state.trayVisible,
toggleCallback: this.toggleTray,
@@ -1265,7 +1268,7 @@ function (app, FauxtonAPI, React, Stores, FauxtonComponents, ace, beautifyHelper
closeIfOpen: function (e) {
if (!this.state.trayVisible) { return; }
- var trayEl = $(React.findDOMNode(this));
+ var trayEl = $(ReactDOM.findDOMNode(this));
if (!trayEl.is(e.target) && trayEl.has(e.target).length === 0) {
this.toggleTray();
@@ -1385,11 +1388,11 @@ function (app, FauxtonAPI, React, Stores, FauxtonComponents, ace, beautifyHelper
ApiBarController: ApiBarController,
renderMenuDropDown: function (el, opts) {
- React.render(<MenuDropDown icon="fonticon-cog" links={opts.links} />, el);
+ ReactDOM.render(<MenuDropDown icon="fonticon-cog" links={opts.links} />, el);
},
removeMenuDropDown: function (el) {
- React.unmountComponentAtNode(el);
+ ReactDOM.unmountComponentAtNode(el);
},
};
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/components/tests/apiBarControllerSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/components/tests/apiBarControllerSpec.react.jsx b/app/addons/components/tests/apiBarControllerSpec.react.jsx
index 3f516d8..4ca4b5d 100644
--- a/app/addons/components/tests/apiBarControllerSpec.react.jsx
+++ b/app/addons/components/tests/apiBarControllerSpec.react.jsx
@@ -15,8 +15,9 @@ define([
'addons/components/stores',
'addons/components/react-components.react',
'testUtils',
- 'react'
-], function (FauxtonAPI, Actions, Stores, ReactComponents, utils, React) {
+ 'react',
+ 'react-dom'
+], function (FauxtonAPI, Actions, Stores, ReactComponents, utils, React, ReactDOM) {
var assert = utils.assert;
var TestUtils = React.addons.TestUtils;
@@ -32,7 +33,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
componentStore.reset();
});
@@ -83,16 +84,16 @@ define([
var el = TestUtils.renderIntoDocument(<ApiBarController />, container);
Actions.updateAPIBar({ visible: true, endpoint: 'http://link.com', docURL: 'http://doc.com' });
- TestUtils.Simulate.click($(el.getDOMNode()).find('.control-toggle-api-url')[0]);
- assert.equal($(el.getDOMNode()).find('.help-link').length, 1);
+ TestUtils.Simulate.click($(ReactDOM.findDOMNode(el)).find('.control-toggle-api-url')[0]);
+ assert.equal($(ReactDOM.findDOMNode(el)).find('.help-link').length, 1);
});
it('Confirm doc link icon doesn\'t appear with no docURL', function () {
var el = TestUtils.renderIntoDocument(<ApiBarController />, container);
Actions.updateAPIBar({ visible: true, endpoint: 'http://link.com', docURL: null });
- TestUtils.Simulate.click($(el.getDOMNode()).find('.control-toggle-api-url')[0]);
- assert.equal($(el.getDOMNode()).find('.help-link').length, 0);
+ TestUtils.Simulate.click($(ReactDOM.findDOMNode(el)).find('.control-toggle-api-url')[0]);
+ assert.equal($(ReactDOM.findDOMNode(el)).find('.help-link').length, 0);
});
it('Confirm endpoint appears in markup', function () {
@@ -100,8 +101,8 @@ define([
var link = 'http://booyah.ca';
Actions.updateAPIBar({ visible: true, endpoint: link, docURL: null });
- TestUtils.Simulate.click($(el.getDOMNode()).find('.control-toggle-api-url')[0]);
- assert.equal($(el.getDOMNode()).find('.text-field-to-copy').val(), link);
+ TestUtils.Simulate.click($(ReactDOM.findDOMNode(el)).find('.control-toggle-api-url')[0]);
+ assert.equal($(ReactDOM.findDOMNode(el)).find('.text-field-to-copy').val(), link);
});
it('Confirm endpoint is updated in markup', function () {
@@ -109,12 +110,12 @@ define([
var link = 'http://booyah.ca';
Actions.updateAPIBar({ visible: true, endpoint: link, docURL: null });
- TestUtils.Simulate.click($(el.getDOMNode()).find('.control-toggle-api-url')[0]);
- assert.equal($(el.getDOMNode()).find('.text-field-to-copy').val(), link);
+ TestUtils.Simulate.click($(ReactDOM.findDOMNode(el)).find('.control-toggle-api-url')[0]);
+ assert.equal($(ReactDOM.findDOMNode(el)).find('.text-field-to-copy').val(), link);
var newLink = 'http://chickensarenoisy.com';
Actions.updateAPIBar({ endpoint: newLink });
- assert.equal($(el.getDOMNode()).find('.text-field-to-copy').val(), newLink);
+ assert.equal($(ReactDOM.findDOMNode(el)).find('.text-field-to-copy').val(), newLink);
});
it('Confirm doc URL is updated in markup after a change', function () {
@@ -122,12 +123,12 @@ define([
var docLink = 'http://mydoc.org';
Actions.updateAPIBar({ visible: true, endpoint: 'http://whatever.com', docURL: docLink });
- TestUtils.Simulate.click($(el.getDOMNode()).find('.control-toggle-api-url')[0]);
- assert.equal($(el.getDOMNode()).find('.help-link').attr('href'), docLink);
+ TestUtils.Simulate.click($(ReactDOM.findDOMNode(el)).find('.control-toggle-api-url')[0]);
+ assert.equal($(ReactDOM.findDOMNode(el)).find('.help-link').attr('href'), docLink);
var newDocLink = 'http://newawesomedoclink.xxx';
Actions.updateAPIBar({ docURL: newDocLink });
- assert.equal($(el.getDOMNode()).find('.help-link').attr('href'), newDocLink);
+ assert.equal($(ReactDOM.findDOMNode(el)).find('.help-link').attr('href'), newDocLink);
});
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/components/tests/beautifySpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/components/tests/beautifySpec.react.jsx b/app/addons/components/tests/beautifySpec.react.jsx
index 92260cb..17d106d 100644
--- a/app/addons/components/tests/beautifySpec.react.jsx
+++ b/app/addons/components/tests/beautifySpec.react.jsx
@@ -12,10 +12,10 @@
define([
'api',
'addons/components/react-components.react',
-
'testUtils',
- 'react'
-], function (FauxtonAPI, ReactComponents, utils, React) {
+ 'react',
+ 'react-dom'
+], function (FauxtonAPI, ReactComponents, utils, React, ReactDOM) {
var assert = utils.assert;
var TestUtils = React.addons.TestUtils;
@@ -28,7 +28,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('should be empty for multi-lined code', function () {
@@ -37,13 +37,13 @@ define([
<ReactComponents.Beautify code={correctCode}/>,
container
);
- assert.ok(_.isNull(beautifyEl.getDOMNode()));
+ assert.ok(_.isNull(ReactDOM.findDOMNode(beautifyEl)));
});
it('should have button to beautify for single line code', function () {
var badCode = 'function () { console.log("hello"); }';
beautifyEl = TestUtils.renderIntoDocument(<ReactComponents.Beautify code={badCode}/>, container);
- assert.ok($(beautifyEl.getDOMNode()).hasClass('beautify'));
+ assert.ok($(ReactDOM.findDOMNode(beautifyEl)).hasClass('beautify'));
});
it('on click beautifies code', function () {
@@ -61,7 +61,7 @@ define([
noOfLines={1}/>,
container
);
- TestUtils.Simulate.click(beautifyEl.getDOMNode());
+ TestUtils.Simulate.click(ReactDOM.findDOMNode(beautifyEl));
assert.equal(fixedCode, correctCode);
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/components/tests/codeEditorPanelSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/components/tests/codeEditorPanelSpec.react.jsx b/app/addons/components/tests/codeEditorPanelSpec.react.jsx
index a2a1dcd..98252b5 100644
--- a/app/addons/components/tests/codeEditorPanelSpec.react.jsx
+++ b/app/addons/components/tests/codeEditorPanelSpec.react.jsx
@@ -13,8 +13,9 @@ define([
'api',
'addons/components/react-components.react',
'testUtils',
- 'react'
-], function (FauxtonAPI, ReactComponents, utils, React) {
+ 'react',
+ 'react-dom'
+], function (FauxtonAPI, ReactComponents, utils, React, ReactDOM) {
var assert = utils.assert;
var TestUtils = React.addons.TestUtils;
@@ -30,7 +31,7 @@ define([
<ReactComponents.CodeEditorPanel defaultCode={code} />,
container
);
- assert.equal($(codeEditorEl.getDOMNode()).find('.icon-question-sign').length, 0);
+ assert.equal($(ReactDOM.findDOMNode(codeEditorEl)).find('.icon-question-sign').length, 0);
});
it('hidden by default', function () {
var container = document.createElement('div');
@@ -38,7 +39,7 @@ define([
<ReactComponents.CodeEditorPanel defaultCode={code} docLink="http://link.com" />,
container
);
- assert.equal($(codeEditorEl.getDOMNode()).find('.icon-question-sign').length, 1);
+ assert.equal($(ReactDOM.findDOMNode(codeEditorEl)).find('.icon-question-sign').length, 1);
});
});
@@ -49,7 +50,7 @@ define([
<ReactComponents.CodeEditorPanel defaultCode={code} />,
container
);
- assert.equal($(codeEditorEl.getDOMNode()).find('.zen-editor-icon').length, 1);
+ assert.equal($(ReactDOM.findDOMNode(codeEditorEl)).find('.zen-editor-icon').length, 1);
});
it('omits zen mode if explicitly turned off', function () {
@@ -58,7 +59,7 @@ define([
<ReactComponents.CodeEditor defaultCode={code} allowZenMode={false} />,
container
);
- assert.equal($(codeEditorEl.getDOMNode()).find('.zen-editor-icon').length, 0);
+ assert.equal($(ReactDOM.findDOMNode(codeEditorEl)).find('.zen-editor-icon').length, 0);
});
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/components/tests/codeEditorSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/components/tests/codeEditorSpec.react.jsx b/app/addons/components/tests/codeEditorSpec.react.jsx
index ee3dbd5..3ba5ce7 100644
--- a/app/addons/components/tests/codeEditorSpec.react.jsx
+++ b/app/addons/components/tests/codeEditorSpec.react.jsx
@@ -13,8 +13,9 @@ define([
'api',
'addons/components/react-components.react',
'testUtils',
- 'react'
-], function (FauxtonAPI, ReactComponents, utils, React) {
+ 'react',
+ 'react-dom'
+], function (FauxtonAPI, ReactComponents, utils, React, ReactDOM) {
var assert = utils.assert;
var TestUtils = React.addons.TestUtils;
@@ -39,7 +40,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
describe('Tracking edits', function () {
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/components/tests/confirmButtonSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/components/tests/confirmButtonSpec.react.jsx b/app/addons/components/tests/confirmButtonSpec.react.jsx
index d4d428a..d650c59 100644
--- a/app/addons/components/tests/confirmButtonSpec.react.jsx
+++ b/app/addons/components/tests/confirmButtonSpec.react.jsx
@@ -12,10 +12,10 @@
define([
'api',
'addons/components/react-components.react',
-
'testUtils',
- 'react'
-], function (FauxtonAPI, ReactComponents, utils, React) {
+ 'react',
+ 'react-dom'
+], function (FauxtonAPI, ReactComponents, utils, React, ReactDOM) {
var assert = utils.assert;
var TestUtils = React.addons.TestUtils;
@@ -27,7 +27,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('should render text properties', function () {
@@ -35,7 +35,7 @@ define([
<ReactComponents.ConfirmButton text="Click here to render Rocko Artischocko" />,
container
);
- assert.equal($(button.getDOMNode()).text(), 'Click here to render Rocko Artischocko');
+ assert.equal($(ReactDOM.findDOMNode(button)).text(), 'Click here to render Rocko Artischocko');
});
it('should use onClick handler if provided', function () {
@@ -46,7 +46,7 @@ define([
container
);
- React.addons.TestUtils.Simulate.click(button.getDOMNode());
+ React.addons.TestUtils.Simulate.click(ReactDOM.findDOMNode(button));
assert.ok(spy.calledOnce);
});
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/components/tests/docSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/components/tests/docSpec.react.jsx b/app/addons/components/tests/docSpec.react.jsx
index a931019..a013cb0 100644
--- a/app/addons/components/tests/docSpec.react.jsx
+++ b/app/addons/components/tests/docSpec.react.jsx
@@ -12,10 +12,10 @@
define([
'api',
'addons/components/react-components.react',
-
'testUtils',
- 'react'
-], function (FauxtonAPI, ReactComponents, utils, React) {
+ 'react',
+ 'react-dom'
+], function (FauxtonAPI, ReactComponents, utils, React, ReactDOM) {
var assert = utils.assert;
var TestUtils = React.addons.TestUtils;
@@ -28,7 +28,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('hosts child elements', function () {
@@ -38,7 +38,7 @@ define([
</ReactComponents.Document>,
container
);
- assert.ok($(el.getDOMNode()).find('.foo-children').length);
+ assert.ok($(ReactDOM.findDOMNode(el)).find('.foo-children').length);
});
it('does not require child elements', function () {
@@ -46,7 +46,7 @@ define([
<ReactComponents.Document />,
container
);
- assert.notOk($(el.getDOMNode()).find('.doc-edit-symbol').length);
+ assert.notOk($(ReactDOM.findDOMNode(el)).find('.doc-edit-symbol').length);
});
it('you can check it', function () {
@@ -54,7 +54,7 @@ define([
<ReactComponents.Document isDeletable={true} checked={true} docIdentifier="foo" />,
container
);
- assert.equal($(el.getDOMNode()).find('input[type="checkbox"]').attr('checked'), 'checked');
+ assert.equal($(ReactDOM.findDOMNode(el)).find('input[type="checkbox"]').attr('checked'), 'checked');
});
it('you can uncheck it', function () {
@@ -62,7 +62,7 @@ define([
<ReactComponents.Document isDeletable={true} docIdentifier="foo" />,
container
);
- assert.equal($(el.getDOMNode()).find('input[type="checkbox"]').attr('checked'), undefined);
+ assert.equal($(ReactDOM.findDOMNode(el)).find('input[type="checkbox"]').attr('checked'), undefined);
});
it('it calls an onchange callback', function () {
@@ -72,7 +72,7 @@ define([
<ReactComponents.Document doc={{id: "foo"}} isDeletable={true} docChecked={spy} docIdentifier="foo" />,
container
);
- var testEl = $(el.getDOMNode()).find('input[type="checkbox"]')[0];
+ var testEl = $(ReactDOM.findDOMNode(el)).find('input[type="checkbox"]')[0];
React.addons.TestUtils.Simulate.change(testEl, {target: {value: 'Hello, world'}});
assert.ok(spy.calledOnce);
});
@@ -84,7 +84,7 @@ define([
<ReactComponents.Document isDeletable={true} onDoubleClick={spy} docIdentifier="foo" />,
container
);
- React.addons.TestUtils.Simulate.doubleClick(el.getDOMNode());
+ React.addons.TestUtils.Simulate.doubleClick(ReactDOM.findDOMNode(el));
assert.ok(spy.calledOnce);
});
@@ -95,8 +95,8 @@ define([
<ReactComponents.Document isDeletable={false} onDoubleClick={spy} docIdentifier="foo" />,
container
);
- assert.notOk($(el.getDOMNode()).find('input[type="checkbox"]').length);
- assert.ok($(el.getDOMNode()).find('.checkbox-dummy').length);
+ assert.notOk($(ReactDOM.findDOMNode(el)).find('input[type="checkbox"]').length);
+ assert.ok($(ReactDOM.findDOMNode(el)).find('.checkbox-dummy').length);
});
it('contains a doc-data element when there\'s doc content', function () {
@@ -104,7 +104,7 @@ define([
<ReactComponents.Document isDeletable={true} checked={true} docIdentifier="foo" docContent='{ "content": true }' />,
container
);
- assert.equal(1, $(el.getDOMNode()).find('.doc-data').length);
+ assert.equal(1, $(ReactDOM.findDOMNode(el)).find('.doc-data').length);
});
it('doesn\'t contain a doc-data element when there\'s no doc content', function () {
@@ -112,7 +112,7 @@ define([
<ReactComponents.Document isDeletable={true} checked={true} docIdentifier="foo" docContent='' />,
container
);
- assert.equal(0, $(el.getDOMNode()).find('.doc-data').length);
+ assert.equal(0, $(ReactDOM.findDOMNode(el)).find('.doc-data').length);
});
it('allows empty headers', function () {
@@ -120,7 +120,7 @@ define([
<ReactComponents.Document header={null} isDeletable={true} checked={true} docIdentifier="foo" docContent='' />,
container
);
- assert.equal('', $(el.getDOMNode()).find('.header-doc-id').text());
+ assert.equal('', $(ReactDOM.findDOMNode(el)).find('.header-doc-id').text());
});
it('allows supports headers with "', function () {
@@ -128,7 +128,7 @@ define([
<ReactComponents.Document header="foo" isDeletable={true} checked={true} docIdentifier="foo" docContent='' />,
container
);
- assert.equal('"foo"', $(el.getDOMNode()).find('.header-doc-id').text());
+ assert.equal('"foo"', $(ReactDOM.findDOMNode(el)).find('.header-doc-id').text());
});
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/components/tests/headerTogglebuttonSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/components/tests/headerTogglebuttonSpec.react.jsx b/app/addons/components/tests/headerTogglebuttonSpec.react.jsx
index 14523f3..6ce0776 100644
--- a/app/addons/components/tests/headerTogglebuttonSpec.react.jsx
+++ b/app/addons/components/tests/headerTogglebuttonSpec.react.jsx
@@ -12,10 +12,10 @@
define([
'api',
'addons/components/react-components.react',
-
'testUtils',
- 'react'
-], function (FauxtonAPI, ReactComponents, utils, React) {
+ 'react',
+ 'react-dom'
+], function (FauxtonAPI, ReactComponents, utils, React, ReactDOM) {
var assert = utils.assert;
var TestUtils = React.addons.TestUtils;
@@ -30,11 +30,11 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('should call the passed callback', function () {
- TestUtils.Simulate.click(toggleEl.getDOMNode());
+ TestUtils.Simulate.click(ReactDOM.findDOMNode(toggleEl));
assert.ok(toggleCallback.calledOnce);
});
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/components/tests/paddedBorderedBoxSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/components/tests/paddedBorderedBoxSpec.react.jsx b/app/addons/components/tests/paddedBorderedBoxSpec.react.jsx
index b262bc3..a0e2866 100644
--- a/app/addons/components/tests/paddedBorderedBoxSpec.react.jsx
+++ b/app/addons/components/tests/paddedBorderedBoxSpec.react.jsx
@@ -12,10 +12,10 @@
define([
'api',
'addons/components/react-components.react',
-
'testUtils',
- 'react'
-], function (FauxtonAPI, ReactComponents, utils, React) {
+ 'react',
+ 'react-dom'
+], function (FauxtonAPI, ReactComponents, utils, React, ReactDOM) {
var assert = utils.assert;
var TestUtils = React.addons.TestUtils;
@@ -28,7 +28,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('hosts child elements', function () {
@@ -38,7 +38,7 @@ define([
</ReactComponents.PaddedBorderedBox>,
container
);
- assert.ok($(el.getDOMNode()).find('.foo-children').length);
+ assert.ok($(ReactDOM.findDOMNode(el)).find('.foo-children').length);
});
});
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/components/tests/stringEditModalSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/components/tests/stringEditModalSpec.react.jsx b/app/addons/components/tests/stringEditModalSpec.react.jsx
index bc1fd71..188581c 100644
--- a/app/addons/components/tests/stringEditModalSpec.react.jsx
+++ b/app/addons/components/tests/stringEditModalSpec.react.jsx
@@ -14,8 +14,9 @@ define([
'addons/components/react-components.react',
'libs/react-bootstrap',
'testUtils',
- 'react'
-], function (FauxtonAPI, ReactComponents, ReactBootstrap, utils, React) {
+ 'react',
+ 'react-dom'
+], function (FauxtonAPI, ReactComponents, ReactBootstrap, utils, React, ReactDOM) {
var assert = utils.assert;
var TestUtils = React.addons.TestUtils;
@@ -31,34 +32,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
- });
-
- describe('event methods called', function () {
- it('onClose called by top (x)', function () {
- var spy = sinon.spy();
- el = TestUtils.renderIntoDocument(
- <ReactComponents.StringEditModal visible={true} onClose={spy} onSave={stub} />,
- container
- );
- var modal = TestUtils.findRenderedComponentWithType(el, Modal);
- var modalEl = React.findDOMNode(modal.refs.modal);
-
- TestUtils.Simulate.click($(modalEl).find('.close')[0]);
- assert.ok(spy.calledOnce);
- });
-
- it('onClose called by cancel button', function () {
- var spy = sinon.spy();
- el = TestUtils.renderIntoDocument(
- <ReactComponents.StringEditModal visible={true} onClose={spy} onSave={stub} />,
- container
- );
- var modal = TestUtils.findRenderedComponentWithType(el, Modal);
- var modalEl = React.findDOMNode(modal.refs.modal);
- TestUtils.Simulate.click($(modalEl).find('.cancel-button')[0]);
- assert.ok(spy.calledOnce);
- });
+ ReactDOM.unmountComponentAtNode(container);
});
describe('onSave', function () {
@@ -69,28 +43,11 @@ define([
<ReactComponents.StringEditModal visible={true} onClose={stub} onSave={spy} value={string} />,
container
);
- var modal = TestUtils.findRenderedComponentWithType(el, Modal);
- var modalEl = React.findDOMNode(modal.refs.modal);
-
- TestUtils.Simulate.click($(modalEl).find('#string-edit-save-btn')[0]);
+ TestUtils.Simulate.click($('body').find('#string-edit-save-btn')[0]);
assert.ok(spy.calledOnce);
assert.ok(spy.calledWith(string));
});
-
- it('replaces "\\n" with actual newlines', function () {
- var spy = sinon.spy();
- var string = 'I am a string\\nwith\\nlinebreaks\\nin\\nit';
- el = TestUtils.renderIntoDocument(
- <ReactComponents.StringEditModal visible={true} onSave={spy} value={string} />,
- container
- );
-
- var modal = TestUtils.findRenderedComponentWithType(el, Modal);
- var modalEl = React.findDOMNode(modal.refs.modal);
-
- TestUtils.Simulate.click($(modalEl).find('#string-edit-save-btn')[0]);
- assert.ok(spy.calledOnce);
- });
});
});
+
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/components/tests/styledSelectSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/components/tests/styledSelectSpec.react.jsx b/app/addons/components/tests/styledSelectSpec.react.jsx
index 7a3328a..94e0028 100644
--- a/app/addons/components/tests/styledSelectSpec.react.jsx
+++ b/app/addons/components/tests/styledSelectSpec.react.jsx
@@ -12,10 +12,10 @@
define([
'api',
'addons/components/react-components.react',
-
'testUtils',
- 'react'
-], function (FauxtonAPI, ReactComponents, utils, React) {
+ 'react',
+ 'react-dom'
+], function (FauxtonAPI, ReactComponents, utils, React, ReactDOM) {
var assert = utils.assert;
var TestUtils = React.addons.TestUtils;
@@ -44,11 +44,11 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('calls the callback on select', function () {
- TestUtils.Simulate.change($(selectorEl.getDOMNode()).find('#new-ddoc')[0], {
+ TestUtils.Simulate.change($(ReactDOM.findDOMNode(selectorEl)).find('#new-ddoc')[0], {
target: {
value: 'new'
}
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/components/tests/zenModeSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/components/tests/zenModeSpec.react.jsx b/app/addons/components/tests/zenModeSpec.react.jsx
index ec742d4..7895454 100644
--- a/app/addons/components/tests/zenModeSpec.react.jsx
+++ b/app/addons/components/tests/zenModeSpec.react.jsx
@@ -13,8 +13,9 @@ define([
'api',
'addons/components/react-components.react',
'testUtils',
- 'react'
-], function (FauxtonAPI, ReactComponents, utils, React) {
+ 'react',
+ 'react-dom'
+], function (FauxtonAPI, ReactComponents, utils, React, ReactDOM) {
var assert = utils.assert;
var TestUtils = React.addons.TestUtils;
@@ -33,26 +34,26 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
window.localStorage.removeItem('zenTheme');
});
describe('Toggle theme', function () {
it('defaults to dark theme', function () {
- assert.ok($(el.getDOMNode()).hasClass('zen-theme-dark'));
+ assert.ok($(ReactDOM.findDOMNode(el)).hasClass('zen-theme-dark'));
});
it('switch to light theme on click', function () {
- TestUtils.Simulate.click($(el.getDOMNode()).find('.js-toggle-theme')[0]);
- assert.ok($(el.getDOMNode()).hasClass('zen-theme-light'));
+ TestUtils.Simulate.click($(ReactDOM.findDOMNode(el)).find('.js-toggle-theme')[0]);
+ assert.ok($(ReactDOM.findDOMNode(el)).hasClass('zen-theme-light'));
// reset
- TestUtils.Simulate.click($(el.getDOMNode()).find('.js-toggle-theme')[0]);
+ TestUtils.Simulate.click($(ReactDOM.findDOMNode(el)).find('.js-toggle-theme')[0]);
});
});
describe('Closing zen mode', function () {
it('method called', function () {
- TestUtils.Simulate.click($(el.getDOMNode()).find('.js-exit-zen-mode')[0]);
+ TestUtils.Simulate.click($(ReactDOM.findDOMNode(el)).find('.js-exit-zen-mode')[0]);
assert.ok(spy.calledOnce);
});
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/cors/tests/componentsSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/cors/tests/componentsSpec.react.jsx b/app/addons/cors/tests/componentsSpec.react.jsx
index 7bd5762..dd76ff3 100644
--- a/app/addons/cors/tests/componentsSpec.react.jsx
+++ b/app/addons/cors/tests/componentsSpec.react.jsx
@@ -16,8 +16,9 @@ define([
'addons/cors/resources',
'addons/cors/stores',
'testUtils',
- "react"
-], function (FauxtonAPI, Views, Actions, Resources, Stores, utils, React) {
+ "react",
+ 'react-dom'
+], function (FauxtonAPI, Views, Actions, Resources, Stores, utils, React, ReactDOM) {
FauxtonAPI.router = new FauxtonAPI.Router([]);
var assert = utils.assert;
@@ -45,7 +46,7 @@ define([
utils.restore(Actions.toggleLoadingBarsToEnabled);
utils.restore(corsEl.save);
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
window.confirm.restore && window.confirm.restore();
});
@@ -92,13 +93,13 @@ define([
it('shows loading bars', function () {
Actions.toggleLoadingBarsToEnabled(true);
- assert.equal($(corsEl.getDOMNode()).find('.loading-lines').length, 1);
+ assert.equal($(ReactDOM.findDOMNode(corsEl)).find('.loading-lines').length, 1);
});
it('hides loading bars', function () {
Actions.toggleLoadingBarsToEnabled(false);
- assert.equal($(corsEl.getDOMNode()).find('.loading-lines').length, 0);
+ assert.equal($(ReactDOM.findDOMNode(corsEl)).find('.loading-lines').length, 0);
});
});
@@ -115,26 +116,26 @@ define([
afterEach(function () {
utils.restore(Resources.validateCORSDomain);
utils.restore(FauxtonAPI.addNotification);
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('calls validates each domain', function () {
var spy = sinon.spy(Resources, 'validateCORSDomain');
- TestUtils.Simulate.change($(inputEl.getDOMNode()).find('input')[0], {target: {value: newOrigin}});
- TestUtils.Simulate.click($(inputEl.getDOMNode()).find('.btn')[0]);
+ TestUtils.Simulate.change($(ReactDOM.findDOMNode(inputEl)).find('input')[0], {target: {value: newOrigin}});
+ TestUtils.Simulate.click($(ReactDOM.findDOMNode(inputEl)).find('.btn')[0]);
assert.ok(spy.calledWith(newOrigin));
});
it('calls addOrigin on add click with valid domain', function () {
- TestUtils.Simulate.change($(inputEl.getDOMNode()).find('input')[0], {target: {value: newOrigin}});
- TestUtils.Simulate.click($(inputEl.getDOMNode()).find('.btn')[0]);
+ TestUtils.Simulate.change($(ReactDOM.findDOMNode(inputEl)).find('input')[0], {target: {value: newOrigin}});
+ TestUtils.Simulate.click($(ReactDOM.findDOMNode(inputEl)).find('.btn')[0]);
assert.ok(addOrigin.calledWith(newOrigin));
});
it('shows notification if origin is not valid', function () {
var spy = sinon.spy(FauxtonAPI, 'addNotification');
- TestUtils.Simulate.change($(inputEl.getDOMNode()).find('input')[0], {target: {value: 'badOrigin'}});
- TestUtils.Simulate.click($(inputEl.getDOMNode()).find('.btn')[0]);
+ TestUtils.Simulate.change($(ReactDOM.findDOMNode(inputEl)).find('input')[0], {target: {value: 'badOrigin'}});
+ TestUtils.Simulate.click($(ReactDOM.findDOMNode(inputEl)).find('.btn')[0]);
assert.ok(spy.calledOnce);
});
});
@@ -149,11 +150,11 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('calls change Origin on all origins selected', function () {
- TestUtils.Simulate.change($(originEl.getDOMNode()).find('input[value="all"]')[0]);
+ TestUtils.Simulate.change($(ReactDOM.findDOMNode(originEl)).find('input[value="all"]')[0]);
assert.ok(changeOrigin.calledWith(true));
});
@@ -165,7 +166,7 @@ define([
//1. render radio buttons with 'all origins'
originEl = TestUtils.renderIntoDocument(<Views.Origins corsEnabled={true} isAllOrigins={true} originChange={changeOrigin}/>, container);
//2. switch back to 'select origins'
- TestUtils.Simulate.change($(originEl.getDOMNode()).find('input[value="selected"]')[0]);
+ TestUtils.Simulate.change($(ReactDOM.findDOMNode(originEl)).find('input[value="selected"]')[0]);
assert.ok(changeOrigin.calledWith(false));
});
});
@@ -185,14 +186,14 @@ define([
afterEach(function () {
window.confirm.restore && window.confirm.restore();
Actions.deleteOrigin.restore && Actions.deleteOrigin.restore();
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('should confirm on delete', function () {
var stub = sinon.stub(window, 'confirm');
stub.returns(true);
- TestUtils.Simulate.click($(originTableEl.getDOMNode()).find('.fonticon-trash')[0]);
+ TestUtils.Simulate.click($(ReactDOM.findDOMNode(originTableEl)).find('.fonticon-trash')[0]);
assert.ok(stub.calledOnce);
});
@@ -210,43 +211,43 @@ define([
it('should deleteOrigin on confirm true', function () {
var stub = sinon.stub(window, 'confirm');
stub.returns(true);
- TestUtils.Simulate.click($(originTableEl.getDOMNode()).find('.fonticon-trash')[0]);
+ TestUtils.Simulate.click($(ReactDOM.findDOMNode(originTableEl)).find('.fonticon-trash')[0]);
assert.ok(deleteOrigin.calledWith(origin));
});
it('should not deleteOrigin on confirm false', function () {
var stub = sinon.stub(window, 'confirm');
stub.returns(false);
- TestUtils.Simulate.click($(originTableEl.getDOMNode()).find('.fonticon-trash')[0]);
+ TestUtils.Simulate.click($(ReactDOM.findDOMNode(originTableEl)).find('.fonticon-trash')[0]);
assert.notOk(deleteOrigin.calledOnce);
});
it('should change origin to input on edit click', function () {
- TestUtils.Simulate.click($(originTableEl.getDOMNode()).find('.fonticon-pencil')[0]);
- assert.ok($(originTableEl.getDOMNode()).find('input').length === 1);
+ TestUtils.Simulate.click($(ReactDOM.findDOMNode(originTableEl)).find('.fonticon-pencil')[0]);
+ assert.ok($(ReactDOM.findDOMNode(originTableEl)).find('input').length === 1);
});
it('should update origin on update clicked', function () {
var updatedOrigin = 'https://updated-origin.com';
- TestUtils.Simulate.click($(originTableEl.getDOMNode()).find('.fonticon-pencil')[0]);
- TestUtils.Simulate.change($(originTableEl.getDOMNode()).find('input')[0], {
+ TestUtils.Simulate.click($(ReactDOM.findDOMNode(originTableEl)).find('.fonticon-pencil')[0]);
+ TestUtils.Simulate.change($(ReactDOM.findDOMNode(originTableEl)).find('input')[0], {
target: {
value: updatedOrigin
}
});
- TestUtils.Simulate.click($(originTableEl.getDOMNode()).find('.btn')[0]);
+ TestUtils.Simulate.click($(ReactDOM.findDOMNode(originTableEl)).find('.btn')[0]);
assert.ok(updateOrigin.calledWith(updatedOrigin));
});
it('should not update origin on update clicked with bad origin', function () {
var updatedOrigin = 'updated-origin';
- TestUtils.Simulate.click($(originTableEl.getDOMNode()).find('.fonticon-pencil')[0]);
- TestUtils.Simulate.change($(originTableEl.getDOMNode()).find('input')[0], {
+ TestUtils.Simulate.click($(ReactDOM.findDOMNode(originTableEl)).find('.fonticon-pencil')[0]);
+ TestUtils.Simulate.change($(ReactDOM.findDOMNode(originTableEl)).find('input')[0], {
target: {
value: updatedOrigin
}
});
- TestUtils.Simulate.click($(originTableEl.getDOMNode()).find('.btn')[0]);
+ TestUtils.Simulate.click($(ReactDOM.findDOMNode(originTableEl)).find('.btn')[0]);
assert.notOk(updateOrigin.calledOnce);
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/databases/components.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/databases/components.react.jsx b/app/addons/databases/components.react.jsx
index 98e85be..05e4b45 100644
--- a/app/addons/databases/components.react.jsx
+++ b/app/addons/databases/components.react.jsx
@@ -14,13 +14,14 @@ define([
'app',
'api',
'react',
+ 'react-dom',
'addons/components/react-components.react',
'addons/fauxton/components.react',
'addons/databases/stores',
'addons/databases/resources',
'addons/databases/actions',
'helpers'
-], function (app, FauxtonAPI, React, Components, ComponentsReact, Stores, Resources, Actions, Helpers) {
+], function (app, FauxtonAPI, React, ReactDOM, Components, ComponentsReact, Stores, Resources, Actions, Helpers) {
var ToggleHeaderButton = Components.ToggleHeaderButton;
var databasesStore = Stores.databasesStore;
@@ -89,12 +90,14 @@ define([
<div className="view">
<table className="databases table table-striped">
<thead>
- <th>Name</th>
- <th>Size</th>
- <th># of Docs</th>
- <th>Update Seq</th>
- {this.getExtensionColumns()}
- <th>Actions</th>
+ <tr>
+ <th>Name</th>
+ <th>Size</th>
+ <th># of Docs</th>
+ <th>Update Seq</th>
+ {this.getExtensionColumns()}
+ <th>Actions</th>
+ </tr>
</thead>
<tbody>
{rows}
@@ -170,7 +173,7 @@ define([
var GraveyardInfo = React.createClass({
componentDidMount: function () {
- $(React.findDOMNode(this.refs.myself)).tooltip();
+ $(ReactDOM.findDOMNode(this.refs.myself)).tooltip();
},
render: function () {
@@ -204,7 +207,7 @@ define([
this.refs.newDbTray.toggle(function (shown) {
if (shown) {
- React.findDOMNode(this.refs.newDbName).focus();
+ ReactDOM.findDOMNode(this.refs.newDbName).focus();
}
}.bind(this));
},
@@ -222,7 +225,7 @@ define([
},
onAddDatabase: function () {
- var databaseName = React.findDOMNode(this.refs.newDbName).value;
+ var databaseName = ReactDOM.findDOMNode(this.refs.newDbName).value;
Actions.createNewDatabase(databaseName);
},
@@ -265,7 +268,7 @@ define([
},
componentDidUpdate: function () {
- $(React.findDOMNode(this.refs.searchDbName)).typeahead({
+ $(ReactDOM.findDOMNode(this.refs.searchDbName)).typeahead({
source: this.state.databaseNames,
updater: function (item) {
this.jumpToDb(item);
@@ -282,7 +285,7 @@ define([
},
jumpToDb: function (databaseName) {
- databaseName = databaseName || React.findDOMNode(this.refs.searchDbName).value;
+ databaseName = databaseName || ReactDOM.findDOMNode(this.refs.searchDbName).value;
Actions.jumpToDatabase(databaseName);
},
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/databases/tests/componentsSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/databases/tests/componentsSpec.react.jsx b/app/addons/databases/tests/componentsSpec.react.jsx
index 2669b46..f57c5c2 100644
--- a/app/addons/databases/tests/componentsSpec.react.jsx
+++ b/app/addons/databases/tests/componentsSpec.react.jsx
@@ -16,8 +16,9 @@ define([
'addons/databases/actiontypes',
'addons/databases/stores',
'testUtils',
- "react"
-], function (FauxtonAPI, Views, Actions, ActionTypes, Stores, utils, React) {
+ "react",
+ 'react-dom'
+], function (FauxtonAPI, Views, Actions, ActionTypes, Stores, utils, React, ReactDOM) {
var assert = utils.assert;
var TestUtils = React.addons.TestUtils;
@@ -85,12 +86,12 @@ define([
];
};
container = document.createElement('div');
- dbEl = React.render(React.createElement(Views.DatabasesController, {}), container);
+ dbEl = ReactDOM.render(React.createElement(Views.DatabasesController, {}), container);
});
afterEach(function () {
Stores.databasesStore.getCollection = oldGetCollection;
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('renders base data of DBs', function () {
@@ -118,12 +119,12 @@ define([
passedDbName = dbName;
};
container = document.createElement('div');
- addEl = React.render(React.createElement(Views.AddDatabaseWidget, {}), container);
+ addEl = ReactDOM.render(React.createElement(Views.AddDatabaseWidget, {}), container);
});
afterEach(function () {
Actions.createNewDatabase = oldCreateNewDatabase;
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it("Creates a database with given name", function () {
@@ -160,14 +161,14 @@ define([
return ["db1", "db2"];
};
container = document.createElement('div');
- jumpEl = React.render(React.createElement(Views.JumpToDatabaseWidget, {}), container);
+ jumpEl = ReactDOM.render(React.createElement(Views.JumpToDatabaseWidget, {}), container);
});
afterEach(function () {
$ = old$;
Actions.jumpToDatabase = oldJumpToDatabase;
Stores.databasesStore.getDatabaseNames = oldGetDatabaseNames;
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it("Jumps to a database with given name", function () {
@@ -217,14 +218,14 @@ define([
it('uses custom URL prefix on the navigation if passed through props', function () {
var container = document.createElement('div');
var pagination = TestUtils.renderIntoDocument(<Views.DatabasePagination linkPath="_custom_path" />, container);
- var links = $(pagination.getDOMNode()).find('a');
+ var links = $(ReactDOM.findDOMNode(pagination)).find('a');
assert.equal(links.length, 3, 'pagination contains links');
links.each(function () {
assert.include(this.href, '_custom_path', 'link contains custom path');
});
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
});
@@ -236,7 +237,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('adds multiple extra columns if extended', function () {
@@ -255,7 +256,7 @@ define([
FauxtonAPI.registerExtension('DatabaseTable:head', ColHeader3);
var table = TestUtils.renderIntoDocument(<Views.DatabaseTable loading={false} body={[]} />, container);
- var cols = $(table.getDOMNode()).find('th');
+ var cols = $(ReactDOM.findDOMNode(table)).find('th');
// (default # of rows is 5)
assert.equal(cols.length, 8, 'extra columns show up');
@@ -280,7 +281,7 @@ define([
};
var databaseRow = TestUtils.renderIntoDocument(<Views.DatabaseTable body={[row]} />, container);
- var links = $(databaseRow.getDOMNode()).find('td');
+ var links = $(ReactDOM.findDOMNode(databaseRow)).find('td');
// (default # of rows is 5)
assert.equal(links.length, 6, 'extra column shows up');
@@ -301,7 +302,7 @@ define([
};
var databaseRow = TestUtils.renderIntoDocument(<Views.DatabaseTable body={[row]} />, container);
- assert.equal($(databaseRow.getDOMNode()).find('.database-load-fail').length, 1);
+ assert.equal($(ReactDOM.findDOMNode(databaseRow)).find('.database-load-fail').length, 1);
});
it('shows no error if row marked as loaded', function () {
@@ -316,7 +317,7 @@ define([
var databaseRow = TestUtils.renderIntoDocument(<Views.DatabaseTable body={[row]} />, container);
- assert.equal($(databaseRow.getDOMNode()).find('.database-load-fail').length, 0);
+ assert.equal($(ReactDOM.findDOMNode(databaseRow)).find('.database-load-fail').length, 0);
});
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/documents/changes/components.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/documents/changes/components.react.jsx b/app/addons/documents/changes/components.react.jsx
index 9d8ed98..9ba2b57 100644
--- a/app/addons/documents/changes/components.react.jsx
+++ b/app/addons/documents/changes/components.react.jsx
@@ -14,13 +14,14 @@ define([
'app',
'api',
'react',
+ 'react-dom',
'addons/documents/changes/actions',
'addons/documents/changes/stores',
'addons/fauxton/components.react',
'addons/components/react-components.react',
'plugins/prettify'
-], function (app, FauxtonAPI, React, Actions, Stores, Components, ReactComponents) {
+], function (app, FauxtonAPI, React, ReactDOM, Actions, Stores, Components, ReactComponents) {
var changesStore = Stores.changesStore;
var ReactCSSTransitionGroup = React.addons.CSSTransitionGroup;
@@ -64,7 +65,8 @@ define([
return (
<div className="changes-header-section">
<ChangesHeaderTab onToggle={this.toggleFilterSection} />
- <ReactCSSTransitionGroup transitionName="toggle-changes-filter" component="div" className="changes-tab-content">
+ <ReactCSSTransitionGroup transitionName="toggle-changes-filter" component="div" className="changes-tab-content"
+ transitionEnterTimeout={500} transitionLeaveTimeout={300}>
{tabContent}
</ReactCSSTransitionGroup>
</div>
@@ -211,7 +213,7 @@ define([
},
focusFilterField: function () {
- React.findDOMNode(this.refs.addItem).focus();
+ ReactDOM.findDOMNode(this.refs.addItem).focus();
},
onChangeFilter: function (e) {
@@ -248,7 +250,7 @@ define([
var FilterTooltip = React.createClass({
componentDidMount: function () {
if (this.props.tooltip) {
- $(React.findDOMNode(this.refs.tooltip)).tooltip();
+ $(ReactDOM.findDOMNode(this.refs.tooltip)).tooltip();
}
},
@@ -383,7 +385,8 @@ define([
</div>
</div>
- <ReactCSSTransitionGroup transitionName="toggle-changes-code" component="div" className="changesCodeSectionWrapper">
+ <ReactCSSTransitionGroup transitionName="toggle-changes-code" component="div" className="changesCodeSectionWrapper"
+ transitionEnterTimeout={500} transitionLeaveTimeout={300}>
{this.getChangesCode()}
</ReactCSSTransitionGroup>
@@ -416,13 +419,13 @@ define([
return {
renderHeader: function (el) {
- React.render(<ChangesHeaderController />, el);
+ ReactDOM.render(<ChangesHeaderController />, el);
},
renderChanges: function (el) {
- React.render(<ChangesController />, el);
+ ReactDOM.render(<ChangesController />, el);
},
remove: function (el) {
- React.unmountComponentAtNode(el);
+ ReactDOM.unmountComponentAtNode(el);
},
ChangesHeaderController: ChangesHeaderController,
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/documents/changes/tests/changes.componentsSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/documents/changes/tests/changes.componentsSpec.react.jsx b/app/addons/documents/changes/tests/changes.componentsSpec.react.jsx
index 7a3e444..c5f5e62 100644
--- a/app/addons/documents/changes/tests/changes.componentsSpec.react.jsx
+++ b/app/addons/documents/changes/tests/changes.componentsSpec.react.jsx
@@ -14,11 +14,12 @@ define([
'app',
'api',
'react',
+ 'react-dom',
'addons/documents/changes/components.react',
'addons/documents/changes/stores',
'addons/documents/changes/actions',
'testUtils'
-], function (app, FauxtonAPI, React, Changes, Stores, Actions, utils) {
+], function (app, FauxtonAPI, React, ReactDOM, Changes, Stores, Actions, utils) {
FauxtonAPI.router = new FauxtonAPI.Router([]);
var assert = utils.assert;
@@ -47,12 +48,12 @@ define([
afterEach(function () {
spy.restore();
Stores.changesStore.reset();
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
// similar as previous, except it confirms that the action gets fired, not the custom toggle func
it('calls toggleTabVisibility action on selecting a tab', function () {
- TestUtils.Simulate.click($(tab.getDOMNode()).find('a')[0]);
+ TestUtils.Simulate.click($(ReactDOM.findDOMNode(tab)).find('a')[0]);
assert.ok(spy.calledOnce);
});
});
@@ -69,11 +70,11 @@ define([
afterEach(function () {
Stores.changesStore.reset();
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('should call toggle function on clicking tab', function () {
- TestUtils.Simulate.click($(tab.getDOMNode()).find('a')[0]);
+ TestUtils.Simulate.click($(ReactDOM.findDOMNode(tab)).find('a')[0]);
assert.ok(toggleTabVisibility.calledOnce);
});
});
@@ -89,11 +90,11 @@ define([
afterEach(function () {
Stores.changesStore.reset();
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('should add filter markup', function () {
- var $el = $(changesFilterEl.getDOMNode()),
+ var $el = $(ReactDOM.findDOMNode(changesFilterEl)),
submitBtn = $el.find('[type="submit"]')[0],
addItemField = $el.find('.js-changes-filter-field')[0];
@@ -109,7 +110,7 @@ define([
});
it('should call addFilter action on click', function () {
- var $el = $(changesFilterEl.getDOMNode()),
+ var $el = $(ReactDOM.findDOMNode(changesFilterEl)),
submitBtn = $el.find('[type="submit"]')[0],
addItemField = $el.find('.js-changes-filter-field')[0];
@@ -123,7 +124,7 @@ define([
});
it('should remove filter markup', function () {
- var $el = $(changesFilterEl.getDOMNode()),
+ var $el = $(ReactDOM.findDOMNode(changesFilterEl)),
submitBtn = $el.find('[type="submit"]')[0],
addItemField = $el.find('.js-changes-filter-field')[0];
@@ -143,7 +144,7 @@ define([
});
it('should call removeFilter action on click', function () {
- var $el = $(changesFilterEl.getDOMNode()),
+ var $el = $(ReactDOM.findDOMNode(changesFilterEl)),
submitBtn = $el.find('[type="submit"]')[0],
addItemField = $el.find('.js-changes-filter-field')[0];
@@ -158,7 +159,7 @@ define([
});
it('should not add empty filters', function () {
- var $el = $(changesFilterEl.getDOMNode()),
+ var $el = $(ReactDOM.findDOMNode(changesFilterEl)),
submitBtn = $el.find('[type="submit"]')[0],
addItemField = $el.find('.js-changes-filter-field')[0];
@@ -170,11 +171,11 @@ define([
});
it('should not add tooltips by default', function () {
- assert.equal(0, $(changesFilterEl.getDOMNode()).find('.js-remove-filter').length);
+ assert.equal(0, $(ReactDOM.findDOMNode(changesFilterEl)).find('.js-remove-filter').length);
});
it('should not add the same filter twice', function () {
- var $el = $(changesFilterEl.getDOMNode()),
+ var $el = $(ReactDOM.findDOMNode(changesFilterEl)),
submitBtn = $el.find('[type="submit"]')[0],
addItemField = $el.find('.js-changes-filter-field')[0];
@@ -213,16 +214,16 @@ define([
container2 = document.createElement('div');
Actions.initChanges({ databaseName: 'testDatabase' });
headerEl = TestUtils.renderIntoDocument(<Changes.ChangesHeaderController />, container);
- $headerEl = $(headerEl.getDOMNode());
+ $headerEl = $(ReactDOM.findDOMNode(headerEl));
changesEl = TestUtils.renderIntoDocument(<Changes.ChangesController />, container2);
- $changesEl = $(changesEl.getDOMNode());
+ $changesEl = $(ReactDOM.findDOMNode(changesEl));
Actions.updateChanges(changesResponse);
});
afterEach(function () {
Stores.changesStore.reset();
- React.unmountComponentAtNode(container);
- React.unmountComponentAtNode(container2);
+ ReactDOM.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container2);
});
@@ -320,16 +321,16 @@ define([
afterEach(function () {
Stores.changesStore.reset();
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('should truncate the number of results with very large # of changes', function () {
// check there's no more than maxChanges results
- assert.equal(maxChanges, $(changesEl.getDOMNode()).find('.change-box').length);
+ assert.equal(maxChanges, $(ReactDOM.findDOMNode(changesEl)).find('.change-box').length);
});
it('should show a message if the results are truncated', function () {
- assert.equal(1, $(changesEl.getDOMNode()).find('.changes-result-limit').length);
+ assert.equal(1, $(ReactDOM.findDOMNode(changesEl)).find('.changes-result-limit').length);
});
});
@@ -349,7 +350,7 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
@@ -357,23 +358,23 @@ define([
var changeRow = TestUtils.renderIntoDocument(<Changes.ChangeRow change={change} databaseName="testDatabase" />, container);
// confirm it's hidden by default
- assert.equal(0, $(changeRow.getDOMNode()).find('.prettyprint').length);
+ assert.equal(0, $(ReactDOM.findDOMNode(changeRow)).find('.prettyprint').length);
// confirm clicking it shows the element
- TestUtils.Simulate.click($(changeRow.getDOMNode()).find('button.btn')[0]);
- assert.equal(1, $(changeRow.getDOMNode()).find('.prettyprint').length);
+ TestUtils.Simulate.click($(ReactDOM.findDOMNode(changeRow)).find('button.btn')[0]);
+ assert.equal(1, $(ReactDOM.findDOMNode(changeRow)).find('.prettyprint').length);
});
it('deleted docs should not be clickable', function () {
change.deleted = true;
var changeRow = TestUtils.renderIntoDocument(<Changes.ChangeRow change={change} databaseName="testDatabase" />, container);
- assert.equal(0, $(changeRow.getDOMNode()).find('a.js-doc-link').length);
+ assert.equal(0, $(ReactDOM.findDOMNode(changeRow)).find('a.js-doc-link').length);
});
it('non-deleted docs should be clickable', function () {
change.deleted = false;
var changeRow = TestUtils.renderIntoDocument(<Changes.ChangeRow change={change} databaseName="testDatabase" />, container);
- assert.equal(1, $(changeRow.getDOMNode()).find('a.js-doc-link').length);
+ assert.equal(1, $(ReactDOM.findDOMNode(changeRow)).find('a.js-doc-link').length);
});
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/documents/doc-editor/components.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/documents/doc-editor/components.react.jsx b/app/addons/documents/doc-editor/components.react.jsx
index 6e1e051..56ed8d3 100644
--- a/app/addons/documents/doc-editor/components.react.jsx
+++ b/app/addons/documents/doc-editor/components.react.jsx
@@ -2,13 +2,14 @@ define([
'api',
'app',
'react',
+ 'react-dom',
'addons/documents/doc-editor/actions',
'addons/documents/doc-editor/stores',
'addons/fauxton/components.react',
'addons/components/react-components.react',
'libs/react-bootstrap',
'helpers'
-], function (FauxtonAPI, app, React, Actions, Stores, FauxtonComponents, GeneralComponents, ReactBootstrap, Helpers) {
+], function (FauxtonAPI, app, React, ReactDOM, Actions, Stores, FauxtonComponents, GeneralComponents, ReactBootstrap, Helpers) {
var store = Stores.docEditorStore;
var Modal = ReactBootstrap.Modal;
@@ -290,7 +291,7 @@ define([
Actions.uploadAttachment({
doc: this.props.doc,
rev: this.props.doc.get('_rev'),
- files: $(React.findDOMNode(this.refs.attachments))[0].files
+ files: $(ReactDOM.findDOMNode(this.refs.attachments))[0].files
});
},
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/documents/doc-editor/tests/doc-editor.componentsSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/documents/doc-editor/tests/doc-editor.componentsSpec.react.jsx b/app/addons/documents/doc-editor/tests/doc-editor.componentsSpec.react.jsx
index cdbc192..124d101 100644
--- a/app/addons/documents/doc-editor/tests/doc-editor.componentsSpec.react.jsx
+++ b/app/addons/documents/doc-editor/tests/doc-editor.componentsSpec.react.jsx
@@ -14,6 +14,7 @@ define([
'app',
'api',
'react',
+ 'react-dom',
'addons/documents/resources',
'addons/documents/doc-editor/components.react',
'addons/documents/doc-editor/stores',
@@ -22,12 +23,10 @@ define([
'addons/databases/base',
'testUtils',
'libs/react-bootstrap'
-], function (app, FauxtonAPI, React, Documents, Components, Stores, Actions, ActionTypes, Databases, utils,
+], function (app, FauxtonAPI, React, ReactDOM, Documents, Components, Stores, Actions, ActionTypes, Databases, utils,
ReactBoostrap) {
FauxtonAPI.router = new FauxtonAPI.Router([]);
- var Modal = ReactBoostrap.Modal;
-
var assert = utils.assert;
var TestUtils = React.addons.TestUtils;
@@ -71,12 +70,12 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('loading indicator appears on load', function () {
var el = TestUtils.renderIntoDocument(<Components.DocEditorController />, container);
- assert.equal($(el.getDOMNode()).find('.loading-lines').length, 1);
+ assert.equal($(ReactDOM.findDOMNode(el)).find('.loading-lines').length, 1);
});
it('new docs do not show the button row', function () {
@@ -90,10 +89,10 @@ define([
}
});
- assert.equal($(el.getDOMNode()).find('.loading-lines').length, 0);
- assert.equal($(el.getDOMNode()).find('.icon-circle-arrow-up').length, 0);
- assert.equal($(el.getDOMNode()).find('.icon-repeat').length, 0);
- assert.equal($(el.getDOMNode()).find('.icon-trash').length, 0);
+ assert.equal($(ReactDOM.findDOMNode(el)).find('.loading-lines').length, 0);
+ assert.equal($(ReactDOM.findDOMNode(el)).find('.icon-circle-arrow-up').length, 0);
+ assert.equal($(ReactDOM.findDOMNode(el)).find('.icon-repeat').length, 0);
+ assert.equal($(ReactDOM.findDOMNode(el)).find('.icon-trash').length, 0);
});
it('view attachments button does not appear with no attachments', function () {
@@ -106,7 +105,7 @@ define([
doc: doc
}
});
- assert.equal($(el.getDOMNode()).find('.view-attachments-section').length, 0);
+ assert.equal($(ReactDOM.findDOMNode(el)).find('.view-attachments-section').length, 0);
});
it('view attachments button shows up when the doc has attachments', function () {
@@ -119,7 +118,7 @@ define([
doc: doc
}
});
- assert.equal($(el.getDOMNode()).find('.view-attachments-section').length, 1);
+ assert.equal($(ReactDOM.findDOMNode(el)).find('.view-attachments-section').length, 1);
});
it('view attachments dropdown contains right number of docs', function () {
@@ -132,7 +131,7 @@ define([
doc: doc
}
});
- assert.equal($(el.getDOMNode()).find('.view-attachments-section .dropdown-menu li').length, 2);
+ assert.equal($(ReactDOM.findDOMNode(el)).find('.view-attachments-section .dropdown-menu li').length, 2);
});
it('view attachments dropdown contains correct urls', function () {
@@ -146,13 +145,12 @@ define([
}
});
- var attachmentNode = $(el.getDOMNode()).find('.view-attachments-section .dropdown-menu li')[0];
+ var attachmentNode = $(ReactDOM.findDOMNode(el)).find('.view-attachments-section .dropdown-menu li')[0];
var attachmentURLactual = $(attachmentNode).find('a').attr('href');
assert.equal(attachmentURLactual, "../../id/_design/test-doc/one.png");
});
-
it('setting deleteDocModal=true in store shows modal', function () {
var el = TestUtils.renderIntoDocument(<Components.DocEditorController database={database} />, container);
var doc = new Documents.Doc(docWithAttachmentsJSON, { database: database });
@@ -163,14 +161,14 @@ define([
}
});
- // this is unfortunate, but I can't find a better way to do it. Refs won't work for bootstrap modals because
- // they add the modal to the page at the top level outside the component. There are 3 modals in the
- // component: the upload modal, clone modal, delete doc modal. We locate it by index
- var modals = TestUtils.scryRenderedComponentsWithType(el, Modal);
+ // uber-kludgy, but the delete doc modal is a generic dialog used multiple times, so this test first checks
+ // no modal is open, then confirms the open modal contains the delete dialog message
+ assert.equal($('body').find('.confirmation-modal').length, 0);
- assert.equal(React.findDOMNode(modals[2].refs.modal), null);
Actions.showDeleteDocModal();
- assert.notEqual(React.findDOMNode(modals[2].refs.modal), null);
+
+ var modalContent = $('body').find('.confirmation-modal .modal-body p')[0];
+ assert.ok(/Are you sure you want to delete this document\?/.test(modalContent.innerHTML));
});
it('setting uploadDocModal=true in store shows modal', function () {
@@ -182,11 +180,10 @@ define([
doc: doc
}
});
- var modals = TestUtils.scryRenderedComponentsWithType(el, Modal);
- assert.equal(React.findDOMNode(modals[1].refs.modal), null);
+ assert.equal($('body').find('.upload-file-modal').length, 0);
Actions.showUploadModal();
- assert.notEqual(React.findDOMNode(modals[1].refs.modal), null);
+ assert.notEqual($('body').find('.upload-file-modal').length, 0);
});
});
@@ -200,17 +197,17 @@ define([
});
afterEach(function () {
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
it('does not show up when loading', function () {
var el = TestUtils.renderIntoDocument(<Components.AttachmentsPanelButton isLoading={true} doc={doc} />, container);
- assert.equal($(el.getDOMNode()).find('.panel-button').length, 0);
+ assert.equal($(ReactDOM.findDOMNode(el)).find('.panel-button').length, 0);
});
it('shows up after loading', function () {
var el = TestUtils.renderIntoDocument(<Components.AttachmentsPanelButton isLoading={false} doc={doc} />, container);
- assert.equal($(el.getDOMNode()).find('.panel-button').length, 1);
+ assert.equal($(ReactDOM.findDOMNode(el)).find('.panel-button').length, 1);
});
});
@@ -231,12 +228,12 @@ define([
var container = document.createElement('div');
var el = TestUtils.renderIntoDocument(<Components.DocEditorController database={database} />, container);
- assert.isTrue(/Oh\sno\sshe\sdi'n't!/.test(el.getDOMNode().outerHTML));
+ assert.isTrue(/Oh\sno\sshe\sdi'n't!/.test(ReactDOM.findDOMNode(el).outerHTML));
// confirm the database name was also included
- assert.equal($(el.getDOMNode()).find("#testDatabaseName").html(), database.id);
+ assert.equal($(ReactDOM.findDOMNode(el)).find("#testDatabaseName").html(), database.id);
- React.unmountComponentAtNode(container);
+ ReactDOM.unmountComponentAtNode(container);
});
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/documents/helpers.js
----------------------------------------------------------------------
diff --git a/app/addons/documents/helpers.js b/app/addons/documents/helpers.js
index 17d774c..81be185 100644
--- a/app/addons/documents/helpers.js
+++ b/app/addons/documents/helpers.js
@@ -16,7 +16,6 @@ define([
], function (app, FauxtonAPI) {
-
function getPreviousPageForDoc (database, wasCloned) {
var previousPage = database.url('index'), // default to the current database's all_docs page
lastPages = FauxtonAPI.router.lastPages;
@@ -81,12 +80,15 @@ define([
};
}
+ function parseJSON (str) {
+ return JSON.parse('"' + str + '"'); // this ensures newlines are converted
+ }
return {
getPreviousPageForDoc: getPreviousPageForDoc,
getPreviousPage: getPreviousPage,
getSeqNum: getSeqNum,
getNewButtonLinks: getNewButtonLinks,
-
+ parseJSON: parseJSON
};
});
[6/6] fauxton commit: updated refs/heads/master to e6450a0
Posted by be...@apache.org.
Updating React to 0.14.6
Project: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/commit/d0cb3d81
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/tree/d0cb3d81
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/diff/d0cb3d81
Branch: refs/heads/master
Commit: d0cb3d8127b4094b44cbb38e77334664f11fba2d
Parents: 574af6a
Author: Ben Keen <be...@gmail.com>
Authored: Tue Jan 19 09:49:30 2016 -0800
Committer: Ben Keen <be...@gmail.com>
Committed: Mon Feb 1 08:39:35 2016 -0800
----------------------------------------------------------------------
assets/js/libs/react-dom.js | 42 +
assets/js/libs/react.js | 37013 ++++++++++++++++++-------------------
2 files changed, 18108 insertions(+), 18947 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/d0cb3d81/assets/js/libs/react-dom.js
----------------------------------------------------------------------
diff --git a/assets/js/libs/react-dom.js b/assets/js/libs/react-dom.js
new file mode 100644
index 0000000..928ddd4
--- /dev/null
+++ b/assets/js/libs/react-dom.js
@@ -0,0 +1,42 @@
+/**
+ * ReactDOM v0.14.6
+ *
+ * Copyright 2013-2015, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ *
+ */
+// Based off https://github.com/ForbesLindesay/umd/blob/master/template.js
+;(function(f) {
+ // CommonJS
+ if (typeof exports === "object" && typeof module !== "undefined") {
+ module.exports = f(require('react'));
+
+ // RequireJS
+ } else if (typeof define === "function" && define.amd) {
+ define(['react'], f);
+
+ // <script>
+ } else {
+ var g
+ if (typeof window !== "undefined") {
+ g = window;
+ } else if (typeof global !== "undefined") {
+ g = global;
+ } else if (typeof self !== "undefined") {
+ g = self;
+ } else {
+ // works providing we're not in "use strict";
+ // needed for Java 8 Nashorn
+ // see https://github.com/facebook/react/issues/3037
+ g = this;
+ }
+ g.ReactDOM = f(g.React);
+ }
+
+})(function(React) {
+ return React.__SECRET_DOM_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
+});