6 changed files with 208 additions and 279 deletions
@ -1,6 +1,7 @@ |
|||
lockfileVersion: 5.4 |
|||
|
|||
specifiers: |
|||
'@arcgis/core': ^4.23.7 |
|||
'@emeraldpay/hashicon-react': ^0.5.2 |
|||
'@meshtastic/eslint-config': ^1.0.8 |
|||
'@meshtastic/meshtasticjs': ^0.6.63 |
|||
@ -24,7 +25,6 @@ specifiers: |
|||
react: ^18.1.0 |
|||
react-dom: ^18.1.0 |
|||
react-error-boundary: ^3.1.4 |
|||
react-flow-renderer: ^10.2.1 |
|||
react-hook-form: ^7.30.0 |
|||
react-icons: ^4.3.1 |
|||
react-json-pretty: ^2.2.0 |
|||
@ -48,9 +48,10 @@ specifiers: |
|||
workbox-window: ^6.5.3 |
|||
|
|||
dependencies: |
|||
'@arcgis/core': 4.23.7 |
|||
'@emeraldpay/hashicon-react': 0.5.2 |
|||
'@meshtastic/eslint-config': 1.0.8 |
|||
'@meshtastic/meshtasticjs': link:../meshtastic.js |
|||
'@meshtastic/meshtasticjs': 0.6.63 |
|||
'@reduxjs/toolkit': 1.8.1_j24pcqpkbsj43woxscsovlj4au |
|||
'@tippyjs/react': 4.2.6_ef5jwxihqo6n7gxfmzogljlgcm |
|||
base64-js: 1.5.1 |
|||
@ -60,7 +61,6 @@ dependencies: |
|||
react: 18.1.0 |
|||
react-dom: 18.1[email protected] |
|||
react-error-boundary: 3.1[email protected] |
|||
react-flow-renderer: 10.2.1_ef5jwxihqo6n7gxfmzogljlgcm |
|||
react-hook-form: 7.30[email protected] |
|||
react-icons: 4.3[email protected] |
|||
react-json-pretty: 2.2.0_ef5jwxihqo6n7gxfmzogljlgcm |
|||
@ -98,6 +98,10 @@ devDependencies: |
|||
|
|||
packages: |
|||
|
|||
/@a11y/focus-trap/1.0.5: |
|||
resolution: {integrity: sha512-3JOd6g+BALysWS8LNf0qdB8ltR651H/RCLAvUmfS0LIHwHO579XfjZUIZbURYiAZrcbp1CBAq4QZ2YwKNQZ1hw==} |
|||
dev: false |
|||
|
|||
/@ampproject/remapping/2.2.0: |
|||
resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} |
|||
engines: {node: '>=6.0.0'} |
|||
@ -118,6 +122,18 @@ packages: |
|||
leven: 3.1.0 |
|||
dev: true |
|||
|
|||
/@arcgis/core/4.23.7: |
|||
resolution: {integrity: sha512-xi3eBV513CmoHQ6F1OurEt71aBt4FzDOaOrPKzsFVJnq0LeDPKUHfsBs4E8BoGLSk5df+gDCZG+WHTmzxu8c0w==} |
|||
dependencies: |
|||
'@esri/arcgis-html-sanitizer': 2.9.0 |
|||
'@esri/calcite-colors': 6.0.1 |
|||
'@esri/calcite-components': 1.0.0-beta.77 |
|||
'@popperjs/core': 2.11.5 |
|||
focus-trap: 6.7.3 |
|||
luxon: 2.3.2 |
|||
sortablejs: 1.14.0 |
|||
dev: false |
|||
|
|||
/@babel/code-frame/7.12.11: |
|||
resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} |
|||
dependencies: |
|||
@ -405,6 +421,8 @@ packages: |
|||
resolution: {integrity: sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==} |
|||
engines: {node: '>=6.0.0'} |
|||
hasBin: true |
|||
dependencies: |
|||
'@babel/types': 7.17.10 |
|||
dev: true |
|||
|
|||
/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.16.7_@[email protected]: |
|||
@ -1357,6 +1375,30 @@ packages: |
|||
- supports-color |
|||
dev: false |
|||
|
|||
/@esri/arcgis-html-sanitizer/2.9.0: |
|||
resolution: {integrity: sha512-kF5gfE2W16Nu/p4P69bsGmo7CKzKiTHlK3oWOqrDy/ptaMxEDCorHLm9UKULCA478xlOQM6lSnq4o3HYgST5Lw==} |
|||
dependencies: |
|||
lodash.isplainobject: 4.0.6 |
|||
xss: 1.0.11 |
|||
dev: false |
|||
|
|||
/@esri/calcite-colors/6.0.1: |
|||
resolution: {integrity: sha512-iGUIIpeMCJSTDGw4ZsxLwwxkml0QzOUJTtysjRryGbhSt183NEtwWKS+yQO19utXQz5LbQWjoav6x6CsawElkw==} |
|||
dev: false |
|||
|
|||
/@esri/calcite-components/1.0.0-beta.77: |
|||
resolution: {integrity: sha512-fCE9ikXHzUQTHJSMXNYB1/WrPpKtQMUBbaypbbwwxM8y3ifavN0a5ns7NAC+W7uQJA+29fGpAlIMjXr/483eXw==} |
|||
dependencies: |
|||
'@a11y/focus-trap': 1.0.5 |
|||
'@popperjs/core': 2.11.2 |
|||
'@stencil/core': 2.13.0 |
|||
'@types/color': 3.0.3 |
|||
color: 4.2.0 |
|||
form-request-submit-polyfill: 2.0.0 |
|||
lodash-es: 4.17.21 |
|||
sortablejs: 1.14.0 |
|||
dev: false |
|||
|
|||
/@gfx/zopfli/1.0.15: |
|||
resolution: {integrity: sha512-7mBgpi7UD82fsff5ThQKet0uBTl4BYerQuc+/qA1ELTwWEiIedRTcD3JgiUu9wwZ2kytW8JOb165rSdAt8PfcQ==} |
|||
engines: {node: '>= 8'} |
|||
@ -1483,13 +1525,26 @@ packages: |
|||
eslint-config-prettier: 8.5[email protected] |
|||
eslint-import-resolver-typescript: 2.7.1_gwd37gqv3vjv3xlpl7ju3ag2qu |
|||
eslint-plugin-eslint-comments: 3.2[email protected] |
|||
eslint-plugin-import: 2.26.0_[email protected] |
|||
eslint-plugin-import: 2.26.0_5v5qjrtguv7otneb3mumlvzpgm |
|||
eslint-plugin-react: 7.29[email protected] |
|||
eslint-plugin-react-hooks: 4.5[email protected] |
|||
prettier: 2.6.2 |
|||
prettier-plugin-tailwindcss: 0.1[email protected] |
|||
typescript: 4.6.4 |
|||
transitivePeerDependencies: |
|||
- eslint-import-resolver-webpack |
|||
- supports-color |
|||
dev: false |
|||
|
|||
/@meshtastic/meshtasticjs/0.6.63: |
|||
resolution: {integrity: sha512-0OaiapSBrciOAR75pimxPzqH6K/HM7TBudL+YIvOq0EHYd1fmeIqQD99wSCITv+i/r/DUNs6hAh2N+lkOPKHNw==} |
|||
dependencies: |
|||
'@meshtastic/eslint-config': 1.0.8 |
|||
'@protobuf-ts/runtime': 2.5.0 |
|||
prettier: 2.6.2 |
|||
sub-events: 1.8.9 |
|||
transitivePeerDependencies: |
|||
- eslint-import-resolver-webpack |
|||
- supports-color |
|||
dev: false |
|||
|
|||
@ -1511,10 +1566,18 @@ packages: |
|||
'@nodelib/fs.scandir': 2.1.5 |
|||
fastq: 1.13.0 |
|||
|
|||
/@popperjs/core/2.11.2: |
|||
resolution: {integrity: sha512-92FRmppjjqz29VMJ2dn+xdyXZBrMlE42AV6Kq6BwjWV7CNUW1hs2FtxSNLQE+gJhaZ6AAmYuO9y8dshhcBl7vA==} |
|||
dev: false |
|||
|
|||
/@popperjs/core/2.11.5: |
|||
resolution: {integrity: sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==} |
|||
dev: false |
|||
|
|||
/@protobuf-ts/runtime/2.5.0: |
|||
resolution: {integrity: sha512-ClfuZQ3iPVABJ0CXLGI044eox1PtmrIbbXZaHYczdFJjaxxn8U7vnwb1dPBM9JZ2I6H1VLZu8A9Z5nRv7zydsg==} |
|||
dev: false |
|||
|
|||
/@reduxjs/toolkit/1.8.1_j24pcqpkbsj43woxscsovlj4au: |
|||
resolution: {integrity: sha512-Q6mzbTpO9nOYRnkwpDlFOAbQnd3g7zj7CtHAZWz5SzE5lcV97Tf8f3SzOO8BoPOMYBFgfZaqTUZqgGu+a0+Fng==} |
|||
peerDependencies: |
|||
@ -1622,6 +1685,12 @@ packages: |
|||
resolution: {integrity: sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==} |
|||
dev: false |
|||
|
|||
/@stencil/core/2.13.0: |
|||
resolution: {integrity: sha512-EEKHOHgYpg3/iFUKMXTZJjUayRul7sXDwNw0OGgkEOe4t7JWiibDkzUHuruvpbqEydX+z1+ez5K2bMMY76c2wA==} |
|||
engines: {node: '>=12.10.0', npm: '>=6.0.0'} |
|||
hasBin: true |
|||
dev: false |
|||
|
|||
/@surma/rollup-plugin-off-main-thread/2.2.3: |
|||
resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} |
|||
dependencies: |
|||
@ -1649,6 +1718,22 @@ packages: |
|||
'@types/har-format': 1.2.8 |
|||
dev: true |
|||
|
|||
/@types/color-convert/2.0.0: |
|||
resolution: {integrity: sha512-m7GG7IKKGuJUXvkZ1qqG3ChccdIM/qBBo913z+Xft0nKCX4hAU/IxKwZBU4cpRZ7GS5kV4vOblUkILtSShCPXQ==} |
|||
dependencies: |
|||
'@types/color-name': 1.1.1 |
|||
dev: false |
|||
|
|||
/@types/color-name/1.1.1: |
|||
resolution: {integrity: sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==} |
|||
dev: false |
|||
|
|||
/@types/color/3.0.3: |
|||
resolution: {integrity: sha512-X//qzJ3d3Zj82J9sC/C18ZY5f43utPbAJ6PhYt/M7uG6etcF6MRpKdN880KBy43B0BMzSfeT96MzrsNjFI3GbA==} |
|||
dependencies: |
|||
'@types/color-convert': 2.0.0 |
|||
dev: false |
|||
|
|||
/@types/estree/0.0.39: |
|||
resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} |
|||
dev: true |
|||
@ -2282,10 +2367,6 @@ packages: |
|||
engines: {node: '>=10'} |
|||
dev: true |
|||
|
|||
/classcat/5.0.3: |
|||
resolution: {integrity: sha512-6dK2ke4VEJZOFx2ZfdDAl5OhEL8lvkl6EHF92IfRePfHxQTqir5NlcNVUv+2idjDqCX2NDc8m8YSAI5NI975ZQ==} |
|||
dev: false |
|||
|
|||
/cli-cursor/3.1.0: |
|||
resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} |
|||
engines: {node: '>=8'} |
|||
@ -2311,11 +2392,6 @@ packages: |
|||
engines: {node: '>=0.8'} |
|||
dev: true |
|||
|
|||
/clsx/1.1.1: |
|||
resolution: {integrity: sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==} |
|||
engines: {node: '>=6'} |
|||
dev: false |
|||
|
|||
/color-convert/1.9.3: |
|||
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} |
|||
dependencies: |
|||
@ -2335,9 +2411,22 @@ packages: |
|||
/color-name/1.1.4: |
|||
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} |
|||
|
|||
/color-string/1.9.1: |
|||
resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} |
|||
dependencies: |
|||
color-name: 1.1.4 |
|||
simple-swizzle: 0.2.2 |
|||
dev: false |
|||
|
|||
/color/4.2.0: |
|||
resolution: {integrity: sha512-hHTcrbvEnGjC7WBMk6ibQWFVDgEFTVmjrz2Q5HlU6ltwxv0JJN2Z8I7uRbWeQLF04dikxs8zgyZkazRJvSMtyQ==} |
|||
dependencies: |
|||
color-convert: 2.0.1 |
|||
color-string: 1.9.1 |
|||
dev: false |
|||
|
|||
/commander/2.20.3: |
|||
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} |
|||
dev: true |
|||
|
|||
/commander/7.2.0: |
|||
resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} |
|||
@ -2398,82 +2487,31 @@ packages: |
|||
hasBin: true |
|||
dev: true |
|||
|
|||
/csstype/3.0.11: |
|||
resolution: {integrity: sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==} |
|||
|
|||
/d3-color/3.1.0: |
|||
resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} |
|||
engines: {node: '>=12'} |
|||
dev: false |
|||
|
|||
/d3-dispatch/3.0.1: |
|||
resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} |
|||
engines: {node: '>=12'} |
|||
/cssfilter/0.0.10: |
|||
resolution: {integrity: sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4=} |
|||
dev: false |
|||
|
|||
/d3-drag/3.0.0: |
|||
resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} |
|||
engines: {node: '>=12'} |
|||
dependencies: |
|||
d3-dispatch: 3.0.1 |
|||
d3-selection: 3.0.0 |
|||
dev: false |
|||
|
|||
/d3-ease/3.0.1: |
|||
resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} |
|||
engines: {node: '>=12'} |
|||
dev: false |
|||
|
|||
/d3-interpolate/3.0.1: |
|||
resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} |
|||
engines: {node: '>=12'} |
|||
dependencies: |
|||
d3-color: 3.1.0 |
|||
dev: false |
|||
|
|||
/d3-selection/3.0.0: |
|||
resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} |
|||
engines: {node: '>=12'} |
|||
dev: false |
|||
|
|||
/d3-timer/3.0.1: |
|||
resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} |
|||
engines: {node: '>=12'} |
|||
dev: false |
|||
|
|||
/d3-transition/[email protected]: |
|||
resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} |
|||
engines: {node: '>=12'} |
|||
peerDependencies: |
|||
d3-selection: 2 - 3 |
|||
dependencies: |
|||
d3-color: 3.1.0 |
|||
d3-dispatch: 3.0.1 |
|||
d3-ease: 3.0.1 |
|||
d3-interpolate: 3.0.1 |
|||
d3-selection: 3.0.0 |
|||
d3-timer: 3.0.1 |
|||
dev: false |
|||
|
|||
/d3-zoom/3.0.0: |
|||
resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} |
|||
engines: {node: '>=12'} |
|||
dependencies: |
|||
d3-dispatch: 3.0.1 |
|||
d3-drag: 3.0.0 |
|||
d3-interpolate: 3.0.1 |
|||
d3-selection: 3.0.0 |
|||
d3-transition: 3.0[email protected] |
|||
dev: false |
|||
/csstype/3.0.11: |
|||
resolution: {integrity: sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==} |
|||
|
|||
/debug/2.6.9: |
|||
resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} |
|||
peerDependencies: |
|||
supports-color: '*' |
|||
peerDependenciesMeta: |
|||
supports-color: |
|||
optional: true |
|||
dependencies: |
|||
ms: 2.0.0 |
|||
dev: false |
|||
|
|||
/debug/3.2.7: |
|||
resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} |
|||
peerDependencies: |
|||
supports-color: '*' |
|||
peerDependenciesMeta: |
|||
supports-color: |
|||
optional: true |
|||
dependencies: |
|||
ms: 2.1.3 |
|||
dev: false |
|||
@ -2918,6 +2956,8 @@ packages: |
|||
dependencies: |
|||
debug: 3.2.7 |
|||
resolve: 1.22.0 |
|||
transitivePeerDependencies: |
|||
- supports-color |
|||
dev: false |
|||
|
|||
/eslint-import-resolver-typescript/2.7.1_gwd37gqv3vjv3xlpl7ju3ag2qu: |
|||
@ -2929,7 +2969,7 @@ packages: |
|||
dependencies: |
|||
debug: 4.3.4 |
|||
eslint: 8.15.0 |
|||
eslint-plugin-import: 2.26.0_[email protected] |
|||
eslint-plugin-import: 2.26.0_5v5qjrtguv7otneb3mumlvzpgm |
|||
glob: 7.2.0 |
|||
is-glob: 4.0.3 |
|||
resolve: 1.22.0 |
|||
@ -2938,12 +2978,31 @@ packages: |
|||
- supports-color |
|||
dev: false |
|||
|
|||
/eslint-module-utils/2.7.3: |
|||
/eslint-module-utils/2.7.3_kvyt4kvbdmj4ueyk2ybejan4d4: |
|||
resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} |
|||
engines: {node: '>=4'} |
|||
peerDependencies: |
|||
'@typescript-eslint/parser': '*' |
|||
eslint-import-resolver-node: '*' |
|||
eslint-import-resolver-typescript: '*' |
|||
eslint-import-resolver-webpack: '*' |
|||
peerDependenciesMeta: |
|||
'@typescript-eslint/parser': |
|||
optional: true |
|||
eslint-import-resolver-node: |
|||
optional: true |
|||
eslint-import-resolver-typescript: |
|||
optional: true |
|||
eslint-import-resolver-webpack: |
|||
optional: true |
|||
dependencies: |
|||
'@typescript-eslint/parser': 5.22.0_hcfsmds2fshutdssjqluwm76uu |
|||
debug: 3.2.7 |
|||
eslint-import-resolver-node: 0.3.6 |
|||
eslint-import-resolver-typescript: 2.7.1_gwd37gqv3vjv3xlpl7ju3ag2qu |
|||
find-up: 2.1.0 |
|||
transitivePeerDependencies: |
|||
- supports-color |
|||
dev: false |
|||
|
|||
/eslint-plugin-eslint-comments/[email protected]: |
|||
@ -2957,19 +3016,24 @@ packages: |
|||
ignore: 5.2.0 |
|||
dev: false |
|||
|
|||
/eslint-plugin-import/2.26.0_[email protected]: |
|||
/eslint-plugin-import/2.26.0_5v5qjrtguv7otneb3mumlvzpgm: |
|||
resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} |
|||
engines: {node: '>=4'} |
|||
peerDependencies: |
|||
'@typescript-eslint/parser': '*' |
|||
eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 |
|||
peerDependenciesMeta: |
|||
'@typescript-eslint/parser': |
|||
optional: true |
|||
dependencies: |
|||
'@typescript-eslint/parser': 5.22.0_hcfsmds2fshutdssjqluwm76uu |
|||
array-includes: 3.1.5 |
|||
array.prototype.flat: 1.3.0 |
|||
debug: 2.6.9 |
|||
doctrine: 2.1.0 |
|||
eslint: 8.15.0 |
|||
eslint-import-resolver-node: 0.3.6 |
|||
eslint-module-utils: 2.7.3 |
|||
eslint-module-utils: 2.7.3_kvyt4kvbdmj4ueyk2ybejan4d4 |
|||
has: 1.0.3 |
|||
is-core-module: 2.9.0 |
|||
is-glob: 4.0.3 |
|||
@ -2977,6 +3041,10 @@ packages: |
|||
object.values: 1.1.5 |
|||
resolve: 1.22.0 |
|||
tsconfig-paths: 3.14.1 |
|||
transitivePeerDependencies: |
|||
- eslint-import-resolver-typescript |
|||
- eslint-import-resolver-webpack |
|||
- supports-color |
|||
dev: false |
|||
|
|||
/eslint-plugin-react-hooks/[email protected]: |
|||
@ -3288,10 +3356,20 @@ packages: |
|||
vlq: 0.2.3 |
|||
dev: true |
|||
|
|||
/focus-trap/6.7.3: |
|||
resolution: {integrity: sha512-8xCEKndV4KrseGhFKKKmczVA14yx1/hnmFICPOjcFjToxCJYj/NHH43tPc3YE/PLnLRNZoFug0EcWkGQde/miQ==} |
|||
dependencies: |
|||
tabbable: 5.3.2 |
|||
dev: false |
|||
|
|||
/foreach/2.0.5: |
|||
resolution: {integrity: sha1-C+4AUBiusmDQo6865ljdATbsG5k=} |
|||
dev: true |
|||
|
|||
/form-request-submit-polyfill/2.0.0: |
|||
resolution: {integrity: sha512-p0+M92y2gFnP0AuuL8VJ0GYVzAT0bYp3GsSkmPFhvUopdnfDLP/9xplQTBBc4w8qOjKRzdK7GaFcdL9IhlXdTQ==} |
|||
dev: false |
|||
|
|||
/fraction.js/4.2.0: |
|||
resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} |
|||
dev: true |
|||
@ -3583,6 +3661,10 @@ packages: |
|||
resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=} |
|||
dev: true |
|||
|
|||
/is-arrayish/0.3.2: |
|||
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} |
|||
dev: false |
|||
|
|||
/is-bigint/1.0.4: |
|||
resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} |
|||
dependencies: |
|||
@ -3913,10 +3995,18 @@ packages: |
|||
p-locate: 4.1.0 |
|||
dev: true |
|||
|
|||
/lodash-es/4.17.21: |
|||
resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} |
|||
dev: false |
|||
|
|||
/lodash.debounce/4.0.8: |
|||
resolution: {integrity: sha1-gteb/zCmfEAF/9XiUVMArZyk168=} |
|||
dev: true |
|||
|
|||
/lodash.isplainobject/4.0.6: |
|||
resolution: {integrity: sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=} |
|||
dev: false |
|||
|
|||
/lodash.merge/4.6.2: |
|||
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} |
|||
|
|||
@ -3953,6 +4043,11 @@ packages: |
|||
dependencies: |
|||
yallist: 4.0.0 |
|||
|
|||
/luxon/2.3.2: |
|||
resolution: {integrity: sha512-MlAQQVMFhGk4WUA6gpfsy0QycnKP0+NlCBJRVRNPxxSIbjrCbQ65nrpJD3FVyJNZLuJ0uoqL57ye6BmDYgHaSw==} |
|||
engines: {node: '>=12'} |
|||
dev: false |
|||
|
|||
/magic-string/0.25.9: |
|||
resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} |
|||
dependencies: |
|||
@ -4490,18 +4585,6 @@ packages: |
|||
scheduler: 0.22.0 |
|||
dev: false |
|||
|
|||
/react-draggable/4.4.5_ef5jwxihqo6n7gxfmzogljlgcm: |
|||
resolution: {integrity: sha512-OMHzJdyJbYTZo4uQE393fHcqqPYsEtkjfMgvCHr6rejT+Ezn4OZbNyGH50vv+SunC1RMvwOTSWkEODQLzw1M9g==} |
|||
peerDependencies: |
|||
react: '>= 16.3.0' |
|||
react-dom: '>= 16.3.0' |
|||
dependencies: |
|||
clsx: 1.1.1 |
|||
prop-types: 15.8.1 |
|||
react: 18.1.0 |
|||
react-dom: 18.1[email protected] |
|||
dev: false |
|||
|
|||
/react-error-boundary/[email protected]: |
|||
resolution: {integrity: sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==} |
|||
engines: {node: '>=10', npm: '>=6'} |
|||
@ -4512,23 +4595,6 @@ packages: |
|||
react: 18.1.0 |
|||
dev: false |
|||
|
|||
/react-flow-renderer/10.2.1_ef5jwxihqo6n7gxfmzogljlgcm: |
|||
resolution: {integrity: sha512-F2JG9Uc1t7DWzc+HK6REGooW/tt6X5/8frbXnq7ug6yObAPEmfWlTQjRP917cKVkIxFzI1pU38RwHdOoPdsfJw==} |
|||
engines: {node: '>=14'} |
|||
peerDependencies: |
|||
react: 16 || 17 || 18 |
|||
react-dom: 16 || 17 || 18 |
|||
dependencies: |
|||
'@babel/runtime': 7.17.9 |
|||
classcat: 5.0.3 |
|||
d3-selection: 3.0.0 |
|||
d3-zoom: 3.0.0 |
|||
react: 18.1.0 |
|||
react-dom: 18.1[email protected] |
|||
react-draggable: 4.4.5_ef5jwxihqo6n7gxfmzogljlgcm |
|||
zustand: 3.7[email protected] |
|||
dev: false |
|||
|
|||
/react-hook-form/[email protected]: |
|||
resolution: {integrity: sha512-DzjiM6o2vtDGNMB9I4yCqW8J21P314SboNG1O0obROkbg7KVS0I7bMtwSdKyapnCPjHgnxc3L7E5PEdISeEUcQ==} |
|||
engines: {node: '>=12.22.0'} |
|||
@ -4942,6 +5008,12 @@ packages: |
|||
- supports-color |
|||
dev: true |
|||
|
|||
/simple-swizzle/0.2.2: |
|||
resolution: {integrity: sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=} |
|||
dependencies: |
|||
is-arrayish: 0.3.2 |
|||
dev: false |
|||
|
|||
/simple-zstd/1.4.0: |
|||
resolution: {integrity: sha512-9zBNnu7MkwRiZm7voFUX7ehCcLO2d1FmJ2RWEVsN8Exw2tVYK9k/0/8WjPUmSmtoHOyoFTkHHaOLuPSwkgFmrA==} |
|||
dependencies: |
|||
@ -4964,6 +5036,10 @@ packages: |
|||
is-fullwidth-code-point: 3.0.0 |
|||
dev: true |
|||
|
|||
/sortablejs/1.14.0: |
|||
resolution: {integrity: sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==} |
|||
dev: false |
|||
|
|||
/source-map-js/1.0.2: |
|||
resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} |
|||
engines: {node: '>=0.10.0'} |
|||
@ -5110,6 +5186,11 @@ packages: |
|||
tslib: 2.4.0 |
|||
dev: false |
|||
|
|||
/sub-events/1.8.9: |
|||
resolution: {integrity: sha512-RhhA2amqVzL6nO+aiZOqxBCgcA3ZLfp4W9iHFUELwq8132TS7pUReJV+bcRjtNKdqm/Ep1sD/h01eAcTBtgrBQ==} |
|||
engines: {node: '>=10.0.0'} |
|||
dev: false |
|||
|
|||
/supercluster/7.1.5: |
|||
resolution: {integrity: sha512-EulshI3pGUM66o6ZdH3ReiFcvHpM3vAigyK+vcxdjpJyEbIIrtbmBdY23mGgnI24uXiGFvrGq9Gkum/8U7vJWg==} |
|||
dependencies: |
|||
@ -5141,6 +5222,10 @@ packages: |
|||
react: 18.1.0 |
|||
dev: false |
|||
|
|||
/tabbable/5.3.2: |
|||
resolution: {integrity: sha512-6G/8EWRFx8CiSe2++/xHhXkmCRq2rHtDtZbQFHx34cvDfZzIBfvwG9zGUNTWMXWLCYvDj3aQqOzdl3oCxKuBkQ==} |
|||
dev: false |
|||
|
|||
/table/6.8.0: |
|||
resolution: {integrity: sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==} |
|||
engines: {node: '>=10.0.0'} |
|||
@ -5750,6 +5835,15 @@ packages: |
|||
/wrappy/1.0.2: |
|||
resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} |
|||
|
|||
/xss/1.0.11: |
|||
resolution: {integrity: sha512-EimjrjThZeK2MO7WKR9mN5ZC1CSqivSl55wvUK5EtU6acf0rzEE1pN+9ZDrFXJ82BRp3JL38pPE6S4o/rpp1zQ==} |
|||
engines: {node: '>= 0.10.0'} |
|||
hasBin: true |
|||
dependencies: |
|||
commander: 2.20.3 |
|||
cssfilter: 0.0.10 |
|||
dev: false |
|||
|
|||
/xtend/4.0.2: |
|||
resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} |
|||
engines: {node: '>=0.4'} |
|||
@ -5803,15 +5897,3 @@ packages: |
|||
y18n: 5.0.8 |
|||
yargs-parser: 21.0.1 |
|||
dev: true |
|||
|
|||
/zustand/[email protected]: |
|||
resolution: {integrity: sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==} |
|||
engines: {node: '>=12.7.0'} |
|||
peerDependencies: |
|||
react: '>=16.8' |
|||
peerDependenciesMeta: |
|||
react: |
|||
optional: true |
|||
dependencies: |
|||
react: 18.1.0 |
|||
dev: false |
|||
|
|||
@ -1,144 +0,0 @@ |
|||
import type React from 'react'; |
|||
import { useEffect, useState } from 'react'; |
|||
|
|||
import { m } from 'framer-motion'; |
|||
import type { Edge, Node } from 'react-flow-renderer'; |
|||
import ReactFlow, { Background, Controls, MiniMap } from 'react-flow-renderer'; |
|||
import { BiCrown } from 'react-icons/bi'; |
|||
import { FiSettings } from 'react-icons/fi'; |
|||
import { RiMindMap } from 'react-icons/ri'; |
|||
|
|||
import { IconButton } from '@components/generic/button/IconButton'; |
|||
import { Tooltip } from '@components/generic/Tooltip'; |
|||
import { Layout } from '@components/layout'; |
|||
import { SidebarItem } from '@components/layout/Sidebar/SidebarItem'; |
|||
import { Hashicon } from '@emeraldpay/hashicon-react'; |
|||
import { useAppSelector } from '@hooks/useAppSelector'; |
|||
|
|||
export const Nodes = (): JSX.Element => { |
|||
const [graphNodes, setGraphNodes] = useState<Node[]>([]); |
|||
const [graphEdges, setGraphEdges] = useState<Edge[]>([]); |
|||
const [selected, setSelected] = useState<number>(0); |
|||
const nodes = useAppSelector((state) => state.meshtastic.nodes); |
|||
const myNodeNum = useAppSelector( |
|||
(state) => state.meshtastic.radio.hardware.myNodeNum, |
|||
); |
|||
|
|||
useEffect(() => { |
|||
const tmpNodes: Node[] = []; |
|||
// User Terminal
|
|||
tmpNodes.push({ |
|||
id: '1', |
|||
type: 'input', |
|||
|
|||
data: { label: 'User Terminal' }, |
|||
position: { x: 160 + 500, y: 0 + 500 }, |
|||
}); |
|||
|
|||
nodes.map((node, index) => { |
|||
tmpNodes.push({ |
|||
id: node.data.num.toString(), |
|||
data: { label: node.data.user?.longName ?? `Unknown ${node.data.num}` }, |
|||
position: { x: index * 160 + 500, y: 100 + 500 }, |
|||
}); |
|||
}); |
|||
|
|||
setGraphNodes(tmpNodes); |
|||
}, [nodes, myNodeNum]); |
|||
|
|||
useEffect(() => { |
|||
const tmpEdges: Edge[] = []; |
|||
|
|||
nodes.map((node, index) => { |
|||
if (node.data.num === myNodeNum) { |
|||
tmpEdges.push({ |
|||
id: `e${1}-${myNodeNum}`, |
|||
source: '1', |
|||
target: myNodeNum.toString(), |
|||
type: 'smoothstep', |
|||
style: { |
|||
stroke: 'yellow', |
|||
strokeWidth: 2, |
|||
}, |
|||
}); |
|||
} |
|||
|
|||
// node.routes.map((route) => {
|
|||
// tmpEdges.push({
|
|||
// id: `e${route.from}-${route.to}`,
|
|||
// source: node.num.toString(),
|
|||
// target: route.to.toString(),
|
|||
// type: 'smoothstep',
|
|||
// animated: true,
|
|||
// });
|
|||
// });
|
|||
}); |
|||
|
|||
setGraphEdges(tmpEdges); |
|||
}, [nodes, myNodeNum]); |
|||
|
|||
return ( |
|||
<Layout |
|||
title="Nodes" |
|||
icon={<RiMindMap />} |
|||
sidebarContents={ |
|||
<> |
|||
{nodes.map((node) => ( |
|||
<SidebarItem |
|||
key={node.data.num} |
|||
selected={node.data.num === selected} |
|||
setSelected={(): void => { |
|||
setSelected(node.data.num); |
|||
}} |
|||
actions={ |
|||
<IconButton |
|||
nested |
|||
onClick={(e): void => { |
|||
e.stopPropagation(); |
|||
setSelected(node.data.num); |
|||
}} |
|||
icon={<FiSettings />} |
|||
/> |
|||
} |
|||
> |
|||
<div className="flex dark:text-white"> |
|||
<div className="relative m-auto"> |
|||
{node.data.num === myNodeNum && ( |
|||
<Tooltip content="Your Node"> |
|||
<m.div |
|||
whileHover={{ scale: 1.05 }} |
|||
className="absolute -right-1 -top-1 rounded-full bg-yellow-500 p-0.5" |
|||
> |
|||
<BiCrown className="h-3 w-3" /> |
|||
</m.div> |
|||
</Tooltip> |
|||
)} |
|||
<Hashicon value={node.data.num.toString()} size={32} /> |
|||
</div> |
|||
</div> |
|||
<div className="my-auto mr-auto text-xs font-semibold dark:text-gray-400"> |
|||
{node.data.lastHeard |
|||
? new Date(node.data.lastHeard).toLocaleTimeString( |
|||
undefined, |
|||
{ |
|||
hour: '2-digit', |
|||
minute: '2-digit', |
|||
}, |
|||
) |
|||
: 'Never'} |
|||
</div> |
|||
</SidebarItem> |
|||
))} |
|||
</> |
|||
} |
|||
> |
|||
<div className="relative flex h-full w-full"> |
|||
<ReactFlow nodes={graphNodes} edges={graphEdges}> |
|||
<MiniMap /> |
|||
<Controls /> |
|||
<Background /> |
|||
</ReactFlow> |
|||
</div> |
|||
</Layout> |
|||
); |
|||
}; |
|||
Loading…
Reference in new issue