diff --git a/example/package-lock.json b/example/package-lock.json index 3967ea69..062b401a 100644 --- a/example/package-lock.json +++ b/example/package-lock.json @@ -27,48 +27,48 @@ }, "..": { "name": "react-flow-renderer", - "version": "10.0.0-next.51", + "version": "10.0.7", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.16.7", + "@babel/runtime": "^7.17.8", "classcat": "^5.0.3", "d3-selection": "^3.0.0", "d3-zoom": "^3.0.0", "react-draggable": "^4.4.4", - "zustand": "^3.6.9" + "zustand": "^3.7.1" }, "devDependencies": { - "@babel/core": "^7.16.12", - "@babel/plugin-transform-runtime": "^7.16.10", + "@babel/core": "^7.17.5", + "@babel/plugin-transform-runtime": "^7.17.0", "@babel/preset-env": "^7.16.11", "@babel/preset-react": "^7.16.7", "@babel/preset-typescript": "^7.16.7", - "@rollup/plugin-babel": "^5.3.0", - "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-babel": "^5.3.1", + "@rollup/plugin-commonjs": "^21.0.2", "@rollup/plugin-node-resolve": "^13.1.3", - "@rollup/plugin-replace": "^3.0.1", + "@rollup/plugin-replace": "^4.0.0", "@svgr/rollup": "^6.2.1", "@types/d3": "^7.1.0", - "@types/react": "^17.0.38", - "@types/resize-observer-browser": "^0.1.6", + "@types/react": "^17.0.40", + "@types/resize-observer-browser": "^0.1.7", "autoprefixer": "^10.4.2", "babel-preset-react-app": "^10.0.1", - "cypress": "^9.3.1", - "postcss": "^8.4.5", + "cypress": "^9.5.1", + "postcss": "^8.4.8", "postcss-cli": "^9.1.0", "postcss-nested": "^5.0.6", "prettier": "2.5.1", "react": "^17.0.2", "react-dom": "^17.0.2", - "release-it": "^14.12.4", - "rollup": "^2.66.1", + "release-it": "^14.12.5", + "rollup": "^2.70.1", "rollup-plugin-livereload": "^2.0.5", "rollup-plugin-postcss": "^4.0.2", "rollup-plugin-serve": "^1.1.0", - "rollup-plugin-typescript2": "^0.31.1", - "rollup-plugin-visualizer": "^5.5.4", + "rollup-plugin-typescript2": "^0.31.2", + "rollup-plugin-visualizer": "^5.6.0", "start-server-and-test": "^1.14.0", - "typescript": "^4.5.5" + "typescript": "^4.6.2" }, "engines": { "node": ">=12" @@ -34325,43 +34325,43 @@ "react-flow-renderer": { "version": "file:..", "requires": { - "@babel/core": "^7.16.12", - "@babel/plugin-transform-runtime": "^7.16.10", + "@babel/core": "^7.17.5", + "@babel/plugin-transform-runtime": "^7.17.0", "@babel/preset-env": "^7.16.11", "@babel/preset-react": "^7.16.7", "@babel/preset-typescript": "^7.16.7", - "@babel/runtime": "^7.16.7", - "@rollup/plugin-babel": "^5.3.0", - "@rollup/plugin-commonjs": "^21.0.1", + "@babel/runtime": "^7.17.8", + "@rollup/plugin-babel": "^5.3.1", + "@rollup/plugin-commonjs": "^21.0.2", "@rollup/plugin-node-resolve": "^13.1.3", - "@rollup/plugin-replace": "^3.0.1", + "@rollup/plugin-replace": "^4.0.0", "@svgr/rollup": "^6.2.1", "@types/d3": "^7.1.0", - "@types/react": "^17.0.38", - "@types/resize-observer-browser": "^0.1.6", + "@types/react": "^17.0.40", + "@types/resize-observer-browser": "^0.1.7", "autoprefixer": "^10.4.2", "babel-preset-react-app": "^10.0.1", "classcat": "^5.0.3", - "cypress": "^9.3.1", + "cypress": "^9.5.1", "d3-selection": "^3.0.0", "d3-zoom": "^3.0.0", - "postcss": "^8.4.5", + "postcss": "^8.4.8", "postcss-cli": "^9.1.0", "postcss-nested": "^5.0.6", "prettier": "2.5.1", "react": "^17.0.2", "react-dom": "^17.0.2", "react-draggable": "^4.4.4", - "release-it": "^14.12.4", - "rollup": "^2.66.1", + "release-it": "^14.12.5", + "rollup": "^2.70.1", "rollup-plugin-livereload": "^2.0.5", "rollup-plugin-postcss": "^4.0.2", "rollup-plugin-serve": "^1.1.0", - "rollup-plugin-typescript2": "^0.31.1", - "rollup-plugin-visualizer": "^5.5.4", + "rollup-plugin-typescript2": "^0.31.2", + "rollup-plugin-visualizer": "^5.6.0", "start-server-and-test": "^1.14.0", - "typescript": "^4.5.5", - "zustand": "^3.6.9" + "typescript": "^4.6.2", + "zustand": "^3.7.1" }, "dependencies": { "@babel/code-frame": { diff --git a/package-lock.json b/package-lock.json index b3731fd6..be93f616 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44,6 +44,7 @@ "rollup-plugin-livereload": "^2.0.5", "rollup-plugin-postcss": "^4.0.2", "rollup-plugin-serve": "^1.1.0", + "rollup-plugin-terser": "^7.0.2", "rollup-plugin-typescript2": "^0.31.2", "rollup-plugin-visualizer": "^5.6.0", "start-server-and-test": "^1.14.0", @@ -2944,6 +2945,18 @@ "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", "dev": true }, + "node_modules/acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -3530,6 +3543,12 @@ "node": "*" } }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, "node_modules/builtin-modules": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", @@ -6042,6 +6061,41 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/joi": { "version": "17.4.2", "resolved": "https://registry.npmjs.org/joi/-/joi-17.4.2.tgz", @@ -8372,6 +8426,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -9035,6 +9098,21 @@ "opener": "1" } }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0" + } + }, "node_modules/rollup-plugin-typescript2": { "version": "0.31.2", "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.31.2.tgz", @@ -9247,6 +9325,15 @@ "node": ">=8" } }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -9379,6 +9466,25 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/sourcemap-codec": { "version": "1.4.8", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", @@ -9666,6 +9772,39 @@ "node": ">= 10" } }, + "node_modules/terser": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", + "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", + "dev": true, + "dependencies": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, "node_modules/throttleit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", @@ -12506,6 +12645,12 @@ } } }, + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true + }, "aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -12935,6 +13080,12 @@ "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", "dev": true }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, "builtin-modules": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", @@ -14798,6 +14949,34 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "joi": { "version": "17.4.2", "resolved": "https://registry.npmjs.org/joi/-/joi-17.4.2.tgz", @@ -16465,6 +16644,15 @@ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "dev": true }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -16970,6 +17158,18 @@ "opener": "1" } }, + "rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + } + }, "rollup-plugin-typescript2": { "version": "0.31.2", "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.31.2.tgz", @@ -17136,6 +17336,15 @@ "semver": "^6.3.0" } }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -17234,6 +17443,24 @@ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "sourcemap-codec": { "version": "1.4.8", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", @@ -17448,6 +17675,32 @@ } } }, + "terser": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", + "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", + "dev": true, + "requires": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, "throttleit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", diff --git a/package.json b/package.json index 4ff9a45f..c1292a97 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,12 @@ "type": "module", "main": "dist/esm/index.js", "module": "dist/esm/index.js", + "jsdelivr": "dist/umd/index.js", + "unpkg": "dist/umd/index.js", + "exports": { + "umd": "./dist/umd/index.js", + "default": "./dist/esm/index.js" + }, "types": "dist/esm/index.d.ts", "license": "MIT", "repository": { @@ -67,6 +73,7 @@ "rollup-plugin-livereload": "^2.0.5", "rollup-plugin-postcss": "^4.0.2", "rollup-plugin-serve": "^1.1.0", + "rollup-plugin-terser": "^7.0.2", "rollup-plugin-typescript2": "^0.31.2", "rollup-plugin-visualizer": "^5.6.0", "start-server-and-test": "^1.14.0", diff --git a/rollup.config.js b/rollup.config.js index a1240555..433562b9 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -7,6 +7,7 @@ import svgr from '@svgr/rollup'; import typescript from 'rollup-plugin-typescript2'; import { DEFAULT_EXTENSIONS as DEFAULT_BABEL_EXTENSIONS } from '@babel/core'; import { visualizer } from 'rollup-plugin-visualizer'; +import { terser } from 'rollup-plugin-terser'; import pkg from './package.json'; @@ -14,74 +15,114 @@ const isProd = process.env.NODE_ENV === 'production'; const isTesting = process.env.NODE_ENV === 'testing'; const processEnv = isProd || isTesting ? 'production' : 'development'; -export const baseConfig = ({ outputDir = 'dist/esm', injectCSS = true } = {}) => ({ - input: [ - 'src/index.ts', - 'src/additional-components/Controls/index.tsx', - 'src/additional-components/Background/index.tsx', - 'src/additional-components/MiniMap/index.tsx', - 'src/hooks/useReactFlow.ts', - 'src/hooks/useNodes.ts', - 'src/hooks/useEdges.ts', - 'src/hooks/useViewport.ts', - 'src/hooks/useUpdateNodeInternals.ts', - ], - external: [ - 'react', - 'react-dom', - 'classcat', - 'd3-selection', - 'd3-zoom', - 'react-draggable', - 'zustand', - 'zustand/shallow', - 'zustand/context', - (id) => id.includes('@babel/runtime'), - ], - onwarn(warning, rollupWarn) { - if (warning.code !== 'CIRCULAR_DEPENDENCY') { - rollupWarn(warning); - } - }, - output: { - dir: outputDir, - format: 'esm', - sourcemap: true, - }, +const defaultOutputOptions = { + dir: 'dist/esm', + format: 'esm', + sourcemap: true, +}; - plugins: [ - replace({ - __ENV__: JSON.stringify(processEnv), - __REACT_FLOW_VERSION__: JSON.stringify(pkg.version), - __INJECT_STYLES__: injectCSS, - preventAssignment: true, - }), - postcss({ - minimize: isProd, - inject: false, - }), - svgr(), - resolve(), - typescript({ - clean: true, - }), - commonjs({ - include: 'node_modules/**', - }), - babel({ - extensions: [...DEFAULT_BABEL_EXTENSIONS, '.ts', '.tsx'], - exclude: 'node_modules/**', - babelHelpers: 'runtime', - }), - visualizer(), - ], -}); +export const baseConfig = ({ outputOptions = {}, injectCSS = true } = {}) => { + const output = { + ...defaultOutputOptions, + ...outputOptions, + }; + + const isEsm = output.format === 'esm'; + const replaceOptions = isEsm ? {} : { 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV) }; + + return { + input: isEsm + ? [ + 'src/index.ts', + 'src/additional-components/Controls/index.tsx', + 'src/additional-components/Background/index.tsx', + 'src/additional-components/MiniMap/index.tsx', + 'src/hooks/useReactFlow.ts', + 'src/hooks/useNodes.ts', + 'src/hooks/useEdges.ts', + 'src/hooks/useViewport.ts', + 'src/hooks/useUpdateNodeInternals.ts', + ] + : 'src/index.ts', + external: isEsm + ? [ + 'react', + 'react-dom', + 'classcat', + 'd3-selection', + 'd3-zoom', + 'react-draggable', + 'zustand', + 'zustand/shallow', + 'zustand/context', + (id) => id.includes('@babel/runtime'), + ] + : ['react', 'react-dom'], + onwarn(warning, rollupWarn) { + if (warning.code !== 'CIRCULAR_DEPENDENCY') { + rollupWarn(warning); + } + }, + output, + + plugins: [ + replace({ + __ENV__: JSON.stringify(processEnv), + __REACT_FLOW_VERSION__: JSON.stringify(pkg.version), + __INJECT_STYLES__: injectCSS, + preventAssignment: true, + ...replaceOptions, + }), + postcss({ + minimize: isProd, + inject: false, + }), + svgr(), + resolve(), + typescript({ + clean: true, + }), + commonjs({ + include: 'node_modules/**', + }), + babel({ + extensions: [...DEFAULT_BABEL_EXTENSIONS, '.ts', '.tsx'], + exclude: 'node_modules/**', + babelHelpers: 'runtime', + }), + visualizer(), + !isEsm && terser(), + ], + }; +}; export default isProd && !isTesting ? [ baseConfig(), baseConfig({ - outputDir: 'dist/nocss', + outputOptions: { + dir: 'dist/umd', + format: 'umd', + exports: 'named', + name: 'ReactFlow', + globals: { + react: 'React', + 'react-dom': 'ReactDOM', + classcat: 'cc', + 'd3-selection': 'd3', + 'd3-zoom': 'd3', + 'react-draggable': 'ReactDraggable', + zustand: 'zustand', + 'zustand/shallow': 'zustandShallow', + 'zustand/context': 'zustandContext', + }, + }, + }), + baseConfig({ + outputOptions: { + dir: 'dist/nocss', + }, + injectCSS: false, }), ] diff --git a/src/components/ConnectionLine/index.tsx b/src/components/ConnectionLine/index.tsx index dfdf248f..5a287ebf 100644 --- a/src/components/ConnectionLine/index.tsx +++ b/src/components/ConnectionLine/index.tsx @@ -38,12 +38,7 @@ export default ({ const { nodeInternals, transform } = useStore(selector, shallow); const fromNode = useRef(nodeInternals.get(nodeId)); - if ( - !fromNode.current || - !fromNode.current || - !isConnectable || - !fromNode.current.handleBounds?.[connectionHandleType] - ) { + if (!fromNode.current || !isConnectable || !fromNode.current.handleBounds?.[connectionHandleType]) { return null; } diff --git a/src/container/ReactFlow/utils.ts b/src/container/ReactFlow/utils.ts index d431a60d..42e8becb 100644 --- a/src/container/ReactFlow/utils.ts +++ b/src/container/ReactFlow/utils.ts @@ -11,6 +11,7 @@ export function useNodeOrEdgeTypes(nodeOrEdgeTypes: any, createTypes: any): any const typesKeysRef = useRef(null); const typesParsed = useMemo(() => { + // @ts-ignore if (process.env.NODE_ENV === 'development') { const typeKeys = Object.keys(nodeOrEdgeTypes); if (shallow(typesKeysRef.current, typeKeys)) {