diff --git a/.babelrc b/.babelrc
deleted file mode 100644
index b5137ad4..00000000
--- a/.babelrc
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "presets": ["env", "react", "stage-0"]
-}
diff --git a/.gitignore b/.gitignore
index be85b3bd..9ec8adc7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,11 +1,17 @@
+### https://raw.github.com/github/gitignore/ea28c14da0faf75047165c10223635ba95566ad7/Node.gitignore
+
# Logs
logs
*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
# Runtime data
pids
*.pid
*.seed
+*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
@@ -13,20 +19,61 @@ lib-cov
# Coverage directory used by tools like istanbul
coverage
+# nyc test coverage
+.nyc_output
+
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
+# Bower dependency directory (https://bower.io/)
+bower_components
+
# node-waf configuration
.lock-wscript
-# Compiled binary addons (http://nodejs.org/api/addons.html)
+# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
-# Dependency directory
-# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git
-node_modules
+# Dependency directories
+node_modules/
+jspm_packages/
+
+# TypeScript v1 declaration files
+typings/
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variables file
+.env
+
+# parcel-bundler cache (https://parceljs.org/)
+.cache
+
+# next.js build output
+.next
+
+# nuxt.js build output
+.nuxt
+
+# vuepress build output
+.vuepress/dist
+
+# Serverless directories
+.serverless
+dist/
example/bundle*
-.publish
-dist
diff --git a/.npmignore b/.npmignore
deleted file mode 100644
index b9f33633..00000000
--- a/.npmignore
+++ /dev/null
@@ -1,6 +0,0 @@
-test
-lib
-example
-yarn.lock
-webpack.config.js
-Makefile
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 00000000..ec6d3cdd
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1 @@
+package.json
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 098d8f6b..00000000
--- a/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-all:
- ./node_modules/.bin/babel lib --out-dir dist
- ./node_modules/.bin/lessc lib/react-ui-tree.less > dist/react-ui-tree.css
- ./node_modules/.bin/webpack -p
-clean:
- rm dist/*
- rm example/bundle*
diff --git a/__tests__/tree.js b/__tests__/tree.js
new file mode 100644
index 00000000..c9cbea6f
--- /dev/null
+++ b/__tests__/tree.js
@@ -0,0 +1,47 @@
+import Tree from '../lib/tree';
+
+describe('tree', () => {
+ const tree = new Tree({
+ module: 'root',
+ collapsed: false,
+ children: [
+ {
+ module: 'a',
+ collapsed: false,
+ children: [
+ {
+ module: 'c',
+ collapsed: false
+ }
+ ]
+ },
+ {
+ module: 'b',
+ collapsed: false
+ }
+ ]
+ });
+
+ it('updateNodesPosition()', () => {
+ tree.updateNodesPosition();
+ expect(tree.getIndex(1).top).toEqual(1);
+ expect(tree.getIndex(1).left).toEqual(1);
+ expect(tree.getIndex(2).top).toEqual(2);
+ expect(tree.getIndex(2).left).toEqual(2);
+ expect(tree.getIndex(3).top).toEqual(3);
+ expect(tree.getIndex(3).left).toEqual(3);
+ expect(tree.getIndex(4).top).toEqual(4);
+ expect(tree.getIndex(4).left).toEqual(2);
+ });
+
+ it('move()', () => {
+ tree.move();
+ });
+
+ it('getNodeByTop()', () => {
+ expect(tree.getNodeByTop(1).id).toEqual(1);
+ expect(tree.getNodeByTop(2).id).toEqual(2);
+ expect(tree.getNodeByTop(3).id).toEqual(3);
+ expect(tree.getNodeByTop(4).id).toEqual(4);
+ });
+});
diff --git a/babel.config.js b/babel.config.js
new file mode 100644
index 00000000..7790ca7e
--- /dev/null
+++ b/babel.config.js
@@ -0,0 +1,4 @@
+module.exports = {
+ presets: [['@babel/env', { loose: true }], '@babel/preset-react'],
+ plugins: [['@babel/proposal-class-properties', { loose: true }]]
+};
diff --git a/example/app.less b/example/app.css
similarity index 69%
rename from example/app.less
rename to example/app.css
index d7be65fb..e54753b2 100644
--- a/example/app.less
+++ b/example/app.css
@@ -1,4 +1,6 @@
-*, *:before, *:after {
+*,
+*:before,
+*:after {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
@@ -12,9 +14,9 @@ body {
.inspector {
margin-left: 400px;
+}
- pre {
- font-family: Menlo;
- font-size: 13px;
- }
+.inspector pre {
+ font-family: Menlo;
+ font-size: 13px;
}
diff --git a/example/app.js b/example/app.js
index 121b8e6d..1daefbc1 100644
--- a/example/app.js
+++ b/example/app.js
@@ -1,6 +1,6 @@
-import '../lib/react-ui-tree.less';
-import './theme.less';
-import './app.less';
+import '../lib/react-ui-tree.css';
+import './theme.css';
+import './app.css';
import cx from 'classnames';
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
diff --git a/example/index.html b/example/index.html
index 2f661a62..9875a423 100644
--- a/example/index.html
+++ b/example/index.html
@@ -7,8 +7,6 @@