Skip to content

Commit e20d7bf

Browse files
committed
[WIP] Migration to TS.
1 parent f215248 commit e20d7bf

17 files changed

+699
-864
lines changed

.eslintrc.json

Lines changed: 52 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -18,27 +18,60 @@
1818
"sourceType": "module",
1919
"ecmaFeatures": {
2020
"jsx": true
21-
},
22-
"rules": {
23-
"curly": ["warn", "multi-line", "consistent"],
24-
"no-console": "off",
25-
"no-empty-pattern": "warn",
26-
"no-duplicate-imports": "error",
27-
"import/no-unresolved": ["error", { "commonjs": true, "amd": true }],
28-
"import/export": "error",
29-
"import/named": "off",
30-
"import/namespace": "off",
31-
"import/default": "off",
32-
"@typescript-eslint/explicit-module-boundary-types": "off",
33-
"no-unused-vars": ["warn", { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_" }],
34-
"@typescript-eslint/no-unused-vars": ["warn", { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_" }],
35-
"@typescript-eslint/no-use-before-define": "off",
36-
"@typescript-eslint/no-empty-function": "off",
37-
"@typescript-eslint/no-empty-interface": "off",
38-
"@typescript-eslint/no-explicit-any": "off",
39-
"jest/consistent-test-it": ["error", { "fn": "it", "withinDescribe": "it" }]
4021
}
4122
},
23+
"rules": {
24+
"curly": ["warn", "multi-line", "consistent"],
25+
"no-console": "off",
26+
"import/no-unresolved": ["error", { "commonjs": true, "amd": true }],
27+
"import/export": "error",
28+
"@typescript-eslint/no-duplicate-imports": ["error"],
29+
"@typescript-eslint/explicit-module-boundary-types": "off",
30+
"@typescript-eslint/no-unused-vars": [
31+
"warn",
32+
{ "argsIgnorePattern": "^_", "varsIgnorePattern": "^_" }
33+
],
34+
"@typescript-eslint/no-use-before-define": "off",
35+
"@typescript-eslint/no-empty-function": "off",
36+
"@typescript-eslint/no-empty-interface": "off",
37+
"@typescript-eslint/no-explicit-any": "off",
38+
"jest/consistent-test-it": [
39+
"error",
40+
{ "fn": "it", "withinDescribe": "it" }
41+
],
42+
"import/order": [
43+
"error",
44+
{
45+
"alphabetize": { "order": "asc", "caseInsensitive": true },
46+
"groups": [
47+
"builtin",
48+
"external",
49+
"internal",
50+
"parent",
51+
"sibling",
52+
"index",
53+
"object"
54+
],
55+
"newlines-between": "never",
56+
"pathGroups": [
57+
{
58+
"pattern": "react",
59+
"group": "builtin",
60+
"position": "before"
61+
}
62+
],
63+
"pathGroupsExcludedImportTypes": ["builtin"]
64+
}
65+
],
66+
"react/jsx-uses-react": "off",
67+
"react/react-in-jsx-scope": "off",
68+
"sort-imports": [
69+
"error",
70+
{
71+
"ignoreDeclarationSort": true
72+
}
73+
]
74+
},
4275
"settings": {
4376
"react": {
4477
"version": "detect"

.size-snapshot.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
{
22
"index.js": {
3-
"bundled": 65833,
4-
"minified": 37726,
5-
"gzipped": 9677,
3+
"bundled": 65954,
4+
"minified": 37732,
5+
"gzipped": 9679,
66
"treeshaked": {
77
"rollup": {
8-
"code": 30079,
8+
"code": 30085,
99
"import_statements": 535
1010
},
1111
"webpack": {
12-
"code": 31582
12+
"code": 31592
1313
}
1414
}
1515
}

.travis.yml

Lines changed: 0 additions & 3 deletions
This file was deleted.

babel.config.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,13 @@ module.exports = (api, targets) => {
1515
},
1616
],
1717
],
18-
plugins: ['@babel/plugin-transform-react-jsx'],
18+
plugins: [
19+
[
20+
'@babel/plugin-transform-react-jsx',
21+
{
22+
runtime: 'automatic',
23+
},
24+
],
25+
],
1926
}
2027
}

package.json

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
"ts-jest": {
7474
"tsconfig": {
7575
"target": "es2015",
76-
"jsx": "react"
76+
"jsx": "react-jsx"
7777
}
7878
}
7979
},
@@ -123,8 +123,8 @@
123123
"@nosferatu500/react-dnd-scrollzone": "^2.0.0",
124124
"lodash.isequal": "^4.5.0",
125125
"prop-types": "^15.7.2",
126-
"react-dnd": "^14.0.2",
127-
"react-dnd-html5-backend": "^14.0.0",
126+
"react-dnd": "^14.0.3",
127+
"react-dnd-html5-backend": "^14.0.1",
128128
"react-lifecycles-compat": "^3.0.4",
129129
"react-virtualized": "^9.22.3"
130130
},
@@ -139,31 +139,31 @@
139139
"@rollup/plugin-babel": "^5.3.0",
140140
"@rollup/plugin-node-resolve": "^13.0.4",
141141
"@rollup/plugin-typescript": "^8.2.5",
142-
"@storybook/addon-storyshots": "^6.3.6",
143-
"@storybook/addons": "^6.3.6",
144-
"@storybook/react": "^6.3.6",
145-
"@storybook/theming": "^6.3.6",
142+
"@storybook/addon-storyshots": "^6.3.7",
143+
"@storybook/addons": "^6.3.7",
144+
"@storybook/react": "^6.3.7",
145+
"@storybook/theming": "^6.3.7",
146146
"@testing-library/react": "^12.0.0",
147147
"@types/babel-plugin-macros": "^2.8.5",
148148
"@types/enzyme": "^3.10.9",
149-
"@types/jest": "^26.0.24",
149+
"@types/jest": "^27.0.1",
150150
"@types/lodash.isequal": "^4.5.5",
151-
"@types/react": "^17.0.16",
151+
"@types/react": "^17.0.18",
152152
"@types/react-dom": "^17.0.9",
153153
"@types/react-lifecycles-compat": "^3.0.1",
154154
"@types/react-test-renderer": "^17.0.1",
155155
"@types/react-virtualized": "^9.21.13",
156-
"@typescript-eslint/eslint-plugin": "^4.29.0",
157-
"@typescript-eslint/parser": "^4.29.0",
156+
"@typescript-eslint/eslint-plugin": "^4.29.2",
157+
"@typescript-eslint/parser": "^4.29.2",
158158
"@wojtekmaj/enzyme-adapter-react-17": "^0.6.3",
159159
"acorn-jsx": "^5.3.2",
160160
"babel-plugin-macros": "^3.1.0",
161161
"babel-plugin-tester": "^10.1.0",
162162
"enzyme": "^3.11.0",
163-
"esbuild": "^0.12.19",
163+
"esbuild": "^0.12.20",
164164
"eslint": "^7.32.0",
165165
"eslint-config-prettier": "^8.3.0",
166-
"eslint-plugin-import": "^2.23.4",
166+
"eslint-plugin-import": "^2.24.0",
167167
"eslint-plugin-jest": "^24.4.0",
168168
"eslint-plugin-prettier": "^3.4.0",
169169
"eslint-plugin-react": "^7.24.0",
@@ -174,22 +174,22 @@
174174
"prettier": "^2.3.2",
175175
"react": "^17.0.2",
176176
"react-dnd-test-backend": "^14.0.0",
177-
"react-dnd-touch-backend": "^14.0.0",
177+
"react-dnd-touch-backend": "^14.1.0",
178178
"react-dom": "^17.0.2",
179179
"react-test-renderer": "^17.0.2",
180180
"rimraf": "^3.0.2",
181-
"rollup": "^2.56.0",
181+
"rollup": "^2.56.2",
182182
"rollup-plugin-esbuild": "^4.5.0",
183-
"rollup-plugin-postcss": "^4.0.0",
183+
"rollup-plugin-postcss": "^4.0.1",
184184
"rollup-plugin-size-snapshot": "^0.12.0",
185185
"shx": "^0.3.3",
186-
"ts-jest": "^27.0.4",
187-
"tslib": "^2.3.0",
186+
"ts-jest": "^27.0.5",
187+
"tslib": "^2.3.1",
188188
"typescript": "^4.3.5"
189189
},
190190
"peerDependencies": {
191191
"react": ">=17.0.0",
192-
"react-dnd": ">=11.0.0",
192+
"react-dnd": ">=14.0.0",
193193
"react-dom": ">=17.0.0"
194194
},
195195
"browserslist": {

src/node-renderer-default.tsx

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import React from 'react'
2-
import { isDescendant } from './utils/tree-data-utils'
2+
// eslint-disable-next-line import/named
3+
import { ConnectDragPreview, ConnectDragSource } from 'react-dnd'
34
import { classnames } from './utils/classnames'
5+
import { isDescendant } from './utils/tree-data-utils'
46
import './node-renderer-default.css'
5-
import { NodeData, TreeItem, NumberOrStringArray } from '.'
6-
import { ConnectDragPreview, ConnectDragSource } from 'react-dnd'
7+
import { NodeData, NumberOrStringArray, TreeItem } from '.'
8+
// eslint-disable-next-line import/named
79

810
const defaultProps = {
911
isSearchMatch: false,
@@ -79,9 +81,9 @@ const NodeRendererDefault: React.FC<NodeRendererProps> = (props) => {
7981
className,
8082
style,
8183
didDrop,
82-
treeId,
83-
isOver, // Not needed, but preserved for other renderers
84-
parentNode, // Needed for dndManager
84+
treeId: _treeId,
85+
isOver: _isOver, // Not needed, but preserved for other renderers
86+
parentNode: _parentNode, // Needed for dndManager
8587
rowDirection,
8688
...otherProps
8789
} = props

src/react-sortable-tree.test.tsx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,20 @@
22
// @ts-nocheck
33

44
import React, { Component } from 'react'
5-
import PropTypes from 'prop-types'
6-
import renderer from 'react-test-renderer'
75
import { mount } from 'enzyme'
8-
import { List } from 'react-virtualized'
9-
import { DndProvider, DndContext } from 'react-dnd'
10-
import { TestBackend } from 'react-dnd-test-backend'
6+
import PropTypes from 'prop-types'
7+
import { DndContext, DndProvider } from 'react-dnd'
118
import { HTML5Backend } from 'react-dnd-html5-backend'
9+
import { TestBackend } from 'react-dnd-test-backend'
1210
import { TouchBackend } from 'react-dnd-touch-backend'
11+
import renderer from 'react-test-renderer'
12+
import { List } from 'react-virtualized'
13+
import DefaultNodeRenderer from './node-renderer-default'
1314
import SortableTree, {
1415
SortableTreeWithoutDndContext,
1516
} from './react-sortable-tree'
17+
// eslint-disable-next-line import/no-named-as-default
1618
import TreeNode from './tree-node'
17-
import DefaultNodeRenderer from './node-renderer-default'
1819

1920
describe('<SortableTree />', () => {
2021
it('should render tree correctly', () => {

src/react-sortable-tree.tsx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
// @ts-nocheck
22

3-
import isEqual from 'lodash.isequal'
4-
import PropTypes from 'prop-types'
53
import React, { Component } from 'react'
6-
import { DndContext, DndProvider } from 'react-dnd'
7-
import { HTML5Backend } from 'react-dnd-html5-backend'
8-
import { polyfill } from 'react-lifecycles-compat'
9-
import { AutoSizer, List } from 'react-virtualized'
104
import withScrolling, {
115
createHorizontalStrength,
126
createScrollingComponent,
137
createVerticalStrength,
148
} from '@nosferatu500/react-dnd-scrollzone'
9+
import isEqual from 'lodash.isequal'
10+
import PropTypes from 'prop-types'
11+
import { DndContext, DndProvider } from 'react-dnd'
12+
import { HTML5Backend } from 'react-dnd-html5-backend'
13+
import { polyfill } from 'react-lifecycles-compat'
14+
import { AutoSizer, List } from 'react-virtualized'
1515
import 'react-virtualized/styles.css'
1616
import NodeRendererDefault from './node-renderer-default'
1717
import PlaceholderRendererDefault from './placeholder-renderer-default'
1818
import './react-sortable-tree.css'
19+
// eslint-disable-next-line import/no-named-as-default
1920
import TreeNode from './tree-node'
2021
import TreePlaceholder from './tree-placeholder'
2122
import { classnames } from './utils/classnames'

src/tree-node.tsx

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import React, { Children, cloneElement } from 'react'
2+
// eslint-disable-next-line import/named
3+
import { ConnectDropTarget } from 'react-dnd'
24
import { classnames } from './utils/classnames'
35
import './tree-node.css'
4-
import { ConnectDropTarget } from 'react-dnd'
6+
// eslint-disable-next-line import/named
57
import { NumberOrStringArray, TreeItem, TreePath } from '.'
68

79
export interface TreeNode {
@@ -63,10 +65,10 @@ const TreeNode: React.FC<TreeRendererProps> = (props) => {
6365
draggedNode,
6466
canDrop,
6567
treeIndex,
66-
treeId, // Delete from otherProps
67-
getPrevRow, // Delete from otherProps
68-
node, // Delete from otherProps
69-
path, // Delete from otherProps
68+
treeId: _treeId, // Delete from otherProps
69+
getPrevRow: _getPrevRow, // Delete from otherProps
70+
node: _node, // Delete from otherProps
71+
path: _path, // Delete from otherProps
7072
rowDirection,
7173
...otherProps
7274
} = props

src/tree-placeholder.tsx

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import React, { Children, cloneElement } from 'react'
2-
import { TreeItem } from '.'
2+
// eslint-disable-next-line import/named
33
import { ConnectDropTarget } from 'react-dnd'
4+
import { TreeItem } from '.'
5+
// eslint-disable-next-line import/named
46

57
const defaultProps = {
68
canDrop: false,
@@ -20,7 +22,13 @@ type TreePlaceholderProps = {
2022

2123
const TreePlaceholder = (props: TreePlaceholderProps) => {
2224
props = { ...defaultProps, ...props }
23-
const { children, connectDropTarget, treeId, drop, ...otherProps } = props
25+
const {
26+
children,
27+
connectDropTarget,
28+
treeId: _treeId,
29+
drop: _drop,
30+
...otherProps
31+
} = props
2432

2533
return connectDropTarget(
2634
<div>

src/utils/dnd-manager.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
import { DragSource as dragSource, DropTarget as dropTarget } from 'react-dnd'
44
import { findDOMNode } from 'react-dom'
5-
import { getDepth } from './tree-data-utils'
65
import { memoizedInsertNode } from './memoized-tree-data-utils'
6+
import { getDepth } from './tree-data-utils'
77

88
export default class DndManager {
99
constructor(treeRef) {

src/utils/generic-utils.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
/* eslint-disable import/prefer-default-export */
2-
31
export const slideRows = (
42
rows: any[],
53
fromIndex: number,

src/utils/memoized-tree-data-utils.test.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
import { insertNode } from './tree-data-utils'
2-
3-
import { memoizedInsertNode } from './memoized-tree-data-utils'
41
import { TreeIndex } from '..'
2+
import { memoizedInsertNode } from './memoized-tree-data-utils'
3+
import { insertNode } from './tree-data-utils'
54

65
describe('insertNode', () => {
76
it('should handle empty data', () => {

src/utils/memoized-tree-data-utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {
2-
insertNode,
32
getDescendantCount,
43
getFlatDataFromTree,
4+
insertNode,
55
} from './tree-data-utils'
66

77
const memoize = (f: (...args: any) => void) => {

0 commit comments

Comments
 (0)