diff --git a/.babelrc.js b/.babelrc.js
deleted file mode 100755
index 1c1b8889..00000000
--- a/.babelrc.js
+++ /dev/null
@@ -1,16 +0,0 @@
-module.exports = {
- presets: [
- [
- '@babel/preset-env',
- {
- modules: false,
- },
- ],
- '@babel/preset-react',
- ],
- env: {
- test: {
- plugins: ['@babel/plugin-transform-modules-commonjs'],
- },
- },
-};
diff --git a/.eslintrc.js b/.eslintrc.js
deleted file mode 100644
index a643b25a..00000000
--- a/.eslintrc.js
+++ /dev/null
@@ -1,19 +0,0 @@
-module.exports = {
- extends: ['eslint-config-airbnb', 'prettier', 'prettier/react'],
- parser: 'babel-eslint',
- env: {
- browser: true,
- jest: true,
- },
- rules: {
- 'react/destructuring-assignment': 0,
- 'react/jsx-filename-extension': 0,
- 'react/prefer-stateless-function': 0,
- 'react/no-did-mount-set-state': 0,
- 'react/sort-comp': 0,
- 'react/jsx-props-no-spreading': 0,
- 'react/prop-types': 0,
- 'no-shadow': 0,
- 'jsx-a11y/label-has-associated-control': 0,
- },
-};
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
deleted file mode 100644
index de3f9e53..00000000
--- a/.github/FUNDING.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-github: wuweiweiwu
-open_collective: react-sortable-tree
diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md
deleted file mode 100644
index 73258a62..00000000
--- a/.github/ISSUE_TEMPLATE/bug-report.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-name: Bug Report
-about: Bugs, missing documentation, or unexpected behavior 🤔.
----
-
-# Reporting a Bug?
-
-Please include either a failing unit test or a simple reproduction. You can start by forking the [CodeSandbox example](https://codesandbox.io/s/wkxvy3z15w)
diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md
deleted file mode 100644
index f34434cd..00000000
--- a/.github/ISSUE_TEMPLATE/feature-request.md
+++ /dev/null
@@ -1,12 +0,0 @@
----
-name: Feature request
-about: Ideas and suggestions
----
-
-# Requesting a Feature?
-
-Provide as much information as possible about your requested feature. Here are a few questions you may consider answering:
-
-- What's your use case? (Tell me about your application and what problem you're trying to solve.)
-- What interface do you have in mind? (What new properties or methods do you think might be helpful?)
-- Can you point to similar functionality with any existing libraries or components? (Working demos can be helpful.)
diff --git a/.gitignore b/.gitignore
deleted file mode 100755
index 28238c58..00000000
--- a/.gitignore
+++ /dev/null
@@ -1,26 +0,0 @@
-node_modules
-npm-debug.log
-package-lock.json
-coverage
-
-# Editor and other tmp files
-*.swp
-*.un~
-*.iml
-*.ipr
-*.iws
-*.sublime-*
-.idea/
-*.DS_Store
-
-# Build directories (Will be preserved by npm)
-.cache
-dist
-build
-style.css
-style.css.map
-
-# Error files
-yarn-error.log
-
-.vscode
\ No newline at end of file
diff --git a/.nvmrc b/.nvmrc
deleted file mode 100644
index af557cc0..00000000
--- a/.nvmrc
+++ /dev/null
@@ -1 +0,0 @@
-v8.11.2
diff --git a/.prettierignore b/.prettierignore
deleted file mode 100644
index 83b69470..00000000
--- a/.prettierignore
+++ /dev/null
@@ -1 +0,0 @@
-CHANGELOG.md
\ No newline at end of file
diff --git a/.prettierrc b/.prettierrc
deleted file mode 100644
index 0ebf6b9e..00000000
--- a/.prettierrc
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "printWidth": 80,
- "tabWidth": 2,
- "useTabs": false,
- "semi": true,
- "singleQuote": true,
- "trailingComma": "es5",
- "bracketSpacing": true,
- "jsxBracketSameLine": false,
- "overrides": [
- {
- "files": ".prettierrc",
- "options": { "parser": "json", "trailingComma": "none" }
- },
- {
- "files": "*.json",
- "options": { "trailingComma": "none" }
- }
- ]
-}
diff --git a/.storybook/main.js b/.storybook/main.js
deleted file mode 100644
index c96320fc..00000000
--- a/.storybook/main.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = {
- stories: ['../stories/index.js'],
-};
diff --git a/.storybook/manager.js b/.storybook/manager.js
deleted file mode 100644
index dde5c38c..00000000
--- a/.storybook/manager.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import { addons } from '@storybook/addons';
-import { create } from '@storybook/theming/create';
-
-addons.setConfig({
- theme: create({
- base: 'light',
- brandTitle: 'React Sortable Tree',
- brandUrl: 'https://github.com/frontend-collective/react-sortable-tree',
- gridCellSize: 12,
- }),
-});
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 908707f9..00000000
--- a/.travis.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-language: node_js
-script:
- - npm test -- --coverage && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js
diff --git a/CHANGELOG.md b/CHANGELOG.md
deleted file mode 100644
index 4ab17d11..00000000
--- a/CHANGELOG.md
+++ /dev/null
@@ -1,349 +0,0 @@
-# Changelog
-
-All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
-
-## [2.8.0](https://github.com/frontend-collective/react-sortable-tree/compare/v2.7.1...v2.8.0) (2020-08-10)
-
-
-### Features
-
-* adding FUNDING.yml ([8e87804](https://github.com/frontend-collective/react-sortable-tree/commit/8e87804195fcc6cfc98ac0c8ae3a6f8511c05898))
-* remove current codesandbox website ([30749c7](https://github.com/frontend-collective/react-sortable-tree/commit/30749c74deba9b254c674bc0ded4fe2e6eb4cdce))
-
-
-### Bug Fixes
-
-* accidentally deleted own styling ([c664ade](https://github.com/frontend-collective/react-sortable-tree/commit/c664adee1cc045a76a9f89c38b644aa996f38365))
-* don't prettify changelog ([8615412](https://github.com/frontend-collective/react-sortable-tree/commit/86154120b0814a72ad45b23b4a24f45f2bbac225))
-* open collective link ([d55561e](https://github.com/frontend-collective/react-sortable-tree/commit/d55561e91b6abc7268be261c55c95a1fac5627e9))
-* remove outdated links from readme ([7a07263](https://github.com/frontend-collective/react-sortable-tree/commit/7a07263719044709ea177cd7d59ed0c0d56e86d0))
-* scroll to search focused tree item ([#756](https://github.com/frontend-collective/react-sortable-tree/issues/756)) ([e528a4c](https://github.com/frontend-collective/react-sortable-tree/commit/e528a4c6167cf64a6c0ff43caf22be45cccb21e3))
-* set themes using new api ([c2c1075](https://github.com/frontend-collective/react-sortable-tree/commit/c2c1075dfab844412f375174697ab30692b6055b))
-* site ([95cb249](https://github.com/frontend-collective/react-sortable-tree/commit/95cb249e24fb8cab2134567f71447bd728228c1e))
-* website imports ([8e7f83d](https://github.com/frontend-collective/react-sortable-tree/commit/8e7f83dc483c4697edd5ae29080316cf68de248a))
-* website pt 2 ([6914959](https://github.com/frontend-collective/react-sortable-tree/commit/69149596c884cb28c83c17f238c7d7d186271c44))
-
-
-## [2.7.1](https://github.com/frontend-collective/react-sortable-tree/compare/v2.7.0...v2.7.1) (2019-11-12)
-
-
-
-
-# [2.7.0](https://github.com/frontend-collective/react-sortable-tree/compare/v2.6.2...v2.7.0) (2019-10-14)
-
-
-### Features
-
-* update react-dnd ([#531](https://github.com/frontend-collective/react-sortable-tree/issues/531)) ([c449524](https://github.com/frontend-collective/react-sortable-tree/commit/c449524))
-
-
-
-
-## [2.6.2](https://github.com/frontend-collective/react-sortable-tree/compare/v2.6.1...v2.6.2) (2019-03-21)
-
-
-### Bug Fixes
-
-* Using DragDropContextConsumer directly ([#466](https://github.com/frontend-collective/react-sortable-tree/issues/466)) ([7bc9995](https://github.com/frontend-collective/react-sortable-tree/commit/7bc9995))
-
-
-
-
-## [2.6.1](https://github.com/frontend-collective/react-sortable-tree/compare/v2.6.0...v2.6.1) (2019-03-19)
-
-
-
-
-# [2.6.0](https://github.com/frontend-collective/react-sortable-tree/compare/v2.5.0...v2.6.0) (2018-12-11)
-
-
-### Bug Fixes
-
-* Bundling patched version of react-dnd-scrollzone ([#432](https://github.com/frontend-collective/react-sortable-tree/issues/432)) ([4017a08](https://github.com/frontend-collective/react-sortable-tree/commit/4017a08))
-
-
-
-
-# [2.5.0](https://github.com/frontend-collective/react-sortable-tree/compare/v2.4.0...v2.5.0) (2018-12-10)
-
-
-### Bug Fixes
-
-* postinstall -> prepare ([#430](https://github.com/frontend-collective/react-sortable-tree/issues/430)) ([5f94ace](https://github.com/frontend-collective/react-sortable-tree/commit/5f94ace))
-* rollup external dependencies ([7b8afd4](https://github.com/frontend-collective/react-sortable-tree/commit/7b8afd4))
-
-
-
-
-# [2.4.0](https://github.com/frontend-collective/react-sortable-tree/compare/v2.3.0...v2.4.0) (2018-12-10)
-
-
-
-
-# [2.3.0](https://github.com/frontend-collective/react-sortable-tree/compare/v2.2.0...v2.3.0) (2018-10-23)
-
-
-### Bug Fixes
-
-* deploy storybook to main site. fix links ([599f2ed](https://github.com/frontend-collective/react-sortable-tree/commit/599f2ed))
-* propagate the expanded treeData to editor ([bd0df92](https://github.com/frontend-collective/react-sortable-tree/commit/bd0df92))
-* update links to new website ([d68c3bf](https://github.com/frontend-collective/react-sortable-tree/commit/d68c3bf))
-* update props link + added PRs welcome badge ([c83c2aa](https://github.com/frontend-collective/react-sortable-tree/commit/c83c2aa))
-* update screenshot tests ([4977cb1](https://github.com/frontend-collective/react-sortable-tree/commit/4977cb1))
-
-
-### Features
-
-* add storybook for onlyExpandSearchedNode prop ([#354](https://github.com/frontend-collective/react-sortable-tree/issues/354)) ([c4a41d1](https://github.com/frontend-collective/react-sortable-tree/commit/c4a41d1))
-
-
-
-
-# [2.2.0](https://github.com/frontend-collective/react-sortable-tree/compare/v2.1.2...v2.2.0) (2018-06-12)
-
-
-### Bug Fixes
-
-* correct link to react-virtualized props ([#349](https://github.com/frontend-collective/react-sortable-tree/issues/349)) ([46961ed](https://github.com/frontend-collective/react-sortable-tree/commit/46961ed))
-* remove the extra s on style.css ([#342](https://github.com/frontend-collective/react-sortable-tree/issues/342)) ([77451bc](https://github.com/frontend-collective/react-sortable-tree/commit/77451bc))
-
-
-### Features
-
-* commonjs, es6, umd build supports ([#327](https://github.com/frontend-collective/react-sortable-tree/issues/327)) ([6556e4d](https://github.com/frontend-collective/react-sortable-tree/commit/6556e4d))
-* NEW DOCS + SITE ([#343](https://github.com/frontend-collective/react-sortable-tree/issues/343)) ([176b8c3](https://github.com/frontend-collective/react-sortable-tree/commit/176b8c3))
-* Only serve cjs and esm builds ([#351](https://github.com/frontend-collective/react-sortable-tree/issues/351)) ([2c01832](https://github.com/frontend-collective/react-sortable-tree/commit/2c01832))
-* row direction support ([#337](https://github.com/frontend-collective/react-sortable-tree/issues/337)) ([5bef44b](https://github.com/frontend-collective/react-sortable-tree/commit/5bef44b))
-
-
-
-
-## [2.1.2](https://github.com/frontend-collective/react-sortable-tree/compare/v2.1.1...v2.1.2) (2018-05-23)
-
-
-### Bug Fixes
-
-* prettier ([#313](https://github.com/frontend-collective/react-sortable-tree/issues/313)) ([3456076](https://github.com/frontend-collective/react-sortable-tree/commit/3456076))
-
-
-
-
-
-## [2.1.1](https://github.com/frontend-collective/react-sortable-tree/compare/v2.1.0...v2.1.1) (2018-04-29)
-
-
-
-# [2.1.0](https://github.com/frontend-collective/react-sortable-tree/compare/v2.0.1...v2.1.0) (2018-03-04)
-
-### Features
-
-* Added onlyExpandSearchedNodes prop ([2d57928](https://github.com/frontend-collective/react-sortable-tree/commit/2d57928)), closes [#245](https://github.com/frontend-collective/react-sortable-tree/issues/245)
-
-
-
-## [2.0.1](https://github.com/frontend-collective/react-sortable-tree/compare/v2.0.0...v2.0.1) (2018-02-10)
-
-### Bug Fixes
-
-* restore highlight line appearance ([2c95205](https://github.com/frontend-collective/react-sortable-tree/commit/2c95205))
-
-
-
-# [2.0.0](https://github.com/frontend-collective/react-sortable-tree/compare/v1.8.1...v2.0.0) (2018-02-10)
-
-### BREAKING CHANGES
-
-* from v2.0.0 on, you must import the css for the
- component yourself, using `import 'react-sortable-tree/style.css';`.
- You only need to do this once in your application.
-
-* Support dropped for IE versions earlier than IE 11
-
-
-
-## [1.8.1](https://github.com/frontend-collective/react-sortable-tree/compare/v1.8.0...v1.8.1) (2018-01-21)
-
-### Bug Fixes
-
-* rename parentNode callback param to nextParentNode ([24bf39d](https://github.com/frontend-collective/react-sortable-tree/commit/24bf39d))
-
-
-
-# [1.8.0](https://github.com/frontend-collective/react-sortable-tree/compare/v1.7.0...v1.8.0) (2018-01-21)
-
-### Features
-
-* Parent node in onMoveNode callback ([537c6a4](https://github.com/frontend-collective/react-sortable-tree/commit/537c6a4))
-
-
-
-# [1.7.0](https://github.com/frontend-collective/react-sortable-tree/compare/v1.6.0...v1.7.0) (2018-01-16)
-
-### Features
-
-* add onDragStateChanged callback ([2caa9d1](https://github.com/frontend-collective/react-sortable-tree/commit/2caa9d1))
-
- onDragStateChanged is called when dragging begins and ends, so you can easily track the current state of dragging.
- Thanks to [@wuweiweiwu](https://github.com/wuweiweiwu) for the contribution!
-
-
-
-# [1.6.0](https://github.com/frontend-collective/react-sortable-tree/compare/v1.5.5...v1.6.0) (2018-01-14)
-
-### Features
-
-* add more parameters to rowHeight. Fixes [#199](https://github.com/frontend-collective/react-sortable-tree/issues/199) ([8ff0ff2](https://github.com/frontend-collective/react-sortable-tree/commit/8ff0ff2))
-
- Thanks to [@wuweiweiwu](https://github.com/wuweiweiwu) for the contribution!
-
-
-
-## [1.5.5](https://github.com/frontend-collective/react-sortable-tree/compare/v1.5.4...v1.5.5) (2018-01-13)
-
-### Bug Fixes
-
-* expand tree for searches on initial mount. fixes [#223](https://github.com/frontend-collective/react-sortable-tree/issues/223) ([64a984a](https://github.com/frontend-collective/react-sortable-tree/commit/64a984a))
-
-
-
-## [1.5.4](https://github.com/frontend-collective/react-sortable-tree/compare/v1.5.3...v1.5.4) (2018-01-07)
-
-### Bug Fixes
-
-* UglifyJS enabled to remove dead code, which had been causing issues with some builds. If the presence of UglifyJS causes issues in your production builds, please refer to https://github.com/frontend-collective/react-sortable-tree#if-it-throws-typeerror-fn-is-not-a-function-errors-in-production
-
-
-
-## [1.5.3](https://github.com/frontend-collective/react-sortable-tree/compare/v1.5.2...v1.5.3) (2017-12-09)
-
-### Bug Fixes
-
-* dragging past the bottom of the tree no longer slows down rendering ([3ce35f3](https://github.com/frontend-collective/react-sortable-tree/commit/3ce35f3))
-
-
-
-## [1.5.2](https://github.com/frontend-collective/react-sortable-tree/compare/v1.5.1...v1.5.2) (2017-11-28)
-
-### Bug Fixes
-
-* correct positioning of full-width draggable rows ([00396d1](https://github.com/frontend-collective/react-sortable-tree/commit/00396d1))
-
-
-
-## [1.5.1](https://github.com/frontend-collective/react-sortable-tree/compare/v1.5.0...v1.5.1) (2017-11-28)
-
-### Bug Fixes
-
-* prevent slowdown caused by invalid targetDepth when using maxDepth ([c21d4de](https://github.com/frontend-collective/react-sortable-tree/commit/c21d4de)), closes [#194](https://github.com/frontend-collective/react-sortable-tree/issues/194)
-
-
-
-# [1.5.0](https://github.com/frontend-collective/react-sortable-tree/compare/v1.4.0...v1.5.0) (2017-10-29)
-
-### Bug Fixes
-
-* Fix oblong collapse/expand button appearance on mobile safari ([62dfdec](https://github.com/frontend-collective/react-sortable-tree/commit/62dfdec))
-
-### Features
-
-* enable the use of themes for simplified appearance customization ([d07c6a7](https://github.com/frontend-collective/react-sortable-tree/commit/d07c6a7))
-
-
-
-# [1.4.0](https://github.com/frontend-collective/react-sortable-tree/compare/v1.3.1...v1.4.0) (2017-10-13)
-
-### Features
-
-* Add path argument to onVisibilityToggle callback ([25cd134](https://github.com/frontend-collective/react-sortable-tree/commit/25cd134))
-
-
-
-## [1.3.1](https://github.com/frontend-collective/react-sortable-tree/compare/v1.3.0...v1.3.1) (2017-10-03)
-
-### Bug Fixes
-
-* Allow react[@16](https://github.com/16) ([9a31a03](https://github.com/frontend-collective/react-sortable-tree/commit/9a31a03))
-
-
-
-# [1.3.0](https://github.com/frontend-collective/react-sortable-tree/compare/v1.2.2...v1.3.0) (2017-09-20)
-
-### Features
-
-* Provide more row parameters in rowHeight callback ([1b88b18](https://github.com/frontend-collective/react-sortable-tree/commit/1b88b18))
-
-
-
-## [1.2.2](https://github.com/frontend-collective/react-sortable-tree/compare/v1.2.1...v1.2.2) (2017-09-12)
-
-### Bug Fixes
-
-* Specify version of react-dnd-html5-backend to avoid invalid package installs ([a09b611](https://github.com/frontend-collective/react-sortable-tree/commit/a09b611))
-
-
-
-## [1.2.1](https://github.com/frontend-collective/react-sortable-tree/compare/v1.2.0...v1.2.1) (2017-09-06)
-
-### Bug Fixes
-
-* Allow children function in default renderer ([6f1dcac](https://github.com/frontend-collective/react-sortable-tree/commit/6f1dcac))
-
-
-
-# [1.2.0](https://github.com/frontend-collective/react-sortable-tree/compare/v1.1.1...v1.2.0) (2017-08-12)
-
-### Features
-
-* Add `shouldCopyOnOutsideDrop` prop to enable copying of nodes that leave the tree ([d6a9be9](https://github.com/frontend-collective/react-sortable-tree/commit/d6a9be9))
-
-
-
-## [1.1.1](https://github.com/frontend-collective/react-sortable-tree/compare/v1.1.0...v1.1.1) (2017-08-06)
-
-### Bug Fixes
-
-* **tree-to-tree:** Fix node depth when dragging between trees ([323ccad](https://github.com/frontend-collective/react-sortable-tree/commit/323ccad))
-
-
-
-# [1.1.0](https://github.com/frontend-collective/react-sortable-tree/compare/v1.0.0...v1.1.0) (2017-08-05)
-
-### Features
-
-* **node-renderer:** Make title and subtitle insertable via props ([fff72c6](https://github.com/frontend-collective/react-sortable-tree/commit/fff72c6))
-
-
-
-# [1.0.0](https://github.com/frontend-collective/react-sortable-tree/compare/v0.1.21...v1.0.0) (2017-08-05)
-
-### Bug Fixes
-
-* External node offset was shifted ([d1ae0eb](https://github.com/frontend-collective/react-sortable-tree/commit/d1ae0eb))
-
-### Code Refactoring
-
-* get rid of `dndWrapExternalSource` api ([d103e9f](https://github.com/frontend-collective/react-sortable-tree/commit/d103e9f))
-
-### Features
-
-* **tree-to-tree:** Enable tree-to-tree drag-and-drop ([6986a23](https://github.com/frontend-collective/react-sortable-tree/commit/6986a23))
-* Display droppable placeholder element when tree is empty ([2cd371c](https://github.com/frontend-collective/react-sortable-tree/commit/2cd371c))
-* Add `prevPath` and `prevTreeIndex` to the `onMoveNode` callback ([6986a23](https://github.com/frontend-collective/react-sortable-tree/commit/6986a23))
-
-### BREAKING CHANGES
-
-* Trees that are empty now display a placeholder element
- in their place instead of being simply empty.
-* `dndWrapExternalSource` api no longer exists.
- You can achieve the same functionality and more with react-dnd
- APIs, as demonstrated in the storybook example.
-
-
-
-## [0.1.21](https://github.com/frontend-collective/react-sortable-tree/compare/v0.1.20...v0.1.21) (2017-07-15)
-
-### Bug Fixes
-
-* Remove console.log left in after development ([da27c47](https://github.com/frontend-collective/react-sortable-tree/commit/da27c47))
-
-See the GitHub [Releases](https://github.com/frontend-collective/react-sortable-tree/releases) for information on updates.
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
deleted file mode 100644
index 4f88ac33..00000000
--- a/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,46 +0,0 @@
-# Contributor Covenant Code of Conduct
-
-## Our Pledge
-
-In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
-
-## Our Standards
-
-Examples of behavior that contributes to creating a positive environment include:
-
-* Using welcoming and inclusive language
-* Being respectful of differing viewpoints and experiences
-* Gracefully accepting constructive criticism
-* Focusing on what is best for the community
-* Showing empathy towards other community members
-
-Examples of unacceptable behavior by participants include:
-
-* The use of sexualized language or imagery and unwelcome sexual attention or advances
-* Trolling, insulting/derogatory comments, and personal or political attacks
-* Public or private harassment
-* Publishing others' private information, such as a physical or electronic address, without explicit permission
-* Other conduct which could reasonably be considered inappropriate in a professional setting
-
-## Our Responsibilities
-
-Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
-
-Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
-
-## Scope
-
-This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
-
-## Enforcement
-
-Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at hello@weiweiwu.me. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
-
-Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
-
-## Attribution
-
-This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
-
-[homepage]: http://contributor-covenant.org
-[version]: http://contributor-covenant.org/version/1/4/
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index ea79c433..00000000
--- a/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2016 Chris Fritz
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/README.md b/README.md
deleted file mode 100644
index 2a9b3583..00000000
--- a/README.md
+++ /dev/null
@@ -1,234 +0,0 @@
-# Note on maintenance
-
-This library is not actively maintained. [Please find and discuss alternatives here](https://github.com/frontend-collective/react-sortable-tree/discussions/942).
-
-
-

-
-
-# React Sortable Tree
-
-
-
-[](https://npmcharts.com/compare/react-sortable-tree?minimal=true)
-[](https://npmcharts.com/compare/react-sortable-tree?minimal=true)
-[](https://travis-ci.org/frontend-collective/react-sortable-tree)
-[](https://coveralls.io/github/frontend-collective/react-sortable-tree?branch=master)
-[](http://makeapullrequest.com)
-
-> A React component for Drag-and-drop sortable representation of hierarchical data. Checkout the [Storybook](https://frontend-collective.github.io/react-sortable-tree/) for a demonstration of some basic and advanced features.
-
-
-

-
-
-## Table of Contents
-
-- [Getting Started](#getting-started)
-- [Usage](#usage)
-- [Props](#props)
-- [Data Helpers](#data-helper-functions)
-- [Themes](#themes)
-- [Browser Compatibility](#browser-compatibility)
-- [Troubleshooting](#troubleshooting)
-- [Contributing](#contributing)
-
-## Getting started
-
-Install `react-sortable-tree` using npm.
-
-```sh
-# NPM
-npm install react-sortable-tree --save
-
-# YARN
-yarn add react-sortable-tree
-```
-
-ES6 and CommonJS builds are available with each distribution.
-For example:
-
-```js
-// This only needs to be done once; probably during your application's bootstrapping process.
-import 'react-sortable-tree/style.css';
-
-// You can import the default tree with dnd context
-import SortableTree from 'react-sortable-tree';
-
-// Or you can import the tree without the dnd context as a named export. eg
-import { SortableTreeWithoutDndContext as SortableTree } from 'react-sortable-tree';
-
-// Importing from cjs (default)
-import SortableTree from 'react-sortable-tree/dist/index.cjs.js';
-import SortableTree from 'react-sortable-tree';
-
-// Importing from esm
-import SortableTree from 'react-sortable-tree/dist/index.esm.js';
-```
-
-## Usage
-
-```jsx
-import React, { Component } from 'react';
-import SortableTree from 'react-sortable-tree';
-import 'react-sortable-tree/style.css'; // This only needs to be imported once in your app
-
-export default class Tree extends Component {
- constructor(props) {
- super(props);
-
- this.state = {
- treeData: [
- { title: 'Chicken', children: [{ title: 'Egg' }] },
- { title: 'Fish', children: [{ title: 'fingerline' }] },
- ],
- };
- }
-
- render() {
- return (
-
- this.setState({ treeData })}
- />
-
- );
- }
-}
-```
-
-## Props
-
-| Prop | Type | Description
|
-| :----------------------------- | :------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| treeData
_(required)_ | object[] | Tree data with the following keys: `title` is the primary label for the node.
`subtitle` is a secondary label for the node.
`expanded` shows children of the node if true, or hides them if false. Defaults to false.
`children` is an array of child nodes belonging to the node.
**Example**: `[{title: 'main', subtitle: 'sub'}, { title: 'value2', expanded: true, children: [{ title: 'value3') }] }]` |
-| onChange
_(required)_ | func | Called whenever tree data changed. Just like with React input elements, you have to update your own component's data to see the changes reflected.
`( treeData: object[] ): void`
|
-| getNodeKey
_(recommended)_ | func | Specify the unique key used to identify each node and generate the `path` array passed in callbacks. With a setting of `getNodeKey={({ node }) => node.id}`, for example, in callbacks this will let you easily determine that the node with an `id` of `35` is (or has just become) a child of the node with an `id` of `12`, which is a child of ... and so on. It uses [`defaultGetNodeKey`](https://github.com/frontend-collective/react-sortable-tree/blob/master/src/utils/default-handlers.js) by default, which returns the index in the tree (omitting hidden nodes).
`({ node: object, treeIndex: number }): string or number`
|
-| generateNodeProps | func | Generate an object with additional props to be passed to the node renderer. Use this for adding buttons via the `buttons` key, or additional `style` / `className` settings.
`({ node: object, path: number[] or string[], treeIndex: number, lowerSiblingCounts: number[], isSearchMatch: bool, isSearchFocus: bool }): object`
|
-| onMoveNode | func | Called after node move operation.
`({ treeData: object[], node: object, nextParentNode: object, prevPath: number[] or string[], prevTreeIndex: number, nextPath: number[] or string[], nextTreeIndex: number }): void`
|
-| onVisibilityToggle | func | Called after children nodes collapsed or expanded.
`({ treeData: object[], node: object, expanded: bool, path: number[] or string[] }): void`
|
-| onDragStateChanged | func | Called when a drag is initiated or ended.
`({ isDragging: bool, draggedNode: object }): void`
|
-| maxDepth | number | Maximum depth nodes can be inserted at. Defaults to infinite. |
-| rowDirection | string | Adds row direction support if set to `'rtl'` Defaults to `'ltr'`. |
-| canDrag | func or bool | Return false from callback to prevent node from dragging, by hiding the drag handle. Set prop to `false` to disable dragging on all nodes. Defaults to `true`.
`({ node: object, path: number[] or string[], treeIndex: number, lowerSiblingCounts: number[], isSearchMatch: bool, isSearchFocus: bool }): bool`
|
-| canDrop | func | Return false to prevent node from dropping in the given location.
`({ node: object, prevPath: number[] or string[], prevParent: object, prevTreeIndex: number, nextPath: number[] or string[], nextParent: object, nextTreeIndex: number }): bool`
|
-| canNodeHaveChildren | func | Function to determine whether a node can have children, useful for preventing hover preview when you have a `canDrop` condition. Default is set to a function that returns `true`. Functions should be of type `(node): bool`. |
-| theme | object | Set an all-in-one packaged appearance for the tree. See the [Themes](#themes) section for more information. |
-| searchMethod | func | The method used to search nodes. Defaults to [`defaultSearchMethod`](https://github.com/frontend-collective/react-sortable-tree/blob/master/src/utils/default-handlers.js), which uses the `searchQuery` string to search for nodes with matching `title` or `subtitle` values. NOTE: Changing `searchMethod` will not update the search, but changing the `searchQuery` will.
`({ node: object, path: number[] or string[], treeIndex: number, searchQuery: any }): bool`
|
-| searchQuery | string or any | Used by the `searchMethod` to highlight and scroll to matched nodes. Should be a string for the default `searchMethod`, but can be anything when using a custom search. Defaults to `null`. |
-| searchFocusOffset | number | Outline the <`searchFocusOffset`>th node and scroll to it. |
-| onlyExpandSearchedNodes | boolean | Only expand the nodes that match searches. Collapses all other nodes. Defaults to `false`. |
-| searchFinishCallback | func | Get the nodes that match the search criteria. Used for counting total matches, etc.
`(matches: { node: object, path: number[] or string[], treeIndex: number }[]): void`
|
-| dndType | string | String value used by [react-dnd](https://react-dnd.github.io/react-dnd/about) (see overview at the link) for dropTargets and dragSources types. If not set explicitly, a default value is applied by react-sortable-tree for you for its internal use. **NOTE:** Must be explicitly set and the same value used in order for correct functioning of external nodes |
-| shouldCopyOnOutsideDrop | func or bool | Return true, or a callback returning true, and dropping nodes to react-dnd drop targets outside of the tree will not remove them from the tree. Defaults to `false`.
`({ node: object, prevPath: number[] or string[], prevTreeIndex: number, }): bool`
|
-| reactVirtualizedListProps | object | Custom properties to hand to the internal [react-virtualized List](https://github.com/bvaughn/react-virtualized/blob/master/docs/List.md#prop-types) |
-| style | object | Style applied to the container wrapping the tree (style defaults to `{height: '100%'}`) |
-| innerStyle | object | Style applied to the inner, scrollable container (for padding, etc.) |
-| className | string | Class name for the container wrapping the tree |
-| rowHeight | number or func | Used by react-sortable-tree. Defaults to `62`. Either a fixed row height (number) or a function that returns the height of a row given its index: `({ treeIndex: number, node: object, path: number[] or string[] }): number` |
-| slideRegionSize | number | Size in px of the region near the edges that initiates scrolling on dragover. Defaults to `100`. |
-| scaffoldBlockPxWidth | number | The width of the blocks containing the lines representing the structure of the tree. Defaults to `44`. |
-| isVirtualized | bool | Set to false to disable virtualization. Defaults to `true`. **NOTE**: Auto-scrolling while dragging, and scrolling to the `searchFocusOffset` will be disabled. |
-| nodeContentRenderer | any | Override the default component ([`NodeRendererDefault`](https://github.com/frontend-collective/react-sortable-tree/blob/master/src/node-renderer-default.js)) for rendering nodes (but keep the scaffolding generator). This is a last resort for customization - most custom styling should be able to be solved with `generateNodeProps`, a `theme` or CSS rules. If you must use it, is best to copy the component in `node-renderer-default.js` to use as a base, and customize as needed. |
-| placeholderRenderer | any | Override the default placeholder component ([`PlaceholderRendererDefault`](https://github.com/frontend-collective/react-sortable-tree/blob/master/src/placeholder-renderer-default.js)) which is displayed when the tree is empty. This is an advanced option, and in most cases should probably be solved with a `theme` or custom CSS instead. |
-
-## Data Helper Functions
-
-Need a hand turning your flat data into nested tree data?
-Want to perform add/remove operations on the tree data without creating your own recursive function?
-Check out the helper functions exported from [`tree-data-utils.js`](https://github.com/frontend-collective/react-sortable-tree/blob/master/src/utils/tree-data-utils.js).
-
-- **`getTreeFromFlatData`**: Convert flat data (like that from a database) into nested tree data.
-- **`getFlatDataFromTree`**: Convert tree data back to flat data.
-- **`addNodeUnderParent`**: Add a node under the parent node at the given path.
-- **`removeNode`**: For a given path, get the node at that path, treeIndex, and the treeData with that node removed.
-- **`removeNodeAtPath`**: For a given path, remove the node and return the treeData.
-- **`changeNodeAtPath`**: Modify the node object at the given path.
-- **`map`**: Perform a change on every node in the tree.
-- **`walk`**: Visit every node in the tree in order.
-- **`getDescendantCount`**: Count how many descendants this node has.
-- **`getVisibleNodeCount`**: Count how many visible descendants this node has.
-- **`getVisibleNodeInfoAtIndex`**: Get the
th visible node in the tree data.
-- **`toggleExpandedForAll`**: Expand or close every node in the tree.
-- **`getNodeAtPath`**: Get the node at the input path.
-- **`insertNode`**: Insert the input node at the specified depth and minimumTreeIndex.
-- **`find`**: Find nodes matching a search query in the tree.
-- **`isDescendant`**: Check if a node is a descendant of another node.
-- **`getDepth`**: Get the longest path in the tree.
-
-## Themes
-
-Using the `theme` prop along with an imported theme module, you can easily override the default appearance with another standard one.
-
-### Featured themes
-
-|  |
|
|
-| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------: |
-| **File Explorer** | **Full Node Drag** | **Minimalistic theme inspired from MATERIAL UI** |
-| react-sortable-tree-theme-file-explorer | react-sortable-tree-theme-full-node-drag | react-sortable-tree-theme-minimal |
-| [Github](https://github.com/frontend-collective/react-sortable-tree-theme-file-explorer) \| [NPM](https://www.npmjs.com/package/react-sortable-tree-theme-file-explorer) | [Github](https://github.com/frontend-collective/react-sortable-tree-theme-full-node-drag) \| [NPM](https://www.npmjs.com/package/react-sortable-tree-theme-full-node-drag) | [Github](https://github.com/lifejuggler/react-sortable-tree-theme-minimal) \| [NPM](https://www.npmjs.com/package/react-sortable-tree-theme-minimal) |
-
-**Help Wanted** - As the themes feature has just been enabled, there are very few (only _two_ at the time of this writing) theme modules available. If you've customized the appearance of your tree to be especially cool or easy to use, I would be happy to feature it in this readme with a link to the Github repo and NPM page if you convert it to a theme. You can use my [file explorer theme repo](https://github.com/frontend-collective/react-sortable-tree-theme-file-explorer) as a template to plug in your own stuff.
-
-## Browser Compatibility
-
-| Browser | Works? |
-| :------ | :----- |
-| Chrome | Yes |
-| Firefox | Yes |
-| Safari | Yes |
-| IE 11 | Yes |
-
-## Troubleshooting
-
-### If it throws "TypeError: fn is not a function" errors in production
-
-This issue may be related to an ongoing incompatibility between UglifyJS and Webpack's behavior. See an explanation at [create-react-app#2376](https://github.com/facebookincubator/create-react-app/issues/2376).
-
-The simplest way to mitigate this issue is by adding `comparisons: false` to your Uglify config as seen here: https://github.com/facebookincubator/create-react-app/pull/2379/files
-
-### If it doesn't work with other components that use react-dnd
-
-react-dnd only allows for one DragDropContext at a time (see: https://github.com/gaearon/react-dnd/issues/186). To get around this, you can import the context-less tree component via `SortableTreeWithoutDndContext`.
-
-```js
-// before
-import SortableTree from 'react-sortable-tree';
-
-// after
-import { SortableTreeWithoutDndContext as SortableTree } from 'react-sortable-tree';
-```
-
-## Contributing
-
-Please read the [Code of Conduct](CODE_OF_CONDUCT.md). I actively welcome pull requests :)
-
-After cloning the repository and running `yarn install` inside, you can use the following commands to develop and build the project.
-
-```sh
-# Starts a webpack dev server that hosts a demo page with the component.
-# It uses react-hot-loader so changes are reflected on save.
-yarn start
-
-# Start the storybook, which has several different examples to play with.
-# Also hot-reloaded.
-yarn run storybook
-
-# Runs the library tests
-yarn test
-
-# Lints the code with eslint
-yarn run lint
-
-# Lints and builds the code, placing the result in the dist directory.
-# This build is necessary to reflect changes if you're
-# `npm link`-ed to this repository from another local project.
-yarn run build
-```
-
-Pull requests are welcome!
-
-## License
-
-MIT
diff --git a/__mocks__/fileMock.js b/__mocks__/fileMock.js
deleted file mode 100644
index 86059f36..00000000
--- a/__mocks__/fileMock.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = 'test-file-stub';
diff --git a/__mocks__/react-dnd-html5-backend.js b/__mocks__/react-dnd-html5-backend.js
deleted file mode 100644
index e23ee579..00000000
--- a/__mocks__/react-dnd-html5-backend.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/* eslint-disable import/no-extraneous-dependencies */
-import { TestBackend } from 'react-dnd-test-backend';
-
-module.exports = { HTML5Backend: TestBackend };
diff --git a/__mocks__/react-dnd-scrollzone.js b/__mocks__/react-dnd-scrollzone.js
deleted file mode 100644
index f39debe0..00000000
--- a/__mocks__/react-dnd-scrollzone.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = el => el;
-module.exports.createVerticalStrength = () => {};
-module.exports.createHorizontalStrength = () => {};
diff --git a/__mocks__/react-virtualized.js b/__mocks__/react-virtualized.js
deleted file mode 100644
index 90971e9e..00000000
--- a/__mocks__/react-virtualized.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import React from 'react';
-
-// eslint-disable-next-line global-require
-const reactVirtualized = { ...require('react-virtualized') };
-
-/* eslint-disable react/prop-types */
-const MockAutoSizer = props =>
-
- {props.children({
- height: 99999,
- width: 200,
- })}
-
;
-/* eslint-enable react/prop-types */
-
-reactVirtualized.AutoSizer = MockAutoSizer;
-
-module.exports = reactVirtualized;
diff --git a/favicon.ico b/favicon.ico
new file mode 100644
index 00000000..428500fd
Binary files /dev/null and b/favicon.ico differ
diff --git a/iframe.html b/iframe.html
new file mode 100644
index 00000000..86d423d9
--- /dev/null
+++ b/iframe.html
@@ -0,0 +1,74 @@
+StorybookNo Preview
Sorry, but you either have no stories or none are selected somehow.
- Please check the Storybook config.
- Try reloading the page.
If the problem persists, check the browser console, or the terminal you've run Storybook from.
\ No newline at end of file
diff --git a/index.html b/index.html
new file mode 100644
index 00000000..9777fa1a
--- /dev/null
+++ b/index.html
@@ -0,0 +1,19 @@
+Storybook
\ No newline at end of file
diff --git a/main.3d15b904bb6f2e4ed84f.bundle.js b/main.3d15b904bb6f2e4ed84f.bundle.js
new file mode 100644
index 00000000..0cc2de7c
--- /dev/null
+++ b/main.3d15b904bb6f2e4ed84f.bundle.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{1:function(e,t){},1318:function(e,t,n){"use strict";n.r(t);var o=n(247),r=n(1317);o.addons.setConfig({theme:Object(r.create)({base:"light",brandTitle:"React Sortable Tree",brandUrl:"https://github.com/frontend-collective/react-sortable-tree",gridCellSize:12})})},39:function(e,t,n){n(419),n(629),e.exports=n(1318)}},[[39,1,2]]]);
\ No newline at end of file
diff --git a/main.91acd83f50dfbcb80997.bundle.js b/main.91acd83f50dfbcb80997.bundle.js
new file mode 100644
index 00000000..6ff59a2f
--- /dev/null
+++ b/main.91acd83f50dfbcb80997.bundle.js
@@ -0,0 +1,2 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{393:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return App}));__webpack_require__(10),__webpack_require__(13),__webpack_require__(14),__webpack_require__(44),__webpack_require__(11),__webpack_require__(23),__webpack_require__(27),__webpack_require__(9),__webpack_require__(90),__webpack_require__(15),__webpack_require__(820),__webpack_require__(16);var react__WEBPACK_IMPORTED_MODULE_12__=__webpack_require__(0),react__WEBPACK_IMPORTED_MODULE_12___default=__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_12__),_src__WEBPACK_IMPORTED_MODULE_13__=__webpack_require__(6);function _typeof(obj){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj})(obj)}function _defineProperties(target,props){for(var descriptor,i=0;inextPath.indexOf("trap"))return!1;if(node.isTwin&&nextParent&&nextParent.isTwin)return!1;var noGrandkidsDepth=nextPath.indexOf("no-grandkids");return!(0<=noGrandkidsDepth&&2"),react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement("span",null," ",0"),react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement("span",null," ",0treeData.length||function walkDescendants(_ref3){var callback=_ref3.callback,getNodeKey=_ref3.getNodeKey,ignoreCollapsed=_ref3.ignoreCollapsed,_ref3$isPseudoRoot=_ref3.isPseudoRoot,isPseudoRoot=void 0!==_ref3$isPseudoRoot&&_ref3$isPseudoRoot,node=_ref3.node,_ref3$parentNode=_ref3.parentNode,parentNode=void 0===_ref3$parentNode?null:_ref3$parentNode,currentIndex=_ref3.currentIndex,_ref3$path=_ref3.path,path=void 0===_ref3$path?[]:_ref3$path,_ref3$lowerSiblingCou=_ref3.lowerSiblingCounts,lowerSiblingCounts=void 0===_ref3$lowerSiblingCou?[]:_ref3$lowerSiblingCou,selfPath=isPseudoRoot?[]:[].concat(_toConsumableArray(path),[getNodeKey({node:node,treeIndex:currentIndex})]);if(!isPseudoRoot&&!1===callback(isPseudoRoot?null:{node:node,parentNode:parentNode,path:selfPath,lowerSiblingCounts:lowerSiblingCounts,treeIndex:currentIndex}))return!1;if(!node.children||!0!==node.expanded&&ignoreCollapsed&&!isPseudoRoot)return currentIndex;var childIndex=currentIndex,childCount=node.children.length;if("function"!=typeof node.children)for(var i=0;itreeData.length?[]:function mapDescendants(_ref4){var callback=_ref4.callback,getNodeKey=_ref4.getNodeKey,ignoreCollapsed=_ref4.ignoreCollapsed,_ref4$isPseudoRoot=_ref4.isPseudoRoot,isPseudoRoot=void 0!==_ref4$isPseudoRoot&&_ref4$isPseudoRoot,node=_ref4.node,_ref4$parentNode=_ref4.parentNode,parentNode=void 0===_ref4$parentNode?null:_ref4$parentNode,currentIndex=_ref4.currentIndex,_ref4$path=_ref4.path,path=void 0===_ref4$path?[]:_ref4$path,_ref4$lowerSiblingCou=_ref4.lowerSiblingCounts,lowerSiblingCounts=void 0===_ref4$lowerSiblingCou?[]:_ref4$lowerSiblingCou,nextNode=_objectSpread({},node),selfPath=isPseudoRoot?[]:[].concat(_toConsumableArray(path),[getNodeKey({node:nextNode,treeIndex:currentIndex})]),selfInfo={node:nextNode,parentNode:parentNode,path:selfPath,lowerSiblingCounts:lowerSiblingCounts,treeIndex:currentIndex};if(!nextNode.children||!0!==nextNode.expanded&&ignoreCollapsed&&!isPseudoRoot)return{treeIndex:currentIndex,node:callback(selfInfo)};var childIndex=currentIndex,childCount=nextNode.children.length;return"function"!=typeof nextNode.children&&(nextNode.children=nextNode.children.map((function(child,i){var mapResult=mapDescendants({callback:callback,getNodeKey:getNodeKey,ignoreCollapsed:ignoreCollapsed,node:child,parentNode:isPseudoRoot?null:nextNode,currentIndex:childIndex+1,lowerSiblingCounts:[].concat(_toConsumableArray(lowerSiblingCounts),[childCount-i-1]),path:selfPath});return childIndex=mapResult.treeIndex,mapResult.node}))),{node:callback(selfInfo),treeIndex:childIndex}}({callback:callback,getNodeKey:getNodeKey,ignoreCollapsed:ignoreCollapsed,isPseudoRoot:!0,node:{children:treeData},currentIndex:-1,path:[],lowerSiblingCounts:[]}).node.children}function changeNodeAtPath(_ref12){var treeData=_ref12.treeData,path=_ref12.path,newNode=_ref12.newNode,getNodeKey=_ref12.getNodeKey,_ref12$ignoreCollapse=_ref12.ignoreCollapsed,ignoreCollapsed=void 0===_ref12$ignoreCollapse||_ref12$ignoreCollapse,traverse=function(_ref13){var _ref13$isPseudoRoot=_ref13.isPseudoRoot,isPseudoRoot=void 0!==_ref13$isPseudoRoot&&_ref13$isPseudoRoot,node=_ref13.node,currentTreeIndex=_ref13.currentTreeIndex,pathIndex=_ref13.pathIndex;if(!isPseudoRoot&&getNodeKey({node:node,treeIndex:currentTreeIndex})!==path[pathIndex])return"RESULT_MISS";if(pathIndex>=path.length-1)return"function"==typeof newNode?newNode({node:node,treeIndex:currentTreeIndex}):newNode;if(!node.children)throw new Error("Path referenced children of node with no children.");for(var _result,nextTreeIndex=currentTreeIndex+1,i=0;i=minimumTreeIndex-1||isLastChild&&(!node.children||!node.children.length)){if("function"==typeof node.children)throw new Error("Cannot add to children defined by a function");var _nextNode=_objectSpread({},node,{},expandParent?{expanded:!0}:{},{children:node.children?[newNode].concat(_toConsumableArray(node.children)):[newNode]});return{node:_nextNode,nextIndex:currentIndex+2,insertedTreeIndex:currentIndex+1,parentPath:selfPath(_nextNode),parentNode:isPseudoRoot?null:_nextNode}}if(currentDepth>=targetDepth-1){if(!node.children||"function"==typeof node.children||!0!==node.expanded&&ignoreCollapsed&&!isPseudoRoot)return{node:node,nextIndex:currentIndex+1};for(var _childIndex=currentIndex+1,_insertedTreeIndex=null,insertIndex=null,i=0;i=minimumTreeIndex){_insertedTreeIndex=_childIndex,insertIndex=i;break}_childIndex+=1+getDescendantCount({node:node.children[i],ignoreCollapsed:ignoreCollapsed})}if(null===insertIndex){if(_childIndextreeData.length)return[];var flattened=[];return walk({treeData:treeData,getNodeKey:getNodeKey,ignoreCollapsed:ignoreCollapsed,callback:function callback(nodeInfo){flattened.push(nodeInfo)}}),flattened}function getTreeFromFlatData(_ref24){var flatData=_ref24.flatData,_ref24$getKey=_ref24.getKey,getKey=void 0===_ref24$getKey?function(node){return node.id}:_ref24$getKey,_ref24$getParentKey=_ref24.getParentKey,getParentKey=void 0===_ref24$getParentKey?function(node){return node.parentId}:_ref24$getParentKey,_ref24$rootKey=_ref24.rootKey,rootKey=void 0===_ref24$rootKey?"0":_ref24$rootKey;if(!flatData)return[];var childrenToParents={};if(flatData.forEach((function(child){var parentKey=getParentKey(child);parentKey in childrenToParents?childrenToParents[parentKey].push(child):childrenToParents[parentKey]=[child]})),!(rootKey in childrenToParents))return[];var trav=function(parent){var parentKey=getKey(parent);return parentKey in childrenToParents?_objectSpread({},parent,{children:childrenToParents[parentKey].map((function(child){return trav(child)}))}):_objectSpread({},parent)};return childrenToParents[rootKey].map((function(child){return trav(child)}))}getTreeFromFlatData.__docgenInfo={description:"Generate a tree structure from flat data.\n\n@param {!Object[]} flatData\n@param {!function=} getKey - Function to get the key from the nodeData\n@param {!function=} getParentKey - Function to get the parent key from the nodeData\n@param {string|number=} rootKey - The value returned by `getParentKey` that corresponds to the root node.\n For example, if your nodes have id 1-99, you might use rootKey = 0\n\n@return {Object[]} treeData - The flat data represented as a tree",methods:[],displayName:"getTreeFromFlatData",props:{getKey:{defaultValue:{value:"node => node.id",computed:!1},required:!1},getParentKey:{defaultValue:{value:"node => node.parentId",computed:!1},required:!1},rootKey:{defaultValue:{value:"'0'",computed:!1},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/utils/tree-data-utils.js"]={name:"getTreeFromFlatData",docgenInfo:getTreeFromFlatData.__docgenInfo,path:"src/utils/tree-data-utils.js"});__webpack_require__(929);function node_renderer_default_typeof(obj){return(node_renderer_default_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj})(obj)}function node_renderer_default_extends(){return(node_renderer_default_extends=Object.assign||function(target){for(var source,i=1;i=abovePath.length&&"function"==typeof aboveNode.children)return!1;if("function"==typeof this.customCanDrop){var node=monitor.getItem().node,addedResult=memoizedInsertNode({treeData:this.treeData,newNode:node,depth:targetDepth,getNodeKey:this.getNodeKey,minimumTreeIndex:dropTargetProps.listIndex,expandParent:!0});return this.customCanDrop({node:node,prevPath:monitor.getItem().path,prevParent:monitor.getItem().parentNode,prevTreeIndex:monitor.getItem().treeIndex,nextPath:addedResult.path,nextParent:addedResult.parentNode,nextTreeIndex:addedResult.treeIndex})}return!0}},{key:"wrapSource",value:function wrapSource(el){var _this=this;return Object(esm.DragSource)(this.dndType,{beginDrag:function beginDrag(props){return _this.startDrag(props),{node:props.node,parentNode:props.parentNode,path:props.path,treeIndex:props.treeIndex,treeId:props.treeId}},endDrag:function endDrag(props,monitor){_this.endDrag(monitor.getDropResult())},isDragging:function isDragging(props,monitor){var dropTargetNode=monitor.getItem().node;return props.node===dropTargetNode}},(function(connect,monitor){return{connectDragSource:connect.dragSource(),connectDragPreview:connect.dragPreview(),isDragging:monitor.isDragging(),didDrop:monitor.didDrop()}}))(el)}},{key:"wrapTarget",value:function wrapTarget(el){var _this2=this,nodeDropTarget={drop:function drop(dropTargetProps,monitor,component){var result={node:monitor.getItem().node,path:monitor.getItem().path,treeIndex:monitor.getItem().treeIndex,treeId:_this2.treeId,minimumTreeIndex:dropTargetProps.treeIndex,depth:_this2.getTargetDepth(dropTargetProps,monitor,component)};return _this2.drop(result),result},hover:function hover(dropTargetProps,monitor,component){var targetDepth=_this2.getTargetDepth(dropTargetProps,monitor,component),draggedNode=monitor.getItem().node;(dropTargetProps.node!==draggedNode||targetDepth!==dropTargetProps.path.length-1)&&(cancelAnimationFrame(_this2.rafId),_this2.rafId=requestAnimationFrame((function(){_this2.dragHover({node:draggedNode,path:monitor.getItem().path,minimumTreeIndex:dropTargetProps.listIndex,depth:targetDepth})})))},canDrop:this.canDrop.bind(this)};return Object(esm.DropTarget)(this.dndType,nodeDropTarget,(function(connect,monitor){var dragged=monitor.getItem();return{connectDropTarget:connect.dropTarget(),isOver:monitor.isOver(),canDrop:monitor.canDrop(),draggedNode:dragged?dragged.node:null}}))(el)}},{key:"wrapPlaceholder",value:function wrapPlaceholder(el){var _this3=this;return Object(esm.DropTarget)(this.dndType,{drop:function drop(dropTargetProps,monitor){var _monitor$getItem2=monitor.getItem(),result={node:_monitor$getItem2.node,path:_monitor$getItem2.path,treeIndex:_monitor$getItem2.treeIndex,treeId:_this3.treeId,minimumTreeIndex:0,depth:0};return _this3.drop(result),result}},(function(connect,monitor){var dragged=monitor.getItem();return{connectDropTarget:connect.dropTarget(),isOver:monitor.isOver(),canDrop:monitor.canDrop(),draggedNode:dragged?dragged.node:null}}))(el)}},{key:"startDrag",get:function get(){return this.treeRef.startDrag}},{key:"dragHover",get:function get(){return this.treeRef.dragHover}},{key:"endDrag",get:function get(){return this.treeRef.endDrag}},{key:"drop",get:function get(){return this.treeRef.drop}},{key:"treeId",get:function get(){return this.treeRef.treeId}},{key:"dndType",get:function get(){return this.treeRef.dndType}},{key:"treeData",get:function get(){return this.treeRef.state.draggingTreeData||this.treeRef.props.treeData}},{key:"getNodeKey",get:function get(){return this.treeRef.props.getNodeKey}},{key:"customCanDrop",get:function get(){return this.treeRef.props.canDrop}},{key:"maxDepth",get:function get(){return this.treeRef.props.maxDepth}}]),DndManager}();__webpack_require__(933);function react_sortable_tree_typeof(obj){return(react_sortable_tree_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj})(obj)}function react_sortable_tree_extends(){return(react_sortable_tree_extends=Object.assign||function(target){for(var source,i=1;irows.length){var Placeholder=this.treePlaceholderRenderer;list=react_default.a.createElement(Placeholder,{treeId:this.treeId,drop:this.drop},react_default.a.createElement(placeholderRenderer,null))}else if(isVirtualized){containerStyle=react_sortable_tree_objectSpread({height:"100%"},containerStyle);var ScrollZoneVirtualList=this.scrollZoneVirtualList;list=react_default.a.createElement(es.a,null,(function(_ref11){var height=_ref11.height,width=_ref11.width;return react_default.a.createElement(ScrollZoneVirtualList,react_sortable_tree_extends({},scrollToInfo,{dragDropManager:dragDropManager,verticalStrength:_this5.vStrength,horizontalStrength:_this5.hStrength,speed:30,scrollToAlignment:"start",className:"rst__virtualScrollOverride",width:width,onScroll:function onScroll(_ref12){var scrollTop=_ref12.scrollTop;_this5.scrollTop=scrollTop},height:height,style:innerStyle,rowCount:rows.length,estimatedRowSize:"function"!=typeof rowHeight?rowHeight:void 0,rowHeight:"function"!=typeof rowHeight?rowHeight:function(_ref13){var index=_ref13.index;return rowHeight({index:index,treeIndex:index,node:rows[index].node,path:rows[index].path})},rowRenderer:function rowRenderer(_ref14){var index=_ref14.index,rowStyle=_ref14.style;return _this5.renderRow(rows[index],{listIndex:index,style:rowStyle,getPrevRow:function getPrevRow(){return rows[index-1]||null},matchKeys:matchKeys,swapFrom:swapFrom,swapDepth:draggedDepth,swapLength:swapLength})}},reactVirtualizedListProps))}))}else list=rows.map((function(row,index){return _this5.renderRow(row,{listIndex:index,style:{height:"function"!=typeof rowHeight?rowHeight:rowHeight({index:index,treeIndex:index,node:row.node,path:row.path})},getPrevRow:function getPrevRow(){return rows[index-1]||null},matchKeys:matchKeys,swapFrom:swapFrom,swapDepth:draggedDepth,swapLength:swapLength})}));return react_default.a.createElement("div",{className:classnames("rst__tree",className,rowDirectionClass),style:containerStyle},list)}}],[{key:"getDerivedStateFromProps",value:function getDerivedStateFromProps(nextProps,prevState){var instanceProps=prevState.instanceProps,newState={},isTreeDataEqual=lodash_isequal_default()(instanceProps.treeData,nextProps.treeData);return instanceProps.treeData=nextProps.treeData,isTreeDataEqual?lodash_isequal_default()(instanceProps.searchQuery,nextProps.searchQuery)?instanceProps.searchFocusOffset!==nextProps.searchFocusOffset&&Object.assign(newState,ReactSortableTree.search(nextProps,prevState,!0,!0,!0)):Object.assign(newState,ReactSortableTree.search(nextProps,prevState,!0,!0,!1)):(instanceProps.ignoreOneTreeUpdate?instanceProps.ignoreOneTreeUpdate=!1:(newState.searchFocusTreeIndex=null,ReactSortableTree.loadLazyChildren(nextProps,prevState),Object.assign(newState,ReactSortableTree.search(nextProps,prevState,!1,!1,!1))),newState.draggingTreeData=null,newState.draggedNode=null,newState.draggedMinimumTreeIndex=null,newState.draggedDepth=null,newState.dragging=!1),instanceProps.searchQuery=nextProps.searchQuery,instanceProps.searchFocusOffset=nextProps.searchFocusOffset,newState.instanceProps=instanceProps,newState}},{key:"search",value:function search(props,state,seekIndex,expand,singleSearch){var onChange=props.onChange,getNodeKey=props.getNodeKey,searchFinishCallback=props.searchFinishCallback,searchQuery=props.searchQuery,searchMethod=props.searchMethod,searchFocusOffset=props.searchFocusOffset,onlyExpandSearchedNodes=props.onlyExpandSearchedNodes,instanceProps=state.instanceProps;if(!searchQuery&&!searchMethod)return searchFinishCallback&&searchFinishCallback([]),{searchMatches:[]};var _ref9,treeData,_ref9$expanded,expanded,newState={},_find=function find(_ref25){var getNodeKey=_ref25.getNodeKey,treeData=_ref25.treeData,searchQuery=_ref25.searchQuery,searchMethod=_ref25.searchMethod,searchFocusOffset=_ref25.searchFocusOffset,_ref25$expandAllMatch=_ref25.expandAllMatchPaths,expandAllMatchPaths=void 0!==_ref25$expandAllMatch&&_ref25$expandAllMatch,_ref25$expandFocusMat=_ref25.expandFocusMatchPaths,expandFocusMatchPaths=void 0===_ref25$expandFocusMat||_ref25$expandFocusMat,matchCount=0,trav=function(_ref26){var _ref26$isPseudoRoot=_ref26.isPseudoRoot,isPseudoRoot=void 0!==_ref26$isPseudoRoot&&_ref26$isPseudoRoot,node=_ref26.node,currentIndex=_ref26.currentIndex,_ref26$path=_ref26.path,matches=[],isSelfMatch=!1,hasFocusMatch=!1,selfPath=isPseudoRoot?[]:[].concat(_toConsumableArray(void 0===_ref26$path?[]:_ref26$path),[getNodeKey({node:node,treeIndex:currentIndex})]),extraInfo=isPseudoRoot?null:{path:selfPath,treeIndex:currentIndex},hasChildren=node.children&&"function"!=typeof node.children&&0|\n * +-----+\n */\n.rst__highlightBottomLeftCorner {\n z-index: 3;\n}\n.rst__highlightBottomLeftCorner::before {\n content: '';\n position: absolute;\n border-bottom: solid 8px #36c2f6;\n border-left: solid 8px #36c2f6;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n height: calc(100% + 4px);\n top: 0;\n right: 12px;\n width: calc(50% - 8px);\n}\n\n.rst__rtl.rst__highlightBottomLeftCorner::before {\n border-right: solid 8px #36c2f6;\n border-left: none;\n left: 12px;\n right: initial;\n}\n\n.rst__highlightBottomLeftCorner::after {\n content: '';\n position: absolute;\n height: 0;\n right: 0;\n top: 100%;\n margin-top: -12px;\n border-top: 12px solid transparent;\n border-bottom: 12px solid transparent;\n border-left: 12px solid #36c2f6;\n}\n\n.rst__rtl.rst__highlightBottomLeftCorner::after {\n left: 0;\n right: initial;\n border-right: 12px solid #36c2f6;\n border-left: none;\n}\n",""])},929:function(module,exports,__webpack_require__){var api=__webpack_require__(115),content=__webpack_require__(930);"string"==typeof(content=content.__esModule?content.default:content)&&(content=[[module.i,content,""]]);var options={insert:"head",singleton:!1},exported=(api(content,options),content.locals?content.locals:{});module.exports=exported},930:function(module,exports,__webpack_require__){(module.exports=__webpack_require__(116)(!1)).push([module.i,".rst__rowWrapper {\n padding: 10px 10px 10px 0;\n height: 100%;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n}\n\n.rst__rtl.rst__rowWrapper {\n padding: 10px 0 10px 10px;\n}\n\n.rst__row {\n height: 100%;\n white-space: nowrap;\n display: -ms-flexbox;\n display: flex;\n}\n.rst__row > * {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n}\n\n/**\n * The outline of where the element will go if dropped, displayed while dragging\n */\n.rst__rowLandingPad,\n.rst__rowCancelPad {\n border: none !important;\n -webkit-box-shadow: none !important;\n box-shadow: none !important;\n outline: none !important;\n}\n.rst__rowLandingPad > *,\n.rst__rowCancelPad > * {\n opacity: 0 !important;\n}\n.rst__rowLandingPad::before,\n.rst__rowCancelPad::before {\n background-color: lightblue;\n border: 3px dashed white;\n content: '';\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: -1;\n}\n\n/**\n * Alternate appearance of the landing pad when the dragged location is invalid\n */\n.rst__rowCancelPad::before {\n background-color: #e6a8ad;\n}\n\n/**\n * Nodes matching the search conditions are highlighted\n */\n.rst__rowSearchMatch {\n outline: solid 3px #0080ff;\n}\n\n/**\n * The node that matches the search conditions and is currently focused\n */\n.rst__rowSearchFocus {\n outline: solid 3px #fc6421;\n}\n\n.rst__rowContents,\n.rst__rowLabel,\n.rst__rowToolbar,\n.rst__moveHandle,\n.rst__toolbarButton {\n display: inline-block;\n vertical-align: middle;\n}\n\n.rst__rowContents {\n position: relative;\n height: 100%;\n border: solid #bbb 1px;\n border-left: none;\n -webkit-box-shadow: 0 2px 2px -2px;\n box-shadow: 0 2px 2px -2px;\n padding: 0 5px 0 10px;\n border-radius: 2px;\n min-width: 230px;\n -ms-flex: 1 0 auto;\n flex: 1 0 auto;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: justify;\n justify-content: space-between;\n background-color: white;\n}\n\n.rst__rtl.rst__rowContents {\n border-right: none;\n border-left: solid #bbb 1px;\n padding: 0 10px 0 5px;\n}\n\n.rst__rowContentsDragDisabled {\n border-left: solid #bbb 1px;\n}\n\n.rst__rtl.rst__rowContentsDragDisabled {\n border-right: solid #bbb 1px;\n border-left: solid #bbb 1px;\n}\n\n.rst__rowLabel {\n -ms-flex: 0 1 auto;\n flex: 0 1 auto;\n padding-right: 20px;\n}\n.rst__rtl.rst__rowLabel {\n padding-left: 20px;\n padding-right: inherit;\n}\n\n.rst__rowToolbar {\n -ms-flex: 0 1 auto;\n flex: 0 1 auto;\n display: -ms-flexbox;\n display: flex;\n}\n\n.rst__moveHandle,\n.rst__loadingHandle {\n height: 100%;\n width: 44px;\n background: #d9d9d9\n url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MiIgaGVpZ2h0PSI0MiI+PGcgc3Ryb2tlPSIjRkZGIiBzdHJva2Utd2lkdGg9IjIuOSIgPjxwYXRoIGQ9Ik0xNCAxNS43aDE0LjQiLz48cGF0aCBkPSJNMTQgMjEuNGgxNC40Ii8+PHBhdGggZD0iTTE0IDI3LjFoMTQuNCIvPjwvZz4KPC9zdmc+')\n no-repeat center;\n border: solid #aaa 1px;\n -webkit-box-shadow: 0 2px 2px -2px;\n box-shadow: 0 2px 2px -2px;\n cursor: move;\n border-radius: 1px;\n z-index: 1;\n}\n\n.rst__loadingHandle {\n cursor: default;\n background: #d9d9d9;\n}\n\n@-webkit-keyframes pointFade {\n 0%,\n 19.999%,\n 100% {\n opacity: 0;\n }\n 20% {\n opacity: 1;\n }\n}\n\n@keyframes pointFade {\n 0%,\n 19.999%,\n 100% {\n opacity: 0;\n }\n 20% {\n opacity: 1;\n }\n}\n\n.rst__loadingCircle {\n width: 80%;\n height: 80%;\n margin: 10%;\n position: relative;\n}\n\n.rst__loadingCirclePoint {\n width: 100%;\n height: 100%;\n position: absolute;\n left: 0;\n top: 0;\n}\n\n.rst__rtl.rst__loadingCirclePoint {\n right: 0;\n left: initial;\n}\n\n.rst__loadingCirclePoint::before {\n content: '';\n display: block;\n margin: 0 auto;\n width: 11%;\n height: 30%;\n background-color: #fff;\n border-radius: 30%;\n -webkit-animation: pointFade 800ms infinite ease-in-out both;\n animation: pointFade 800ms infinite ease-in-out both;\n}\n.rst__loadingCirclePoint:nth-of-type(1) {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n}\n.rst__loadingCirclePoint:nth-of-type(7) {\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n.rst__loadingCirclePoint:nth-of-type(1)::before,\n.rst__loadingCirclePoint:nth-of-type(7)::before {\n -webkit-animation-delay: -800ms;\n animation-delay: -800ms;\n}\n.rst__loadingCirclePoint:nth-of-type(2) {\n -webkit-transform: rotate(30deg);\n transform: rotate(30deg);\n}\n.rst__loadingCirclePoint:nth-of-type(8) {\n -webkit-transform: rotate(210deg);\n transform: rotate(210deg);\n}\n.rst__loadingCirclePoint:nth-of-type(2)::before,\n.rst__loadingCirclePoint:nth-of-type(8)::before {\n -webkit-animation-delay: -666ms;\n animation-delay: -666ms;\n}\n.rst__loadingCirclePoint:nth-of-type(3) {\n -webkit-transform: rotate(60deg);\n transform: rotate(60deg);\n}\n.rst__loadingCirclePoint:nth-of-type(9) {\n -webkit-transform: rotate(240deg);\n transform: rotate(240deg);\n}\n.rst__loadingCirclePoint:nth-of-type(3)::before,\n.rst__loadingCirclePoint:nth-of-type(9)::before {\n -webkit-animation-delay: -533ms;\n animation-delay: -533ms;\n}\n.rst__loadingCirclePoint:nth-of-type(4) {\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n.rst__loadingCirclePoint:nth-of-type(10) {\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n.rst__loadingCirclePoint:nth-of-type(4)::before,\n.rst__loadingCirclePoint:nth-of-type(10)::before {\n -webkit-animation-delay: -400ms;\n animation-delay: -400ms;\n}\n.rst__loadingCirclePoint:nth-of-type(5) {\n -webkit-transform: rotate(120deg);\n transform: rotate(120deg);\n}\n.rst__loadingCirclePoint:nth-of-type(11) {\n -webkit-transform: rotate(300deg);\n transform: rotate(300deg);\n}\n.rst__loadingCirclePoint:nth-of-type(5)::before,\n.rst__loadingCirclePoint:nth-of-type(11)::before {\n -webkit-animation-delay: -266ms;\n animation-delay: -266ms;\n}\n.rst__loadingCirclePoint:nth-of-type(6) {\n -webkit-transform: rotate(150deg);\n transform: rotate(150deg);\n}\n.rst__loadingCirclePoint:nth-of-type(12) {\n -webkit-transform: rotate(330deg);\n transform: rotate(330deg);\n}\n.rst__loadingCirclePoint:nth-of-type(6)::before,\n.rst__loadingCirclePoint:nth-of-type(12)::before {\n -webkit-animation-delay: -133ms;\n animation-delay: -133ms;\n}\n.rst__loadingCirclePoint:nth-of-type(7) {\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n.rst__loadingCirclePoint:nth-of-type(13) {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n}\n.rst__loadingCirclePoint:nth-of-type(7)::before,\n.rst__loadingCirclePoint:nth-of-type(13)::before {\n -webkit-animation-delay: 0ms;\n animation-delay: 0ms;\n}\n\n.rst__rowTitle {\n font-weight: bold;\n}\n\n.rst__rowTitleWithSubtitle {\n font-size: 85%;\n display: block;\n height: 0.8rem;\n}\n\n.rst__rowSubtitle {\n font-size: 70%;\n line-height: 1;\n}\n\n.rst__collapseButton,\n.rst__expandButton {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n border: none;\n position: absolute;\n border-radius: 100%;\n -webkit-box-shadow: 0 0 0 1px #000;\n box-shadow: 0 0 0 1px #000;\n width: 16px;\n height: 16px;\n padding: 0;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n cursor: pointer;\n}\n.rst__rtl.rst__collapseButton,\n.rst__rtl.rst__expandButton {\n -webkit-transform: translate(50%, -50%);\n transform: translate(50%, -50%);\n}\n.rst__collapseButton:focus,\n.rst__expandButton:focus {\n outline: none;\n -webkit-box-shadow: 0 0 0 1px #000, 0 0 1px 3px #83bef9;\n box-shadow: 0 0 0 1px #000, 0 0 1px 3px #83bef9;\n}\n.rst__collapseButton:hover:not(:active),\n.rst__expandButton:hover:not(:active) {\n background-size: 24px;\n height: 20px;\n width: 20px;\n}\n\n.rst__collapseButton {\n background: #fff\n url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCI+PGNpcmNsZSBjeD0iOSIgY3k9IjkiIHI9IjgiIGZpbGw9IiNGRkYiLz48ZyBzdHJva2U9IiM5ODk4OTgiIHN0cm9rZS13aWR0aD0iMS45IiA+PHBhdGggZD0iTTQuNSA5aDkiLz48L2c+Cjwvc3ZnPg==')\n no-repeat center;\n}\n\n.rst__expandButton {\n background: #fff\n url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCI+PGNpcmNsZSBjeD0iOSIgY3k9IjkiIHI9IjgiIGZpbGw9IiNGRkYiLz48ZyBzdHJva2U9IiM5ODk4OTgiIHN0cm9rZS13aWR0aD0iMS45IiA+PHBhdGggZD0iTTQuNSA5aDkiLz48cGF0aCBkPSJNOSA0LjV2OSIvPjwvZz4KPC9zdmc+')\n no-repeat center;\n}\n\n/**\n * Line for under a node with children\n */\n.rst__lineChildren {\n height: 100%;\n display: inline-block;\n position: absolute;\n}\n.rst__lineChildren::after {\n content: '';\n position: absolute;\n background-color: black;\n width: 1px;\n left: 50%;\n bottom: 0;\n height: 10px;\n}\n\n.rst__rtl.rst__lineChildren::after {\n right: 50%;\n left: initial;\n}\n",""])},931:function(module,exports,__webpack_require__){var api=__webpack_require__(115),content=__webpack_require__(932);"string"==typeof(content=content.__esModule?content.default:content)&&(content=[[module.i,content,""]]);var options={insert:"head",singleton:!1},exported=(api(content,options),content.locals?content.locals:{});module.exports=exported},932:function(module,exports,__webpack_require__){(module.exports=__webpack_require__(116)(!1)).push([module.i,".rst__placeholder {\n position: relative;\n height: 68px;\n max-width: 300px;\n padding: 10px;\n}\n.rst__placeholder,\n.rst__placeholder > * {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n}\n.rst__placeholder::before {\n border: 3px dashed #d9d9d9;\n content: '';\n position: absolute;\n top: 5px;\n right: 5px;\n bottom: 5px;\n left: 5px;\n z-index: -1;\n}\n\n/**\n * The outline of where the element will go if dropped, displayed while dragging\n */\n.rst__placeholderLandingPad,\n.rst__placeholderCancelPad {\n border: none !important;\n -webkit-box-shadow: none !important;\n box-shadow: none !important;\n outline: none !important;\n}\n.rst__placeholderLandingPad *,\n.rst__placeholderCancelPad * {\n opacity: 0 !important;\n}\n.rst__placeholderLandingPad::before,\n.rst__placeholderCancelPad::before {\n background-color: lightblue;\n border-color: white;\n}\n\n/**\n * Alternate appearance of the landing pad when the dragged location is invalid\n */\n.rst__placeholderCancelPad::before {\n background-color: #e6a8ad;\n}\n",""])},933:function(module,exports,__webpack_require__){var api=__webpack_require__(115),content=__webpack_require__(934);"string"==typeof(content=content.__esModule?content.default:content)&&(content=[[module.i,content,""]]);var options={insert:"head",singleton:!1},exported=(api(content,options),content.locals?content.locals:{});module.exports=exported},934:function(module,exports,__webpack_require__){(module.exports=__webpack_require__(116)(!1)).push([module.i,"/**\n * Extra class applied to VirtualScroll through className prop\n */\n.rst__virtualScrollOverride {\n overflow: auto !important;\n}\n.rst__virtualScrollOverride * {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n}\n\n.ReactVirtualized__Grid__innerScrollContainer {\n overflow: visible !important;\n}\n\n.rst__rtl .ReactVirtualized__Grid__innerScrollContainer {\n direction: rtl;\n}\n\n.ReactVirtualized__Grid {\n outline: none;\n}\n",""])},935:function(module,exports,__webpack_require__){var api=__webpack_require__(115),content=__webpack_require__(936);"string"==typeof(content=content.__esModule?content.default:content)&&(content=[[module.i,content,""]]);var options={insert:"head",singleton:!1},exported=(api(content,options),content.locals?content.locals:{});module.exports=exported},936:function(module,exports,__webpack_require__){(module.exports=__webpack_require__(116)(!1)).push([module.i,".sourceLink,\n.sandboxButton {\n position: fixed;\n top: 0;\n right: 0;\n padding: 130px 50px 5px 50px;\n font: 10px helvetica, sans-serif;\n display: inline-block;\n background: rgb(12, 35, 194);\n color: #fff;\n text-decoration: none;\n -webkit-transform: translate(50%, -50%) rotateZ(45deg);\n transform: translate(50%, -50%) rotateZ(45deg);\n -webkit-transition: background 100ms;\n transition: background 100ms;\n}\n.sourceLink:hover:not(:active) {\n background: rgb(102, 135, 244);\n}\n\n.sandboxButton {\n top: 30px;\n right: 30px;\n background: rgb(12, 194, 68);\n padding: 130px 100px 5px 100px;\n border: none;\n cursor: pointer;\n outline: none;\n}\n.sandboxButton:hover:not(:active) {\n background: rgb(128, 242, 137);\n}\n",""])}},[[418,1,2]]]);
+//# sourceMappingURL=main.91acd83f50dfbcb80997.bundle.js.map
\ No newline at end of file
diff --git a/main.91acd83f50dfbcb80997.bundle.js.map b/main.91acd83f50dfbcb80997.bundle.js.map
new file mode 100644
index 00000000..a4e6bddc
--- /dev/null
+++ b/main.91acd83f50dfbcb80997.bundle.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"main.91acd83f50dfbcb80997.bundle.js","sources":["webpack:///main.91acd83f50dfbcb80997.bundle.js"],"mappings":"AAAA","sourceRoot":""}
\ No newline at end of file
diff --git a/package.json b/package.json
deleted file mode 100644
index c32212fa..00000000
--- a/package.json
+++ /dev/null
@@ -1,132 +0,0 @@
-{
- "name": "react-sortable-tree",
- "version": "2.8.0",
- "description": "Drag-and-drop sortable component for nested data and hierarchies",
- "scripts": {
- "prebuild": "yarn run lint && yarn run clean",
- "build": "rollup -c",
- "build:storybook": "build-storybook -o build",
- "clean": "rimraf dist",
- "clean:storybook": "rimraf build",
- "lint": "eslint src",
- "prettier": "prettier --write \"{src,example/src,stories}/**/*.{js,css,md}\"",
- "prepublishOnly": "yarn run test && yarn run build",
- "release": "standard-version",
- "test": "jest",
- "test:watch": "jest --watchAll",
- "storybook": "start-storybook -p ${PORT:-3001} -h 0.0.0.0",
- "deploy": "gh-pages -d build"
- },
- "main": "dist/index.cjs.js",
- "module": "dist/index.esm.js",
- "files": [
- "dist",
- "style.css"
- ],
- "repository": {
- "type": "git",
- "url": "https://github.com/frontend-collective/react-sortable-tree"
- },
- "homepage": "https://frontend-collective.github.io/react-sortable-tree/",
- "bugs": "https://github.com/frontend-collective/react-sortable-tree/issues",
- "authors": [
- "Chris Fritz"
- ],
- "license": "MIT",
- "jest": {
- "setupFilesAfterEnv": [
- "./node_modules/jest-enzyme/lib/index.js"
- ],
- "setupFiles": [
- "./test-config/shim.js",
- "./test-config/test-setup.js"
- ],
- "moduleFileExtensions": [
- "js",
- "jsx",
- "json"
- ],
- "moduleDirectories": [
- "node_modules"
- ],
- "moduleNameMapper": {
- "\\.(css|jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "/__mocks__/fileMock.js",
- "^dnd-core$": "dnd-core/dist/cjs",
- "^react-dnd$": "react-dnd/dist/cjs",
- "^react-dnd-html5-backend$": "react-dnd-html5-backend/dist/cjs",
- "^react-dnd-touch-backend$": "react-dnd-touch-backend/dist/cjs",
- "^react-dnd-test-backend$": "react-dnd-test-backend/dist/cjs",
- "^react-dnd-test-utils$": "react-dnd-test-utils/dist/cjs"
- }
- },
- "browserslist": [
- "IE 11",
- "last 2 versions",
- "> 1%"
- ],
- "dependencies": {
- "frontend-collective-react-dnd-scrollzone": "^1.0.2",
- "lodash.isequal": "^4.5.0",
- "prop-types": "^15.6.1",
- "react-dnd": "^11.1.3",
- "react-dnd-html5-backend": "^11.1.3",
- "react-lifecycles-compat": "^3.0.4",
- "react-virtualized": "^9.21.2"
- },
- "peerDependencies": {
- "react": "^16.3.0",
- "react-dnd": "^7.3.0",
- "react-dom": "^16.3.0"
- },
- "devDependencies": {
- "@babel/cli": "^7.7.0",
- "@babel/core": "^7.7.2",
- "@babel/plugin-transform-modules-commonjs": "^7.1.0",
- "@babel/preset-env": "^7.7.1",
- "@babel/preset-react": "^7.7.0",
- "@storybook/addon-storyshots": "^5.2.6",
- "@storybook/addons": "^5.3.17",
- "@storybook/react": "^5.2.6",
- "@storybook/theming": "^5.3.17",
- "autoprefixer": "^9.7.1",
- "babel-core": "^7.0.0-bridge.0",
- "babel-eslint": "^10.0.3",
- "babel-jest": "^24.9.0",
- "babel-loader": "^8.0.4",
- "codesandbox": "~2.1.10",
- "coveralls": "^3.0.1",
- "cross-env": "^6.0.3",
- "enzyme": "^3.10.0",
- "enzyme-adapter-react-16": "^1.14.0",
- "eslint": "^6.6.0",
- "eslint-config-airbnb": "^18.0.1",
- "eslint-config-prettier": "^6.5.0",
- "eslint-plugin-import": "^2.18.2",
- "eslint-plugin-jsx-a11y": "^6.2.3",
- "eslint-plugin-react": "^7.16.0",
- "gh-pages": "^2.1.1",
- "jest": "^24.9.0",
- "jest-enzyme": "^7.1.2",
- "parcel-bundler": "^1.12.4",
- "prettier": "^1.19.1",
- "react": "^16.11.0",
- "react-addons-shallow-compare": "^15.6.2",
- "react-dnd-test-backend": "^11.1.3",
- "react-dnd-touch-backend": "^9.4.0",
- "react-dom": "^16.11.0",
- "react-hot-loader": "^4.12.17",
- "react-sortable-tree-theme-file-explorer": "^2.0.0",
- "react-test-renderer": "^16.11.0",
- "rimraf": "^3.0.0",
- "rollup": "^1.27.0",
- "rollup-plugin-babel": "^4.0.3",
- "rollup-plugin-commonjs": "^10.1.0",
- "rollup-plugin-node-resolve": "^5.2.0",
- "rollup-plugin-postcss": "^2.0.3",
- "standard-version": "^8.0.1"
- },
- "keywords": [
- "react",
- "react-component"
- ]
-}
diff --git a/rollup.config.js b/rollup.config.js
deleted file mode 100644
index df7644d4..00000000
--- a/rollup.config.js
+++ /dev/null
@@ -1,42 +0,0 @@
-import nodeResolve from 'rollup-plugin-node-resolve';
-import commonjs from 'rollup-plugin-commonjs';
-import babel from 'rollup-plugin-babel';
-import postcss from 'rollup-plugin-postcss';
-
-import pkg from './package.json';
-
-export default {
- input: './src/index.js',
- output: [
- {
- file: pkg.main,
- format: 'cjs',
- exports: 'named',
- },
- {
- file: pkg.module,
- format: 'esm',
- exports: 'named',
- },
- ],
- external: [
- 'react',
- 'react-dom',
- 'react-dnd',
- 'prop-types',
- 'react-dnd-html5-backend',
- 'frontend-collective-react-dnd-scrollzone',
- 'react-virtualized',
- 'lodash.isequal',
- ],
- plugins: [
- nodeResolve(),
- postcss({ extract: './style.css' }),
- commonjs({
- include: 'node_modules/**',
- }),
- babel({
- exclude: 'node_modules/**',
- }),
- ],
-};
diff --git a/runtime~main.25fc818af1dd5d1e4dbb.bundle.js b/runtime~main.25fc818af1dd5d1e4dbb.bundle.js
new file mode 100644
index 00000000..fa316dd6
--- /dev/null
+++ b/runtime~main.25fc818af1dd5d1e4dbb.bundle.js
@@ -0,0 +1 @@
+!function(e){function r(r){for(var n,l,f=r[0],i=r[1],a=r[2],c=0,s=[];c
+ *
+ * Copyright (c) 2014-2017, Jon Schlinkert.
+ * Released under the MIT License.
+ */
+
+/*!
+ * https://github.com/paulmillr/es6-shim
+ * @license es6-shim Copyright 2013-2016 by Paul Miller (http://paulmillr.com)
+ * and contributors, MIT License
+ * es6-shim: v0.35.4
+ * see https://github.com/paulmillr/es6-shim/blob/0.35.3/LICENSE
+ * Details and documentation:
+ * https://github.com/paulmillr/es6-shim/
+ */
+
+/** @license React v16.12.0
+ * react.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/** @license React v16.12.0
+ * react-is.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/** @license React v0.16.2
+ * scheduler.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/*
+object-assign
+(c) Sindre Sorhus
+@license MIT
+*/
+
+/**
+ * @license
+ * Lodash
+ * Copyright OpenJS Foundation and other contributors
+ * Released under MIT license
+ * Based on Underscore.js 1.8.3
+ * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ */
+
+/*!
+ * Fuse.js v3.4.6 - Lightweight fuzzy-search (http://fusejs.io)
+ *
+ * Copyright (c) 2012-2017 Kirollos Risk (http://kiro.me)
+ * All Rights Reserved. Apache Software License 2.0
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+/** @license React v16.11.0
+ * react-dom.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
diff --git a/sb_dll/storybook_ui_dll.js b/sb_dll/storybook_ui_dll.js
new file mode 100644
index 00000000..a7f1b700
--- /dev/null
+++ b/sb_dll/storybook_ui_dll.js
@@ -0,0 +1,2 @@
+/*! License information can be found in storybook_ui_dll.LICENCE */
+var storybook_ui_dll=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}({"+/eK":function(e,t){e.exports="\t\n\v\f\r \u2028\u2029\ufeff"},"+7q0":function(e,t,n){var r=n("eN33"),i=n("Pz+s"),o=n("zWgn"),a=i?function(e,t){return i(e,"toString",{configurable:!0,enumerable:!1,value:r(t),writable:!0})}:o;e.exports=a},"+7uE":function(e,t,n){"use strict";n("IAdD"),Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=s(n("ERkP")),i=s(n("vbDw")),o=n("9NtK"),a=s(n("MBcr"));function s(e){return e&&e.__esModule?e:{default:e}}function l(){return(l=Object.assign||function(e){for(var t=1;t`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist"],case_insensitive:!0,contains:[{className:"meta",begin:"",relevance:10,contains:[{begin:"\\[",end:"\\]"}]},e.COMMENT("\x3c!--","--\x3e",{relevance:10}),{begin:"<\\!\\[CDATA\\[",end:"\\]\\]>",relevance:10},{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{begin:/<\?(php)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},e.inherit(e.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]},{className:"tag",begin:"",returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:"