diff --git a/lib/DataCell.js b/lib/DataCell.js
index 3664bed..13f2c3d 100644
--- a/lib/DataCell.js
+++ b/lib/DataCell.js
@@ -49,7 +49,7 @@ var DataCell = function (_PureComponent) {
}, {
key: 'componentDidUpdate',
value: function componentDidUpdate(prevProps) {
- if (prevProps.editing === true && this.props.editing === false) {
+ if (prevProps.editing === true && this.props.editing === false && this.props.reverting === false) {
this.onChange(this._input.value);
}
if (prevProps.editing === false && this.props.editing === true) {
diff --git a/lib/DataSheet.js b/lib/DataSheet.js
index 9762c42..c6fb0e0 100644
--- a/lib/DataSheet.js
+++ b/lib/DataSheet.js
@@ -34,6 +34,7 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function"
var TAB_KEY = 9;
var ENTER_KEY = 13;
+var ESCAPE_KEY = 27;
var LEFT_KEY = 37;
var UP_KEY = 38;
var RIGHT_KEY = 39;
@@ -81,6 +82,7 @@ var DataSheet = function (_PureComponent) {
selecting: false,
forceEdit: false,
editing: {},
+ reverting: {},
clear: {}
};
_this.state = _this.defaultState;
@@ -231,6 +233,7 @@ var DataSheet = function (_PureComponent) {
var ctrlKeyPressed = e.ctrlKey || e.metaKey;
var deleteKeysPressed = e.keyCode === DELETE_KEY || e.keyCode === BACKSPACE_KEY;
var enterKeyPressed = e.keyCode === ENTER_KEY;
+ var escapeKeyPressed = e.keyCode === ESCAPE_KEY;
var numbersPressed = e.keyCode >= 48 && e.keyCode <= 57;
var lettersPressed = e.keyCode >= 65 && e.keyCode <= 90;
var numPadKeysPressed = e.keyCode >= 96 && e.keyCode <= 105;
@@ -255,15 +258,18 @@ var DataSheet = function (_PureComponent) {
});
e.preventDefault();
} else if (enterKeyPressed && isEditing) {
- this.setState({ editing: {} });
+ this.setState({ editing: {}, reverting: {} });
+ } else if (escapeKeyPressed && isEditing) {
+ this.setState({ editing: {}, reverting: editing });
} else if (enterKeyPressed && !isEditing && !cell.readOnly) {
- this.setState({ editing: start, clear: {}, forceEdit: true });
+ this.setState({ editing: start, clear: {}, reverting: {}, forceEdit: true });
} else if (numbersPressed || numPadKeysPressed || lettersPressed || equationKeysPressed || enterKeyPressed) {
//empty out cell if user starts typing without pressing enter
if (!isEditing && !cell.readOnly) {
this.setState({
editing: start,
clear: start,
+ reverting: {},
forceEdit: false
});
}
@@ -350,6 +356,9 @@ var DataSheet = function (_PureComponent) {
var isEditing = function isEditing(i, j) {
return _this4.state.editing.i === i && _this4.state.editing.j === j;
};
+ var isReverting = function isReverting(i, j) {
+ return _this4.state.reverting.i === i && _this4.state.reverting.j === j;
+ };
var shouldClear = function shouldClear(i, j) {
return _this4.state.clear.i === i && _this4.state.clear.j === j;
};
@@ -376,7 +385,9 @@ var DataSheet = function (_PureComponent) {
onMouseDown: cell.disableEvents ? nullFtn : _this4.onMouseDown,
onDoubleClick: cell.disableEvents ? nullFtn : _this4.onDoubleClick,
onMouseOver: cell.disableEvents ? nullFtn : _this4.onMouseOver,
- onContextMenu: cell.disableEvents ? nullFtn : _this4.onContextMenu, editing: isEditing(i, j),
+ onContextMenu: cell.disableEvents ? nullFtn : _this4.onContextMenu,
+ editing: isEditing(i, j),
+ reverting: isReverting(i, j),
colSpan: cell.colSpan,
value: valueRenderer(cell)
};
diff --git a/src/DataCell.js b/src/DataCell.js
index 015f410..91146f9 100644
--- a/src/DataCell.js
+++ b/src/DataCell.js
@@ -15,7 +15,7 @@ export default class DataCell extends PureComponent {
}
componentDidUpdate(prevProps) {
- if (prevProps.editing === true && this.props.editing === false) {
+ if (prevProps.editing === true && this.props.editing === false && this.props.reverting === false) {
this.onChange(this._input.value);
}
if (prevProps.editing === false && this.props.editing === true) {
diff --git a/src/DataSheet.js b/src/DataSheet.js
index 2a6f535..7e88058 100644
--- a/src/DataSheet.js
+++ b/src/DataSheet.js
@@ -5,6 +5,7 @@ import ComponentCell from './ComponentCell';
const TAB_KEY = 9;
const ENTER_KEY = 13;
+const ESCAPE_KEY = 27;
const LEFT_KEY = 37;
const UP_KEY = 38;
const RIGHT_KEY = 39;
@@ -46,6 +47,7 @@ export default class DataSheet extends PureComponent {
selecting: false,
forceEdit: false,
editing: {},
+ reverting: {},
clear: {}
};
this.state = this.defaultState;
@@ -96,7 +98,7 @@ export default class DataSheet extends PureComponent {
handlePaste(e) {
if(isEmpty(this.state.editing)) {
const start = this.state.start;
-
+
const pastedMap = [];
const pasteData = e.clipboardData
.getData('text/plain')
@@ -113,7 +115,7 @@ export default class DataSheet extends PureComponent {
this.onChange(start.i + i, start.j + j, pastedData);
end = {i: start.i + i, j: start.j + j};
}
-
+
});
pastedMap.push(rowData);
});
@@ -176,6 +178,7 @@ export default class DataSheet extends PureComponent {
const ctrlKeyPressed = e.ctrlKey || e.metaKey;
const deleteKeysPressed = (e.keyCode === DELETE_KEY || e.keyCode === BACKSPACE_KEY);
const enterKeyPressed = e.keyCode === ENTER_KEY;
+ const escapeKeyPressed = e.keyCode === ESCAPE_KEY;
const numbersPressed = (e.keyCode >= 48 && e.keyCode <= 57);
const lettersPressed = (e.keyCode >= 65 && e.keyCode <= 90);
const numPadKeysPressed = (e.keyCode >= 96 && e.keyCode <= 105);
@@ -200,9 +203,11 @@ export default class DataSheet extends PureComponent {
);
e.preventDefault();
} else if (enterKeyPressed && isEditing) {
- this.setState({editing: {}});
+ this.setState({editing: {}, reverting: {}});
+ } else if (escapeKeyPressed && isEditing) {
+ this.setState({editing: {}, reverting: editing});
} else if (enterKeyPressed && !isEditing && !cell.readOnly) {
- this.setState({editing: start, clear: {}, forceEdit: true});
+ this.setState({editing: start, clear: {}, reverting: {}, forceEdit: true});
} else if (numbersPressed
|| numPadKeysPressed
|| lettersPressed
@@ -214,6 +219,7 @@ export default class DataSheet extends PureComponent {
this.setState({
editing: start,
clear: start,
+ reverting: {},
forceEdit: false
});
}
@@ -288,6 +294,7 @@ export default class DataSheet extends PureComponent {
};
const isEditing = (i, j) => this.state.editing.i === i && this.state.editing.j === j;
+ const isReverting = (i, j) => this.state.reverting.i === i && this.state.reverting.j === j;
const shouldClear = (i, j) => this.state.clear.i === i && this.state.clear.j === j;
return
this.dgDom = r} className={'data-grid ' + (className ? className : '')}>
@@ -305,7 +312,9 @@ export default class DataSheet extends PureComponent {
onMouseDown: cell.disableEvents ? nullFtn : this.onMouseDown,
onDoubleClick: cell.disableEvents ? nullFtn : this.onDoubleClick,
onMouseOver: cell.disableEvents ? nullFtn : this.onMouseOver,
- onContextMenu: cell.disableEvents ? nullFtn : this.onContextMenu,editing: isEditing(i, j),
+ onContextMenu: cell.disableEvents ? nullFtn : this.onContextMenu,
+ editing: isEditing(i, j),
+ reverting: isReverting(i, j),
colSpan: cell.colSpan,
value: valueRenderer(cell),
};
diff --git a/test/Datasheet.js b/test/Datasheet.js
index a13cf42..e8c75a1 100644
--- a/test/Datasheet.js
+++ b/test/Datasheet.js
@@ -15,6 +15,7 @@ import jsdom from 'mocha-jsdom';
const TAB_KEY = 9;
const ENTER_KEY = 13;
+const ESCAPE_KEY = 27;
const RIGHT_KEY = 39;
const LEFT_KEY = 37;
const UP_KEY = 38;
@@ -50,9 +51,9 @@ describe('Component', () => {
const onDoubleClick = sinon.spy();
const onContextMenu = sinon.spy();
const wrapper = shallow(
- {
5
).html())
-
+
wrapper.simulate('mousedown');
wrapper.simulate('doubleclick');
wrapper.simulate('mouseover');
@@ -88,19 +89,19 @@ describe('Component', () => {
it('should properly all update functions and render reading mode to editing mode ', () => {
const props = {
- editing: false,
- selected: false,
- value: 5,
- data: 5,
- row: 1,
- col: 1,
- onMouseDown: () => {},
- onMouseOver: () => {},
+ editing: false,
+ selected: false,
+ value: 5,
+ data: 5,
+ row: 1,
+ col: 1,
+ onMouseDown: () => {},
+ onMouseOver: () => {},
onDoubleClick: () => {},
onContextMenu: () => {},
}
const wrapper = shallow(
-
);
@@ -121,19 +122,19 @@ describe('Component', () => {
it('should properly render a flash when value changes', () => {
const props = {
- editing: false,
- selected: false,
- value: 5,
- data: 5,
- row: 1,
- col: 1,
- onMouseDown: () => {},
- onMouseOver: () => {},
+ editing: false,
+ selected: false,
+ value: 5,
+ data: 5,
+ row: 1,
+ col: 1,
+ onMouseDown: () => {},
+ onMouseOver: () => {},
onDoubleClick: () => {},
onContextMenu: () => {},
}
const wrapper = shallow(
-
);
@@ -143,8 +144,8 @@ describe('Component', () => {
6
).html());
- })
- })
+ })
+ })
describe('editing', () => {
let onChange = null;
@@ -154,15 +155,16 @@ describe('Component', () => {
beforeEach(() => {
wrapper && wrapper.detach();
props = {
- editing: false,
- selected: false,
+ editing: false,
+ reverting: false,
+ selected: false,
value: '2',
data: '5',
- row: 1,
- col: 2,
+ row: 1,
+ col: 2,
onChange: sinon.spy(),
- onMouseDown: () => {},
- onDoubleClick: () => {},
+ onMouseDown: () => {},
+ onDoubleClick: () => {},
onMouseOver: () => {},
onContextMenu: () => {},
}
@@ -186,24 +188,24 @@ describe('Component', () => {
wrapper.setProps({ editing: false, selected: true });
expect(props.onChange.called).toEqual(true);
expect(props.onChange.calledWith(props.row, props.col, '6')).toEqual(true);
- })
+ })
it('input value should be cleared if we go into editing with clear call', () => {
wrapper.setProps({ editing: true, selected: true, clear: true});
expect(wrapper.find('input').node.value).toEqual('');
- })
+ })
it('input value should be set to value if data is null', () => {
wrapper.setProps({ data: null});
wrapper.setProps({ editing: true, selected: true});
expect(wrapper.find('input').node.value).toEqual('2');
-
+
wrapper.find('input').node.value = '2';
console.log(wrapper.props)
wrapper.find('input').simulate('change');
wrapper.setProps({ editing: false, selected: true });
expect(props.onChange.called).toEqual(false)
- })
+ })
})
})
@@ -216,11 +218,11 @@ describe('Component', () => {
const onDoubleClick = sinon.spy();
const onContextMenu = sinon.spy();
const wrapper = shallow(
- {
wrapper.unmount();
})
- })
+ })
describe('rendering', () => {
it('should properly render a change (flashing)', (done) => {
const wrapper = shallow(
- {
}
}, 750)
})
- })
+ })
})
describe('Shallow DataSheet component', () => {
@@ -368,11 +370,11 @@ describe('Component', () => {
customWrapper = null;
}
})
- describe("rendering with varying props", () => {
+ describe("rendering with varying props", () => {
it('renders the proper elements', () => {
expect(wrapper.find('table').length).toEqual(1);
expect(_.values(wrapper.find('table').node.classList)).toEqual(['data-grid', 'test'])
-
+
expect(wrapper.find('td > span').length).toEqual(4);
expect(wrapper.find('td > span').nodes.map(n => n.innerHTML)).toEqual(['4', '2', '3', '5']);
})
@@ -382,7 +384,7 @@ describe('Component', () => {
expect(wrapper.find('table tr').at(1).key()).toEqual('custom_key_1');
expect(wrapper.find(DataCell).at(1).key()).toEqual('custom_key');
})
-
+
it('sets the proper classes for the cells', () => {
expect(wrapper.find('td').nodes.map(n => _.values(n.classList).sort()))
.toEqual([
@@ -462,6 +464,7 @@ describe('Component', () => {
end: {},
selecting: false,
editing: {},
+ reverting: {},
forceEdit: false,
clear: {}
})
@@ -470,22 +473,22 @@ describe('Component', () => {
describe("selection", () => {
it('selects a single field properly', () => {
-
+
expect(wrapper.find('td.cell.selected').length).toEqual(0);
wrapper.find('td').at(1).simulate('mouseDown');
wrapper.find('td').at(1).simulate('mouseUp');
expect(wrapper.find('td.cell.selected').length).toEqual(1);
expect(wrapper.find('td.cell.selected span').nodes[0].innerHTML).toEqual('2');
});
-
-
+
+
it('selects multiple field properly 2x2 (hold left click)', () => {
expect(wrapper.find('td.cell.selected').length).toEqual(0);
wrapper.find('td').at(0).simulate('mouseDown');
wrapper.find('td').at(3).simulate('mouseOver');
expect(wrapper.find('td.cell.selected').length).toEqual(4);
expect(wrapper.find('td.cell.selected span').nodes.map(n => n.innerHTML)).toEqual(['4', '2', '3', '5']);
-
+
expect(wrapper.state('selecting')).toEqual(true);
expect(wrapper.state('editing')).toEqual({});
expect(wrapper.state('start')).toEqual({
@@ -497,11 +500,11 @@ describe('Component', () => {
j: 1
});
});
-
+
it('selects multiple field properly 2x2 and stay selected after releasing mouse button', () => {
let mouseUpEvt = document.createEvent("HTMLEvents");
mouseUpEvt.initEvent("mouseup", false, true);
-
+
expect(wrapper.find('.selected').length).toEqual(0);
expect(wrapper.find('td.cell').length).toEqual(4);
wrapper.find('td').at(0).simulate('mouseDown');
@@ -510,7 +513,7 @@ describe('Component', () => {
expect(wrapper.state('end')).toEqual({ i: 1, j: 1 });
expect(wrapper.state('selecting')).toEqual(true);
document.dispatchEvent(mouseUpEvt);
- expect(wrapper.state('selecting')).toEqual(false);
+ expect(wrapper.state('selecting')).toEqual(false);
});
it('calls onSelect prop when a new element is selected', (done) => {
@@ -522,7 +525,7 @@ describe('Component', () => {
{(cell) => {
try {
expect(cell).toEqual({data: 4, className: 'test1'});
- done();
+ done();
}
catch(err) {
done(err)
@@ -530,14 +533,14 @@ describe('Component', () => {
}}
valueRenderer = {(cell) => cell.data}
onChange = {(cell, i, j, value) => custData[i][j].data = value}
- />);
+ />);
customWrapper.find('td').at(0).simulate('mouseDown');
expect(customWrapper.state('end')).toEqual({i: 0, j: 0});
});
});
-
- describe("keyboard movement", () => {
+
+ describe("keyboard movement", () => {
it('moves right with arrow keys', () => {
wrapper.find('td').at(0).simulate('mouseDown');
expect(wrapper.state('start')).toEqual({i: 0, j: 0});
@@ -578,7 +581,7 @@ describe('Component', () => {
expect(wrapper.state('start')).toEqual({i: 0, j: 0});
})
})
-
+
describe("editing", () => {
let cells = null;
beforeEach(() => {
@@ -603,7 +606,6 @@ describe('Component', () => {
});
it('starts editing when double clicked', () => {
- expect(wrapper.find('td.cell.selected').length).toEqual(0);
cells.at(3).simulate('mousedown');
dispatchKeyDownEvent(ENTER_KEY);
expect(wrapper.state('editing')).toEqual({
@@ -622,7 +624,7 @@ describe('Component', () => {
});
it('starts editing certain keys are pressed', () => {
- //[0 , 9 ,a , z , 0 , 9 , + , = , decim]
+ //[0 , 9 ,a , z , 0 , 9 , + , = , decim]
[48, 57, 65, 90, 96, 105, 107, 187, 189].map(charCode => {
cells.at(0).simulate('mousedown');
dispatchKeyDownEvent(charCode);
@@ -634,7 +636,7 @@ describe('Component', () => {
it('does not start editing if cell is readOnly', () => {
wrapper.setProps({data: [[{data: 1, readOnly: true},{data: 2, readOnly: true}]]});
- //[0 , 9 ,a , z , 0 , 9 , + , = , decim]
+ //[0 , 9 ,a , z , 0 , 9 , + , = , decim]
[48, 57, 65, 90, 96, 105, 107, 187, 189].map(charCode => {
cells.at(0).simulate('mousedown');
dispatchKeyDownEvent(charCode);
@@ -664,6 +666,17 @@ describe('Component', () => {
expect(wrapper.state('editing')).toEqual({})
});
+ it('goes out of edit mode and reverts to original value when ESCAPE is pressed', () => {
+ cells.at(0).simulate('mouseDown');
+ dispatchKeyDownEvent('1'.charCodeAt(0));
+ wrapper.find('td.cell.selected input').node.value = 213;
+ wrapper.find('td.cell.selected input').simulate('change');
+ dispatchKeyDownEvent(ESCAPE_KEY);
+ expect(data[0][0].data).toEqual(4);
+ expect(wrapper.state('editing')).toEqual({});
+ expect(wrapper.state('reverting')).toEqual({ i: 0, j: 0 });
+ });
+
it('updates value properly after double clicking', () => {
cells.at(0).simulate('mouseDown');
cells.at(0).simulate('mouseUp');
@@ -674,10 +687,11 @@ describe('Component', () => {
end: { i: 0, j: 0 },
selecting: true,
editing: { i: 0, j: 0 },
+ reverting: {},
forceEdit: true,
clear: {}
});
-
+
cells.at(0).find('input').node.value = 213;
cells.at(0).find('input').simulate('change');
dispatchKeyDownEvent(RIGHT_KEY);
@@ -691,10 +705,11 @@ describe('Component', () => {
cells.at(0).simulate('mouseUp');
dispatchKeyDownEvent('1'.charCodeAt(0));
expect(wrapper.state()).toEqual({
- start: { i: 0, j: 0 },
- end: { i: 0, j: 0 },
+ start: { i: 0, j: 0 },
+ end: { i: 0, j: 0 },
selecting: true,
editing: { i: 0, j: 0 },
+ reverting: {},
forceEdit: false,
clear: { i: 0, j: 0 }
});
@@ -705,10 +720,11 @@ describe('Component', () => {
dispatchKeyDownEvent(RIGHT_KEY);
expect(data[0][0].data).toEqual(213)
expect(wrapper.state()).toEqual({
- start: { i: 0, j: 1 }, //RIGHT_KEY movement
+ start: { i: 0, j: 1 }, //RIGHT_KEY movement
end: { i: 0, j: 1 }, //RIGHT_KEY movement
selecting: true,
editing: {},
+ reverting: {},
forceEdit: false,
clear: { i: 0, j: 0 }
});
@@ -716,26 +732,28 @@ describe('Component', () => {
it('doesn\'t moves to the next cell on left/right arrow if cell is a component', () => {
- data[0][0].component = HELLO
+ data[0][0].component = HELLO
wrapper.setProps({data: data});
expect(wrapper.exists(HELLO
)).toEqual(true);
cells.at(0).simulate('mouseDown');
cells.at(0).simulate('mouseUp');
dispatchKeyDownEvent('1'.charCodeAt(0));
expect(wrapper.state()).toEqual({
- start: { i: 0, j: 0 },
- end: { i: 0, j: 0 },
+ start: { i: 0, j: 0 },
+ end: { i: 0, j: 0 },
selecting: true,
editing: { i: 0, j: 0 },
+ reverting: {},
forceEdit: false,
clear: { i: 0, j: 0 }
});
dispatchKeyDownEvent(RIGHT_KEY);
expect(wrapper.state()).toEqual({
- start: { i: 0, j: 0 }, //RIGHT_KEY movement
+ start: { i: 0, j: 0 }, //RIGHT_KEY movement
end: { i: 0, j: 0 }, //RIGHT_KEY movement
selecting: true,
editing: { i: 0, j: 0 },
+ reverting: {},
forceEdit: false,
clear: { i: 0, j: 0 }
});
@@ -746,7 +764,7 @@ describe('Component', () => {
const evt = document.createEvent("HTMLEvents");
evt.initEvent('copy', false, true);
evt.clipboardData = { setData: (type, text)=> { copied = text}};
-
+
cells.at(0).simulate('mouseDown');
cells.at(3).simulate('mouseOver');
document.dispatchEvent(evt);
@@ -779,12 +797,12 @@ describe('Component', () => {
const evt = document.createEvent("HTMLEvents");
evt.initEvent('copy', false, true);
evt.clipboardData = { setData: (type, text)=> { pasted = text}};
-
- expect(wrapper.state('start')).toEqual({});
+
+ expect(wrapper.state('start')).toEqual({});
document.dispatchEvent(evt);
expect(pasted).toEqual("");
});
-
+
it('does not paste data if no cell is selected', () => {
const evt = document.createEvent("HTMLEvents");
evt.initEvent("paste", false, true);
@@ -796,7 +814,7 @@ describe('Component', () => {
it('pastes data properly', () => {
cells.at(0).simulate('mouseDown');
expect(wrapper.state('end')).toEqual({i: 0, j: 0});
-
+
const evt = document.createEvent("HTMLEvents");
evt.initEvent("paste", false, true);
evt.clipboardData = { getData: (type)=> '99\t100\n1001\t1002'};
@@ -860,10 +878,10 @@ describe('Component', () => {
[
{cell: datacust[0][0], data: '99'},
{cell: datacust[0][1], data: '100'}
- ],
+ ],
[
- {cell: undefined, data: '1001'},
- {cell: undefined, data: '1002'},
+ {cell: undefined, data: '1001'},
+ {cell: undefined, data: '1002'},
]
]);
done();
@@ -871,7 +889,7 @@ describe('Component', () => {
catch(err) {
done(err);
}
-
+
}}
/>
);
@@ -881,7 +899,7 @@ describe('Component', () => {
evt.clipboardData = { getData: (type)=> '99\t100\n1001\t1002'};
document.dispatchEvent(evt);
});
-
+
it('stops editing on outside page click', () => {
@@ -889,15 +907,16 @@ describe('Component', () => {
cell.simulate('mouseDown');
cell.simulate('doubleClick');
triggerMouseEvent(document, 'mousedown');
-
+
expect(wrapper.state()).toEqual({
start: {},
end: {},
selecting: false,
editing: {},
+ reverting: {},
forceEdit: false,
clear: {}
- });
+ });
});
it('pageClick does not execute if the mouse click is within', () => {
@@ -915,9 +934,10 @@ describe('Component', () => {
end: {i: 0, j: 0},
selecting: true,
editing: {},
+ reverting: {},
forceEdit: false,
clear: {}
- });
+ });
})
it('delete on DELETE_KEY', () => {
const cell = wrapper.find('td').first();
@@ -955,7 +975,7 @@ describe('Component', () => {
catch(err) {
done(err);
}
-
+
}}
/>
);
diff --git a/yarn.lock b/yarn.lock
index 25c3c24..e01e0ea 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -377,15 +377,6 @@ babel-helpers@^6.24.1:
babel-runtime "^6.22.0"
babel-template "^6.24.1"
-babel-loader@^6.4.1:
- version "6.4.1"
- resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-6.4.1.tgz#0b34112d5b0748a8dcdbf51acf6f9bd42d50b8ca"
- dependencies:
- find-cache-dir "^0.1.1"
- loader-utils "^0.2.16"
- mkdirp "^0.5.1"
- object-assign "^4.0.1"
-
babel-messages@^6.23.0:
version "6.23.0"
resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
@@ -843,10 +834,6 @@ bcrypt-pbkdf@^1.0.0:
dependencies:
tweetnacl "^0.14.3"
-big.js@^3.1.3:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978"
-
binary-extensions@^1.0.0:
version "1.8.0"
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774"
@@ -1296,10 +1283,6 @@ ecc-jsbn@~0.1.1:
dependencies:
jsbn "~0.1.0"
-emojis-list@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
-
encoding@^0.1.11:
version "0.1.12"
resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
@@ -1494,10 +1477,6 @@ esprima@^2.6.0, esprima@^2.7.1:
version "2.7.3"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
-esprima@^3.1.1:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
-
esrecurse@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220"
@@ -2290,20 +2269,13 @@ js-tokens@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7"
-js-yaml@3.6.1:
+js-yaml@3.6.1, js-yaml@^3.5.1:
version "3.6.1"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.6.1.tgz#6e5fe67d8b205ce4d22fad05b7781e8dadcc4b30"
dependencies:
argparse "^1.0.7"
esprima "^2.6.0"
-js-yaml@^3.5.1:
- version "3.8.3"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.3.tgz#33a05ec481c850c8875929166fe1beb61c728766"
- dependencies:
- argparse "^1.0.7"
- esprima "^3.1.1"
-
jsbn@~0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
@@ -2416,15 +2388,6 @@ load-json-file@^1.0.0:
pinkie-promise "^2.0.0"
strip-bom "^2.0.0"
-loader-utils@^0.2.16:
- version "0.2.17"
- resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348"
- dependencies:
- big.js "^3.1.3"
- emojis-list "^2.0.0"
- json5 "^0.5.0"
- object-assign "^4.0.1"
-
lodash._baseassign@^3.0.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e"
@@ -2563,7 +2526,7 @@ longest@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
-loose-envify@^1.0.0, loose-envify@^1.1.0:
+loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
dependencies:
@@ -3063,6 +3026,13 @@ promise@^7.1.1:
dependencies:
asap "~2.0.3"
+prop-types@^15.5.10:
+ version "15.5.10"
+ resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.10.tgz#2797dfc3126182e3a95e3dfbb2e893ddd7456154"
+ dependencies:
+ fbjs "^0.8.9"
+ loose-envify "^1.3.1"
+
prop-types@^15.5.2, prop-types@~15.5.0:
version "15.5.6"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.6.tgz#797a915b1714b645ebb7c5d6cc690346205bd2aa"