Skip to content
This repository was archived by the owner on Jun 18, 2018. It is now read-only.

Commit 3c18725

Browse files
authored
Merge pull request #66 from react-dnd/lib_upgrade
Update to Babel 6.x, update eslint configuration
2 parents 2a84f4d + 80c0bca commit 3c18725

13 files changed

+1086
-798
lines changed

.babelrc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
{
2-
"stage": 0,
3-
"loose": ["es6.modules", "es6.classes"]
2+
"presets": ["latest", "stage-2"]
43
}

.eslintrc

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
{
2-
"extends": "airbnb/base",
2+
"extends": "eslint-config-airbnb",
33
"env": {
44
"browser": true,
5-
"mocha": true,
65
"node": true
76
},
87
"rules": {
9-
"comma-dangle": 0,
10-
"id-length": 0,
11-
"consistent-return": 0
8+
"class-methods-use-this": "off",
9+
"no-confusing-arrow": "off",
10+
"no-param-reassign": "off"
1211
}
1312
}

.vscode/settings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"vsicons.presets.angular": false
3+
}

package.json

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"build:umd": "webpack",
1010
"build": "npm-run-all --parallel build:*",
1111
"lint": "eslint .",
12-
"unit_test": "mocha --compilers js:babel/register --recursive",
12+
"unit_test": "mocha --require babel-register --recursive",
1313
"unit_test:watch": "npm run unit_test -- --watch",
1414
"test": "npm-run-all clean --parallel lint build unit_test",
1515
"develop": "npm run unit_test:watch",
@@ -26,13 +26,19 @@
2626
},
2727
"homepage": "https://github.com/react-dnd/react-dnd-html5-backend",
2828
"devDependencies": {
29-
"babel": "^5.8.23",
30-
"babel-eslint": "^4.1.3",
31-
"babel-loader": "^5.3.2",
32-
"eslint": "^1.6.0",
33-
"eslint-config-airbnb": "^0.1.0",
29+
"babel-cli": "^6.22.2",
30+
"babel-eslint": "^7.1.1",
31+
"babel-loader": "^6.2.10",
32+
"babel-preset-latest": "^6.22.0",
33+
"babel-preset-stage-2": "^6.22.0",
34+
"babel-register": "^6.22.0",
35+
"eslint": "^3.14.0",
36+
"eslint-config-airbnb": "^14.0.0",
37+
"eslint-plugin-import": "^2.2.0",
38+
"eslint-plugin-jsx-a11y": "^3.0.2",
39+
"eslint-plugin-react": "^6.9.0",
3440
"expect.js": "^0.3.1",
35-
"mocha": "^2.0.1",
41+
"mocha": "^3.2.0",
3642
"npm-run-all": "^4.0.1",
3743
"rimraf": "^2.4.3",
3844
"webpack": "^1.12.2"

src/BrowserDetector.js

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
11
import memoize from 'lodash/memoize';
22

3-
export const isFirefox = memoize(() =>
4-
/firefox/i.test(navigator.userAgent)
5-
);
6-
7-
export const isSafari = memoize(() =>
8-
Boolean(window.safari)
9-
);
3+
export const isFirefox = memoize(() => /firefox/i.test(navigator.userAgent));
4+
export const isSafari = memoize(() => Boolean(window.safari));

src/EnterLeaveCounter.js

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,14 @@ export default class EnterLeaveCounter {
99
enter(enteringNode) {
1010
const previousLength = this.entered.length;
1111

12+
const isNodeEntered = node => (
13+
document.documentElement.contains(node) &&
14+
(!node.contains || node.contains(enteringNode))
15+
);
16+
1217
this.entered = union(
13-
this.entered.filter(node =>
14-
document.documentElement.contains(node) &&
15-
(!node.contains || node.contains(enteringNode))
16-
),
17-
[enteringNode]
18+
this.entered.filter(isNodeEntered),
19+
[enteringNode],
1820
);
1921

2022
return previousLength === 0 && this.entered.length > 0;
@@ -25,9 +27,9 @@ export default class EnterLeaveCounter {
2527

2628
this.entered = without(
2729
this.entered.filter(node =>
28-
document.documentElement.contains(node)
30+
document.documentElement.contains(node),
2931
),
30-
leavingNode
32+
leavingNode,
3133
);
3234

3335
return previousLength > 0 && this.entered.length === 0;

src/HTML5Backend.js

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@ export default class HTML5Backend {
9696
this.sourceNodes[sourceId] = node;
9797
this.sourceNodeOptions[sourceId] = options;
9898

99-
const handleDragStart = (e) => this.handleDragStart(e, sourceId);
100-
const handleSelectStart = (e) => this.handleSelectStart(e, sourceId);
99+
const handleDragStart = e => this.handleDragStart(e, sourceId);
100+
const handleSelectStart = e => this.handleSelectStart(e, sourceId);
101101

102102
node.setAttribute('draggable', true);
103103
node.addEventListener('dragstart', handleDragStart);
@@ -114,9 +114,9 @@ export default class HTML5Backend {
114114
}
115115

116116
connectDropTarget(targetId, node) {
117-
const handleDragEnter = (e) => this.handleDragEnter(e, targetId);
118-
const handleDragOver = (e) => this.handleDragOver(e, targetId);
119-
const handleDrop = (e) => this.handleDrop(e, targetId);
117+
const handleDragEnter = e => this.handleDragEnter(e, targetId);
118+
const handleDragOver = e => this.handleDragOver(e, targetId);
119+
const handleDrop = e => this.handleDrop(e, targetId);
120120

121121
node.addEventListener('dragenter', handleDragEnter);
122122
node.addEventListener('dragover', handleDragOver);
@@ -134,7 +134,7 @@ export default class HTML5Backend {
134134
const sourceNodeOptions = this.sourceNodeOptions[sourceId];
135135

136136
return defaults(sourceNodeOptions || {}, {
137-
dropEffect: 'move'
137+
dropEffect: 'move',
138138
});
139139
}
140140

@@ -154,7 +154,7 @@ export default class HTML5Backend {
154154
return defaults(sourcePreviewNodeOptions || {}, {
155155
anchorX: 0.5,
156156
anchorY: 0.5,
157-
captureDraggingState: false
157+
captureDraggingState: false,
158158
});
159159
}
160160

@@ -165,7 +165,7 @@ export default class HTML5Backend {
165165
isDraggingNativeItem() {
166166
const itemType = this.monitor.getItemType();
167167
return Object.keys(NativeTypes).some(
168-
key => NativeTypes[key] === itemType
168+
key => NativeTypes[key] === itemType,
169169
);
170170
}
171171

@@ -246,7 +246,7 @@ export default class HTML5Backend {
246246

247247
this.currentDragSourceNodeOffsetChanged = !shallowEqual(
248248
getNodeClientOffset(node),
249-
this.currentDragSourceNodeOffset
249+
this.currentDragSourceNodeOffset,
250250
);
251251

252252
return this.currentDragSourceNodeOffsetChanged;
@@ -271,7 +271,7 @@ export default class HTML5Backend {
271271
this.actions.beginDrag(dragStartSourceIds, {
272272
publishSource: false,
273273
getSourceClientOffset: this.getSourceClientOffset,
274-
clientOffset
274+
clientOffset,
275275
});
276276

277277
const { dataTransfer } = e;
@@ -291,7 +291,7 @@ export default class HTML5Backend {
291291
sourceNode,
292292
dragPreview,
293293
clientOffset,
294-
anchorPoint
294+
anchorPoint,
295295
);
296296
dataTransfer.setDragImage(dragPreview, dragPreviewOffset.x, dragPreviewOffset.y);
297297
}
@@ -339,8 +339,9 @@ export default class HTML5Backend {
339339
)
340340
) {
341341
// Looks like a Safari bug: dataTransfer.types is null, but there was no draggable.
342-
// Just let it drag. It's a native type (URL or text) and will be picked up in dragenter handler.
343-
return;
342+
// Just let it drag. It's a native type (URL or text) and will be picked up in
343+
// dragenter handler.
344+
return; // eslint-disable-line no-useless-return
344345
} else {
345346
// If by this time no drag source reacted, tell browser not to drag.
346347
e.preventDefault();
@@ -392,12 +393,12 @@ export default class HTML5Backend {
392393
// will still happily dispatch `dragover` despite target being no longer
393394
// there. The easy solution is to only fire `hover` in `dragover` on FF.
394395
this.actions.hover(dragEnterTargetIds, {
395-
clientOffset: getEventClientOffset(e)
396+
clientOffset: getEventClientOffset(e),
396397
});
397398
}
398399

399400
const canDrop = dragEnterTargetIds.some(
400-
targetId => this.monitor.canDropOnTarget(targetId)
401+
targetId => this.monitor.canDropOnTarget(targetId),
401402
);
402403

403404
if (canDrop) {
@@ -428,11 +429,11 @@ export default class HTML5Backend {
428429
}
429430

430431
this.actions.hover(dragOverTargetIds, {
431-
clientOffset: getEventClientOffset(e)
432+
clientOffset: getEventClientOffset(e),
432433
});
433434

434435
const canDrop = dragOverTargetIds.some(
435-
targetId => this.monitor.canDropOnTarget(targetId)
436+
targetId => this.monitor.canDropOnTarget(targetId),
436437
);
437438

438439
if (canDrop) {
@@ -487,7 +488,7 @@ export default class HTML5Backend {
487488
this.dropTargetIds = [];
488489

489490
this.actions.hover(dropTargetIds, {
490-
clientOffset: getEventClientOffset(e)
491+
clientOffset: getEventClientOffset(e),
491492
});
492493
this.actions.drop();
493494

src/MonotonicInterpolant.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
/* eslint
2+
no-plusplus: off,
3+
no-mixed-operators: off
4+
*/
15
export default class MonotonicInterpolant {
26
constructor(xs, ys) {
37
const length = xs.length;

src/NativeDragSources.js

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import * as NativeTypes from './NativeTypes';
33
function getDataFromDataTransfer(dataTransfer, typesToTry, defaultValue) {
44
const result = typesToTry.reduce((resultSoFar, typeToTry) =>
55
resultSoFar || dataTransfer.getData(typeToTry),
6-
null
6+
null,
77
);
88

99
return (result != null) ? // eslint-disable-line eqeqeq
@@ -15,39 +15,38 @@ const nativeTypesConfig = {
1515
[NativeTypes.FILE]: {
1616
exposeProperty: 'files',
1717
matchesTypes: ['Files'],
18-
getData: (dataTransfer) =>
19-
Array.prototype.slice.call(dataTransfer.files)
18+
getData: dataTransfer => Array.prototype.slice.call(dataTransfer.files),
2019
},
2120
[NativeTypes.URL]: {
2221
exposeProperty: 'urls',
2322
matchesTypes: ['Url', 'text/uri-list'],
2423
getData: (dataTransfer, matchesTypes) =>
25-
getDataFromDataTransfer(dataTransfer, matchesTypes, '').split('\n')
24+
getDataFromDataTransfer(dataTransfer, matchesTypes, '').split('\n'),
2625
},
2726
[NativeTypes.TEXT]: {
2827
exposeProperty: 'text',
2928
matchesTypes: ['Text', 'text/plain'],
3029
getData: (dataTransfer, matchesTypes) =>
31-
getDataFromDataTransfer(dataTransfer, matchesTypes, '')
32-
}
30+
getDataFromDataTransfer(dataTransfer, matchesTypes, ''),
31+
},
3332
};
3433

3534
export function createNativeDragSource(type) {
3635
const {
3736
exposeProperty,
3837
matchesTypes,
39-
getData
38+
getData,
4039
} = nativeTypesConfig[type];
4140

4241
return class NativeDragSource {
4342
constructor() {
4443
this.item = {
4544
get [exposeProperty]() {
4645
console.warn( // eslint-disable-line no-console
47-
`Browser doesn't allow reading "${exposeProperty}" until the drop event.`
46+
`Browser doesn't allow reading "${exposeProperty}" until the drop event.`,
4847
);
4948
return null;
50-
}
49+
},
5150
};
5251
}
5352

@@ -75,7 +74,7 @@ export function createNativeDragSource(type) {
7574
export function matchNativeItemType(dataTransfer) {
7675
const dataTransferTypes = Array.prototype.slice.call(dataTransfer.types || []);
7776

78-
return Object.keys(nativeTypesConfig).filter(nativeItemType => {
77+
return Object.keys(nativeTypesConfig).filter((nativeItemType) => {
7978
const { matchesTypes } = nativeTypesConfig[nativeItemType];
8079
return matchesTypes.some(t => dataTransferTypes.indexOf(t) > -1);
8180
})[0] || null;

src/OffsetUtils.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
/* eslint
2+
no-mixed-operators: off
3+
*/
14
import { isSafari, isFirefox } from './BrowserDetector';
25
import MonotonicInterpolant from './MonotonicInterpolant';
36

@@ -19,7 +22,7 @@ export function getNodeClientOffset(node) {
1922
export function getEventClientOffset(e) {
2023
return {
2124
x: e.clientX,
22-
y: e.clientY
25+
y: e.clientY,
2326
};
2427
}
2528

@@ -35,7 +38,7 @@ export function getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anch
3538
const dragPreviewNodeOffsetFromClient = getNodeClientOffset(dragPreviewNode);
3639
const offsetFromDragPreview = {
3740
x: clientOffset.x - dragPreviewNodeOffsetFromClient.x,
38-
y: clientOffset.y - dragPreviewNodeOffsetFromClient.y
41+
y: clientOffset.y - dragPreviewNodeOffsetFromClient.y,
3942
};
4043

4144
const { offsetWidth: sourceWidth, offsetHeight: sourceHeight } = sourceNode;
@@ -61,15 +64,15 @@ export function getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anch
6164
// Align at the center
6265
(offsetFromDragPreview.x / sourceWidth) * dragPreviewWidth,
6366
// Dock to the right
64-
offsetFromDragPreview.x + dragPreviewWidth - sourceWidth
67+
offsetFromDragPreview.x + dragPreviewWidth - sourceWidth,
6568
]);
6669
const interpolantY = new MonotonicInterpolant([0, 0.5, 1], [
6770
// Dock to the top
6871
offsetFromDragPreview.y,
6972
// Align at the center
7073
(offsetFromDragPreview.y / sourceHeight) * dragPreviewHeight,
7174
// Dock to the bottom
72-
offsetFromDragPreview.y + dragPreviewHeight - sourceHeight
75+
offsetFromDragPreview.y + dragPreviewHeight - sourceHeight,
7376
]);
7477
const x = interpolantX.interpolate(anchorX);
7578
let y = interpolantY.interpolate(anchorY);

0 commit comments

Comments
 (0)