diff --git a/package-lock.json b/package-lock.json
index 5570f65e7e..e28d0ca324 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -64,6 +64,7 @@
"@babel/preset-env": "^7.24.3",
"@babel/preset-react": "^7.24.1",
"@babel/preset-typescript": "^7.24.1",
+ "@testing-library/react": "^16.0.1",
"@types/core-js": "^2.5.8",
"@types/dagre": "^0.7.52",
"@types/eslint": "^8.56.9",
@@ -84,6 +85,7 @@
"@types/react-resizable": "^3.0.7",
"@types/react-virtualized": "^9.21.29",
"@types/react-window": "^1.8.8",
+ "@types/redux-mock-store": "^1.0.6",
"@types/uuid": "^9.0.8",
"@typescript-eslint/eslint-plugin": "^6.21.0",
"@typescript-eslint/parser": "^6.21.0",
@@ -104,6 +106,7 @@
"jest-environment-jsdom": "^29.7.0",
"license-checker": "^25.0.1",
"prettier": "^2.8.8",
+ "redux-mock-store": "^1.5.5",
"ts-node": "^10.9.2",
"type-fest": "^4.22.1",
"typescript": "5.1.6",
@@ -4072,7 +4075,6 @@
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
"integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
- "dev": true,
"dependencies": {
"@jridgewell/set-array": "^1.2.1",
"@jridgewell/sourcemap-codec": "^1.4.10",
@@ -4086,7 +4088,6 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
- "dev": true,
"engines": {
"node": ">=6.0.0"
}
@@ -4095,22 +4096,29 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
"integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
- "dev": true,
"engines": {
"node": ">=6.0.0"
}
},
+ "node_modules/@jridgewell/source-map": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
+ "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25"
+ }
+ },
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.4.15",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
- "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
- "dev": true
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
},
"node_modules/@jridgewell/trace-mapping": {
"version": "0.3.25",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
"integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
- "dev": true,
"dependencies": {
"@jridgewell/resolve-uri": "^3.1.0",
"@jridgewell/sourcemap-codec": "^1.4.14"
@@ -5002,9 +5010,9 @@
}
},
"node_modules/@plotly/d3": {
- "version": "3.8.1",
- "resolved": "https://registry.npmjs.org/@plotly/d3/-/d3-3.8.1.tgz",
- "integrity": "sha512-x49ThEu1FRA00kTso4Jdfyf2byaCPLBGmLjAYQz5OzaPyLUhHesX3/Nfv2OHEhynhdy2UB39DLXq6thYe2L2kg==",
+ "version": "3.8.2",
+ "resolved": "https://registry.npmjs.org/@plotly/d3/-/d3-3.8.2.tgz",
+ "integrity": "sha512-wvsNmh1GYjyJfyEBPKJLTMzgf2c2bEbSIL50lmqVUi+o1NHaLPi1Lb4v7VxXXJn043BhNyrxUrWI85Q+zmjOVA==",
"peer": true
},
"node_modules/@plotly/d3-sankey": {
@@ -5822,6 +5830,171 @@
"@svgr/core": "*"
}
},
+ "node_modules/@testing-library/dom": {
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz",
+ "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.10.4",
+ "@babel/runtime": "^7.12.5",
+ "@types/aria-query": "^5.0.1",
+ "aria-query": "5.3.0",
+ "chalk": "^4.1.0",
+ "dom-accessibility-api": "^0.5.9",
+ "lz-string": "^1.5.0",
+ "pretty-format": "^27.0.2"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@testing-library/dom/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@testing-library/dom/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@testing-library/dom/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@testing-library/dom/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@testing-library/dom/node_modules/dom-accessibility-api": {
+ "version": "0.5.16",
+ "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz",
+ "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@testing-library/dom/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,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@testing-library/dom/node_modules/pretty-format": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz",
+ "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^17.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@testing-library/dom/node_modules/pretty-format/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@testing-library/dom/node_modules/react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@testing-library/dom/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,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@testing-library/react": {
+ "version": "16.0.1",
+ "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.0.1.tgz",
+ "integrity": "sha512-dSmwJVtJXmku+iocRhWOUFbrERC76TX2Mnf0ATODz8brzAZrMBbzLwQixlBSanZxR6LddK3eiwpSFZgDET1URg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.12.5"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@testing-library/dom": "^10.0.0",
+ "@types/react": "^18.0.0",
+ "@types/react-dom": "^18.0.0",
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@tootallnate/once": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
@@ -5856,68 +6029,82 @@
"dev": true
},
"node_modules/@turf/area": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/@turf/area/-/area-6.5.0.tgz",
- "integrity": "sha512-xCZdiuojokLbQ+29qR6qoMD89hv+JAgWjLrwSEWL+3JV8IXKeNFl6XkEJz9HGkVpnXvQKJoRz4/liT+8ZZ5Jyg==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@turf/area/-/area-7.1.0.tgz",
+ "integrity": "sha512-w91FEe02/mQfMPRX2pXua48scFuKJ2dSVMF2XmJ6+BJfFiCPxp95I3+Org8+ZsYv93CDNKbf0oLNEPnuQdgs2g==",
"peer": true,
"dependencies": {
- "@turf/helpers": "^6.5.0",
- "@turf/meta": "^6.5.0"
+ "@turf/helpers": "^7.1.0",
+ "@turf/meta": "^7.1.0",
+ "@types/geojson": "^7946.0.10",
+ "tslib": "^2.6.2"
},
"funding": {
"url": "https://opencollective.com/turf"
}
},
"node_modules/@turf/area/node_modules/@turf/helpers": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz",
- "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.1.0.tgz",
+ "integrity": "sha512-dTeILEUVeNbaEeoZUOhxH5auv7WWlOShbx7QSd4s0T4Z0/iz90z9yaVCtZOLbU89umKotwKaJQltBNO9CzVgaQ==",
"peer": true,
+ "dependencies": {
+ "@types/geojson": "^7946.0.10",
+ "tslib": "^2.6.2"
+ },
"funding": {
"url": "https://opencollective.com/turf"
}
},
"node_modules/@turf/area/node_modules/@turf/meta": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.5.0.tgz",
- "integrity": "sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.1.0.tgz",
+ "integrity": "sha512-ZgGpWWiKz797Fe8lfRj7HKCkGR+nSJ/5aKXMyofCvLSc2PuYJs/qyyifDPWjASQQCzseJ7AlF2Pc/XQ/3XkkuA==",
"peer": true,
"dependencies": {
- "@turf/helpers": "^6.5.0"
+ "@turf/helpers": "^7.1.0",
+ "@types/geojson": "^7946.0.10"
},
"funding": {
"url": "https://opencollective.com/turf"
}
},
"node_modules/@turf/bbox": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-6.5.0.tgz",
- "integrity": "sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.1.0.tgz",
+ "integrity": "sha512-PdWPz9tW86PD78vSZj2fiRaB8JhUHy6piSa/QXb83lucxPK+HTAdzlDQMTKj5okRCU8Ox/25IR2ep9T8NdopRA==",
"peer": true,
"dependencies": {
- "@turf/helpers": "^6.5.0",
- "@turf/meta": "^6.5.0"
+ "@turf/helpers": "^7.1.0",
+ "@turf/meta": "^7.1.0",
+ "@types/geojson": "^7946.0.10",
+ "tslib": "^2.6.2"
},
"funding": {
"url": "https://opencollective.com/turf"
}
},
"node_modules/@turf/bbox/node_modules/@turf/helpers": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz",
- "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.1.0.tgz",
+ "integrity": "sha512-dTeILEUVeNbaEeoZUOhxH5auv7WWlOShbx7QSd4s0T4Z0/iz90z9yaVCtZOLbU89umKotwKaJQltBNO9CzVgaQ==",
"peer": true,
+ "dependencies": {
+ "@types/geojson": "^7946.0.10",
+ "tslib": "^2.6.2"
+ },
"funding": {
"url": "https://opencollective.com/turf"
}
},
"node_modules/@turf/bbox/node_modules/@turf/meta": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.5.0.tgz",
- "integrity": "sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.1.0.tgz",
+ "integrity": "sha512-ZgGpWWiKz797Fe8lfRj7HKCkGR+nSJ/5aKXMyofCvLSc2PuYJs/qyyifDPWjASQQCzseJ7AlF2Pc/XQ/3XkkuA==",
"peer": true,
"dependencies": {
- "@turf/helpers": "^6.5.0"
+ "@turf/helpers": "^7.1.0",
+ "@types/geojson": "^7946.0.10"
},
"funding": {
"url": "https://opencollective.com/turf"
@@ -5964,34 +6151,41 @@
}
},
"node_modules/@turf/centroid": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-6.5.0.tgz",
- "integrity": "sha512-MwE1oq5E3isewPprEClbfU5pXljIK/GUOMbn22UM3IFPDJX0KeoyLNwghszkdmFp/qMGL/M13MMWvU+GNLXP/A==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-7.1.0.tgz",
+ "integrity": "sha512-1Y1b2l+ZB1CZ+ITjUCsGqC4/tSjwm/R4OUfDztVqyyCq/VvezkLmTNqvXTGXgfP0GXkpv68iCfxF5M7QdM5pJQ==",
"peer": true,
"dependencies": {
- "@turf/helpers": "^6.5.0",
- "@turf/meta": "^6.5.0"
+ "@turf/helpers": "^7.1.0",
+ "@turf/meta": "^7.1.0",
+ "@types/geojson": "^7946.0.10",
+ "tslib": "^2.6.2"
},
"funding": {
"url": "https://opencollective.com/turf"
}
},
"node_modules/@turf/centroid/node_modules/@turf/helpers": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz",
- "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.1.0.tgz",
+ "integrity": "sha512-dTeILEUVeNbaEeoZUOhxH5auv7WWlOShbx7QSd4s0T4Z0/iz90z9yaVCtZOLbU89umKotwKaJQltBNO9CzVgaQ==",
"peer": true,
+ "dependencies": {
+ "@types/geojson": "^7946.0.10",
+ "tslib": "^2.6.2"
+ },
"funding": {
"url": "https://opencollective.com/turf"
}
},
"node_modules/@turf/centroid/node_modules/@turf/meta": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.5.0.tgz",
- "integrity": "sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.1.0.tgz",
+ "integrity": "sha512-ZgGpWWiKz797Fe8lfRj7HKCkGR+nSJ/5aKXMyofCvLSc2PuYJs/qyyifDPWjASQQCzseJ7AlF2Pc/XQ/3XkkuA==",
"peer": true,
"dependencies": {
- "@turf/helpers": "^6.5.0"
+ "@turf/helpers": "^7.1.0",
+ "@types/geojson": "^7946.0.10"
},
"funding": {
"url": "https://opencollective.com/turf"
@@ -6038,6 +6232,13 @@
"@turf/meta": "^5.1.5"
}
},
+ "node_modules/@types/aria-query": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz",
+ "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==",
+ "dev": true,
+ "peer": true
+ },
"node_modules/@types/babel__core": {
"version": "7.20.5",
"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
@@ -6153,8 +6354,7 @@
"node_modules/@types/estree": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
- "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
- "dev": true
+ "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="
},
"node_modules/@types/geojson": {
"version": "7946.0.14",
@@ -6246,8 +6446,7 @@
"node_modules/@types/json-schema": {
"version": "7.0.15",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
- "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
- "dev": true
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="
},
"node_modules/@types/json5": {
"version": "0.0.29",
@@ -6454,6 +6653,24 @@
"@types/react": "*"
}
},
+ "node_modules/@types/redux-mock-store": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@types/redux-mock-store/-/redux-mock-store-1.0.6.tgz",
+ "integrity": "sha512-eg5RDfhJTXuoJjOMyXiJbaDb1B8tfTaJixscmu+jOusj6adGC0Krntz09Tf4gJgXeCqCrM5bBMd+B7ez0izcAQ==",
+ "dev": true,
+ "dependencies": {
+ "redux": "^4.0.5"
+ }
+ },
+ "node_modules/@types/redux-mock-store/node_modules/redux": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz",
+ "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.9.2"
+ }
+ },
"node_modules/@types/semver": {
"version": "7.5.8",
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
@@ -6994,6 +7211,164 @@
"vite": "^4.2.0 || ^5.0.0"
}
},
+ "node_modules/@webassemblyjs/ast": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz",
+ "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/helper-numbers": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz",
+ "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==",
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-api-error": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz",
+ "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==",
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-buffer": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz",
+ "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==",
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-numbers": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz",
+ "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/floating-point-hex-parser": "1.11.6",
+ "@webassemblyjs/helper-api-error": "1.11.6",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz",
+ "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==",
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-wasm-section": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz",
+ "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-buffer": "1.12.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.12.1"
+ }
+ },
+ "node_modules/@webassemblyjs/ieee754": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz",
+ "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==",
+ "peer": true,
+ "dependencies": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "node_modules/@webassemblyjs/leb128": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz",
+ "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==",
+ "peer": true,
+ "dependencies": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/utf8": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz",
+ "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==",
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/wasm-edit": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz",
+ "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-buffer": "1.12.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/helper-wasm-section": "1.12.1",
+ "@webassemblyjs/wasm-gen": "1.12.1",
+ "@webassemblyjs/wasm-opt": "1.12.1",
+ "@webassemblyjs/wasm-parser": "1.12.1",
+ "@webassemblyjs/wast-printer": "1.12.1"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-gen": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz",
+ "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/ieee754": "1.11.6",
+ "@webassemblyjs/leb128": "1.11.6",
+ "@webassemblyjs/utf8": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-opt": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz",
+ "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-buffer": "1.12.1",
+ "@webassemblyjs/wasm-gen": "1.12.1",
+ "@webassemblyjs/wasm-parser": "1.12.1"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-parser": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz",
+ "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-api-error": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/ieee754": "1.11.6",
+ "@webassemblyjs/leb128": "1.11.6",
+ "@webassemblyjs/utf8": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/wast-printer": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz",
+ "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+ "peer": true
+ },
+ "node_modules/@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+ "peer": true
+ },
"node_modules/@xyflow/react": {
"version": "12.3.2",
"resolved": "https://registry.npmjs.org/@xyflow/react/-/react-12.3.2.tgz",
@@ -7126,7 +7501,6 @@
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -7138,6 +7512,15 @@
"url": "https://github.com/sponsors/epoberezkin"
}
},
+ "node_modules/ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "peer": true,
+ "peerDependencies": {
+ "ajv": "^6.9.1"
+ }
+ },
"node_modules/almost-equal": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/almost-equal/-/almost-equal-1.1.0.tgz",
@@ -7923,7 +8306,6 @@
"version": "4.23.0",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz",
"integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==",
- "dev": true,
"funding": [
{
"type": "opencollective",
@@ -8029,7 +8411,6 @@
"version": "1.0.30001605",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001605.tgz",
"integrity": "sha512-nXwGlFWo34uliI9z3n6Qc0wZaf7zaZWA1CPZ169La5mV3I/gem7bst0vr5XQH5TJXZIMfDeZyOrZnSlVzKxxHQ==",
- "dev": true,
"funding": [
{
"type": "opencollective",
@@ -8097,6 +8478,15 @@
"resolved": "https://registry.npmjs.org/cheap-ruler/-/cheap-ruler-3.0.2.tgz",
"integrity": "sha512-02T332h1/HTN6cDSufLP8x4JzDs2+VC+8qZ/N0kWIVPyc2xUkWwWh3B2fJxR7raXkL4Mq7k554mfuM9ofv/vGg=="
},
+ "node_modules/chrome-trace-event": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz",
+ "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==",
+ "peer": true,
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
"node_modules/ci-info": {
"version": "3.9.0",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
@@ -8626,6 +9016,53 @@
"integrity": "sha512-X1xgQhkZ9n94WDwntqst5D/FKkmiU0GlJSFZSV3kLvyJ1WC5VeyoXDOuleUD+SIuH9C7W05is++0Woh0CGfKjQ==",
"peer": true
},
+ "node_modules/css-loader": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz",
+ "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==",
+ "peer": true,
+ "dependencies": {
+ "icss-utils": "^5.1.0",
+ "postcss": "^8.4.33",
+ "postcss-modules-extract-imports": "^3.1.0",
+ "postcss-modules-local-by-default": "^4.0.5",
+ "postcss-modules-scope": "^3.2.0",
+ "postcss-modules-values": "^4.0.0",
+ "postcss-value-parser": "^4.2.0",
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": ">= 18.12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "@rspack/core": "0.x || 1.x",
+ "webpack": "^5.27.0"
+ },
+ "peerDependenciesMeta": {
+ "@rspack/core": {
+ "optional": true
+ },
+ "webpack": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/css-loader/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "peer": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/css-system-font-keywords": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/css-system-font-keywords/-/css-system-font-keywords-1.0.0.tgz",
@@ -8637,6 +9074,18 @@
"resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz",
"integrity": "sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w=="
},
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "peer": true,
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/cssom": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz",
@@ -9354,8 +9803,7 @@
"node_modules/electron-to-chromium": {
"version": "1.4.723",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.723.tgz",
- "integrity": "sha512-rxFVtrMGMFROr4qqU6n95rUi9IlfIm+lIAt+hOToy/9r6CDv0XiEcQdC3VP71y1pE5CFTzKV0RvxOGYCPWWHPw==",
- "dev": true
+ "integrity": "sha512-rxFVtrMGMFROr4qqU6n95rUi9IlfIm+lIAt+hOToy/9r6CDv0XiEcQdC3VP71y1pE5CFTzKV0RvxOGYCPWWHPw=="
},
"node_modules/element-size": {
"version": "1.1.1",
@@ -9399,6 +9847,19 @@
"once": "^1.4.0"
}
},
+ "node_modules/enhanced-resolve": {
+ "version": "5.17.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
+ "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
+ "peer": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
"node_modules/entities": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
@@ -9522,6 +9983,12 @@
"node": ">= 0.4"
}
},
+ "node_modules/es-module-lexer": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz",
+ "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==",
+ "peer": true
+ },
"node_modules/es-object-atoms": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz",
@@ -9665,7 +10132,6 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
"integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
- "dev": true,
"engines": {
"node": ">=6"
}
@@ -10849,7 +11315,6 @@
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
"integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
- "dev": true,
"dependencies": {
"estraverse": "^5.2.0"
},
@@ -11043,8 +11508,7 @@
"node_modules/fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
},
"node_modules/fast-levenshtein": {
"version": "2.0.6",
@@ -11411,9 +11875,9 @@
"integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA=="
},
"node_modules/gl-text": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/gl-text/-/gl-text-1.3.1.tgz",
- "integrity": "sha512-/f5gcEMiZd+UTBJLTl3D+CkCB/0UFGTx3nflH8ZmyWcLkZhsZ1+Xx5YYkw2rgWAzgPeE35xCqBuHSoMKQVsR+w==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/gl-text/-/gl-text-1.4.0.tgz",
+ "integrity": "sha512-o47+XBqLCj1efmuNyCHt7/UEJmB9l66ql7pnobD6p+sgmBUdzfMZXIF0zD2+KRfpd99DJN+QXdvTFAGCKCVSmQ==",
"peer": true,
"dependencies": {
"bit-twiddle": "^1.0.2",
@@ -11484,28 +11948,45 @@
"node": ">= 6"
}
},
+ "node_modules/glob-to-regexp": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
+ "peer": true
+ },
"node_modules/global-prefix": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
- "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-4.0.0.tgz",
+ "integrity": "sha512-w0Uf9Y9/nyHinEk5vMJKRie+wa4kR5hmDbEhGGds/kG1PwGLLHKRoNMeJOyCQjjBkANlnScqgzcFwGHgmgLkVA==",
"dependencies": {
- "ini": "^1.3.5",
- "kind-of": "^6.0.2",
- "which": "^1.3.1"
+ "ini": "^4.1.3",
+ "kind-of": "^6.0.3",
+ "which": "^4.0.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=16"
+ }
+ },
+ "node_modules/global-prefix/node_modules/isexe": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
+ "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
+ "engines": {
+ "node": ">=16"
}
},
"node_modules/global-prefix/node_modules/which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz",
+ "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==",
"dependencies": {
- "isexe": "^2.0.0"
+ "isexe": "^3.1.1"
},
"bin": {
- "which": "bin/which"
+ "node-which": "bin/which.js"
+ },
+ "engines": {
+ "node": "^16.13.0 || >=18.0.0"
}
},
"node_modules/globals": {
@@ -12016,6 +12497,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/icss-utils": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
+ "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
+ "peer": true,
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
"node_modules/identity-obj-proxy": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz",
@@ -12135,9 +12628,12 @@
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"node_modules/ini": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz",
+ "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
},
"node_modules/internal-slot": {
"version": "1.0.7",
@@ -12647,7 +13143,8 @@
"node_modules/isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
},
"node_modules/isobject": {
"version": "3.0.1",
@@ -14619,8 +15116,7 @@
"node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
"node_modules/json-stable-stringify-without-jsonify": {
"version": "1.0.1",
@@ -14793,6 +15289,15 @@
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
},
+ "node_modules/loader-runner": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
+ "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
+ "peer": true,
+ "engines": {
+ "node": ">=6.11.5"
+ }
+ },
"node_modules/localized-countries": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/localized-countries/-/localized-countries-2.0.0.tgz",
@@ -14831,6 +15336,12 @@
"resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
"integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ=="
},
+ "node_modules/lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
+ "dev": true
+ },
"node_modules/lodash.merge": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
@@ -14878,6 +15389,16 @@
"resolved": "https://registry.npmjs.org/lucene-escape-query/-/lucene-escape-query-1.0.1.tgz",
"integrity": "sha512-iuB/RqAZjHI9YWm3zyM8qQkPxCi5nA3zcYZn71UM/W/+wh26fWpfxkLKZSgogoAvBjhN/4NhR+hxk2gScc81ow=="
},
+ "node_modules/lz-string": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz",
+ "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==",
+ "dev": true,
+ "peer": true,
+ "bin": {
+ "lz-string": "bin/bin.js"
+ }
+ },
"node_modules/make-dir": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
@@ -14993,9 +15514,9 @@
}
},
"node_modules/maplibre-gl": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-4.1.2.tgz",
- "integrity": "sha512-98T+3BesL4w/N39q/rgs9q6HzHLG6pgbS9UaTqg6fMISfzy2WGKokjK205ENFDDmEljj54/LTfdXgqg2XfYU4A==",
+ "version": "4.7.1",
+ "resolved": "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-4.7.1.tgz",
+ "integrity": "sha512-lgL7XpIwsgICiL82ITplfS7IGwrB1OJIw/pCvprDp2dhmSSEBgmPzYRvwYYYvJGJD7fxUv1Tvpih4nZ6VrLuaA==",
"dependencies": {
"@mapbox/geojson-rewind": "^0.5.2",
"@mapbox/jsonlint-lines-primitives": "^2.0.2",
@@ -15004,24 +15525,24 @@
"@mapbox/unitbezier": "^0.0.1",
"@mapbox/vector-tile": "^1.3.1",
"@mapbox/whoots-js": "^3.1.0",
- "@maplibre/maplibre-gl-style-spec": "^20.1.1",
+ "@maplibre/maplibre-gl-style-spec": "^20.3.1",
"@types/geojson": "^7946.0.14",
"@types/geojson-vt": "3.2.5",
"@types/mapbox__point-geometry": "^0.1.4",
"@types/mapbox__vector-tile": "^1.3.4",
"@types/pbf": "^3.0.5",
"@types/supercluster": "^7.1.3",
- "earcut": "^2.2.4",
- "geojson-vt": "^3.2.1",
+ "earcut": "^3.0.0",
+ "geojson-vt": "^4.0.2",
"gl-matrix": "^3.4.3",
- "global-prefix": "^3.0.0",
+ "global-prefix": "^4.0.0",
"kdbush": "^4.0.2",
"murmurhash-js": "^1.0.0",
- "pbf": "^3.2.1",
+ "pbf": "^3.3.0",
"potpack": "^2.0.0",
- "quickselect": "^2.0.0",
+ "quickselect": "^3.0.0",
"supercluster": "^8.0.1",
- "tinyqueue": "^2.0.3",
+ "tinyqueue": "^3.0.0",
"vt-pbf": "^3.1.3"
},
"engines": {
@@ -15033,16 +15554,17 @@
}
},
"node_modules/maplibre-gl/node_modules/@maplibre/maplibre-gl-style-spec": {
- "version": "20.1.1",
- "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-20.1.1.tgz",
- "integrity": "sha512-z85ARNPCBI2Cs5cPOS3DSbraTN+ue8zrcYVoSWBuNrD/mA+2SKAJ+hIzI22uN7gac6jBMnCdpPKRxS/V0KSZVQ==",
+ "version": "20.4.0",
+ "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-20.4.0.tgz",
+ "integrity": "sha512-AzBy3095fTFPjDjmWpR2w6HVRAZJ6hQZUCwk5Plz6EyfnfuQW1odeW5i2Ai47Y6TBA2hQnC+azscjBSALpaWgw==",
"dependencies": {
"@mapbox/jsonlint-lines-primitives": "~2.0.2",
"@mapbox/unitbezier": "^0.0.1",
"json-stringify-pretty-compact": "^4.0.0",
"minimist": "^1.2.8",
+ "quickselect": "^2.0.0",
"rw": "^1.3.3",
- "sort-object": "^3.0.3"
+ "tinyqueue": "^3.0.0"
},
"bin": {
"gl-style-format": "dist/gl-style-format.mjs",
@@ -15050,11 +15572,36 @@
"gl-style-validate": "dist/gl-style-validate.mjs"
}
},
+ "node_modules/maplibre-gl/node_modules/@maplibre/maplibre-gl-style-spec/node_modules/quickselect": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz",
+ "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw=="
+ },
+ "node_modules/maplibre-gl/node_modules/earcut": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/earcut/-/earcut-3.0.0.tgz",
+ "integrity": "sha512-41Fs7Q/PLq1SDbqjsgcY7GA42T0jvaCNGXgGtsNdvg+Yv8eIu06bxv4/PoREkZ9nMDNwnUSG9OFB9+yv8eKhDg=="
+ },
+ "node_modules/maplibre-gl/node_modules/geojson-vt": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-4.0.2.tgz",
+ "integrity": "sha512-AV9ROqlNqoZEIJGfm1ncNjEXfkz2hdFlZf0qkVfmkwdKa8vj7H16YUOT81rJw1rdFhyEDlN2Tds91p/glzbl5A=="
+ },
"node_modules/maplibre-gl/node_modules/json-stringify-pretty-compact": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-4.0.0.tgz",
"integrity": "sha512-3CNZ2DnrpByG9Nqj6Xo8vqbjT4F6N+tb4Gb28ESAZjYZ5yqvmc56J+/kuIwkaAMOyblTQhUW7PxMkUb8Q36N3Q=="
},
+ "node_modules/maplibre-gl/node_modules/quickselect": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-3.0.0.tgz",
+ "integrity": "sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g=="
+ },
+ "node_modules/maplibre-gl/node_modules/tinyqueue": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-3.0.0.tgz",
+ "integrity": "sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g=="
+ },
"node_modules/math-log2": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/math-log2/-/math-log2-1.0.1.tgz",
@@ -15102,8 +15649,7 @@
"node_modules/merge-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
},
"node_modules/merge2": {
"version": "1.4.1",
@@ -15131,7 +15677,6 @@
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "dev": true,
"engines": {
"node": ">= 0.6"
}
@@ -15140,7 +15685,6 @@
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dev": true,
"dependencies": {
"mime-db": "1.52.0"
},
@@ -15313,7 +15857,6 @@
"version": "3.3.7",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -15371,6 +15914,12 @@
"ms": "^2.1.1"
}
},
+ "node_modules/neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+ "peer": true
+ },
"node_modules/next-tick": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
@@ -15396,8 +15945,7 @@
"node_modules/node-releases": {
"version": "2.0.14",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
- "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
- "dev": true
+ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw=="
},
"node_modules/nopt": {
"version": "4.0.3",
@@ -15911,9 +16459,9 @@
}
},
"node_modules/pbf": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.2.1.tgz",
- "integrity": "sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.3.0.tgz",
+ "integrity": "sha512-XDF38WCH3z5OV/OVa8GKUNtLAyneuzbCisx7QUCF8Q6Nutx0WnJrQe5O+kOtBlLfRNUws98Y58Lblp+NJG5T4Q==",
"dependencies": {
"ieee754": "^1.1.12",
"resolve-protobuf-schema": "^2.1.0"
@@ -15973,18 +16521,18 @@
}
},
"node_modules/plotly.js": {
- "version": "2.30.1",
- "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.30.1.tgz",
- "integrity": "sha512-KE3KeM4B6qtjPU7FGOxklmwYua4nWGgr48BRMWZVysZjphlSaQLzvUAieFlUCfPBPfJIRBLxFQy1KHMIQgfwrA==",
+ "version": "2.35.2",
+ "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.35.2.tgz",
+ "integrity": "sha512-s0knlWzRvLQXxzf3JQ6qbm8FpwKuMjkr+6r04f8/yCEByAQ+I0jkUzY/hSGRGb+u7iljTh9hgpEiiJP90vjyeQ==",
"peer": true,
"dependencies": {
- "@plotly/d3": "3.8.1",
+ "@plotly/d3": "3.8.2",
"@plotly/d3-sankey": "0.7.2",
"@plotly/d3-sankey-circular": "0.33.1",
- "@plotly/mapbox-gl": "v1.13.4",
- "@turf/area": "^6.4.0",
- "@turf/bbox": "^6.4.0",
- "@turf/centroid": "^6.0.2",
+ "@plotly/mapbox-gl": "1.13.4",
+ "@turf/area": "^7.1.0",
+ "@turf/bbox": "^7.1.0",
+ "@turf/centroid": "^7.1.0",
"base64-arraybuffer": "^1.0.2",
"canvas-fit": "^1.5.0",
"color-alpha": "1.0.4",
@@ -15992,6 +16540,7 @@
"color-parse": "2.0.0",
"color-rgba": "2.1.1",
"country-regex": "^1.1.0",
+ "css-loader": "^7.1.2",
"d3-force": "^1.2.1",
"d3-format": "^1.4.5",
"d3-geo": "^1.12.1",
@@ -16002,17 +16551,18 @@
"d3-time-format": "^2.2.3",
"fast-isnumeric": "^1.1.4",
"gl-mat4": "^1.2.0",
- "gl-text": "^1.3.1",
+ "gl-text": "^1.4.0",
"has-hover": "^1.0.1",
"has-passive-events": "^1.0.0",
"is-mobile": "^4.0.0",
+ "maplibre-gl": "^4.5.2",
"mouse-change": "^1.4.0",
"mouse-event-offset": "^3.0.2",
"mouse-wheel": "^1.2.0",
"native-promise-only": "^0.8.1",
"parse-svg-path": "^0.1.2",
"point-in-polygon": "^1.1.0",
- "polybooljs": "^1.2.0",
+ "polybooljs": "^1.2.2",
"probe-image-size": "^7.2.3",
"regl": "npm:@plotly/regl@^2.1.2",
"regl-error2d": "^2.0.12",
@@ -16020,6 +16570,7 @@
"regl-scatter2d": "^3.3.1",
"regl-splom": "^1.0.14",
"strongly-connected-components": "^1.0.1",
+ "style-loader": "^4.0.0",
"superscript-text": "^1.0.0",
"svg-path-sdf": "^1.1.3",
"tinycolor2": "^1.4.2",
@@ -16079,7 +16630,6 @@
"version": "8.4.38",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz",
"integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
- "dev": true,
"funding": [
{
"type": "opencollective",
@@ -16103,6 +16653,84 @@
"node": "^10 || ^12 || >=14"
}
},
+ "node_modules/postcss-modules-extract-imports": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz",
+ "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==",
+ "peer": true,
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-modules-local-by-default": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz",
+ "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==",
+ "peer": true,
+ "dependencies": {
+ "icss-utils": "^5.0.0",
+ "postcss-selector-parser": "^6.0.2",
+ "postcss-value-parser": "^4.1.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-modules-scope": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz",
+ "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==",
+ "peer": true,
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.4"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-modules-values": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
+ "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
+ "peer": true,
+ "dependencies": {
+ "icss-utils": "^5.0.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
+ "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
+ "peer": true,
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+ "peer": true
+ },
"node_modules/potpack": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/potpack/-/potpack-2.0.0.tgz",
@@ -16235,7 +16863,6 @@
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
"integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
- "dev": true,
"engines": {
"node": ">=6"
}
@@ -16884,6 +17511,18 @@
"resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz",
"integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w=="
},
+ "node_modules/redux-mock-store": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/redux-mock-store/-/redux-mock-store-1.5.5.tgz",
+ "integrity": "sha512-YxX+ofKUTQkZE4HbhYG4kKGr7oCTJfB0GLy7bSeqx86GLpGirrbUWstMnqXkqHNaQpcnbMGbof2dYs5KsPE6Zg==",
+ "dev": true,
+ "dependencies": {
+ "lodash.isplainobject": "^4.0.6"
+ },
+ "peerDependencies": {
+ "redux": "*"
+ }
+ },
"node_modules/redux-thunk": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz",
@@ -17365,9 +18004,9 @@
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"node_modules/sax": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz",
- "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==",
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz",
+ "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==",
"peer": true
},
"node_modules/saxes": {
@@ -17390,6 +18029,24 @@
"loose-envify": "^1.1.0"
}
},
+ "node_modules/schema-utils": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
+ "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
+ "peer": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.8",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
"node_modules/seedrandom": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz",
@@ -17604,7 +18261,6 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
"integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
- "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -18042,6 +18698,22 @@
"integrity": "sha512-i0TFx4wPcO0FwX+4RkLJi1MxmcTv90jNZgxMu9XRnMXMeFUY1VJlIoXpZunPUvUUqbCT1pg5PEkFqqpcaElNaA==",
"peer": true
},
+ "node_modules/style-loader": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-4.0.0.tgz",
+ "integrity": "sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==",
+ "peer": true,
+ "engines": {
+ "node": ">= 18.12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.27.0"
+ }
+ },
"node_modules/stylis": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz",
@@ -18135,6 +18807,145 @@
"integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
"dev": true
},
+ "node_modules/tapable": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/terser": {
+ "version": "5.36.0",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz",
+ "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==",
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/source-map": "^0.3.3",
+ "acorn": "^8.8.2",
+ "commander": "^2.20.0",
+ "source-map-support": "~0.5.20"
+ },
+ "bin": {
+ "terser": "bin/terser"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/terser-webpack-plugin": {
+ "version": "5.3.10",
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz",
+ "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==",
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.20",
+ "jest-worker": "^27.4.5",
+ "schema-utils": "^3.1.1",
+ "serialize-javascript": "^6.0.1",
+ "terser": "^5.26.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.1.0"
+ },
+ "peerDependenciesMeta": {
+ "@swc/core": {
+ "optional": true
+ },
+ "esbuild": {
+ "optional": true
+ },
+ "uglify-js": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/terser-webpack-plugin/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==",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/terser-webpack-plugin/node_modules/jest-worker": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
+ "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
+ "peer": true,
+ "dependencies": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
+ "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
+ "peer": true,
+ "dependencies": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "node_modules/terser-webpack-plugin/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/terser/node_modules/acorn": {
+ "version": "8.13.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz",
+ "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==",
+ "peer": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/terser/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==",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/terser/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==",
+ "peer": true,
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
"node_modules/test-exclude": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
@@ -18518,9 +19329,9 @@
}
},
"node_modules/type": {
- "version": "2.7.2",
- "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
- "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz",
+ "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==",
"peer": true
},
"node_modules/type-check": {
@@ -18791,7 +19602,6 @@
"version": "1.0.13",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
"integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
- "dev": true,
"funding": [
{
"type": "opencollective",
@@ -18827,7 +19637,6 @@
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
"dependencies": {
"punycode": "^2.1.0"
}
@@ -19100,6 +19909,19 @@
"makeerror": "1.0.12"
}
},
+ "node_modules/watchpack": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz",
+ "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==",
+ "peer": true,
+ "dependencies": {
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
"node_modules/weak-map": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/weak-map/-/weak-map-1.0.8.tgz",
@@ -19124,6 +19946,104 @@
"node": ">=12"
}
},
+ "node_modules/webpack": {
+ "version": "5.95.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz",
+ "integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==",
+ "peer": true,
+ "dependencies": {
+ "@types/estree": "^1.0.5",
+ "@webassemblyjs/ast": "^1.12.1",
+ "@webassemblyjs/wasm-edit": "^1.12.1",
+ "@webassemblyjs/wasm-parser": "^1.12.1",
+ "acorn": "^8.7.1",
+ "acorn-import-attributes": "^1.9.5",
+ "browserslist": "^4.21.10",
+ "chrome-trace-event": "^1.0.2",
+ "enhanced-resolve": "^5.17.1",
+ "es-module-lexer": "^1.2.1",
+ "eslint-scope": "5.1.1",
+ "events": "^3.2.0",
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.2.11",
+ "json-parse-even-better-errors": "^2.3.1",
+ "loader-runner": "^4.2.0",
+ "mime-types": "^2.1.27",
+ "neo-async": "^2.6.2",
+ "schema-utils": "^3.2.0",
+ "tapable": "^2.1.1",
+ "terser-webpack-plugin": "^5.3.10",
+ "watchpack": "^2.4.1",
+ "webpack-sources": "^3.2.3"
+ },
+ "bin": {
+ "webpack": "bin/webpack.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependenciesMeta": {
+ "webpack-cli": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/webpack-sources": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
+ "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+ "peer": true,
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/webpack/node_modules/acorn": {
+ "version": "8.13.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz",
+ "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==",
+ "peer": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/webpack/node_modules/acorn-import-attributes": {
+ "version": "1.9.5",
+ "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
+ "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==",
+ "peer": true,
+ "peerDependencies": {
+ "acorn": "^8"
+ }
+ },
+ "node_modules/webpack/node_modules/eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "peer": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/webpack/node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "peer": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
"node_modules/wgs84": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/wgs84/-/wgs84-0.0.0.tgz",
diff --git a/package.json b/package.json
index 92dc6821cf..81a8df174b 100644
--- a/package.json
+++ b/package.json
@@ -17,6 +17,7 @@
"@reduxjs/toolkit": "^2.2.3",
"@svgdotjs/svg.js": "^3.2.0",
"@svgdotjs/svg.panzoom.js": "^2.1.2",
+ "@xyflow/react": "^12.3.2",
"ag-grid-community": "^31.0.0",
"ag-grid-react": "^31.2.0",
"cheap-ruler": "^3.0.2",
@@ -36,7 +37,6 @@
"react-beautiful-dnd": "^13.1.1",
"react-csv-downloader": "^3.1.0",
"react-dom": "^18.2.0",
- "@xyflow/react": "^12.3.2",
"react-grid-layout": "^1.4.4",
"react-hook-form": "^7.51.2",
"react-intl": "^6.6.4",
@@ -70,6 +70,7 @@
"@babel/preset-env": "^7.24.3",
"@babel/preset-react": "^7.24.1",
"@babel/preset-typescript": "^7.24.1",
+ "@testing-library/react": "^16.0.1",
"@types/core-js": "^2.5.8",
"@types/dagre": "^0.7.52",
"@types/eslint": "^8.56.9",
@@ -90,6 +91,7 @@
"@types/react-resizable": "^3.0.7",
"@types/react-virtualized": "^9.21.29",
"@types/react-window": "^1.8.8",
+ "@types/redux-mock-store": "^1.0.6",
"@types/uuid": "^9.0.8",
"@typescript-eslint/eslint-plugin": "^6.21.0",
"@typescript-eslint/parser": "^6.21.0",
@@ -110,6 +112,7 @@
"jest-environment-jsdom": "^29.7.0",
"license-checker": "^25.0.1",
"prettier": "^2.8.8",
+ "redux-mock-store": "^1.5.5",
"ts-node": "^10.9.2",
"type-fest": "^4.22.1",
"typescript": "5.1.6",
diff --git a/src/redux/actions.ts b/src/appRedux/actions.ts
similarity index 100%
rename from src/redux/actions.ts
rename to src/appRedux/actions.ts
diff --git a/src/redux/reducer.test.ts b/src/appRedux/reducer.test.ts
similarity index 100%
rename from src/redux/reducer.test.ts
rename to src/appRedux/reducer.test.ts
diff --git a/src/redux/reducer.ts b/src/appRedux/reducer.ts
similarity index 100%
rename from src/redux/reducer.ts
rename to src/appRedux/reducer.ts
diff --git a/src/redux/session-storage/diagram-state.ts b/src/appRedux/session-storage/diagram-state.ts
similarity index 100%
rename from src/redux/session-storage/diagram-state.ts
rename to src/appRedux/session-storage/diagram-state.ts
diff --git a/src/redux/session-storage/local-storage.ts b/src/appRedux/session-storage/local-storage.ts
similarity index 100%
rename from src/redux/session-storage/local-storage.ts
rename to src/appRedux/session-storage/local-storage.ts
diff --git a/src/redux/session-storage/search-equipment-history.ts b/src/appRedux/session-storage/search-equipment-history.ts
similarity index 100%
rename from src/redux/session-storage/search-equipment-history.ts
rename to src/appRedux/session-storage/search-equipment-history.ts
diff --git a/src/redux/store.ts b/src/appRedux/store.ts
similarity index 100%
rename from src/redux/store.ts
rename to src/appRedux/store.ts
diff --git a/src/redux/user-store.ts b/src/appRedux/user-store.ts
similarity index 100%
rename from src/redux/user-store.ts
rename to src/appRedux/user-store.ts
diff --git a/src/components/app-wrapper.jsx b/src/components/app-wrapper.jsx
index 1a39482738..80a60fbce0 100644
--- a/src/components/app-wrapper.jsx
+++ b/src/components/app-wrapper.jsx
@@ -69,7 +69,7 @@ import events_locale_fr from '../translations/dynamic/events-locale-fr';
import events_locale_en from '../translations/dynamic/events-locale-en';
import spreadsheet_locale_fr from '../translations/spreadsheet-fr';
import spreadsheet_locale_en from '../translations/spreadsheet-en';
-import { store } from '../redux/store';
+import { store } from '../appRedux/store';
import CssBaseline from '@mui/material/CssBaseline';
import {
PARAM_THEME,
diff --git a/src/components/app.jsx b/src/components/app.jsx
index 59c28a6e9b..2be88e2422 100644
--- a/src/components/app.jsx
+++ b/src/components/app.jsx
@@ -91,7 +91,7 @@ import {
selectUseName,
setOptionalServices,
setParamsLoaded,
-} from '../redux/actions';
+} from '../appRedux/actions';
const noUserManager = { instance: null, error: null };
diff --git a/src/components/computing-status/use-computing-status.ts b/src/components/computing-status/use-computing-status.ts
index 0c23d97e34..781aafedf2 100644
--- a/src/components/computing-status/use-computing-status.ts
+++ b/src/components/computing-status/use-computing-status.ts
@@ -11,10 +11,10 @@ import { UUID } from 'crypto';
import { RefObject, useCallback, useEffect, useRef } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { ComputingType } from './computing-type';
-import { AppState, StudyUpdated } from 'redux/reducer';
+import { AppState, StudyUpdated } from 'appRedux/reducer';
import { OptionalServicesStatus } from '../utils/optional-services';
-import { setComputingStatus, setLastCompletedComputation } from '../../redux/actions';
-import { AppDispatch } from '../../redux/store';
+import { setComputingStatus, setLastCompletedComputation } from '../../appRedux/actions';
+import { AppDispatch } from '../../appRedux/store';
interface UseComputingStatusProps {
(
diff --git a/src/components/diagrams/diagram-common.ts b/src/components/diagrams/diagram-common.ts
index d2bb67ca9d..6dcc29bda9 100644
--- a/src/components/diagrams/diagram-common.ts
+++ b/src/components/diagrams/diagram-common.ts
@@ -7,12 +7,12 @@
import { useCallback } from 'react';
import { useDispatch } from 'react-redux';
-import { closeDiagram, closeDiagrams, minimizeDiagram, openDiagram, togglePinDiagram } from '../../redux/actions';
+import { closeDiagram, closeDiagrams, minimizeDiagram, openDiagram, togglePinDiagram } from '../../appRedux/actions';
import { INVALID_LOADFLOW_OPACITY, NAD_INVALID_LOADFLOW_OPACITY } from '../../utils/colors';
import { FEEDER_TYPES, FeederTypes } from 'components/utils/feederType';
import { EQUIPMENT_TYPES } from 'components/utils/equipment-types';
import { Theme } from '@mui/material';
-import { AppDispatch } from '../../redux/store';
+import { AppDispatch } from '../../appRedux/store';
import { SLDMetadata } from '@powsybl/diagram-viewer';
import { UUID } from 'crypto';
diff --git a/src/components/diagrams/diagram-header.tsx b/src/components/diagrams/diagram-header.tsx
index 339c121104..de90663b96 100644
--- a/src/components/diagrams/diagram-header.tsx
+++ b/src/components/diagrams/diagram-header.tsx
@@ -14,10 +14,10 @@ import MinimizeIcon from '@mui/icons-material/Minimize';
import PushPinIcon from '@mui/icons-material/PushPin';
import PushPinOutlinedIcon from '@mui/icons-material/PushPinOutlined';
import CloseIcon from '@mui/icons-material/Close';
-import { stopDiagramBlink } from '../../redux/actions';
+import { stopDiagramBlink } from '../../appRedux/actions';
import { mergeSx } from '../utils/functions';
import { Theme } from '@mui/material';
-import { AppState } from 'redux/reducer';
+import { AppState } from 'appRedux/reducer';
const BLINK_LENGTH_MS = 1800;
diff --git a/src/components/diagrams/diagram-pane.tsx b/src/components/diagrams/diagram-pane.tsx
index 2acaf1474b..fa61dcdfd6 100644
--- a/src/components/diagrams/diagram-pane.tsx
+++ b/src/components/diagrams/diagram-pane.tsx
@@ -41,11 +41,11 @@ import { AutoSizer } from 'react-virtualized';
import Diagram from './diagram';
import { SLD_DISPLAY_MODE } from '../network/constants';
import { useNameOrId } from '../utils/equipmentInfosHandler';
-import { syncDiagramStateWithSessionStorage } from '../../redux/session-storage/diagram-state';
+import { syncDiagramStateWithSessionStorage } from '../../appRedux/session-storage/diagram-state';
import SingleLineDiagramContent from './singleLineDiagram/single-line-diagram-content';
import NetworkAreaDiagramContent from './networkAreaDiagram/network-area-diagram-content';
import { OverflowableText, useDebounce, useSnackMessage } from '@gridsuite/commons-ui';
-import { setNetworkAreaDiagramNbVoltageLevels } from '../../redux/actions';
+import { setNetworkAreaDiagramNbVoltageLevels } from '../../appRedux/actions';
import { useIntl } from 'react-intl';
import { getSubstationSingleLineDiagram, getVoltageLevelSingleLineDiagram } from '../../services/study/network';
import { fetchSvg, getNetworkAreaDiagramUrl } from '../../services/study';
@@ -53,7 +53,7 @@ import { mergeSx } from '../utils/functions';
import { Box } from '@mui/system';
import { useLocalizedCountries } from 'components/utils/localized-countries-hook';
import { UUID } from 'crypto';
-import { AppState, CurrentTreeNode, DiagramState } from 'redux/reducer';
+import { AppState, CurrentTreeNode, DiagramState } from 'appRedux/reducer';
import { SLDMetadata } from '@powsybl/diagram-viewer';
// Returns a callback that returns a promise
diff --git a/src/components/diagrams/diagram-utils.ts b/src/components/diagrams/diagram-utils.ts
index e43aece79b..a36a1e5c74 100644
--- a/src/components/diagrams/diagram-utils.ts
+++ b/src/components/diagrams/diagram-utils.ts
@@ -5,7 +5,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
-import { DiagramState } from '../../redux/reducer';
+import { DiagramState } from '../../appRedux/reducer';
import { DiagramType } from './diagram-common';
/**
diff --git a/src/components/diagrams/diagram.tsx b/src/components/diagrams/diagram.tsx
index 757ff73d21..fbc8bac7c6 100644
--- a/src/components/diagrams/diagram.tsx
+++ b/src/components/diagrams/diagram.tsx
@@ -13,7 +13,7 @@ import {
incrementNetworkAreaDiagramDepth,
resetNetworkAreaDiagramDepth,
setFullScreenDiagram,
-} from '../../redux/actions';
+} from '../../appRedux/actions';
import { useIntl } from 'react-intl';
import {
DiagramType,
@@ -28,7 +28,7 @@ import DiagramHeader from './diagram-header';
import DiagramFooter from './diagram-footer';
import DiagramResizableBox from './diagram-resizable-box';
import AlertCustomMessageNode from '../utils/alert-custom-message-node';
-import { AppState } from 'redux/reducer';
+import { AppState } from 'appRedux/reducer';
interface DiagramProps {
align?: 'left' | 'right' | 'center';
diff --git a/src/components/diagrams/networkAreaDiagram/network-area-diagram-content.tsx b/src/components/diagrams/networkAreaDiagram/network-area-diagram-content.tsx
index 505ed29c4d..8ac05b7e67 100644
--- a/src/components/diagrams/networkAreaDiagram/network-area-diagram-content.tsx
+++ b/src/components/diagrams/networkAreaDiagram/network-area-diagram-content.tsx
@@ -21,8 +21,8 @@ import LinearProgress from '@mui/material/LinearProgress';
import Box from '@mui/material/Box';
import { mergeSx } from '../../utils/functions';
import ComputingType from '../../computing-status/computing-type';
-import { AppState } from 'redux/reducer';
-import { storeNetworkAreaDiagramNodeMovement } from '../../../redux/actions';
+import { AppState } from 'appRedux/reducer';
+import { storeNetworkAreaDiagramNodeMovement } from '../../../appRedux/actions';
import { PARAM_INIT_NAD_WITH_GEO_DATA } from '../../../utils/config-params.js';
import { getNadIdentifier } from '../diagram-utils.js';
import { UUID } from 'crypto';
diff --git a/src/components/diagrams/singleLineDiagram/position-diagram-pane.tsx b/src/components/diagrams/singleLineDiagram/position-diagram-pane.tsx
index f5202d284e..ed916145e8 100644
--- a/src/components/diagrams/singleLineDiagram/position-diagram-pane.tsx
+++ b/src/components/diagrams/singleLineDiagram/position-diagram-pane.tsx
@@ -20,7 +20,7 @@ import { SLD_DISPLAY_MODE } from '../../network/constants';
import { DiagramType } from '../diagram-common';
import { getVoltageLevelSingleLineDiagram } from '../../../services/study/network';
import { FC } from 'react';
-import { AppState } from 'redux/reducer';
+import { AppState } from 'appRedux/reducer';
import { UUID } from 'crypto';
interface PositionDiagramPaneProps {
diff --git a/src/components/diagrams/singleLineDiagram/position-diagram.tsx b/src/components/diagrams/singleLineDiagram/position-diagram.tsx
index cd24b9012e..2817cdf99b 100644
--- a/src/components/diagrams/singleLineDiagram/position-diagram.tsx
+++ b/src/components/diagrams/singleLineDiagram/position-diagram.tsx
@@ -18,7 +18,7 @@ import { Paper } from '@mui/material';
import DiagramHeader from '../diagram-header';
import { fetchSvg } from '../../../services/study';
import { mergeSx } from '../../utils/functions';
-import { AppState } from 'redux/reducer';
+import { AppState } from 'appRedux/reducer';
interface PositionDiagramProps {
diagramTitle: string;
diff --git a/src/components/diagrams/singleLineDiagram/single-line-diagram-content.tsx b/src/components/diagrams/singleLineDiagram/single-line-diagram-content.tsx
index ebb5c0af6f..34965dcef5 100644
--- a/src/components/diagrams/singleLineDiagram/single-line-diagram-content.tsx
+++ b/src/components/diagrams/singleLineDiagram/single-line-diagram-content.tsx
@@ -50,8 +50,8 @@ import { fetchNetworkElementInfos } from '../../../services/study/network';
import { mergeSx } from '../../utils/functions';
import { useOneBusShortcircuitAnalysisLoader } from '../use-one-bus-shortcircuit-analysis-loader';
import { DynamicSimulationEventDialog } from '../../dialogs/dynamicsimulation/event/dynamic-simulation-event-dialog';
-import { setComputationStarting, setComputingStatus } from '../../../redux/actions';
-import { AppState } from 'redux/reducer';
+import { setComputationStarting, setComputingStatus } from '../../../appRedux/actions';
+import { AppState } from 'appRedux/reducer';
import { UUID } from 'crypto';
type EquipmentMenuState = {
diff --git a/src/components/diagrams/use-one-bus-shortcircuit-analysis-loader.tsx b/src/components/diagrams/use-one-bus-shortcircuit-analysis-loader.tsx
index 6be3eba70e..207af96fc6 100644
--- a/src/components/diagrams/use-one-bus-shortcircuit-analysis-loader.tsx
+++ b/src/components/diagrams/use-one-bus-shortcircuit-analysis-loader.tsx
@@ -9,10 +9,10 @@ import { UUID } from 'crypto';
import { ReactElement, useCallback, useEffect, useMemo } from 'react';
import { useIntl } from 'react-intl';
import { useDispatch, useSelector } from 'react-redux';
-import { AppState } from 'redux/reducer';
+import { AppState } from 'appRedux/reducer';
import { Chip, darken, lighten, Theme } from '@mui/material';
-import { setOneBusShortcircuitAnalysisDiagram } from '../../redux/actions';
-import { AppDispatch } from '../../redux/store';
+import { setOneBusShortcircuitAnalysisDiagram } from '../../appRedux/actions';
+import { AppDispatch } from '../../appRedux/store';
/**
* A hook that handles the logic behind the diagram one bus shortcircuit analysis loader
diff --git a/src/components/dialogs/connectivity/branch-connectivity-form.tsx b/src/components/dialogs/connectivity/branch-connectivity-form.tsx
index 3ea08dd98a..485b1111ec 100644
--- a/src/components/dialogs/connectivity/branch-connectivity-form.tsx
+++ b/src/components/dialogs/connectivity/branch-connectivity-form.tsx
@@ -11,7 +11,7 @@ import { ConnectivityForm } from './connectivity-form';
import { CONNECTIVITY, CONNECTIVITY_1, CONNECTIVITY_2 } from 'components/utils/field-constants';
import React, { FunctionComponent } from 'react';
import useVoltageLevelsListInfos from '../../../hooks/use-voltage-levels-list-infos';
-import { CurrentTreeNode } from '../../../redux/reducer';
+import { CurrentTreeNode } from '../../../appRedux/reducer';
import { UUID } from 'crypto';
interface BranchConnectivityFormProps {
diff --git a/src/components/dialogs/element-creation-dialog.tsx b/src/components/dialogs/element-creation-dialog.tsx
index cd0e51ff70..08cec0be84 100644
--- a/src/components/dialogs/element-creation-dialog.tsx
+++ b/src/components/dialogs/element-creation-dialog.tsx
@@ -26,7 +26,7 @@ import { yupResolver } from '@hookform/resolvers/yup';
import yup from '../utils/yup-config';
import { useSelector } from 'react-redux';
import ModificationDialog from './commons/modificationDialog';
-import { AppState } from '../../redux/reducer';
+import { AppState } from '../../appRedux/reducer';
interface FormData {
[NAME]: string;
diff --git a/src/components/dialogs/equipment-search-dialog.tsx b/src/components/dialogs/equipment-search-dialog.tsx
index e4b8785693..3fa6ad76bc 100644
--- a/src/components/dialogs/equipment-search-dialog.tsx
+++ b/src/components/dialogs/equipment-search-dialog.tsx
@@ -17,7 +17,7 @@ import { FC } from 'react';
import { useSearchMatchingEquipments } from '../top-bar-equipment-seach-dialog/use-search-matching-equipments';
import { UUID } from 'crypto';
import { useSelector } from 'react-redux';
-import { AppState } from 'redux/reducer';
+import { AppState } from 'appRedux/reducer';
import { TextField } from '@mui/material';
import { Search } from '@mui/icons-material';
diff --git a/src/components/dialogs/illustrations/generic-Illustration-network-modification.tsx b/src/components/dialogs/illustrations/generic-Illustration-network-modification.tsx
index 4edcc57d84..09edbbd471 100644
--- a/src/components/dialogs/illustrations/generic-Illustration-network-modification.tsx
+++ b/src/components/dialogs/illustrations/generic-Illustration-network-modification.tsx
@@ -12,7 +12,7 @@ import Paper from '@mui/material/Paper';
import { LIGHT_THEME } from '@gridsuite/commons-ui';
import { AccordionIllustration } from './AccordionIllustration';
import { PARAM_THEME } from 'utils/config-params';
-import { AppState } from 'redux/reducer';
+import { AppState } from 'appRedux/reducer';
interface ReplacedText {
eltId: string;
diff --git a/src/components/dialogs/import-modification-dialog.tsx b/src/components/dialogs/import-modification-dialog.tsx
index c6ad2b2f60..25f8c65abb 100644
--- a/src/components/dialogs/import-modification-dialog.tsx
+++ b/src/components/dialogs/import-modification-dialog.tsx
@@ -10,7 +10,7 @@ import { ElementType, useSnackMessage, DirectoryItemSelector, TreeViewFinderNode
import { copyOrMoveModifications } from '../../services/study';
import { FunctionComponent } from 'react';
import { useSelector } from 'react-redux';
-import { AppState } from 'redux/reducer';
+import { AppState } from 'appRedux/reducer';
import { NetworkModificationCopyType } from 'components/graph/menus/network-modification-menu.type';
/**
diff --git a/src/components/dialogs/network-modifications/vsc/converter-station/converter-station-pane.tsx b/src/components/dialogs/network-modifications/vsc/converter-station/converter-station-pane.tsx
index ebba73e8c4..c04ffc11a9 100644
--- a/src/components/dialogs/network-modifications/vsc/converter-station/converter-station-pane.tsx
+++ b/src/components/dialogs/network-modifications/vsc/converter-station/converter-station-pane.tsx
@@ -24,7 +24,7 @@ import {
ReactivePowerAdornment,
VoltageAdornment,
} from '../../../dialogUtils';
-import { CurrentTreeNode } from '../../../../../redux/reducer';
+import { CurrentTreeNode } from '../../../../../appRedux/reducer';
import { UUID } from 'crypto';
import { ConnectivityForm } from '../../../connectivity/connectivity-form';
import Grid from '@mui/material/Grid';
diff --git a/src/components/dialogs/network-modifications/vsc/creation/vsc-creation-form.tsx b/src/components/dialogs/network-modifications/vsc/creation/vsc-creation-form.tsx
index c4a5e0b5c7..12f50b4753 100644
--- a/src/components/dialogs/network-modifications/vsc/creation/vsc-creation-form.tsx
+++ b/src/components/dialogs/network-modifications/vsc/creation/vsc-creation-form.tsx
@@ -12,7 +12,7 @@ import VscHvdcLinePane from '../hvdc-line-pane/vsc-hvdc-line-pane';
import ConverterStationPane from '../converter-station/converter-station-pane';
import { VSC_CREATION_TABS } from './vsc-creation-dialog';
import { UUID } from 'crypto';
-import { CurrentTreeNode } from '../../../../../redux/reducer';
+import { CurrentTreeNode } from '../../../../../appRedux/reducer';
interface VscCreationFormProps {
tabIndex: number;
diff --git a/src/components/dialogs/network-modifications/vsc/modification/vsc-modification-from.tsx b/src/components/dialogs/network-modifications/vsc/modification/vsc-modification-from.tsx
index 820ef894db..d3cba96c20 100644
--- a/src/components/dialogs/network-modifications/vsc/modification/vsc-modification-from.tsx
+++ b/src/components/dialogs/network-modifications/vsc/modification/vsc-modification-from.tsx
@@ -15,7 +15,7 @@ import React, { FunctionComponent } from 'react';
import VscHvdcLinePane from '../hvdc-line-pane/vsc-hvdc-line-pane';
import ConverterStationPane from '../converter-station/converter-station-pane';
import { UUID } from 'crypto';
-import { CurrentTreeNode } from '../../../../../redux/reducer';
+import { CurrentTreeNode } from '../../../../../appRedux/reducer';
import { VscModificationInfo } from 'services/network-modification-types';
import { TextInput } from '@gridsuite/commons-ui';
import { Box, TextField } from '@mui/material';
diff --git a/src/components/dialogs/parameters/common/computation-parameters-util.ts b/src/components/dialogs/parameters/common/computation-parameters-util.ts
index 59d1fccbc5..a615fd5df5 100644
--- a/src/components/dialogs/parameters/common/computation-parameters-util.ts
+++ b/src/components/dialogs/parameters/common/computation-parameters-util.ts
@@ -5,7 +5,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
-import { NotificationType, StudyUpdated } from '../../../../redux/reducer';
+import { NotificationType, StudyUpdated } from '../../../../appRedux/reducer';
import { ComputingType, isValidComputingType } from '../../../computing-status/computing-type';
export const UPDATE_TYPE_HEADER = 'updateType';
diff --git a/src/components/dialogs/parameters/common/parameters-creation-dialog.tsx b/src/components/dialogs/parameters/common/parameters-creation-dialog.tsx
index b679c73c50..2a334cd2ce 100644
--- a/src/components/dialogs/parameters/common/parameters-creation-dialog.tsx
+++ b/src/components/dialogs/parameters/common/parameters-creation-dialog.tsx
@@ -23,7 +23,7 @@ import {
import ModificationDialog from 'components/dialogs/commons/modificationDialog';
import { createParameter } from 'services/explore';
import { UniqueNameInput } from 'components/dialogs/commons/unique-name-input';
-import { AppState } from 'redux/reducer';
+import { AppState } from 'appRedux/reducer';
import { UUID } from 'crypto';
interface FormData {
diff --git a/src/components/dialogs/parameters/network-visualizations/network-visualizations-parameters.tsx b/src/components/dialogs/parameters/network-visualizations/network-visualizations-parameters.tsx
index ff535b99d6..e03866d8b1 100644
--- a/src/components/dialogs/parameters/network-visualizations/network-visualizations-parameters.tsx
+++ b/src/components/dialogs/parameters/network-visualizations/network-visualizations-parameters.tsx
@@ -12,7 +12,7 @@ import { SingleLineDiagramParameters, useGetAvailableComponentLibraries } from '
import { NetworkAreaDiagramParameters } from './network-area-diagram-parameters';
import { MapParameters } from './map-parameters';
import { useSelector } from 'react-redux';
-import { AppState } from '../../../../redux/reducer';
+import { AppState } from '../../../../appRedux/reducer';
enum TabValue {
MAP = 'Map',
diff --git a/src/components/dialogs/parameters/voltageinit/use-get-voltage-init-parameters.tsx b/src/components/dialogs/parameters/voltageinit/use-get-voltage-init-parameters.tsx
index 96247612d8..5c4e2325d3 100644
--- a/src/components/dialogs/parameters/voltageinit/use-get-voltage-init-parameters.tsx
+++ b/src/components/dialogs/parameters/voltageinit/use-get-voltage-init-parameters.tsx
@@ -8,7 +8,7 @@
import { VoltageInitParam } from './voltage-init-utils';
import { Dispatch, SetStateAction, useCallback, useEffect, useRef, useState } from 'react';
import { useSelector } from 'react-redux';
-import { AppState } from '../../../../redux/reducer';
+import { AppState } from '../../../../appRedux/reducer';
import { useSnackMessage } from '@gridsuite/commons-ui';
import { useOptionalServiceStatus } from '../../../../hooks/use-optional-service-status';
import { OptionalServicesNames, OptionalServicesStatus } from '../../../utils/optional-services';
diff --git a/src/components/dialogs/parameters/voltageinit/voltage-init-parameters.tsx b/src/components/dialogs/parameters/voltageinit/voltage-init-parameters.tsx
index 71d6690d7e..67daa3ed4e 100644
--- a/src/components/dialogs/parameters/voltageinit/voltage-init-parameters.tsx
+++ b/src/components/dialogs/parameters/voltageinit/voltage-init-parameters.tsx
@@ -40,7 +40,7 @@ import {
VoltageInitParametersForm,
voltageInitParametersFormSchema,
} from './voltage-init-parameters-form';
-import { AppState } from '../../../../redux/reducer';
+import { AppState } from '../../../../appRedux/reducer';
import { UUID } from 'crypto';
import { useGetVoltageInitParameters } from './use-get-voltage-init-parameters';
diff --git a/src/components/dialogs/restore-modification-dialog.tsx b/src/components/dialogs/restore-modification-dialog.tsx
index 9e9cbc1ec5..53ea4aa947 100644
--- a/src/components/dialogs/restore-modification-dialog.tsx
+++ b/src/components/dialogs/restore-modification-dialog.tsx
@@ -17,7 +17,7 @@ import { deleteModifications, restoreModifications } from 'services/study/networ
import { CustomDialog } from 'components/utils/custom-dialog';
import { useModificationLabelComputer } from '../graph/util/use-modification-label-computer.jsx';
import { useSelector } from 'react-redux';
-import { AppState } from 'redux/reducer.js';
+import { AppState } from 'appRedux/reducer.js';
import { NetworkModificationMetadata } from 'components/graph/menus/network-modification-menu.type.js';
import { toggleElementFromList } from 'components/utils/utils.js';
diff --git a/src/components/graph/layout.ts b/src/components/graph/layout.ts
index e47deb221b..433da8b501 100644
--- a/src/components/graph/layout.ts
+++ b/src/components/graph/layout.ts
@@ -8,7 +8,7 @@
import dagre from 'dagre';
import { nodeWidth, nodeHeight, rootNodeWidth, rootNodeHeight } from './util/model-constants';
import { Edge, Position } from '@xyflow/react';
-import { CurrentTreeNode } from 'redux/reducer';
+import { CurrentTreeNode } from 'appRedux/reducer';
import { NodeType } from './tree-node.type';
export function getLayoutedNodes(nodes: CurrentTreeNode[], edges: Edge[]) {
diff --git a/src/components/graph/menus/create-node-menu.tsx b/src/components/graph/menus/create-node-menu.tsx
index 242a749262..370bc8ba21 100644
--- a/src/components/graph/menus/create-node-menu.tsx
+++ b/src/components/graph/menus/create-node-menu.tsx
@@ -15,7 +15,7 @@ import { NodeInsertModes } from '../nodes/node-insert-modes';
import { CustomDialog } from '../../utils/custom-dialog';
import { CustomNestedMenuItem } from '../../utils/custom-nested-menu';
import { BUILD_STATUS } from '../../network/constants';
-import { AppState, CurrentTreeNode } from 'redux/reducer';
+import { AppState, CurrentTreeNode } from 'appRedux/reducer';
import { UUID } from 'crypto';
import NetworkModificationTreeModel from '../network-modification-tree-model';
import { CopyType } from 'components/network-modification.type';
diff --git a/src/components/graph/menus/dynamic-simulation/event-modification-scenario-editor.tsx b/src/components/graph/menus/dynamic-simulation/event-modification-scenario-editor.tsx
index 133bc4c515..713ee5eebc 100644
--- a/src/components/graph/menus/dynamic-simulation/event-modification-scenario-editor.tsx
+++ b/src/components/graph/menus/dynamic-simulation/event-modification-scenario-editor.tsx
@@ -14,7 +14,7 @@ import { useParams } from 'react-router-dom';
import DeleteIcon from '@mui/icons-material/Delete';
import IconButton from '@mui/material/IconButton';
import { useIsAnyNodeBuilding } from '../../../utils/is-any-node-building-hook';
-import { addNotification, removeNotificationByNode, setModificationsInProgress } from '../../../../redux/actions';
+import { addNotification, removeNotificationByNode, setModificationsInProgress } from '../../../../appRedux/actions';
import { EVENT_CRUD_FINISHED, EventCrudType } from 'components/network/constants.type';
import { UUID } from 'crypto';
import { Event, EventType } from '../../../dialogs/dynamicsimulation/event/types/event.type';
@@ -24,8 +24,8 @@ import { getStartTime, getStartTimeUnit } from '../../../dialogs/dynamicsimulati
import { isChecked, isPartial, styles } from '../network-modification-node-editor';
import { EQUIPMENT_TYPE_LABEL_KEYS } from '../../util/model-constants';
import EditIcon from '@mui/icons-material/Edit';
-import { AppState, StudyUpdated } from '../../../../redux/reducer';
-import { AppDispatch } from '../../../../redux/store';
+import { AppState, StudyUpdated } from '../../../../appRedux/reducer';
+import { AppDispatch } from '../../../../appRedux/store';
import { EQUIPMENT_TYPES } from '../../../utils/equipment-types';
const EventModificationScenarioEditor = () => {
diff --git a/src/components/graph/menus/dynamic-simulation/scenario-editor.tsx b/src/components/graph/menus/dynamic-simulation/scenario-editor.tsx
index 6ac7ddcb07..fe99fb4ed5 100644
--- a/src/components/graph/menus/dynamic-simulation/scenario-editor.tsx
+++ b/src/components/graph/menus/dynamic-simulation/scenario-editor.tsx
@@ -10,12 +10,12 @@ import { lighten, darken, Theme } from '@mui/material/styles';
import { EditableTitle } from '../editable-title';
import { useDispatch, useSelector } from 'react-redux';
-import { setEventScenarioDrawerOpen } from '../../../../redux/actions';
+import { setEventScenarioDrawerOpen } from '../../../../appRedux/actions';
import { useIntl } from 'react-intl';
-import { AppState } from '../../../../redux/reducer';
+import { AppState } from '../../../../appRedux/reducer';
import EventModificationScenarioEditor from './event-modification-scenario-editor';
import { Box } from '@mui/material';
-import { AppDispatch } from '../../../../redux/store';
+import { AppDispatch } from '../../../../appRedux/store';
const styles = {
paper: {
diff --git a/src/components/graph/menus/network-modification-node-editor.tsx b/src/components/graph/menus/network-modification-node-editor.tsx
index 9285c0ecb8..45ffafaa4f 100644
--- a/src/components/graph/menus/network-modification-node-editor.tsx
+++ b/src/components/graph/menus/network-modification-node-editor.tsx
@@ -50,7 +50,7 @@ import { UPDATE_TYPE } from 'components/network/constants';
import React, { useCallback, useEffect, useRef, useState } from 'react';
import { FormattedMessage, useIntl } from 'react-intl';
import { useDispatch, useSelector } from 'react-redux';
-import { addNotification, removeNotificationByNode, setModificationsInProgress } from '../../../redux/actions';
+import { addNotification, removeNotificationByNode, setModificationsInProgress } from '../../../appRedux/actions';
import TwoWindingsTransformerModificationDialog from '../../dialogs/network-modifications/two-windings-transformer/modification/two-windings-transformer-modification-dialog';
import { useIsAnyNodeBuilding } from '../../utils/is-any-node-building-hook';
@@ -60,7 +60,7 @@ import RestoreModificationDialog from 'components/dialogs/restore-modification-d
import { MODIFICATION_TYPES } from 'components/utils/modification-type';
import { UUID } from 'crypto';
import { DropResult } from 'react-beautiful-dnd';
-import { AppState, StudyUpdated } from 'redux/reducer';
+import { AppState, StudyUpdated } from 'appRedux/reducer';
import { createCompositeModifications } from '../../../services/explore';
import { fetchNetworkModification } from '../../../services/network-modification';
import { copyOrMoveModifications } from '../../../services/study';
diff --git a/src/components/graph/menus/node-editor.tsx b/src/components/graph/menus/node-editor.tsx
index 96451e2e44..4164b9c1aa 100644
--- a/src/components/graph/menus/node-editor.tsx
+++ b/src/components/graph/menus/node-editor.tsx
@@ -12,10 +12,10 @@ import NetworkModificationNodeEditor from './network-modification-node-editor';
import { useSnackMessage } from '@gridsuite/commons-ui';
import { EditableTitle } from './editable-title';
import { useDispatch, useSelector } from 'react-redux';
-import { setModificationsDrawerOpen } from '../../../redux/actions';
+import { setModificationsDrawerOpen } from '../../../appRedux/actions';
import { updateTreeNode } from '../../../services/study/tree-subtree';
import { Box } from '@mui/material';
-import { AppState } from '../../../redux/reducer';
+import { AppState } from '../../../appRedux/reducer';
import { Theme } from '@mui/material/styles';
const styles = {
diff --git a/src/components/graph/menus/switch-network-modification-active.tsx b/src/components/graph/menus/switch-network-modification-active.tsx
index cbe659e063..d0ccd30d51 100644
--- a/src/components/graph/menus/switch-network-modification-active.tsx
+++ b/src/components/graph/menus/switch-network-modification-active.tsx
@@ -9,7 +9,7 @@ import { Dispatch, SetStateAction, useCallback, useState } from 'react';
import { NetworkModificationMetadata } from './network-modification-menu.type';
import { useSnackMessage } from '@gridsuite/commons-ui';
import { useSelector } from 'react-redux';
-import { AppState } from 'redux/reducer';
+import { AppState } from 'appRedux/reducer';
import { setModificationActivated } from 'services/study/network-modifications';
import { Switch } from '@mui/material';
import { UUID } from 'crypto';
diff --git a/src/components/graph/network-modification-tree-model.ts b/src/components/graph/network-modification-tree-model.ts
index 7e21f18ff0..02632c36a3 100644
--- a/src/components/graph/network-modification-tree-model.ts
+++ b/src/components/graph/network-modification-tree-model.ts
@@ -10,7 +10,7 @@ import { convertNodetoReactFlowModelNode, getModificationNodeDataOrUndefined } f
import { NodeInsertModes } from './nodes/node-insert-modes';
import { BUILD_STATUS } from '../network/constants';
import { UUID } from 'crypto';
-import { CurrentTreeNode, isReactFlowRootNodeData } from '../../redux/reducer';
+import { CurrentTreeNode, isReactFlowRootNodeData } from '../../appRedux/reducer';
import { Edge } from '@xyflow/react';
import { NetworkModificationNodeData, RootNodeData } from './tree-node.type';
diff --git a/src/components/graph/nodes/network-modification-node.tsx b/src/components/graph/nodes/network-modification-node.tsx
index d168cedd81..77e79467ab 100644
--- a/src/components/graph/nodes/network-modification-node.tsx
+++ b/src/components/graph/nodes/network-modification-node.tsx
@@ -12,11 +12,11 @@ import { useSelector } from 'react-redux';
import CircularProgress from '@mui/material/CircularProgress';
import LockIcon from '@mui/icons-material/Lock';
import { LIGHT_THEME, OverflowableText } from '@gridsuite/commons-ui';
-import { getLocalStorageTheme } from '../../../redux/session-storage/local-storage';
+import { getLocalStorageTheme } from '../../../appRedux/session-storage/local-storage';
import { BUILD_STATUS } from '../../network/constants';
import { Box } from '@mui/system';
import { Theme } from '@mui/material';
-import { AppState, ModificationNode } from 'redux/reducer';
+import { AppState, ModificationNode } from 'appRedux/reducer';
import { CopyType } from 'components/network-modification.type';
const BUILT_NODE_BANNER_COLOR = '#74a358';
diff --git a/src/components/graph/nodes/root-node.tsx b/src/components/graph/nodes/root-node.tsx
index 6465f460c5..030f54feca 100644
--- a/src/components/graph/nodes/root-node.tsx
+++ b/src/components/graph/nodes/root-node.tsx
@@ -13,7 +13,7 @@ import { Handle, NodeProps, Position } from '@xyflow/react';
import { useSelector } from 'react-redux';
import Tooltip from '@mui/material/Tooltip';
import { BUILD_STATUS } from '../../network/constants';
-import { AppState, RootNode as RootNodeType } from 'redux/reducer';
+import { AppState, RootNode as RootNodeType } from 'appRedux/reducer';
import { Theme } from '@mui/material/styles';
const styles = {
diff --git a/src/components/graph/util/center-graph-button.tsx b/src/components/graph/util/center-graph-button.tsx
index 3d32dc6515..24f2cb4a84 100644
--- a/src/components/graph/util/center-graph-button.tsx
+++ b/src/components/graph/util/center-graph-button.tsx
@@ -11,7 +11,7 @@ import React, { useCallback } from 'react';
import { ControlButton, useReactFlow } from '@xyflow/react';
import { useIntl } from 'react-intl';
import { TOOLTIP_DELAY } from '../../../utils/UIconstants';
-import { CurrentTreeNode } from 'redux/reducer';
+import { CurrentTreeNode } from 'appRedux/reducer';
const CenterGraphButton = ({ currentNode }: { currentNode: CurrentTreeNode }) => {
const { setCenter, getZoom } = useReactFlow();
diff --git a/src/components/graph/util/model-functions.ts b/src/components/graph/util/model-functions.ts
index 0a7eb9a703..5991634085 100644
--- a/src/components/graph/util/model-functions.ts
+++ b/src/components/graph/util/model-functions.ts
@@ -7,7 +7,7 @@
import { UUID } from 'crypto';
import NetworkModificationTreeModel from '../network-modification-tree-model';
-import { CurrentTreeNode, ReactFlowModificationNodeData, ReactFlowRootNodeData } from 'redux/reducer';
+import { CurrentTreeNode, ReactFlowModificationNodeData, ReactFlowRootNodeData } from 'appRedux/reducer';
import { NetworkModificationNodeData, NodeType, RootNodeData } from '../tree-node.type';
export function getModificationNodeDataOrUndefined(node: NetworkModificationNodeData | RootNodeData) {
diff --git a/src/components/horizontal-toolbar.jsx b/src/components/horizontal-toolbar.jsx
index 1160c7a428..6afdf5bee7 100644
--- a/src/components/horizontal-toolbar.jsx
+++ b/src/components/horizontal-toolbar.jsx
@@ -14,7 +14,7 @@ import Tooltip from '@mui/material/Tooltip';
import { useIntl } from 'react-intl';
import { useDispatch, useSelector } from 'react-redux';
import Divider from '@mui/material/Divider';
-import { setModificationsDrawerOpen, setStudyDisplayMode, setEventScenarioDrawerOpen } from '../redux/actions';
+import { setModificationsDrawerOpen, setStudyDisplayMode, setEventScenarioDrawerOpen } from '../appRedux/actions';
import { TOOLTIP_DELAY } from '../utils/UIconstants';
import OfflineBoltOutlinedIcon from '@mui/icons-material/OfflineBoltOutlined';
import { useParameterState } from './dialogs/parameters/parameters';
diff --git a/src/components/map-viewer.jsx b/src/components/map-viewer.jsx
index 1a75b8ad7d..095f99c00c 100644
--- a/src/components/map-viewer.jsx
+++ b/src/components/map-viewer.jsx
@@ -14,7 +14,7 @@ import {
PARAM_LINE_FULL_PATH,
PARAM_LINE_PARALLEL_PATH,
} from '../utils/config-params';
-import { setStudyDisplayMode } from '../redux/actions';
+import { setStudyDisplayMode } from '../appRedux/actions';
import { DRAW_EVENT, DRAW_MODES } from '@powsybl/diagram-viewer';
import { DiagramType } from './diagrams/diagram-common';
import { ReactFlowProvider } from '@xyflow/react';
diff --git a/src/components/menus/bus-menu.tsx b/src/components/menus/bus-menu.tsx
index 66d45fa065..b3f46c5609 100644
--- a/src/components/menus/bus-menu.tsx
+++ b/src/components/menus/bus-menu.tsx
@@ -11,7 +11,7 @@ import { FormattedMessage } from 'react-intl';
import React, { FunctionComponent, useCallback, useEffect, useMemo, useState } from 'react';
import { isNodeBuilt, isNodeReadOnly } from 'components/graph/util/model-functions';
import { useSelector } from 'react-redux';
-import { AppState } from 'redux/reducer';
+import { AppState } from 'appRedux/reducer';
import { useIsAnyNodeBuilding } from 'components/utils/is-any-node-building-hook';
import { ComputingType } from 'components/computing-status/computing-type';
import { RunningStatus } from 'components/utils/running-status';
diff --git a/src/components/network-modification-tree-pane.jsx b/src/components/network-modification-tree-pane.jsx
index a3b55aaed5..e6ffdc2b48 100644
--- a/src/components/network-modification-tree-pane.jsx
+++ b/src/components/network-modification-tree-pane.jsx
@@ -14,7 +14,7 @@ import {
removeNotificationByNode,
networkModificationHandleSubtree,
setSelectionForCopy,
-} from '../redux/actions';
+} from '../appRedux/actions';
import { useDispatch, useSelector } from 'react-redux';
import PropTypes from 'prop-types';
import { Box } from '@mui/material';
diff --git a/src/components/network-modification-tree.jsx b/src/components/network-modification-tree.jsx
index 1daa78cfa7..112397b347 100644
--- a/src/components/network-modification-tree.jsx
+++ b/src/components/network-modification-tree.jsx
@@ -9,7 +9,7 @@ import { Box, Tooltip } from '@mui/material';
import { ReactFlow, Controls, useStore, useReactFlow, ControlButton } from '@xyflow/react';
import CenterGraphButton from './graph/util/center-graph-button';
import React, { useCallback, useEffect, useRef, useState } from 'react';
-import { setModificationsDrawerOpen, setCurrentTreeNode } from '../redux/actions';
+import { setModificationsDrawerOpen, setCurrentTreeNode } from '../appRedux/actions';
import { useDispatch, useSelector } from 'react-redux';
import { isSameNode } from './graph/util/model-functions';
import { DRAWER_NODE_EDITOR_WIDTH, TOOLTIP_DELAY } from '../utils/UIconstants';
diff --git a/src/components/network/gs-map-equipments.ts b/src/components/network/gs-map-equipments.ts
index c94a33b06e..ed52f6801a 100644
--- a/src/components/network/gs-map-equipments.ts
+++ b/src/components/network/gs-map-equipments.ts
@@ -10,7 +10,7 @@ import { RefObject } from 'react';
import { IntlShape } from 'react-intl';
import { Dispatch } from 'redux';
import { UseSnackMessageReturn } from '@gridsuite/commons-ui';
-import { mapEquipmentsCreated, setMapEquipementsInitialized } from '../../redux/actions';
+import { mapEquipmentsCreated, setMapEquipementsInitialized } from '../../appRedux/actions';
import {
fetchHvdcLinesMapInfos,
fetchLinesMapInfos,
diff --git a/src/components/network/network-map-tab.jsx b/src/components/network/network-map-tab.jsx
index b20e59ce3a..6f48736666 100644
--- a/src/components/network/network-map-tab.jsx
+++ b/src/components/network/network-map-tab.jsx
@@ -17,7 +17,7 @@ import { useDispatch, useSelector } from 'react-redux';
import { PARAM_MAP_BASEMAP, PARAM_MAP_MANUAL_REFRESH, PARAM_USE_NAME } from '../../utils/config-params';
import { useIntlRef, useSnackMessage } from '@gridsuite/commons-ui';
import { isNodeBuilt, isNodeRenamed, isSameNodeAndBuilt } from '../graph/util/model-functions';
-import { resetMapReloaded, setMapDataLoading } from '../../redux/actions';
+import { resetMapReloaded, setMapDataLoading } from '../../appRedux/actions';
import GSMapEquipments from './gs-map-equipments';
import LinearProgress from '@mui/material/LinearProgress';
import { UPDATE_TYPE_HEADER } from '../study-container';
diff --git a/src/components/network/selection-creation-panel/selection-creation-panel.tsx b/src/components/network/selection-creation-panel/selection-creation-panel.tsx
index 88d02c60e8..4f96a32012 100644
--- a/src/components/network/selection-creation-panel/selection-creation-panel.tsx
+++ b/src/components/network/selection-creation-panel/selection-creation-panel.tsx
@@ -29,9 +29,9 @@ import { useSelector, useDispatch } from 'react-redux';
import { useSaveMap } from './use-save-map';
import { SelectionCreationPanelSubmitButton } from './selection-creation-panel-submit-button';
import { SELECTION_TYPES } from './selection-types';
-import { openNadList } from 'redux/actions';
+import { openNadList } from 'appRedux/actions';
import { Nullable } from 'components/utils/ts-utils';
-import { AppState } from 'redux/reducer';
+import { AppState } from 'appRedux/reducer';
import { SelectionCreationPanelForm } from './selection-creation-panel-form';
import {
SelectionCreationPaneFields,
diff --git a/src/components/network/selection-creation-panel/use-save-map.ts b/src/components/network/selection-creation-panel/use-save-map.ts
index 842e699393..982ca07dec 100644
--- a/src/components/network/selection-creation-panel/use-save-map.ts
+++ b/src/components/network/selection-creation-panel/use-save-map.ts
@@ -8,7 +8,7 @@ import { Equipment, EquipmentType, useSnackMessage } from '@gridsuite/commons-ui
import { useCallback, useState } from 'react';
import { useIntl } from 'react-intl';
import { useSelector } from 'react-redux';
-import { AppState } from 'redux/reducer';
+import { AppState } from 'appRedux/reducer';
import { SELECTION_TYPES } from './selection-types';
import { createMapContingencyList, createMapFilter } from '../../../services/study/network-map';
import { DestinationFolder, SelectionCreationPanelNotNadFields } from './selection-creation-schema';
diff --git a/src/components/network/use-spreadsheet-equipments.js b/src/components/network/use-spreadsheet-equipments.js
index 7b2fb49b30..e53ffb25c5 100644
--- a/src/components/network/use-spreadsheet-equipments.js
+++ b/src/components/network/use-spreadsheet-equipments.js
@@ -15,7 +15,7 @@ import {
resetEquipments,
resetEquipmentsByTypes,
updateEquipments,
-} from 'redux/actions';
+} from 'appRedux/actions';
import { fetchAllEquipments } from 'services/study/network-map';
export const useSpreadsheetEquipments = (equipment, formatFetchedEquipments) => {
diff --git a/src/components/parameters-tabs.tsx b/src/components/parameters-tabs.tsx
index 4d6e766097..6c636e7e40 100644
--- a/src/components/parameters-tabs.tsx
+++ b/src/components/parameters-tabs.tsx
@@ -14,7 +14,7 @@ import { useParametersBackend, useParameterState } from './dialogs/parameters/pa
import { PARAM_DEVELOPER_MODE } from 'utils/config-params';
import { useOptionalServiceStatus } from 'hooks/use-optional-service-status';
import { OptionalServicesNames, OptionalServicesStatus } from './utils/optional-services';
-import { AppState } from 'redux/reducer';
+import { AppState } from 'appRedux/reducer';
import { getLoadFlowProviders, getLoadFlowSpecificParametersDescription } from 'services/loadflow';
import {
getDefaultLoadFlowProvider,
diff --git a/src/components/report-viewer/log-table.jsx b/src/components/report-viewer/log-table.jsx
index 6ba9d3d6d9..9c2442464a 100644
--- a/src/components/report-viewer/log-table.jsx
+++ b/src/components/report-viewer/log-table.jsx
@@ -8,7 +8,7 @@ import { memo, useCallback, useEffect, useState, useMemo, useRef } from 'react';
import { useIntl } from 'react-intl';
import { CustomAGGrid } from '@gridsuite/commons-ui';
import { useTheme } from '@mui/material/styles';
-import { setLogsFilter } from '../../redux/actions';
+import { setLogsFilter } from '../../appRedux/actions';
import { makeAgGridCustomHeaderColumn } from 'components/custom-aggrid/custom-aggrid-header-utils';
import { FILTER_DATA_TYPES, FILTER_TEXT_COMPARATORS } from 'components/custom-aggrid/custom-aggrid-header.type';
import { EllipsisCellRenderer } from 'components/spreadsheet/utils/cell-renderers';
diff --git a/src/components/report-viewer/report-viewer.jsx b/src/components/report-viewer/report-viewer.jsx
index 705865b4fb..2b760800ab 100644
--- a/src/components/report-viewer/report-viewer.jsx
+++ b/src/components/report-viewer/report-viewer.jsx
@@ -13,7 +13,7 @@ import ReportItem from './report-item';
import { mapReportsTree } from '../../utils/report-tree.mapper';
import { useDispatch } from 'react-redux';
import PropTypes from 'prop-types';
-import { setLogsFilter } from 'redux/actions';
+import { setLogsFilter } from 'appRedux/actions';
// WARNING this file has been copied from commons-ui, and updated here. Putting it back to commons-ui has to be discussed.
diff --git a/src/components/result-view-tab.tsx b/src/components/result-view-tab.tsx
index 4d0731431c..231fbca715 100644
--- a/src/components/result-view-tab.tsx
+++ b/src/components/result-view-tab.tsx
@@ -21,7 +21,7 @@ import { computingTypeToRootTabRedirection, ResultTabIndexRedirection, useResult
import SensitivityAnalysisResultTab from './results/sensitivity-analysis/sensitivity-analysis-result-tab';
import { NonEvacuatedEnergyResultTab } from './results/sensitivity-analysis/non-evacuated-energy/non-evacuated-energy-result-tab';
import { OptionalServicesNames, OptionalServicesStatus } from './utils/optional-services';
-import { CurrentTreeNode, AppState } from '../redux/reducer';
+import { CurrentTreeNode, AppState } from '../appRedux/reducer';
import { UUID } from 'crypto';
import { useOptionalServiceStatus } from '../hooks/use-optional-service-status';
import { SecurityAnalysisResultTab } from './results/securityanalysis/security-analysis-result-tab';
diff --git a/src/components/results/common/computation-report-viewer.tsx b/src/components/results/common/computation-report-viewer.tsx
index 22c0f34d98..16dbd9617f 100644
--- a/src/components/results/common/computation-report-viewer.tsx
+++ b/src/components/results/common/computation-report-viewer.tsx
@@ -8,7 +8,7 @@
import { FunctionComponent, useEffect, useMemo, useState } from 'react';
import ReportViewer from '../../report-viewer/report-viewer';
import { useSelector } from 'react-redux';
-import { AppState } from '../../../redux/reducer';
+import { AppState } from '../../../appRedux/reducer';
import { ComputingType } from '../../computing-status/computing-type';
import WaitingLoader from '../../utils/waiting-loader';
import { useReportFetcher } from '../../../hooks/use-report-fetcher';
diff --git a/src/components/results/common/results-global-filter.tsx b/src/components/results/common/results-global-filter.tsx
index 3812a36db6..3fb83bb1dc 100644
--- a/src/components/results/common/results-global-filter.tsx
+++ b/src/components/results/common/results-global-filter.tsx
@@ -13,10 +13,10 @@ import { FormattedMessage, useIntl } from 'react-intl';
import { mergeSx } from '../../utils/functions';
import { useLocalizedCountries } from 'components/utils/localized-countries-hook';
import { useDispatch, useSelector } from 'react-redux';
-import { addToRecentGlobalFilters } from '../../../redux/actions';
+import { addToRecentGlobalFilters } from '../../../appRedux/actions';
import { Theme } from '@mui/material';
-import { AppState } from '../../../redux/reducer';
-import { AppDispatch } from '../../../redux/store';
+import { AppState } from '../../../appRedux/reducer';
+import { AppDispatch } from '../../../appRedux/store';
const styles = {
autocomplete: (theme: Theme) => ({
diff --git a/src/components/results/dynamicsimulation/dynamic-simulation-result-logs.tsx b/src/components/results/dynamicsimulation/dynamic-simulation-result-logs.tsx
index 3d9f025d82..a4af9cd568 100644
--- a/src/components/results/dynamicsimulation/dynamic-simulation-result-logs.tsx
+++ b/src/components/results/dynamicsimulation/dynamic-simulation-result-logs.tsx
@@ -8,7 +8,7 @@
import { ComputationReportViewer } from '../common/computation-report-viewer';
import React, { memo, useMemo } from 'react';
import { useSelector } from 'react-redux';
-import { AppState } from '../../../redux/reducer';
+import { AppState } from '../../../appRedux/reducer';
import ComputingType from '../../computing-status/computing-type';
import RunningStatus from '../../utils/running-status';
import { useIntlResultStatusMessages } from '../../utils/aggrid-rows-handler';
diff --git a/src/components/results/dynamicsimulation/dynamic-simulation-result-synthesis.tsx b/src/components/results/dynamicsimulation/dynamic-simulation-result-synthesis.tsx
index 1df108f464..a7ac76bbc8 100644
--- a/src/components/results/dynamicsimulation/dynamic-simulation-result-synthesis.tsx
+++ b/src/components/results/dynamicsimulation/dynamic-simulation-result-synthesis.tsx
@@ -19,7 +19,7 @@ import { DefaultCellRenderer } from '../../spreadsheet/utils/cell-renderers';
import { StatusCellRender } from '../common/result-cell-renderers';
import { UUID } from 'crypto';
import RunningStatus from '../../utils/running-status';
-import { AppState } from '../../../redux/reducer';
+import { AppState } from '../../../appRedux/reducer';
import { CustomAGGrid } from '@gridsuite/commons-ui';
const styles = {
diff --git a/src/components/results/dynamicsimulation/dynamic-simulation-result-timeline.tsx b/src/components/results/dynamicsimulation/dynamic-simulation-result-timeline.tsx
index b1c4a0f738..734ae87ec1 100644
--- a/src/components/results/dynamicsimulation/dynamic-simulation-result-timeline.tsx
+++ b/src/components/results/dynamicsimulation/dynamic-simulation-result-timeline.tsx
@@ -17,7 +17,7 @@ import {
import { DefaultCellRenderer } from '../../spreadsheet/utils/cell-renderers';
import { getNoRowsMessage, useIntlResultStatusMessages } from '../../utils/aggrid-rows-handler';
import { useSelector } from 'react-redux';
-import { AppState } from '../../../redux/reducer';
+import { AppState } from '../../../appRedux/reducer';
import ComputingType from '../../computing-status/computing-type';
import { useAgGridSort } from '../../../hooks/use-aggrid-sort';
import { useAggridLocalRowFilter } from '../../../hooks/use-aggrid-local-row-filter';
@@ -32,7 +32,7 @@ import {
import { useNodeData } from '../../study-container';
import { fetchDynamicSimulationResultTimeline } from '../../../services/dynamic-simulation';
import { NumberCellRenderer } from '../common/result-cell-renderers';
-import { setDynamicSimulationResultFilter } from 'redux/actions';
+import { setDynamicSimulationResultFilter } from 'appRedux/actions';
import {
DYNAMIC_SIMULATION_RESULT_STORE_FIELD,
DYNAMIC_SIMULATION_RESULT_SORT_STORE,
diff --git a/src/components/results/loadflow/limit-violation-result.tsx b/src/components/results/loadflow/limit-violation-result.tsx
index c8f85accc6..dea9617718 100644
--- a/src/components/results/loadflow/limit-violation-result.tsx
+++ b/src/components/results/loadflow/limit-violation-result.tsx
@@ -12,7 +12,7 @@ import { useTheme } from '@mui/material';
import { GridReadyEvent, RowClassParams } from 'ag-grid-community';
import { ComputingType } from '../../computing-status/computing-type';
-import { AppState } from '../../../redux/reducer';
+import { AppState } from '../../../appRedux/reducer';
import { LimitViolationResultProps } from './load-flow-result.type';
import { getNoRowsMessage, getRows, useIntlResultStatusMessages } from '../../utils/aggrid-rows-handler';
diff --git a/src/components/results/loadflow/load-flow-result-tab.tsx b/src/components/results/loadflow/load-flow-result-tab.tsx
index 820a9e773c..981a923edb 100644
--- a/src/components/results/loadflow/load-flow-result-tab.tsx
+++ b/src/components/results/loadflow/load-flow-result-tab.tsx
@@ -15,7 +15,7 @@ import { LoadFlowResult } from './load-flow-result';
import { useNodeData } from '../../study-container';
import { fetchLimitViolations, fetchLoadFlowResult } from '../../../services/study/loadflow';
import RunningStatus from 'components/utils/running-status';
-import { AppState } from 'redux/reducer';
+import { AppState } from 'appRedux/reducer';
import ComputingType from 'components/computing-status/computing-type';
import { useSelector } from 'react-redux';
import { ComputationReportViewer } from '../common/computation-report-viewer';
@@ -35,7 +35,7 @@ import {
import { FILTER_DATA_TYPES, FILTER_TEXT_COMPARATORS } from 'components/custom-aggrid/custom-aggrid-header.type';
import { LimitViolationResult } from './limit-violation-result';
import { mapFieldsToColumnsFilter } from 'components/custom-aggrid/custom-aggrid-header-utils';
-import { setLoadflowResultFilter } from 'redux/actions';
+import { setLoadflowResultFilter } from 'appRedux/actions';
import { NumberCellRenderer, StatusCellRender } from '../common/result-cell-renderers';
import ResultsGlobalFilter, { Filter, FilterType } from '../common/results-global-filter';
import { useSnackMessage } from '@gridsuite/commons-ui';
diff --git a/src/components/results/loadflow/load-flow-result-utils.ts b/src/components/results/loadflow/load-flow-result-utils.ts
index f291e0c078..86369d555e 100644
--- a/src/components/results/loadflow/load-flow-result-utils.ts
+++ b/src/components/results/loadflow/load-flow-result-utils.ts
@@ -30,7 +30,7 @@ import {
import { fetchAvailableFilterEnumValues } from '../../../services/study';
import computingType, { ComputingType } from '../../computing-status/computing-type';
import { useSelector } from 'react-redux';
-import { AppState } from 'redux/reducer';
+import { AppState } from 'appRedux/reducer';
import RunningStatus from 'components/utils/running-status';
export const convertMillisecondsToMinutesSeconds = (durationInMilliseconds: number): string => {
diff --git a/src/components/results/loadflow/load-flow-result.tsx b/src/components/results/loadflow/load-flow-result.tsx
index ee07128f9a..4d97a1f4fe 100644
--- a/src/components/results/loadflow/load-flow-result.tsx
+++ b/src/components/results/loadflow/load-flow-result.tsx
@@ -11,7 +11,7 @@ import { useSelector } from 'react-redux';
import { useTheme } from '@mui/material';
import { GridReadyEvent, RowClassParams } from 'ag-grid-community';
import { ComputingType } from '../../computing-status/computing-type';
-import { AppState } from '../../../redux/reducer';
+import { AppState } from '../../../appRedux/reducer';
import { LoadflowResultProps } from './load-flow-result.type';
import { getNoRowsMessage, getRows, useIntlResultStatusMessages } from '../../utils/aggrid-rows-handler';
diff --git a/src/components/results/securityanalysis/security-analysis-result-tab.tsx b/src/components/results/securityanalysis/security-analysis-result-tab.tsx
index 6f369b1538..214e171eac 100644
--- a/src/components/results/securityanalysis/security-analysis-result-tab.tsx
+++ b/src/components/results/securityanalysis/security-analysis-result-tab.tsx
@@ -8,7 +8,7 @@
import React, { SyntheticEvent, FunctionComponent, useState, useCallback, useMemo, useEffect } from 'react';
import { useSelector } from 'react-redux';
import { FormattedMessage } from 'react-intl';
-import { AppState } from '../../../redux/reducer';
+import { AppState } from '../../../appRedux/reducer';
import { Box } from '@mui/system';
import { Tabs, Tab, Select, MenuItem, LinearProgress } from '@mui/material';
import { fetchSecurityAnalysisResult } from '../../../services/study/security-analysis';
@@ -37,7 +37,7 @@ import { SelectChangeEvent } from '@mui/material/Select/SelectInput';
import { SecurityAnalysisExportButton } from './security-analysis-export-button';
import { useSecurityAnalysisColumnsDefs } from './use-security-analysis-column-defs';
import { mapFieldsToColumnsFilter } from 'components/custom-aggrid/custom-aggrid-header-utils';
-import { setSecurityAnalysisResultFilter } from 'redux/actions';
+import { setSecurityAnalysisResultFilter } from 'appRedux/actions';
import {
SECURITY_ANALYSIS_RESULT_SORT_STORE,
SECURITY_ANALYSIS_RESULT_STORE_FIELD,
diff --git a/src/components/results/securityanalysis/security-analysis-result-utils.ts b/src/components/results/securityanalysis/security-analysis-result-utils.ts
index 02eaff8edb..f0ba6d0b51 100644
--- a/src/components/results/securityanalysis/security-analysis-result-utils.ts
+++ b/src/components/results/securityanalysis/security-analysis-result-utils.ts
@@ -31,7 +31,7 @@ import { SECURITY_ANALYSIS_RESULT_N, SECURITY_ANALYSIS_RESULT_N_K } from 'utils/
import { fetchAvailableFilterEnumValues } from '../../../services/study';
import computingType, { ComputingType } from '../../computing-status/computing-type';
import { useSelector } from 'react-redux';
-import { AppState } from 'redux/reducer';
+import { AppState } from 'appRedux/reducer';
import RunningStatus from 'components/utils/running-status';
import { SecurityAnalysisFilterEnumsType } from './use-security-analysis-column-defs';
diff --git a/src/components/results/securityanalysis/security-analysis-table.tsx b/src/components/results/securityanalysis/security-analysis-table.tsx
index 632e8c7790..39ad0b84b7 100644
--- a/src/components/results/securityanalysis/security-analysis-table.tsx
+++ b/src/components/results/securityanalysis/security-analysis-table.tsx
@@ -12,7 +12,7 @@ import { GridReadyEvent } from 'ag-grid-community';
import { IntlShape, useIntl } from 'react-intl';
import { DefaultCellRenderer } from '../../spreadsheet/utils/cell-renderers';
import { useSelector } from 'react-redux';
-import { AppState } from '../../../redux/reducer';
+import { AppState } from '../../../appRedux/reducer';
import { ComputingType } from '../../computing-status/computing-type';
import { CustomAGGrid } from '@gridsuite/commons-ui';
diff --git a/src/components/results/securityanalysis/use-security-analysis-column-defs.tsx b/src/components/results/securityanalysis/use-security-analysis-column-defs.tsx
index 0f135cd05d..81f9a328cf 100644
--- a/src/components/results/securityanalysis/use-security-analysis-column-defs.tsx
+++ b/src/components/results/securityanalysis/use-security-analysis-column-defs.tsx
@@ -22,7 +22,7 @@ import {
import { SortPropsType } from 'hooks/use-aggrid-sort';
import { FilterEnumsType, FilterPropsType } from 'hooks/use-aggrid-row-filter';
import { useSelector } from 'react-redux';
-import { AppState } from 'redux/reducer';
+import { AppState } from 'appRedux/reducer';
const styles = {
button: {
diff --git a/src/components/results/sensitivity-analysis/non-evacuated-energy/non-evacuated-energy-result-tab.tsx b/src/components/results/sensitivity-analysis/non-evacuated-energy/non-evacuated-energy-result-tab.tsx
index 742fc720a7..30b384314c 100644
--- a/src/components/results/sensitivity-analysis/non-evacuated-energy/non-evacuated-energy-result-tab.tsx
+++ b/src/components/results/sensitivity-analysis/non-evacuated-energy/non-evacuated-energy-result-tab.tsx
@@ -17,7 +17,7 @@ import { FormattedMessage } from 'react-intl';
import { RunningStatus } from '../../../utils/running-status';
import { ComputationReportViewer } from '../../common/computation-report-viewer';
import { useSelector } from 'react-redux';
-import { AppState } from '../../../../redux/reducer';
+import { AppState } from '../../../../appRedux/reducer';
import { ComputingType } from '../../../computing-status/computing-type';
import { RESULTS_LOADING_DELAY } from '../../../network/constants';
diff --git a/src/components/results/sensitivity-analysis/sensitivity-analysis-result-tab.jsx b/src/components/results/sensitivity-analysis/sensitivity-analysis-result-tab.jsx
index e7c9e7d46b..793d6c4e8e 100644
--- a/src/components/results/sensitivity-analysis/sensitivity-analysis-result-tab.jsx
+++ b/src/components/results/sensitivity-analysis/sensitivity-analysis-result-tab.jsx
@@ -31,7 +31,7 @@ import { downloadZipFile } from '../../../services/utils';
import { useSnackMessage } from '@gridsuite/commons-ui';
import { useIntl } from 'react-intl';
import { ExportButton } from '../../utils/export-button';
-import { setSensitivityAnalysisResultFilter } from 'redux/actions';
+import { setSensitivityAnalysisResultFilter } from 'appRedux/actions';
import {
SENSITIVITY_ANALYSIS_RESULT_SORT_STORE,
SENSITIVITY_ANALYSIS_RESULT_STORE_FIELD,
diff --git a/src/components/results/shortcircuit/shortcircuit-analysis-all-buses-result.tsx b/src/components/results/shortcircuit/shortcircuit-analysis-all-buses-result.tsx
index 2c17c012b1..f26a0ed8a0 100644
--- a/src/components/results/shortcircuit/shortcircuit-analysis-all-buses-result.tsx
+++ b/src/components/results/shortcircuit/shortcircuit-analysis-all-buses-result.tsx
@@ -12,7 +12,7 @@ import {
} from 'components/results/shortcircuit/shortcircuit-analysis-result.type';
import { ShortCircuitAnalysisResult } from 'components/results/shortcircuit/shortcircuit-analysis-result';
import { useSelector } from 'react-redux';
-import { AppState } from 'redux/reducer';
+import { AppState } from 'appRedux/reducer';
import { FunctionComponent, useCallback, useState } from 'react';
import { ComputingType } from 'components/computing-status/computing-type';
import { GridReadyEvent } from 'ag-grid-community';
diff --git a/src/components/results/shortcircuit/shortcircuit-analysis-one-bus-result.tsx b/src/components/results/shortcircuit/shortcircuit-analysis-one-bus-result.tsx
index 3300640f34..9f6219e273 100644
--- a/src/components/results/shortcircuit/shortcircuit-analysis-one-bus-result.tsx
+++ b/src/components/results/shortcircuit/shortcircuit-analysis-one-bus-result.tsx
@@ -13,7 +13,7 @@ import {
} from 'components/results/shortcircuit/shortcircuit-analysis-result.type';
import { ShortCircuitAnalysisResult } from 'components/results/shortcircuit/shortcircuit-analysis-result';
import { useSelector } from 'react-redux';
-import { AppState } from 'redux/reducer';
+import { AppState } from 'appRedux/reducer';
import { FunctionComponent, useCallback, useEffect, useState } from 'react';
import { fetchShortCircuitAnalysisResult } from 'services/study/short-circuit-analysis';
import { useSnackMessage } from '@gridsuite/commons-ui';
diff --git a/src/components/results/shortcircuit/shortcircuit-analysis-result-tab.tsx b/src/components/results/shortcircuit/shortcircuit-analysis-result-tab.tsx
index 092f65b8fc..a85453a5e9 100644
--- a/src/components/results/shortcircuit/shortcircuit-analysis-result-tab.tsx
+++ b/src/components/results/shortcircuit/shortcircuit-analysis-result-tab.tsx
@@ -17,7 +17,7 @@ import { FormattedMessage } from 'react-intl';
import { ComputationReportViewer } from '../common/computation-report-viewer';
import { useSelector } from 'react-redux';
-import { AppState } from '../../../redux/reducer';
+import { AppState } from '../../../appRedux/reducer';
import { ComputingType } from '../../computing-status/computing-type';
import { RunningStatus } from '../../utils/running-status';
import { ShortCircuitAnalysisOneBusResult } from './shortcircuit-analysis-one-bus-result';
diff --git a/src/components/results/shortcircuit/shortcircuit-analysis-result-table.tsx b/src/components/results/shortcircuit/shortcircuit-analysis-result-table.tsx
index b2638948a2..0d2d0aeb67 100644
--- a/src/components/results/shortcircuit/shortcircuit-analysis-result-table.tsx
+++ b/src/components/results/shortcircuit/shortcircuit-analysis-result-table.tsx
@@ -13,7 +13,7 @@ import { GridReadyEvent, RowClassParams, ValueGetterParams } from 'ag-grid-commu
import { getNoRowsMessage, getRows, useIntlResultStatusMessages } from '../../utils/aggrid-rows-handler';
import { useSelector } from 'react-redux';
import { ComputingType } from '../../computing-status/computing-type';
-import { AppState } from '../../../redux/reducer';
+import { AppState } from '../../../appRedux/reducer';
import { DefaultCellRenderer } from '../../spreadsheet/utils/cell-renderers';
import { FilterEnumsType, FilterPropsType } from '../../../hooks/use-aggrid-row-filter';
import { SortPropsType } from '../../../hooks/use-aggrid-sort';
diff --git a/src/components/results/shortcircuit/shortcircuit-analysis-result.tsx b/src/components/results/shortcircuit/shortcircuit-analysis-result.tsx
index 7476a3e910..4a2af02836 100644
--- a/src/components/results/shortcircuit/shortcircuit-analysis-result.tsx
+++ b/src/components/results/shortcircuit/shortcircuit-analysis-result.tsx
@@ -13,7 +13,7 @@ import {
SCAPagedResults,
ShortCircuitAnalysisType,
} from './shortcircuit-analysis-result.type';
-import { AppState } from 'redux/reducer';
+import { AppState } from 'appRedux/reducer';
import { RunningStatus } from 'components/utils/running-status';
import React, { FunctionComponent, useCallback, useEffect, useState } from 'react';
import { fetchShortCircuitAnalysisPagedResults } from '../../../services/study/short-circuit-analysis';
@@ -34,7 +34,7 @@ import { RESULTS_LOADING_DELAY } from '../../network/constants';
import { useAgGridSort } from '../../../hooks/use-aggrid-sort';
import { FilterEnumsType, useAggridRowFilter } from '../../../hooks/use-aggrid-row-filter';
import { GridReadyEvent } from 'ag-grid-community';
-import { setShortcircuitAnalysisResultFilter } from 'redux/actions';
+import { setShortcircuitAnalysisResultFilter } from 'appRedux/actions';
import { mapFieldsToColumnsFilter } from 'components/custom-aggrid/custom-aggrid-header-utils';
import {
SHORTCIRCUIT_ANALYSIS_RESULT_SORT_STORE,
diff --git a/src/components/results/use-results-tab.ts b/src/components/results/use-results-tab.ts
index 1aa476d587..b5cd1524ad 100644
--- a/src/components/results/use-results-tab.ts
+++ b/src/components/results/use-results-tab.ts
@@ -10,7 +10,7 @@ import { IService } from 'components/result-view-tab';
import { StudyView } from 'components/study-pane';
import { Dispatch, SetStateAction, useEffect, useState } from 'react';
import { useSelector } from 'react-redux';
-import { AppState } from 'redux/reducer';
+import { AppState } from 'appRedux/reducer';
import { ShortCircuitAnalysisResultTabs } from './shortcircuit/shortcircuit-analysis-result.type';
export enum ResultsTabsRootLevel {
diff --git a/src/components/run-button-container.jsx b/src/components/run-button-container.jsx
index 911daa4112..d1730bcb53 100644
--- a/src/components/run-button-container.jsx
+++ b/src/components/run-button-container.jsx
@@ -8,7 +8,7 @@
import React, { useCallback, useMemo, useState } from 'react';
import PropTypes from 'prop-types';
-import { setComputingStatus, setComputationStarting } from '../redux/actions';
+import { setComputingStatus, setComputationStarting } from '../appRedux/actions';
import { useDispatch, useSelector } from 'react-redux';
import RunningStatus from './utils/running-status';
diff --git a/src/components/spreadsheet/columns-config.tsx b/src/components/spreadsheet/columns-config.tsx
index f548bfd2e9..d4b9f1fedf 100644
--- a/src/components/spreadsheet/columns-config.tsx
+++ b/src/components/spreadsheet/columns-config.tsx
@@ -25,8 +25,8 @@ import ViewColumnIcon from '@mui/icons-material/ViewColumn';
import { DragDropContext, Draggable, Droppable, DropResult } from 'react-beautiful-dnd';
import DragIndicatorIcon from '@mui/icons-material/DragIndicator';
import { updateConfigParameter } from '../../services/config';
-import { AppState } from '../../redux/reducer';
-import { changeDisplayedColumns, changeLockedColumns, changeReorderedColumns } from 'redux/actions';
+import { AppState } from '../../appRedux/reducer';
+import { changeDisplayedColumns, changeLockedColumns, changeReorderedColumns } from 'appRedux/actions';
const styles = {
checkboxSelectAll: (theme: Theme) => ({
diff --git a/src/components/spreadsheet/custom-columns/custom-columns-config.tsx b/src/components/spreadsheet/custom-columns/custom-columns-config.tsx
index d4f8e4af29..810f864cff 100644
--- a/src/components/spreadsheet/custom-columns/custom-columns-config.tsx
+++ b/src/components/spreadsheet/custom-columns/custom-columns-config.tsx
@@ -9,7 +9,7 @@ import { FormattedMessage } from 'react-intl';
import { Badge, IconButton } from '@mui/material';
import { Calculate as CalculateIcon } from '@mui/icons-material';
import { useSelector } from 'react-redux';
-import { AppState } from '../../../redux/reducer';
+import { AppState } from '../../../appRedux/reducer';
import { useStateBoolean } from '@gridsuite/commons-ui';
import CustomColumnDialog from './custom-columns-dialog';
diff --git a/src/components/spreadsheet/custom-columns/custom-columns-dialog.tsx b/src/components/spreadsheet/custom-columns/custom-columns-dialog.tsx
index d09cd24c5a..7770c03b77 100644
--- a/src/components/spreadsheet/custom-columns/custom-columns-dialog.tsx
+++ b/src/components/spreadsheet/custom-columns/custom-columns-dialog.tsx
@@ -19,11 +19,11 @@ import {
import { yupResolver } from '@hookform/resolvers/yup';
import CustomColumnTable from './custom-columns-table';
-import { setCustomColumDefinitions } from 'redux/actions';
+import { setCustomColumDefinitions } from 'appRedux/actions';
import { useDispatch, useSelector } from 'react-redux';
-import { AppDispatch } from 'redux/store';
+import { AppDispatch } from 'appRedux/store';
import { ColumnWithFormula } from 'types/custom-columns.types';
-import { AppState } from 'redux/reducer';
+import { AppState } from 'appRedux/reducer';
export type CustomColumnDialogProps = {
open: UseStateBooleanReturn;
diff --git a/src/components/spreadsheet/custom-columns/custom-columns-save.tsx b/src/components/spreadsheet/custom-columns/custom-columns-save.tsx
index ee3283060b..8e3b059297 100644
--- a/src/components/spreadsheet/custom-columns/custom-columns-save.tsx
+++ b/src/components/spreadsheet/custom-columns/custom-columns-save.tsx
@@ -13,7 +13,7 @@ import ElementCreationDialog, { IElementCreationDialog } from '../../dialogs/ele
import { useMemo } from 'react';
import { createSpreadsheetModel } from '../../../services/explore';
import { useSelector } from 'react-redux';
-import { AppState } from '../../../redux/reducer';
+import { AppState } from '../../../appRedux/reducer';
import { EQUIPMENT_TYPES } from '../../utils/equipment-types';
import { SpreadsheetConfig } from '../../../types/custom-columns.types';
diff --git a/src/components/spreadsheet/custom-columns/use-custom-column.ts b/src/components/spreadsheet/custom-columns/use-custom-column.ts
index 3ca3bd20d7..74eac5ebf7 100644
--- a/src/components/spreadsheet/custom-columns/use-custom-column.ts
+++ b/src/components/spreadsheet/custom-columns/use-custom-column.ts
@@ -5,7 +5,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
import { useMemo, useCallback } from 'react';
-import { AppState } from 'redux/reducer';
+import { AppState } from 'appRedux/reducer';
import { create, all, bignumber } from 'mathjs';
import { useSelector } from 'react-redux';
import { makeAgGridCustomHeaderColumn } from 'components/custom-aggrid/custom-aggrid-header-utils';
diff --git a/src/components/spreadsheet/custom-spreadsheet/custom-spreadsheet-dialog.tsx b/src/components/spreadsheet/custom-spreadsheet/custom-spreadsheet-dialog.tsx
index c1d03f398c..65a0329ca8 100644
--- a/src/components/spreadsheet/custom-spreadsheet/custom-spreadsheet-dialog.tsx
+++ b/src/components/spreadsheet/custom-spreadsheet/custom-spreadsheet-dialog.tsx
@@ -33,9 +33,9 @@ import { EQUIPMENT_TYPE_FIELD } from 'components/utils/field-constants';
import { EQUIPMENT_TYPES } from 'components/utils/equipment-types';
import { NEW_SPREADSHEET_CREATION_OPTIONS } from './constants';
import { useDispatch, useSelector } from 'react-redux';
-import { addFilterForNewSpreadsheet, addSortForNewSpreadsheet, updateTableDefinition } from 'redux/actions';
+import { addFilterForNewSpreadsheet, addSortForNewSpreadsheet, updateTableDefinition } from 'appRedux/actions';
import { TABLES_DEFINITIONS } from '../utils/config-tables';
-import { AppState } from 'redux/reducer';
+import { AppState } from 'appRedux/reducer';
import { FormattedMessage } from 'react-intl';
import yup from 'components/utils/yup-config';
import { ColumnWithFormula } from 'types/custom-columns.types';
diff --git a/src/components/spreadsheet/equipment-table.tsx b/src/components/spreadsheet/equipment-table.tsx
index bbd66352c4..f5c06d0597 100644
--- a/src/components/spreadsheet/equipment-table.tsx
+++ b/src/components/spreadsheet/equipment-table.tsx
@@ -21,7 +21,7 @@ import {
RowStyle,
SuppressKeyboardEventParams,
} from 'ag-grid-community';
-import { CurrentTreeNode } from '../../redux/reducer';
+import { CurrentTreeNode } from '../../appRedux/reducer';
const PINNED_ROW_HEIGHT = 42;
const DEFAULT_ROW_HEIGHT = 28;
diff --git a/src/components/spreadsheet/equipment-tabs.tsx b/src/components/spreadsheet/equipment-tabs.tsx
index ec553d78f2..7beeb8f7a0 100644
--- a/src/components/spreadsheet/equipment-tabs.tsx
+++ b/src/components/spreadsheet/equipment-tabs.tsx
@@ -9,7 +9,7 @@ import { Grid, Tab, Tabs } from '@mui/material';
import { useIntl } from 'react-intl';
import { FunctionComponent } from 'react';
import { useSelector } from 'react-redux';
-import { AppState } from 'redux/reducer';
+import { AppState } from 'appRedux/reducer';
import CustomSpreadsheetConfig from './custom-spreadsheet/custom-spreadsheet-config';
import { PARAM_DEVELOPER_MODE } from 'utils/config-params';
diff --git a/src/components/spreadsheet/table-wrapper.tsx b/src/components/spreadsheet/table-wrapper.tsx
index 43c3eb21ec..14fd3d37f0 100644
--- a/src/components/spreadsheet/table-wrapper.tsx
+++ b/src/components/spreadsheet/table-wrapper.tsx
@@ -68,13 +68,13 @@ import ComputingType from 'components/computing-status/computing-type';
import { makeAgGridCustomHeaderColumn } from 'components/custom-aggrid/custom-aggrid-header-utils';
import { useAggridLocalRowFilter } from 'hooks/use-aggrid-local-row-filter';
import { useAgGridSort } from 'hooks/use-aggrid-sort';
-import { setSpreadsheetFilter } from 'redux/actions';
+import { setSpreadsheetFilter } from 'appRedux/actions';
import { useLocalizedCountries } from 'components/utils/localized-countries-hook';
import { SPREADSHEET_SORT_STORE, SPREADSHEET_STORE_FIELD } from 'utils/store-sort-filter-fields';
import { useCustomColumn } from './custom-columns/use-custom-column';
import CustomColumnsConfig from './custom-columns/custom-columns-config';
import CustomColumnsSave from './custom-columns/custom-columns-save';
-import { AppState, CurrentTreeNode } from '../../redux/reducer';
+import { AppState, CurrentTreeNode } from '../../appRedux/reducer';
import { AgGridReact } from 'ag-grid-react';
import {
CellEditingStartedEvent,
diff --git a/src/components/spreadsheet/utils/cell-renderers.tsx b/src/components/spreadsheet/utils/cell-renderers.tsx
index ba5ea86506..104706386f 100644
--- a/src/components/spreadsheet/utils/cell-renderers.tsx
+++ b/src/components/spreadsheet/utils/cell-renderers.tsx
@@ -18,7 +18,7 @@ import { isNodeReadOnly } from '../../graph/util/model-functions';
import { Box } from '@mui/system';
import { mergeSx } from '../../utils/functions';
import { isBlankOrEmpty } from 'components/utils/validation-functions';
-import { AppState } from '../../../redux/reducer';
+import { AppState } from '../../../appRedux/reducer';
import { IntlShape } from 'react-intl';
const styles = {
diff --git a/src/components/spreadsheet/utils/config-tables.ts b/src/components/spreadsheet/utils/config-tables.ts
index 074d2e163f..fc7a8198b0 100644
--- a/src/components/spreadsheet/utils/config-tables.ts
+++ b/src/components/spreadsheet/utils/config-tables.ts
@@ -41,7 +41,7 @@ import EnumCellRenderer from '../renderers/enum-cell-renderer';
import { BooleanFilterValue } from 'components/custom-aggrid/custom-aggrid-header-utils';
import { useSelector } from 'react-redux';
import { PARAM_FLUX_CONVENTION } from '../../../utils/config-params';
-import { AppState } from '../../../redux/reducer';
+import { AppState } from '../../../appRedux/reducer';
import { EnumOption } from '../../utils/utils-type';
import { CellClassParams, EditableCallbackParams, ValueGetterParams, ValueSetterParams } from 'ag-grid-community';
diff --git a/src/components/study-container.jsx b/src/components/study-container.jsx
index 11557bf24e..d1a97c07f2 100644
--- a/src/components/study-container.jsx
+++ b/src/components/study-container.jsx
@@ -21,7 +21,7 @@ import {
resetEquipmentsPostLoadflow,
setStudyIndexationStatus,
limitReductionModified,
-} from '../redux/actions';
+} from '../appRedux/actions';
import WaitingLoader from './utils/waiting-loader';
import { useIntlRef, useSnackMessage } from '@gridsuite/commons-ui';
import NetworkModificationTreeModel from './graph/network-modification-tree-model';
@@ -44,7 +44,7 @@ import { invalidateLoadFlowStatus } from 'services/study/loadflow';
import { HttpStatusCode } from 'utils/http-status-code';
import { usePrevious } from './utils/utils';
-import { StudyIndexationStatus } from 'redux/reducer';
+import { StudyIndexationStatus } from 'appRedux/reducer';
import { fetchDirectoryElementPath } from '@gridsuite/commons-ui';
import { NodeType } from './graph/tree-node.type';
diff --git a/src/components/top-bar-equipment-seach-dialog/custom-suffix-renderer.tsx b/src/components/top-bar-equipment-seach-dialog/custom-suffix-renderer.tsx
index baa82df72f..70b225d0c5 100644
--- a/src/components/top-bar-equipment-seach-dialog/custom-suffix-renderer.tsx
+++ b/src/components/top-bar-equipment-seach-dialog/custom-suffix-renderer.tsx
@@ -11,10 +11,10 @@ import { IconButton } from '@mui/material';
import { GpsFixed as GpsFixedIcon, Timeline as TimelineIcon } from '@mui/icons-material';
import { DiagramType, NETWORK_AREA_DIAGRAM_NB_MAX_VOLTAGE_LEVELS } from '../diagrams/diagram-common';
import { EQUIPMENT_INFOS_TYPES, EQUIPMENT_TYPES } from '../utils/equipment-types';
-import { centerOnSubstation, openDiagram } from '../../redux/actions';
+import { centerOnSubstation, openDiagram } from '../../appRedux/actions';
import { fetchNetworkElementInfos } from '../../services/study/network';
-import { AppState } from '../../redux/reducer';
-import { AppDispatch } from '../../redux/store';
+import { AppState } from '../../appRedux/reducer';
+import { AppDispatch } from '../../appRedux/store';
interface CustomSuffixRendererProps extends TagRendererProps {
onClose?: () => void;
diff --git a/src/components/top-bar-equipment-seach-dialog/top-bar-equipment-search-dialog.tsx b/src/components/top-bar-equipment-seach-dialog/top-bar-equipment-search-dialog.tsx
index 77b163c459..acbdbfd0f5 100644
--- a/src/components/top-bar-equipment-seach-dialog/top-bar-equipment-search-dialog.tsx
+++ b/src/components/top-bar-equipment-seach-dialog/top-bar-equipment-search-dialog.tsx
@@ -5,7 +5,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
import { useSelector } from 'react-redux';
-import { AppState } from 'redux/reducer';
+import { AppState } from 'appRedux/reducer';
import {
ElementSearchDialog,
Equipment,
@@ -25,7 +25,7 @@ import { useTopBarSearchMatchingEquipment } from './use-top-bar-search-matching-
import {
addToLocalStorageSearchEquipmentHistory,
excludeElementFromCurrentSearchHistory,
-} from 'redux/session-storage/search-equipment-history';
+} from 'appRedux/session-storage/search-equipment-history';
import { fetchNetworkElementInfos } from 'services/study/network';
import { EQUIPMENT_INFOS_TYPES } from 'components/utils/equipment-types';
import { TopBarEquipmentSearchInput } from './top-bar-equipment-search-input';
diff --git a/src/components/top-bar-equipment-seach-dialog/use-disabled-search-reason.test.tsx b/src/components/top-bar-equipment-seach-dialog/use-disabled-search-reason.test.tsx
new file mode 100644
index 0000000000..371bbaead0
--- /dev/null
+++ b/src/components/top-bar-equipment-seach-dialog/use-disabled-search-reason.test.tsx
@@ -0,0 +1,75 @@
+import { renderHook, waitFor } from '@testing-library/react';
+import { useDisabledSearchReason } from './use-disabled-search-reason';
+import { StudyIndexationStatus } from 'appRedux/reducer';
+import configureMockStore from 'redux-mock-store';
+import { Provider } from 'react-redux';
+import { Store } from 'redux';
+import { StudyDisplayMode } from 'components/network-modification.type';
+import { NodeType } from 'components/graph/tree-node.type';
+
+jest.mock('react-intl', () => ({
+ useIntl: () => ({
+ formatMessage: jest.fn().mockImplementation((message) => message),
+ }),
+}));
+
+const getWrapper =
+ (store: Store) =>
+ ({ children }: { children?: React.ReactNode }) =>
+ {children};
+
+const AllowedReturn = {
+ view: { id: 'UnsupportedView' },
+ node: { id: 'InvalidNode' },
+ index: { id: 'waitingStudyIndexation' },
+ default: '',
+};
+
+describe('useDisabledSearchReason', () => {
+ test('initialState should return InvalidNode"', async () => {
+ // creates mock store
+ const store = configureMockStore()({
+ studyDisplayMode: StudyDisplayMode.HYBRID,
+ studyIndexationStatus: StudyIndexationStatus.NOT_INDEXED,
+ currentTreeNode: null,
+ });
+ // render the hook with the custom wrapper
+ const { result } = renderHook(() => useDisabledSearchReason(), {
+ wrapper: getWrapper(store),
+ });
+ expect(result.current).toStrictEqual(AllowedReturn.node);
+ });
+ test('Tree view is not Implemented yet should return unsupportedView"', () => {
+ // creates mock store
+ const store = configureMockStore()({
+ studyDisplayMode: StudyDisplayMode.TREE,
+ studyIndexationStatus: StudyIndexationStatus.NOT_INDEXED,
+ currentTreeNode: null,
+ });
+ // render the hook with the custom wrapper
+ const { result } = renderHook(() => useDisabledSearchReason(), { wrapper: getWrapper(store) });
+ expect(result.current).toStrictEqual(AllowedReturn.view);
+ });
+ test('Tree view is not Implemented yet should return unsupportedView"', () => {
+ // creates mock store
+ const store = configureMockStore()({
+ studyDisplayMode: StudyDisplayMode.HYBRID,
+ studyIndexationStatus: StudyIndexationStatus.NOT_INDEXED,
+ currentTreeNode: { type: NodeType.ROOT },
+ });
+ // render the hook with the custom wrapper
+ const { result } = renderHook(() => useDisabledSearchReason(), { wrapper: getWrapper(store) });
+ expect(result.current).toStrictEqual(AllowedReturn.index);
+ });
+ test('Tree view is not Implemented yet should return unsupportedView"', () => {
+ // creates mock store
+ const store = configureMockStore()({
+ studyDisplayMode: StudyDisplayMode.DRAW,
+ studyIndexationStatus: StudyIndexationStatus.INDEXED,
+ currentTreeNode: { type: NodeType.ROOT },
+ });
+ // render the hook with the custom wrapper
+ const { result } = renderHook(() => useDisabledSearchReason(), { wrapper: getWrapper(store) });
+ expect(result.current).toStrictEqual(AllowedReturn.default);
+ });
+});
diff --git a/src/components/top-bar-equipment-seach-dialog/use-disabled-search-reason.tsx b/src/components/top-bar-equipment-seach-dialog/use-disabled-search-reason.tsx
index 3830493d47..cf444a8eb9 100644
--- a/src/components/top-bar-equipment-seach-dialog/use-disabled-search-reason.tsx
+++ b/src/components/top-bar-equipment-seach-dialog/use-disabled-search-reason.tsx
@@ -7,8 +7,8 @@
import { isNodeBuilt } from 'components/graph/util/model-functions';
import { useIntl } from 'react-intl';
import { useSelector } from 'react-redux';
-import { AppState, StudyIndexationStatus } from 'redux/reducer';
import { StudyDisplayMode } from '../network-modification.type';
+import { AppState, StudyIndexationStatus } from 'appRedux/reducer';
export const useDisabledSearchReason = () => {
const intl = useIntl();
diff --git a/src/components/top-bar-equipment-seach-dialog/use-search-event.tsx b/src/components/top-bar-equipment-seach-dialog/use-search-event.tsx
index 93855cd0ef..328a27e1b5 100644
--- a/src/components/top-bar-equipment-seach-dialog/use-search-event.tsx
+++ b/src/components/top-bar-equipment-seach-dialog/use-search-event.tsx
@@ -6,7 +6,7 @@
*/
import { useEffect } from 'react';
import { useSelector } from 'react-redux';
-import { AppState } from 'redux/reducer';
+import { AppState } from 'appRedux/reducer';
export const useSearchEvent = (enableSearchCallback: () => void) => {
const user = useSelector((state: AppState) => state.user);
diff --git a/src/components/top-bar-equipment-seach-dialog/use-top-bar-search-matching-equipments.tsx b/src/components/top-bar-equipment-seach-dialog/use-top-bar-search-matching-equipments.tsx
index 3475adf117..75da975822 100644
--- a/src/components/top-bar-equipment-seach-dialog/use-top-bar-search-matching-equipments.tsx
+++ b/src/components/top-bar-equipment-seach-dialog/use-top-bar-search-matching-equipments.tsx
@@ -7,7 +7,7 @@
import { UUID } from 'crypto';
import { useSearchMatchingEquipments } from './use-search-matching-equipments';
import { useMemo } from 'react';
-import { getLocalStorageSearchEquipmentHistory } from 'redux/session-storage/search-equipment-history';
+import { getLocalStorageSearchEquipmentHistory } from 'appRedux/session-storage/search-equipment-history';
import { EquipmentType } from '@gridsuite/commons-ui';
interface UseTopBarSearchMatchingEquipmentProps {
diff --git a/src/components/utils/ask-text-dialog.tsx b/src/components/utils/ask-text-dialog.tsx
index ff6b7ad0f5..79631c1b97 100644
--- a/src/components/utils/ask-text-dialog.tsx
+++ b/src/components/utils/ask-text-dialog.tsx
@@ -13,7 +13,7 @@ import { useValidNodeName } from './inputs/input-hooks';
import { useSelector } from 'react-redux';
import Alert from '@mui/material/Alert';
import { CancelButton } from '@gridsuite/commons-ui';
-import { AppState } from '../../redux/reducer';
+import { AppState } from '../../appRedux/reducer';
interface AskTextDialogProps {
title: string;
diff --git a/src/hooks/use-aggrid-row-filter.ts b/src/hooks/use-aggrid-row-filter.ts
index 20d4084067..3406cbee28 100644
--- a/src/hooks/use-aggrid-row-filter.ts
+++ b/src/hooks/use-aggrid-row-filter.ts
@@ -12,8 +12,8 @@ import {
} from 'components/custom-aggrid/custom-aggrid-header.type';
import { useCallback } from 'react';
import { useDispatch, useSelector } from 'react-redux';
-import { AppDispatch } from '../redux/store';
-import { AppState } from '../redux/reducer';
+import { AppDispatch } from '../appRedux/store';
+import { AppState } from '../appRedux/reducer';
export type FilterEnumsType = Record;
diff --git a/src/hooks/use-aggrid-sort.ts b/src/hooks/use-aggrid-sort.ts
index 275a8d396c..432cb5f9c7 100644
--- a/src/hooks/use-aggrid-sort.ts
+++ b/src/hooks/use-aggrid-sort.ts
@@ -7,8 +7,8 @@
import { useCallback } from 'react';
import { useDispatch, useSelector } from 'react-redux';
-import { setTableSort } from '../redux/actions';
-import { AppState, TableSortKeysType } from '../redux/reducer';
+import { setTableSort } from '../appRedux/actions';
+import { AppState, TableSortKeysType } from '../appRedux/reducer';
export type SortConfigType = {
colId: string;
diff --git a/src/hooks/use-computation-results-count.ts b/src/hooks/use-computation-results-count.ts
index 6454e73a26..758ba52b55 100644
--- a/src/hooks/use-computation-results-count.ts
+++ b/src/hooks/use-computation-results-count.ts
@@ -5,7 +5,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
import { useSelector } from 'react-redux';
-import { AppState } from '../redux/reducer';
+import { AppState } from '../appRedux/reducer';
import ComputingType from 'components/computing-status/computing-type';
import RunningStatus from 'components/utils/running-status';
diff --git a/src/hooks/use-get-study-impacts.ts b/src/hooks/use-get-study-impacts.ts
index 61b2fc36c1..4f1c700bef 100644
--- a/src/hooks/use-get-study-impacts.ts
+++ b/src/hooks/use-get-study-impacts.ts
@@ -6,7 +6,7 @@
*/
import { useCallback, useEffect, useState } from 'react';
import { useSelector } from 'react-redux';
-import { DeletedEquipment, NetworkImpactsInfos, AppState, NotificationType } from '../redux/reducer';
+import { DeletedEquipment, NetworkImpactsInfos, AppState, NotificationType } from '../appRedux/reducer';
import { UUID } from 'crypto';
interface StudyImpactsWithReset extends NetworkImpactsInfos {
diff --git a/src/hooks/use-optional-service-status.ts b/src/hooks/use-optional-service-status.ts
index aa45f63b7f..e4817e68ec 100644
--- a/src/hooks/use-optional-service-status.ts
+++ b/src/hooks/use-optional-service-status.ts
@@ -6,7 +6,7 @@
*/
import { useSelector } from 'react-redux';
-import { AppState } from '../redux/reducer';
+import { AppState } from '../appRedux/reducer';
import { OptionalServicesNames, OptionalServicesStatus } from '../components/utils/optional-services';
export const useOptionalServiceStatus = (serviceName: OptionalServicesNames): OptionalServicesStatus | undefined => {
diff --git a/src/hooks/use-report-fetcher.tsx b/src/hooks/use-report-fetcher.tsx
index 148ac4be50..cb15539112 100644
--- a/src/hooks/use-report-fetcher.tsx
+++ b/src/hooks/use-report-fetcher.tsx
@@ -6,7 +6,7 @@
*/
import { useSelector } from 'react-redux';
-import { AppState } from '../redux/reducer';
+import { AppState } from '../appRedux/reducer';
import { useCallback, useMemo, useState } from 'react';
import { fetchNodeReportLogs, fetchParentNodesReport } from '../services/study';
import { useSnackMessage } from '@gridsuite/commons-ui';
diff --git a/src/services/directory-notification.js b/src/services/directory-notification.js
index 098b7b7733..4a6a09aef1 100644
--- a/src/services/directory-notification.js
+++ b/src/services/directory-notification.js
@@ -7,7 +7,7 @@
import ReconnectingWebSocket from 'reconnecting-websocket';
import { getUrlWithToken, getWsBase } from './utils';
-import { getUserToken } from '../redux/user-store';
+import { getUserToken } from '../appRedux/user-store';
const PREFIX_DIRECTORY_NOTIFICATION_WS = import.meta.env.VITE_WS_GATEWAY + '/directory-notification';
diff --git a/src/services/utils.js b/src/services/utils.js
index fc521e9649..15fbe23f73 100644
--- a/src/services/utils.js
+++ b/src/services/utils.js
@@ -5,7 +5,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
import { fetchAppsMetadata } from '@gridsuite/commons-ui';
-import { getUserToken } from '../redux/user-store';
+import { getUserToken } from '../appRedux/user-store';
export const FetchStatus = {
SUCCEED: 'SUCCEED',
diff --git a/tsconfig.json b/tsconfig.json
index 9ddf4e294e..3e344d3317 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -17,5 +17,6 @@
"noEmit": true,
"jsx": "react-jsx"
},
- "include": ["src"]
+ "types":["node","jest", "@testing-library/jest-dom"],
+ "include": ["src","jest.setup.ts"]
}