{"_id":"@a11n-io/react-sortable-tree","_rev":"4-8adb848f19c1ff235518ce756326a77c","name":"@a11n-io/react-sortable-tree","dist-tags":{"latest":"4.2.4"},"versions":{"4.2.0":{"name":"@a11n-io/react-sortable-tree","version":"4.2.0","description":"Drag-and-drop sortable component for nested data and hierarchies","main":"./index.js","module":"./esm/index.js","types":"./index.d.ts","exports":{"./package.json":"./package.json","./style.css":"./style.css",".":{"types":"./index.d.ts","module":"./esm/index.js","import":"./esm/index.mjs","default":"./index.js"}},"sideEffects":false,"scripts":{"prebuild":"yarn clean","build":"rollup -c","build:storybook":"build-storybook -o build","clean":"rimraf dist","clean:storybook":"rimraf build","lint":"eslint '*.{js,json}' '{src,tests}/**/*.{ts,tsx}'","prepublishOnly":"yarn build","release":"standard-version","storybook":"start-storybook -p ${PORT:-3001} -h 0.0.0.0","postbuild":"yarn copy","copy":"rimraf dist/tests.d.ts && shx cp -r dist/*.d.ts dist/esm && shx mv dist/* dist && shx cp package.json README.md LICENSE dist && json -I -f dist/package.json -e \"this.private=false; this.devDependencies=undefined; this.optionalDependencies=undefined; this.scripts=undefined; this.prettier=undefined; this['lint-staged']=undefined;\"","publish:alpha":"cd dist && npm publish --tag alpha","publish:beta":"cd dist && npm publish --tag beta","publish:release":"cd dist && npm publish"},"engines":{"node":">=16"},"prettier":{"semi":false,"trailingComma":"es5","singleQuote":true,"bracketSameLine":true,"tabWidth":2,"printWidth":80},"repository":{"type":"git","url":"git+https://github.com/a11n/react-sortable-tree.git"},"keywords":["react","react-component","sortable-tree","virtual-tree"],"publishConfig":{"access":"public"},"contributors":[{"name":"Chris Fritz"},{"name":"Vitalii Shvetsov"}],"license":"MIT","bugs":{"url":"https://github.com/a11n/react-sortable-tree/issues"},"dependencies":{"@nosferatu500/react-dnd-scrollzone":"^2.0.10","lodash.isequal":"^4.5.0","react-dnd":"16.0.0","react-dnd-html5-backend":"^16.0.1","react-virtuoso":"^2.19.1"},"devDependencies":{"@babel/core":"^7.19.3","@babel/eslint-parser":"^7.19.1","@babel/helper-module-imports":"^7.18.6","@babel/plugin-transform-react-jsx":"^7.19.0","@babel/preset-env":"^7.19.3","@babel/types":"^7.19.3","@rollup/plugin-babel":"^5.3.1","@rollup/plugin-node-resolve":"^14.1.0","@rollup/plugin-typescript":"^8.5.0","@storybook/addon-postcss":"^2.0.0","@storybook/addons":"^6.5.12","@storybook/react":"^6.5.12","@storybook/theming":"^6.5.12","@types/babel-plugin-macros":"^2.8.5","@types/lodash.isequal":"^4.5.6","@types/react":"^17.0.50","@types/react-dom":"^17.0.17","@typescript-eslint/eslint-plugin":"^5.39.0","@typescript-eslint/parser":"^5.39.0","acorn-jsx":"^5.3.2","autoprefixer":"^10.4.12","babel-plugin-macros":"^3.1.0","esbuild":"^0.15.10","eslint":"^8.24.0","eslint-config-airbnb":"^19.0.4","eslint-config-airbnb-typescript":"^17.0.0","eslint-config-prettier":"^8.5.0","eslint-import-resolver-typescript":"^3.5.1","eslint-plugin-import":"^2.26.0","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.0.1","eslint-plugin-react":"^7.31.8","eslint-plugin-react-hooks":"^4.6.0","eslint-plugin-sonarjs":"^0.15.0","eslint-plugin-storybook":"^0.6.4","eslint-plugin-unicorn":"^44.0.0","json":"^11.0.0","postcss":"^8.4.17","prettier":"^2.7.1","prop-types":"^15.8.1","react":"^18.2.0","react-dnd-touch-backend":"^16.0.1","react-dom":"^18.2.0","rimraf":"^3.0.2","rollup":"^2.79.1","rollup-plugin-esbuild":"^4.10.1","rollup-plugin-postcss":"^4.0.2","shx":"^0.3.4","tslib":"^2.4.0","typescript":"^4.8.4"},"peerDependencies":{"react":">=18.2.0","react-dnd":"16.0.0","react-dom":">=18.2.0"},"browserslist":{"production":[">0.2%","not dead","not ie <= 11","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"gitHead":"40b6cdd9505a3409d9d24816d530e210409ae283","homepage":"https://github.com/a11n/react-sortable-tree#readme","_id":"@a11n-io/react-sortable-tree@4.2.0","_nodeVersion":"19.0.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-Kpj35h4mz4WjuRYr7y8cFyWHBRL+OBOZhxXEcwUXbIgFV9d/2nCQ3EqdacLri8myawuVO0fCy35rfETp2ijBag==","shasum":"4adaf21bc44b08ffb6b1aa5addc8fcd42266b962","tarball":"https://registry.npmjs.org/@a11n-io/react-sortable-tree/-/react-sortable-tree-4.2.0.tgz","fileCount":3841,"unpackedSize":26605086,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDct4UOnpxhuQwlj5UPC7OmPT/LTUzLGLky/1deo1uXEAIhAJTNdolily9ftjfHqBk2AqJtYQxk87gkblwL0l3Z5VI+"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjYR+FACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmonfg//UhRM9aZqw/26xRPNuSktlZE3lHVPrq6qaDZav5Rh7QMqhXkE\r\nEjVQgG6JoU75sQNoaPONxAew1MlUANLMVnhPL5SuutjVdxTeWNXOp63LZxUN\r\nE0L/Q7jVff7lDnVnjGAh2SWY46xdIba6Ip5YkcOo5csPVtHAoOsM/SQNbjkQ\r\neV4HRP1oMo1Lq5jq+3q/sIpOChRxK4TtbXsueoJaGFlD1tDUZfxgpD1HW7eX\r\n5jtfLMwpPhaKSpoAfF8YrZWvovv5dkeCofIxe/NK6PFQrrWUNyFAq3qHaIZP\r\nbkRjveD8mVicV9s8ql+/KSgvRyXt8rIRFrx3bVfo4gtFZugjuHV0GQpX+KTR\r\nc4uAJhDw0bkFtUnUj/i9BeqxxU1CRW4gsEFXqEVUBFdUBgtvb1tSJVidjhDJ\r\n4gyseUZSnMh1BilNnVRdHneY/qPfHJQLI7nq1g+2m+zHuzS9ktTEhQdgd8Y2\r\ngtU58SK1MLO/UwLLDVOvoe/8ncVd2DrjwGT3lM4VSjho6Aml0JLo36MdI8CV\r\nLuZLf0VWsr9lNOpG6M35uPgSoT+x7lZZUeYlZXPLsgdZ8XPA9MTMgA0tGDIL\r\nh48DPz8Kpq9DU3A+H1oj16HS5hipqiqUizQRLAnKOeZ5+zyBJwy+xSI2ZlUr\r\nx4hcDTKo1YpWmpyi6i3giuGB5EdbTTatbrg=\r\n=sTNP\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jacokruger","email":"superkruger@gmail.com"},"directories":{},"maintainers":[{"name":"jacokruger","email":"superkruger@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-sortable-tree_4.2.0_1667309444929_0.9617874253537746"},"_hasShrinkwrap":false},"4.2.1":{"name":"@a11n-io/react-sortable-tree","version":"4.2.1","description":"Drag-and-drop sortable component for nested data and hierarchies","main":"./index.js","module":"./esm/index.js","types":"./index.d.ts","exports":{"./package.json":"./package.json","./style.css":"./style.css",".":{"types":"./index.d.ts","module":"./esm/index.js","import":"./esm/index.mjs","default":"./index.js"}},"sideEffects":false,"scripts":{"prebuild":"yarn clean","build":"rollup -c","build:storybook":"build-storybook -o build","clean":"rimraf dist","clean:storybook":"rimraf build","lint":"eslint '*.{js,json}' '{src,tests}/**/*.{ts,tsx}'","prepublishOnly":"yarn build","release":"standard-version","storybook":"start-storybook -p ${PORT:-3001} -h 0.0.0.0","postbuild":"yarn copy","copy":"rimraf dist/tests.d.ts && shx cp -r dist/*.d.ts dist/esm && shx mv dist/* dist && shx cp package.json README.md LICENSE dist && json -I -f dist/package.json -e \"this.private=false; this.devDependencies=undefined; this.optionalDependencies=undefined; this.scripts=undefined; this.prettier=undefined; this['lint-staged']=undefined;\"","publish:alpha":"cd dist && npm publish --tag alpha","publish:beta":"cd dist && npm publish --tag beta","publish:release":"cd dist && npm publish"},"engines":{"node":">=16"},"prettier":{"semi":false,"trailingComma":"es5","singleQuote":true,"bracketSameLine":true,"tabWidth":2,"printWidth":80},"repository":{"type":"git","url":"git+https://github.com/a11n/react-sortable-tree.git"},"keywords":["react","react-component","sortable-tree","virtual-tree"],"publishConfig":{"access":"public"},"contributors":[{"name":"Chris Fritz"},{"name":"Vitalii Shvetsov"}],"license":"MIT","bugs":{"url":"https://github.com/a11n/react-sortable-tree/issues"},"dependencies":{"@nosferatu500/react-dnd-scrollzone":"^3.0.0","lodash.isequal":"^4.5.0","react-dnd":"16.0.0","react-dnd-html5-backend":"^16.0.1","react-virtuoso":"^2.19.1"},"devDependencies":{"@babel/core":"^7.19.3","@babel/eslint-parser":"^7.19.1","@babel/helper-module-imports":"^7.18.6","@babel/plugin-transform-react-jsx":"^7.19.0","@babel/preset-env":"^7.19.3","@babel/types":"^7.19.3","@rollup/plugin-babel":"^5.3.1","@rollup/plugin-node-resolve":"^14.1.0","@rollup/plugin-typescript":"^8.5.0","@storybook/addon-postcss":"^2.0.0","@storybook/addons":"^6.5.12","@storybook/react":"^6.5.12","@storybook/theming":"^6.5.12","@types/babel-plugin-macros":"^2.8.5","@types/lodash.isequal":"^4.5.6","@types/react":"^17.0.50","@types/react-dom":"^17.0.17","@typescript-eslint/eslint-plugin":"^5.39.0","@typescript-eslint/parser":"^5.39.0","acorn-jsx":"^5.3.2","autoprefixer":"^10.4.12","babel-plugin-macros":"^3.1.0","esbuild":"^0.15.10","eslint":"^8.24.0","eslint-config-airbnb":"^19.0.4","eslint-config-airbnb-typescript":"^17.0.0","eslint-config-prettier":"^8.5.0","eslint-import-resolver-typescript":"^3.5.1","eslint-plugin-import":"^2.26.0","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.0.1","eslint-plugin-react":"^7.31.8","eslint-plugin-react-hooks":"^4.6.0","eslint-plugin-sonarjs":"^0.15.0","eslint-plugin-storybook":"^0.6.4","eslint-plugin-unicorn":"^44.0.0","json":"^11.0.0","postcss":"^8.4.17","prettier":"^2.7.1","prop-types":"^15.8.1","react":"^18.2.0","react-dnd-touch-backend":"^16.0.1","react-dom":"^18.2.0","rimraf":"^3.0.2","rollup":"^2.79.1","rollup-plugin-esbuild":"^4.10.1","rollup-plugin-postcss":"^4.0.2","shx":"^0.3.4","tslib":"^2.4.0","typescript":"^4.8.4"},"peerDependencies":{"react":">=18.2.0","react-dnd":"16.0.0","react-dom":">=18.2.0"},"browserslist":{"production":[">0.2%","not dead","not ie <= 11","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"gitHead":"40b6cdd9505a3409d9d24816d530e210409ae283","homepage":"https://github.com/a11n/react-sortable-tree#readme","_id":"@a11n-io/react-sortable-tree@4.2.1","_nodeVersion":"19.0.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-LZi1YQq/EOkzZPv+H86o+H0LnDafKrCbUXzR56pKV/Nnv7yvfZHWRi0I4rHqEW6vj1hQpyOKZGiMa33tZg0FUA==","shasum":"f6caabe0aa6894e9cdc8f0a2616c57987cf44426","tarball":"https://registry.npmjs.org/@a11n-io/react-sortable-tree/-/react-sortable-tree-4.2.1.tgz","fileCount":3842,"unpackedSize":26605348,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDeHHmpb9lyaBBdhmke6m06p32rv2FPA1z/ObGZnOAv+wIgIySKyoET7kz2JxZ3hPwxwAg7d7dAaw54MbZA+aFKVSc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjYSPyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoTrxAAmVPMLYpliV14YGxiZkwLKsAkouoCGixsQf94FmbOLYIV6bzU\r\noKXkTKHSdBD8gJCTVvyNegi2q1Nyvmr3mAEfVAnl7WWYSpkFqRvA03YF1gnq\r\nHSM8wHH7vOqtE39BUtE+jlSA3goy5j8i1Fi3TV3wswDzI4U4mhrtHisD1Rsz\r\nokqdmRLWbZc9EbG5ZtCZOJtu+r3jn9vjaemmjKUnI+0eTKK8E+j5s7lcTjPs\r\n3djMNDLx/xH/Ub153P+0cpZVimCCncmArFff+iSoVErxmYkuNHc7ud2+20xX\r\ns3U38SvsIVexhI+M3lEsYVOnU4/rqQZZ3RL6Qu5vplProdMkrqF1xPr7ecuX\r\nA+HJfJRxWhhrS+C85cEfpKVmYYfzP0Vr0LoH/+XH0x5EjubA3U/7vp25GWeZ\r\nE9/GlOtf017/VhEfL85Xot9bo/M2RbndwJxxoANAHmBMXEkHqG2ohxVMuaEz\r\nTYxZBC2YJH1ExoibCXVlACDPqhY2mzVf5yRa9RHJowDe8HZ8Y4+dPSPgAVHf\r\nHBDFaj1PvnoyUMeiYCwXjJTbXkQGYfbBAfA/FAWpprRxmUiDjpXgssFAUJN0\r\nAzIxMhRJhB1IT4slTLnQl0OBrHIOdLAR8FSYSSeFtAbEijl4riu+964cu7U5\r\nluO7XJ4Cr3FE95KySfy4M6EamysqwgtZEx8=\r\n=6Mbs\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jacokruger","email":"superkruger@gmail.com"},"directories":{},"maintainers":[{"name":"jacokruger","email":"superkruger@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-sortable-tree_4.2.1_1667310578452_0.1711258693371982"},"_hasShrinkwrap":false},"4.2.2":{"name":"@a11n-io/react-sortable-tree","version":"4.2.2","description":"Drag-and-drop sortable component for nested data and hierarchies","main":"./index.js","module":"./esm/index.js","types":"./index.d.ts","exports":{"./package.json":"./package.json","./style.css":"./style.css",".":{"types":"./index.d.ts","module":"./esm/index.js","import":"./esm/index.mjs","default":"./index.js"}},"sideEffects":false,"scripts":{"prebuild":"yarn clean","build":"rollup -c","build:storybook":"build-storybook -o build","clean":"rimraf dist","clean:storybook":"rimraf build","lint":"eslint '*.{js,json}' '{src,tests}/**/*.{ts,tsx}'","prepublishOnly":"yarn build","release":"standard-version","storybook":"start-storybook -p ${PORT:-3001} -h 0.0.0.0","postbuild":"yarn copy","copy":"rimraf dist/tests.d.ts && shx cp -r dist/*.d.ts dist/esm && shx mv dist/* dist && shx cp package.json README.md LICENSE dist && json -I -f dist/package.json -e \"this.private=false; this.devDependencies=undefined; this.optionalDependencies=undefined; this.scripts=undefined; this.prettier=undefined; this['lint-staged']=undefined;\"","publish:alpha":"cd dist && npm publish --tag alpha","publish:beta":"cd dist && npm publish --tag beta","publish:release":"cd dist && npm publish"},"engines":{"node":">=16"},"prettier":{"semi":false,"trailingComma":"es5","singleQuote":true,"bracketSameLine":true,"tabWidth":2,"printWidth":80},"repository":{"type":"git","url":"git+https://github.com/a11n/react-sortable-tree.git"},"keywords":["react","react-component","sortable-tree","virtual-tree"],"publishConfig":{"access":"public"},"contributors":[{"name":"Chris Fritz"},{"name":"Vitalii Shvetsov"}],"license":"MIT","bugs":{"url":"https://github.com/a11n/react-sortable-tree/issues"},"dependencies":{"@nosferatu500/react-dnd-scrollzone":"^3.0.0","lodash.isequal":"^4.5.0","react-dnd":"16.0.0","react-dnd-html5-backend":"^16.0.1","react-virtuoso":"^2.19.1"},"devDependencies":{"@babel/core":"^7.19.3","@babel/eslint-parser":"^7.19.1","@babel/helper-module-imports":"^7.18.6","@babel/plugin-transform-react-jsx":"^7.19.0","@babel/preset-env":"^7.19.3","@babel/types":"^7.19.3","@rollup/plugin-babel":"^5.3.1","@rollup/plugin-node-resolve":"^14.1.0","@rollup/plugin-typescript":"^8.5.0","@storybook/addon-postcss":"^2.0.0","@storybook/addons":"^6.5.12","@storybook/react":"^6.5.12","@storybook/theming":"^6.5.12","@types/babel-plugin-macros":"^2.8.5","@types/lodash.isequal":"^4.5.6","@types/react":"^17.0.50","@types/react-dom":"^17.0.17","@typescript-eslint/eslint-plugin":"^5.39.0","@typescript-eslint/parser":"^5.39.0","acorn-jsx":"^5.3.2","autoprefixer":"^10.4.12","babel-plugin-macros":"^3.1.0","esbuild":"^0.15.10","eslint":"^8.24.0","eslint-config-airbnb":"^19.0.4","eslint-config-airbnb-typescript":"^17.0.0","eslint-config-prettier":"^8.5.0","eslint-import-resolver-typescript":"^3.5.1","eslint-plugin-import":"^2.26.0","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.0.1","eslint-plugin-react":"^7.31.8","eslint-plugin-react-hooks":"^4.6.0","eslint-plugin-sonarjs":"^0.15.0","eslint-plugin-storybook":"^0.6.4","eslint-plugin-unicorn":"^44.0.0","json":"^11.0.0","postcss":"^8.4.17","prettier":"^2.7.1","prop-types":"^15.8.1","react":"^18.2.0","react-dnd-touch-backend":"^16.0.1","react-dom":"^18.2.0","rimraf":"^3.0.2","rollup":"^2.79.1","rollup-plugin-esbuild":"^4.10.1","rollup-plugin-postcss":"^4.0.2","shx":"^0.3.4","tslib":"^2.4.0","typescript":"^4.8.4"},"peerDependencies":{"react":">=18.2.0","react-dnd":">=16.0.0","react-dom":">=18.2.0"},"browserslist":{"production":[">0.2%","not dead","not ie <= 11","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"gitHead":"40b6cdd9505a3409d9d24816d530e210409ae283","homepage":"https://github.com/a11n/react-sortable-tree#readme","_id":"@a11n-io/react-sortable-tree@4.2.2","_nodeVersion":"19.0.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-w4STtXs7JACh7Hrw3q4nDSwVfod8Eabon7tNHVc9WtgiYccLepi6GzQKqA1QCSwo4lH2KfqQ0fhVOTKAr89ZiA==","shasum":"e23dbcfd39069b9641cc1cd63c200ca8fead9e78","tarball":"https://registry.npmjs.org/@a11n-io/react-sortable-tree/-/react-sortable-tree-4.2.2.tgz","fileCount":3842,"unpackedSize":26605352,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD/Qe2TEX9jBB4PVC0mXvuCF24h3FPjv1l7G8FRf4nPmQIgXIO3v1xHDLqxB0/oVH+E/8ygKZpzqE5KVYQygKFYrsA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjYSR0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq2zRAAlLSMr9G62b/Zc/i4hao5PS5Inn1N/eVUWOzm0n1puoryclDh\r\nSnvhJW/DKsuA3vZUjgedjUif7krrNtFNJp3NWc0GnMXTZse+1AcfqWsTKOST\r\n8uh5HpecHXsAJAanlS7mLpr/v0CucfYgNvA+WzC5aC0bM9UQztDVFa2uLItM\r\nmjMWlAkVA0bQBRjshKCXWFFTe++fpjKIaDfONuXa4o1ZV7GJxSBtOgdoVQmX\r\nj1/FlCxsJZOmneXya8LwWy8TGvdHRZ4vMWcj6TJPGEaGdFBA1gvdZ6BOuPq6\r\nU2Et/sF8LdPgVl1q+4f0I8UJU0y+R4zF/sR82/P1pUwhebAuLzhPk1SDblla\r\nFoY5LWngvBmo/QfKtogk1y1lxIjlLAdPAxrfCvWygj7H2+wlyCcnbQfnnfcG\r\ndHqvSOOffEuNIYJttHHO2bKUBMWQtANQJEOVK0QSEdj6XlEef9UmCR1ZJraf\r\n483lnYkAJR9/Z7PKDx+yVc1nxOWR6jhqmSnMa6snPRr4ILSdXW+MnWrpdayE\r\nU7j6A/LRwChhJZmBZ1uQVBoIR/cRFHDuHkWBNnbEP1QLHkqsBDdj0C5l4OZC\r\nEXtXx3QUVZ0q7lKvpBmjIFsDy8J7UkmgwtI5oCOoVhF/d5oRf53h/XAaITCO\r\n7zY8ljM17tevv5jLE57tuCrDEqW5qY7HTLc=\r\n=9TaS\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jacokruger","email":"superkruger@gmail.com"},"directories":{},"maintainers":[{"name":"jacokruger","email":"superkruger@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-sortable-tree_4.2.2_1667310707965_0.40587508739561495"},"_hasShrinkwrap":false},"4.2.3":{"name":"@a11n-io/react-sortable-tree","version":"4.2.3","description":"Drag-and-drop sortable component for nested data and hierarchies","main":"./index.js","module":"./esm/index.js","types":"./index.d.ts","exports":{"./package.json":"./package.json","./style.css":"./style.css",".":{"types":"./index.d.ts","module":"./esm/index.js","import":"./esm/index.mjs","default":"./index.js"}},"sideEffects":false,"scripts":{"prebuild":"yarn clean","build":"rollup -c","build:storybook":"build-storybook -o build","clean":"rimraf dist","clean:storybook":"rimraf build","lint":"eslint '*.{js,json}' '{src,tests}/**/*.{ts,tsx}'","prepublishOnly":"yarn build","release":"standard-version","storybook":"start-storybook -p ${PORT:-3001} -h 0.0.0.0","postbuild":"yarn copy","copy":"rimraf dist/tests.d.ts && shx cp -r dist/*.d.ts dist/esm && shx mv dist/* dist && shx cp package.json README.md LICENSE dist && json -I -f dist/package.json -e \"this.private=false; this.devDependencies=undefined; this.optionalDependencies=undefined; this.scripts=undefined; this.prettier=undefined; this['lint-staged']=undefined;\"","publish:alpha":"cd dist && npm publish --tag alpha","publish:beta":"cd dist && npm publish --tag beta","publish:release":"cd dist && npm publish"},"engines":{"node":">=16"},"prettier":{"semi":false,"trailingComma":"es5","singleQuote":true,"bracketSameLine":true,"tabWidth":2,"printWidth":80},"repository":{"type":"git","url":"git+https://github.com/a11n/react-sortable-tree.git"},"keywords":["react","react-component","sortable-tree","virtual-tree"],"publishConfig":{"access":"public"},"contributors":[{"name":"Chris Fritz"},{"name":"Vitalii Shvetsov"}],"license":"MIT","bugs":{"url":"https://github.com/a11n/react-sortable-tree/issues"},"dependencies":{"@nosferatu500/react-dnd-scrollzone":"^3.0.0","lodash.isequal":"^4.5.0","react-dnd":"^16.0.1","react-dnd-html5-backend":"^16.0.1","react-virtuoso":"^2.19.1"},"devDependencies":{"@babel/core":"^7.19.3","@babel/eslint-parser":"^7.19.1","@babel/helper-module-imports":"^7.18.6","@babel/plugin-transform-react-jsx":"^7.19.0","@babel/preset-env":"^7.19.3","@babel/types":"^7.19.3","@rollup/plugin-babel":"^5.3.1","@rollup/plugin-node-resolve":"^14.1.0","@rollup/plugin-typescript":"^8.5.0","@storybook/addon-postcss":"^2.0.0","@storybook/addons":"^6.5.12","@storybook/react":"^6.5.12","@storybook/theming":"^6.5.12","@types/babel-plugin-macros":"^2.8.5","@types/lodash.isequal":"^4.5.6","@types/react":"^17.0.50","@types/react-dom":"^17.0.17","@typescript-eslint/eslint-plugin":"^5.39.0","@typescript-eslint/parser":"^5.39.0","acorn-jsx":"^5.3.2","autoprefixer":"^10.4.12","babel-plugin-macros":"^3.1.0","esbuild":"^0.15.10","eslint":"^8.24.0","eslint-config-airbnb":"^19.0.4","eslint-config-airbnb-typescript":"^17.0.0","eslint-config-prettier":"^8.5.0","eslint-import-resolver-typescript":"^3.5.1","eslint-plugin-import":"^2.26.0","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.0.1","eslint-plugin-react":"^7.31.8","eslint-plugin-react-hooks":"^4.6.0","eslint-plugin-sonarjs":"^0.15.0","eslint-plugin-storybook":"^0.6.4","eslint-plugin-unicorn":"^44.0.0","json":"^11.0.0","postcss":"^8.4.17","prettier":"^2.7.1","prop-types":"^15.8.1","react":"^18.2.0","react-dnd-touch-backend":"^16.0.1","react-dom":"^18.2.0","rimraf":"^3.0.2","rollup":"^2.79.1","rollup-plugin-esbuild":"^4.10.1","rollup-plugin-postcss":"^4.0.2","shx":"^0.3.4","tslib":"^2.4.0","typescript":"^4.8.4"},"peerDependencies":{"react":">=18.2.0","react-dnd":">=16.0.1","react-dom":">=18.2.0"},"browserslist":{"production":[">0.2%","not dead","not ie <= 11","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"gitHead":"40b6cdd9505a3409d9d24816d530e210409ae283","homepage":"https://github.com/a11n/react-sortable-tree#readme","_id":"@a11n-io/react-sortable-tree@4.2.3","_nodeVersion":"19.0.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-3FwDEz4xOLLA8/076aLlyUsMTMmYU0SJ+KD54nh141EUmV6isDHPKqJLvTtdBfynTVa2mSWdKoLynYsi1a62qg==","shasum":"83666c945df0e173a226b48e3a8c68b8fa1c3ff5","tarball":"https://registry.npmjs.org/@a11n-io/react-sortable-tree/-/react-sortable-tree-4.2.3.tgz","fileCount":3842,"unpackedSize":26605306,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD/ifRhbN89vN40o4rnjBsBiHrU1fO50B/quoopPb3fagIhAM8waWtKRR1q1MxArklOuU9nS2Yb6o2rK804xlMPzqJV"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjYSTxACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrjZw//cyI8q6MW0dYcW8YvoA3MTJ/V4l0C4LexyUfLOjUiM+2Vzlb5\r\nElW0EzVHatUxITT0QqoXtBVRxk7PEE8Bp7odh2gQb2LnGyGUFVOBHWZT7QzU\r\n4EOaSB20bbVOrcu5Gsq/zG17CqhrjapogO4lpzUX7urgJgtlKVxpCbcJCC9e\r\nOaB1DChKsmo20gwXR3tHN/DK0lDXplhBXyeYOHkFyicAMnFXGsd7q7sBb09o\r\n3KE1xsMQdBD/apsU7vVy7c0Nyly11HAh72NlHgPa5KtUA6H5kDPGyM8pyVuu\r\ngJkWGLIqnxyop1R3WOjsPxwY77DNNuTFKiB0gPB5W0oWfDp1MdBJteNumH0Q\r\nZZKjsDPo43yKoL09Afayo/6VZe9sHXDRZqG3vvt7h+YSgIBI3V/qdEJJvCt8\r\nur0O5RKGQNDhtiUQ1wyBMahIvzrkfH6X5VUK4SbyB1EVt6UB6Gj4UdzIaEdu\r\nuPcPfOSmNh2f6COVtYGjiHo4gE3X+j89QuEkKB8vvwE2+6H3qs2Wgfx85bxy\r\nzgsgeMzCM5WA+2qSYKEzQucPyrgLBwRZNYLkvfYc6V11OV2BrUDDpGqBRUkp\r\nFqoYXdyC3nxHb2V4WaKc++ObiEHPLPS75FHAVU/b/gSCOKPQwB5zOc5I6ETh\r\nR1UW/l7h47CJ8BFG/7Nuso9Fz9yLFK2PiVE=\r\n=yC3T\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jacokruger","email":"superkruger@gmail.com"},"directories":{},"maintainers":[{"name":"jacokruger","email":"superkruger@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-sortable-tree_4.2.3_1667310833641_0.6870996699561593"},"_hasShrinkwrap":false},"4.2.4":{"name":"@a11n-io/react-sortable-tree","version":"4.2.4","description":"Drag-and-drop sortable component for nested data and hierarchies","main":"./index.js","module":"./esm/index.js","types":"./index.d.ts","exports":{"./package.json":"./package.json","./style.css":"./style.css",".":{"types":"./index.d.ts","module":"./esm/index.js","import":"./esm/index.mjs","default":"./index.js"}},"sideEffects":false,"engines":{"node":">=16"},"repository":{"type":"git","url":"git+https://github.com/a11n/react-sortable-tree.git"},"keywords":["react","react-component","sortable-tree","virtual-tree"],"publishConfig":{"access":"public"},"contributors":[{"name":"Chris Fritz"},{"name":"Vitalii Shvetsov"}],"license":"MIT","bugs":{"url":"https://github.com/a11n/react-sortable-tree/issues"},"dependencies":{"@nosferatu500/react-dnd-scrollzone":"^3.0.0","lodash.isequal":"^4.5.0","react-dnd":"^16.0.1","react-dnd-html5-backend":"^16.0.1","react-virtuoso":"^2.19.1"},"peerDependencies":{"react":">=18.2.0","react-dnd":">=16.0.1","react-dom":">=18.2.0"},"browserslist":{"production":[">0.2%","not dead","not ie <= 11","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"private":false,"gitHead":"40b6cdd9505a3409d9d24816d530e210409ae283","homepage":"https://github.com/a11n/react-sortable-tree#readme","_id":"@a11n-io/react-sortable-tree@4.2.4","_nodeVersion":"19.0.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-M8X+mKv9jdG5A4VIzpfIkgNlHTVmpylQN533/APJLGyGv0lVjgpe70eGYRNVff7SrffGyuMeqe+REYf/4+91Cw==","shasum":"821abcaffb436611e6582b7754327da23a883740","tarball":"https://registry.npmjs.org/@a11n-io/react-sortable-tree/-/react-sortable-tree-4.2.4.tgz","fileCount":26,"unpackedSize":247379,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIENZrJDqo8kkBvLxwB8frJ/kWNsOFsm0/LqJ5ZaAwDD1AiEA/VVIbjayLbFnAknmZgcHb3jfh37qRG7AzYxhj51FE4s="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjYSfgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoIfxAAjKPlDA9k8zgNOFZelN34gv9z3PRGp63a6L/MrG72oXkpDgw7\r\ngKT2AO6Ok4RR91nnbUp04fEyu3cRGWv65EX4ZGF7Xx4CWZ3qDkmZd2o+xmbQ\r\nvEksKFfXG54r7H9LAErdi2Amcw0uoTGCLvjeEiqT5pYtb5lS2Vkln4VTFYcO\r\nMGPIP64T3+qiQmUjmSvc/lyIVC9Oi3wqVbb2eLtpZcDbOV/H7lrAkyIFeBO2\r\n2g6hBCvCYJeZNGbwmrM9K2PoVF6fu9EhxBWbblpvRorwTuvXxEHEk627AwXa\r\noZFFUIuXoYmqRm5dBW17KR8Gt756rV2+78jauKB7p87Aavvz4hPzgAfeKOQ3\r\nEzyAMnQGbLiDyyPQODp21NBhaqKg3lG9cEpE/RGUWTFTrBSCfZQmYRDXjStb\r\nqHWtLmD7OWEb9sPowUt9Xh60rTa2hLKRCkOOr74qxN8DeI8GXHhr5AsmhHW1\r\nhSc2oOrExIj2NhCLrNbl0ZGZ6XlV0+bQAyzRSFDVXUrLbjbqIjUxwfz/9aEl\r\ngcZ9gSR/vlCVFoIJN4Bw+W6pgHrNfhJlob2YAlhb72cOTV4cSNMiDYZgX8Y+\r\nThSnzI7DBFVOqyFCUbHtz7LQ7UjJu+JDa9Dgfz1kLqniMRLB9y+OyG/Aei6S\r\nSj47fJQkEZkchhv6FO4nOgYm8yg2lQpexcs=\r\n=H0Dw\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jacokruger","email":"superkruger@gmail.com"},"directories":{},"maintainers":[{"name":"jacokruger","email":"superkruger@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-sortable-tree_4.2.4_1667311584463_0.8529478359790941"},"_hasShrinkwrap":false}},"time":{"created":"2022-11-01T13:30:44.867Z","4.2.0":"2022-11-01T13:30:45.465Z","modified":"2022-11-01T14:06:24.736Z","4.2.1":"2022-11-01T13:49:38.867Z","4.2.2":"2022-11-01T13:51:48.345Z","4.2.3":"2022-11-01T13:53:53.962Z","4.2.4":"2022-11-01T14:06:24.639Z"},"maintainers":[{"name":"jacokruger","email":"superkruger@gmail.com"}],"description":"Drag-and-drop sortable component for nested data and hierarchies","homepage":"https://github.com/a11n/react-sortable-tree#readme","keywords":["react","react-component","sortable-tree","virtual-tree"],"repository":{"type":"git","url":"git+https://github.com/a11n/react-sortable-tree.git"},"contributors":[{"name":"Chris Fritz"},{"name":"Vitalii Shvetsov"}],"bugs":{"url":"https://github.com/a11n/react-sortable-tree/issues"},"license":"MIT","readme":"# Note: TypeScript support (included from v4)\n\n<div align=\"center\">\n  <img src=\"https://cloud.githubusercontent.com/assets/4413963/18860410/26f64de8-84b8-11e6-9284-350308eed30a.png\"/>\n</div>\n\n# React Sortable Tree\n\n![NPM version](https://img.shields.io/npm/v/@nosferatu500/react-sortable-tree.svg?style=flat)\n![NPM license](https://img.shields.io/npm/l/@nosferatu500/react-sortable-tree.svg?style=flat)\n[![NPM total downloads](https://img.shields.io/npm/dt/@nosferatu500/react-sortable-tree.svg?style=flat)](https://npmcharts.com/compare/@nosferatu500/react-sortable-tree?minimal=true)\n[![NPM monthly downloads](https://img.shields.io/npm/dm/@nosferatu500/react-sortable-tree.svg?style=flat)](https://npmcharts.com/compare/@nosferatu500/react-sortable-tree?minimal=true)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)\n\n> 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.\n\n<div align=\"center\">\n  <img src=\"https://cloud.githubusercontent.com/assets/4413963/19334888/2be8261c-913a-11e6-9508-4b347ae114b4.gif\"/>\n</div>\n\n## Table of Contents\n\n- [Getting Started](#getting-started)\n- [Usage](#usage)\n- [Props](#props)\n- [Data Helpers](#data-helper-functions)\n- [Themes](#themes)\n- [Browser Compatibility](#browser-compatibility)\n- [Troubleshooting](#troubleshooting)\n- [Contributing](#contributing)\n\n## Getting started\n\nInstall `react-sortable-tree` using npm.\n\n```sh\n# NPM\nnpm install @nosferatu500/react-sortable-tree --save\n\n# YARN\nyarn add @nosferatu500/react-sortable-tree\n```\n\nES6 and CommonJS builds are available with each distribution.\nFor example:\n\n```js\n// This only needs to be done once; probably during your application's bootstrapping process.\nimport '@nosferatu500/react-sortable-tree/style.css';\n\n// You can import the default tree with dnd context\nimport SortableTree from '@nosferatu500/react-sortable-tree';\n\n// Or you can import the tree without the dnd context as a named export. eg\nimport { SortableTreeWithoutDndContext as SortableTree } from '@nosferatu500/react-sortable-tree';\n\n// Importing from cjs (default)\nimport SortableTree from '@nosferatu500/react-sortable-tree/dist/index.cjs.js';\nimport SortableTree from '@nosferatu500/react-sortable-tree';\n\n// Importing from esm\nimport SortableTree from '@nosferatu500/react-sortable-tree/dist/index.esm.js';\n```\n\n## Usage\n\n```jsx\nimport React, { Component } from 'react';\nimport SortableTree from '@nosferatu500/react-sortable-tree';\nimport '@nosferatu500/react-sortable-tree/style.css'; // This only needs to be imported once in your app\n\nexport default class Tree extends Component {\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      treeData: [\n        { title: 'Chicken', children: [{ title: 'Egg' }] },\n        { title: 'Fish', children: [{ title: 'fingerline' }] },\n      ],\n    };\n  }\n\n  render() {\n    return (\n      <div style={{ height: 400 }}>\n        <SortableTree\n          treeData={this.state.treeData}\n          onChange={treeData => this.setState({ treeData })}\n        />\n      </div>\n    );\n  }\n}\n```\n\n## Props\n\n| Prop                           |      Type      | <div style=\"width: 400px;\">Description</div>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |\n| :----------------------------- | :------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| treeData<br/>_(required)_      |    object[]    | Tree data with the following keys: <div>`title` is the primary label for the node.</div><div>`subtitle` is a secondary label for the node.</div><div>`expanded` shows children of the node if true, or hides them if false. Defaults to false.</div><div>`children` is an array of child nodes belonging to the node.</div><div>**Example**: `[{title: 'main', subtitle: 'sub'}, { title: 'value2', expanded: true, children: [{ title: 'value3') }] }]`                                                                                                                                                                                           |\n| onChange<br/>_(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.<div>`( treeData: object[] ): void`</div>                                                                                                                                                                                                                                                                                                                                                                                                                                                        |\n| getNodeKey<br/>_(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/nosferatu500/react-sortable-tree/blob/master/src/utils/default-handlers.js) by default, which returns the index in the tree (omitting hidden nodes).<div>`({ node: object, treeIndex: number }): string or number`</div> |\n| 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.<div>`({ node: object, path: number[] or string[], treeIndex: number, lowerSiblingCounts: number[], isSearchMatch: bool, isSearchFocus: bool }): object`</div>                                                                                                                                                                                                                                                                                                         |\n| onMoveNode                     |      func      | Called after node move operation. <div>`({ treeData: object[], node: object, nextParentNode: object, prevPath: number[] or string[], prevTreeIndex: number, nextPath: number[] or string[], nextTreeIndex: number }): void`</div>                                                                                                                                                                                                                                                                                                                                                                                                                  |\n| onVisibilityToggle             |      func      | Called after children nodes collapsed or expanded. <div>`({ treeData: object[], node: object, expanded: bool, path: number[] or string[] }): void`</div>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |\n| onDragStateChanged             |      func      | Called when a drag is initiated or ended. <div>`({ isDragging: bool, draggedNode: object }): void`</div>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |\n| maxDepth                       |     number     | Maximum depth nodes can be inserted at. Defaults to infinite.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |\n| rowDirection                   |     string     | Adds row direction support if set to `'rtl'` Defaults to `'ltr'`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |\n| 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`. <div>`({ node: object, path: number[] or string[], treeIndex: number, lowerSiblingCounts: number[], isSearchMatch: bool, isSearchFocus: bool }): bool`</div>                                                                                                                                                                                                                                                                                                                        |\n| canDrop                        |      func      | Return false to prevent node from dropping in the given location. <div>`({ node: object, prevPath: number[] or string[], prevParent: object, prevTreeIndex: number, nextPath: number[] or string[], nextParent: object, nextTreeIndex: number }): bool`</div>                                                                                                                                                                                                                                                                                                                                                                                      |\n| 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`.                                                                                                                                                                                                                                                                                                                                                                                                                     |\n| theme                          |     object     | Set an all-in-one packaged appearance for the tree. See the [Themes](#themes) section for more information.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |\n| searchMethod                   |      func      | The method used to search nodes. Defaults to [`defaultSearchMethod`](https://github.com/nosferatu500/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.<div>`({ node: object, path: number[] or string[], treeIndex: number, searchQuery: any }): bool`</div>                                                                                                                                                               |\n| 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`.                                                                                                                                                                                                                                                                                                                                                                                                                                                        |\n| searchFocusOffset              |     number     | Outline the <`searchFocusOffset`>th node and scroll to it.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |\n| onlyExpandSearchedNodes        |    boolean     | Only expand the nodes that match searches. Collapses all other nodes. Defaults to `false`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |\n| searchFinishCallback           |      func      | Get the nodes that match the search criteria. Used for counting total matches, etc.<div>`(matches: { node: object, path: number[] or string[], treeIndex: number }[]): void`</div>                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |\n| 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                                                                                                                                                                                                                                                                                 |\n| 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`. <div>`({ node: object, prevPath: number[] or string[], prevTreeIndex: number, }): bool`</div>                                                                                                                                                                                                                                                                                                                                                                                 |\n| style                          |     object     | Style applied to the container wrapping the tree (style defaults to `{height: '100%'}`)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |\n| innerStyle                     |     object     | Style applied to the inner, scrollable container (for padding, etc.)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |\n| className                      |     string     | Class name for the container wrapping the tree                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |\n| slideRegionSize                |     number     | Size in px of the region near the edges that initiates scrolling on dragover. Defaults to `100`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |\n| scaffoldBlockPxWidth           |     number     | The width of the blocks containing the lines representing the structure of the tree. Defaults to `44`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |\n| nodeContentRenderer            |      any       | Override the default component ([`NodeRendererDefault`](https://github.com/nosferatu500/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.                                                                                                                                                     |\n| placeholderRenderer            |      any       | Override the default placeholder component ([`PlaceholderRendererDefault`](https://github.com/nosferatu500/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.                                                                                                                                                                                                                                                                                                   |\n## Data Helper Functions\n\nNeed a hand turning your flat data into nested tree data?\nWant to perform add/remove operations on the tree data without creating your own recursive function?\nCheck out the helper functions exported from [`tree-data-utils.js`](https://github.com/nosferatu500/react-sortable-tree/blob/master/src/utils/tree-data-utils.js).\n\n- **`getTreeFromFlatData`**: Convert flat data (like that from a database) into nested tree data.\n- **`getFlatDataFromTree`**: Convert tree data back to flat data.\n- **`addNodeUnderParent`**: Add a node under the parent node at the given path.\n- **`removeNode`**: For a given path, get the node at that path, treeIndex, and the treeData with that node removed.\n- **`removeNodeAtPath`**: For a given path, remove the node and return the treeData.\n- **`changeNodeAtPath`**: Modify the node object at the given path.\n- **`map`**: Perform a change on every node in the tree.\n- **`walk`**: Visit every node in the tree in order.\n- **`getDescendantCount`**: Count how many descendants this node has.\n- **`getVisibleNodeCount`**: Count how many visible descendants this node has.\n- **`getVisibleNodeInfoAtIndex`**: Get the <targetIndex>th visible node in the tree data.\n- **`toggleExpandedForAll`**: Expand or close every node in the tree.\n- **`getNodeAtPath`**: Get the node at the input path.\n- **`insertNode`**: Insert the input node at the specified depth and minimumTreeIndex.\n- **`find`**: Find nodes matching a search query in the tree.\n- **`isDescendant`**: Check if a node is a descendant of another node.\n- **`getDepth`**: Get the longest path in the tree.\n\n## Themes\n\nUsing the `theme` prop along with an imported theme module, you can easily override the default appearance with another standard one.\n\n### Featured themes\n\n|                       ![File Explorer Theme](https://user-images.githubusercontent.com/4413963/32144502-1df1ae08-bcfd-11e7-8f63-8b836dace1a4.png)                        |           <img alt=\"Full Node Drag Theme\" src=\"https://user-images.githubusercontent.com/4413963/33521792-61dc2c50-d81f-11e7-8ab1-359661a11ca4.png\" width=\"300\">           |  <img alt=\"MINIMAL THEME\" src=\"https://github.com/lifejuggler/react-sortable-tree-theme-minimal/blob/master/example-resource/main.png\" width=\"300\">  |\n| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------: |\n|                                                                            **File Explorer**                                                                             |                                                                             **Full Node Drag**                                                                             |                                                   **Minimalistic theme inspired from MATERIAL UI**                                                   |\n|                                                                 @nosferatu500/theme-file-explorer                                                                  |                                                                  react-sortable-tree-theme-full-node-drag                                                                  |                                                          react-sortable-tree-theme-minimal                                                           |\n| [Github](https://github.com/nosferatu500/theme-file-explorer) \\| [NPM](https://www.npmjs.com/package/@nosferatu500/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) |\n\n**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/nosferatu500/theme-file-explorer) as a template to plug in your own stuff.\n\n## Browser Compatibility\n\n| Browser | Works? |\n| :------ | :----- |\n| Chrome  | Yes    |\n| Firefox | Yes    |\n| Safari  | Yes    |\n| IE 11   | Yes    |\n\n## Troubleshooting\n\n### If it throws \"TypeError: fn is not a function\" errors in production\n\nThis 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).\n\nThe 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\n\n### If it doesn't work with other components that use react-dnd\n\nreact-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`.\n\n```js\n// before\nimport SortableTree from '@nosferatu500/react-sortable-tree';\n\n// after\nimport { SortableTreeWithoutDndContext as SortableTree } from '@nosferatu500/react-sortable-tree';\n```\n\n## Contributing\n\nPlease read the [Code of Conduct](CODE_OF_CONDUCT.md). I actively welcome pull requests :)\n\nAfter cloning the repository and running `yarn install` inside, you can use the following commands to develop and build the project.\n\n```sh\n# Starts a webpack dev server that hosts a demo page with the component.\n# It uses react-hot-loader so changes are reflected on save.\nyarn start\n\n# Start the storybook, which has several different examples to play with.\n# Also hot-reloaded.\nyarn run storybook\n\n# Runs the library tests\nyarn test\n\n# Lints the code with eslint\nyarn run lint\n\n# Lints and builds the code, placing the result in the dist directory.\n# This build is necessary to reflect changes if you're\n#  `npm link`-ed to this repository from another local project.\nyarn run build\n```\n\nPull requests are welcome!\n\n## License\n\nMIT\n","readmeFilename":"README.md"}