modified: .gitignore
modified: package-lock.json modified: package.json modified: src/app/component/Bus.tsx modified: src/app/component/BusesList.tsx modified: src/app/component/Strip.tsx modified: src/app/component/StripBusOutput.tsx modified: src/app/layout.tsx modified: src/app/page.tsx modified: src/utils/GetComponentState.ts
This commit is contained in:
parent
4763e22691
commit
99477f9b12
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -36,4 +36,6 @@ yarn-error.log*
|
|||
next-env.d.ts
|
||||
|
||||
**/public/sw.js*
|
||||
**/public/workbox-*.js*
|
||||
**/public/workbox-*.js*
|
||||
|
||||
.vscode
|
446
package-lock.json
generated
446
package-lock.json
generated
|
@ -8,11 +8,12 @@
|
|||
"name": "frontend",
|
||||
"version": "0.1.0",
|
||||
"dependencies": {
|
||||
"@emotion/react": "^11.11.4",
|
||||
"@emotion/styled": "^11.11.5",
|
||||
"@emotion/react": "^11.13.3",
|
||||
"@emotion/styled": "^11.13.0",
|
||||
"@fontsource/roboto": "^5.1.0",
|
||||
"@mui/material": "^5.15.20",
|
||||
"next": "14.2.4",
|
||||
"@mui/icons-material": "^6.1.4",
|
||||
"@mui/material": "^5.16.7",
|
||||
"next": "^14.2.15",
|
||||
"next-pwa": "^5.6.0",
|
||||
"react": "^18",
|
||||
"react-dom": "^18"
|
||||
|
@ -21,6 +22,7 @@
|
|||
"@types/node": "^20",
|
||||
"@types/react": "^18",
|
||||
"@types/react-dom": "^18",
|
||||
"cross-env": "^7.0.3",
|
||||
"eslint": "^8",
|
||||
"eslint-config-next": "14.2.4",
|
||||
"postcss": "^8",
|
||||
|
@ -1683,9 +1685,10 @@
|
|||
"integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA=="
|
||||
},
|
||||
"node_modules/@babel/runtime": {
|
||||
"version": "7.24.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz",
|
||||
"integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==",
|
||||
"version": "7.25.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz",
|
||||
"integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"regenerator-runtime": "^0.14.0"
|
||||
},
|
||||
|
@ -1745,15 +1748,16 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@emotion/babel-plugin": {
|
||||
"version": "11.11.0",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz",
|
||||
"integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==",
|
||||
"version": "11.12.0",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz",
|
||||
"integrity": "sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-module-imports": "^7.16.7",
|
||||
"@babel/runtime": "^7.18.3",
|
||||
"@emotion/hash": "^0.9.1",
|
||||
"@emotion/memoize": "^0.8.1",
|
||||
"@emotion/serialize": "^1.1.2",
|
||||
"@emotion/hash": "^0.9.2",
|
||||
"@emotion/memoize": "^0.9.0",
|
||||
"@emotion/serialize": "^1.2.0",
|
||||
"babel-plugin-macros": "^3.1.0",
|
||||
"convert-source-map": "^1.5.0",
|
||||
"escape-string-regexp": "^4.0.0",
|
||||
|
@ -1763,47 +1767,52 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@emotion/cache": {
|
||||
"version": "11.11.0",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz",
|
||||
"integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==",
|
||||
"version": "11.13.1",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.1.tgz",
|
||||
"integrity": "sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@emotion/memoize": "^0.8.1",
|
||||
"@emotion/sheet": "^1.2.2",
|
||||
"@emotion/utils": "^1.2.1",
|
||||
"@emotion/weak-memoize": "^0.3.1",
|
||||
"@emotion/memoize": "^0.9.0",
|
||||
"@emotion/sheet": "^1.4.0",
|
||||
"@emotion/utils": "^1.4.0",
|
||||
"@emotion/weak-memoize": "^0.4.0",
|
||||
"stylis": "4.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@emotion/hash": {
|
||||
"version": "0.9.1",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz",
|
||||
"integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ=="
|
||||
"version": "0.9.2",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz",
|
||||
"integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@emotion/is-prop-valid": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz",
|
||||
"integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==",
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz",
|
||||
"integrity": "sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@emotion/memoize": "^0.8.1"
|
||||
"@emotion/memoize": "^0.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@emotion/memoize": {
|
||||
"version": "0.8.1",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz",
|
||||
"integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA=="
|
||||
"version": "0.9.0",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz",
|
||||
"integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@emotion/react": {
|
||||
"version": "11.11.4",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.4.tgz",
|
||||
"integrity": "sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==",
|
||||
"version": "11.13.3",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.3.tgz",
|
||||
"integrity": "sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.18.3",
|
||||
"@emotion/babel-plugin": "^11.11.0",
|
||||
"@emotion/cache": "^11.11.0",
|
||||
"@emotion/serialize": "^1.1.3",
|
||||
"@emotion/use-insertion-effect-with-fallbacks": "^1.0.1",
|
||||
"@emotion/utils": "^1.2.1",
|
||||
"@emotion/weak-memoize": "^0.3.1",
|
||||
"@emotion/babel-plugin": "^11.12.0",
|
||||
"@emotion/cache": "^11.13.0",
|
||||
"@emotion/serialize": "^1.3.1",
|
||||
"@emotion/use-insertion-effect-with-fallbacks": "^1.1.0",
|
||||
"@emotion/utils": "^1.4.0",
|
||||
"@emotion/weak-memoize": "^0.4.0",
|
||||
"hoist-non-react-statics": "^3.3.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
|
@ -1816,33 +1825,36 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@emotion/serialize": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz",
|
||||
"integrity": "sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ==",
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.2.tgz",
|
||||
"integrity": "sha512-grVnMvVPK9yUVE6rkKfAJlYZgo0cu3l9iMC77V7DW6E1DUIrU68pSEXRmFZFOFB1QFo57TncmOcvcbMDWsL4yA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@emotion/hash": "^0.9.1",
|
||||
"@emotion/memoize": "^0.8.1",
|
||||
"@emotion/unitless": "^0.8.1",
|
||||
"@emotion/utils": "^1.2.1",
|
||||
"@emotion/hash": "^0.9.2",
|
||||
"@emotion/memoize": "^0.9.0",
|
||||
"@emotion/unitless": "^0.10.0",
|
||||
"@emotion/utils": "^1.4.1",
|
||||
"csstype": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@emotion/sheet": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz",
|
||||
"integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA=="
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz",
|
||||
"integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@emotion/styled": {
|
||||
"version": "11.11.5",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.5.tgz",
|
||||
"integrity": "sha512-/ZjjnaNKvuMPxcIiUkf/9SHoG4Q196DRl1w82hQ3WCsjo1IUR8uaGWrC6a87CrYAW0Kb/pK7hk8BnLgLRi9KoQ==",
|
||||
"version": "11.13.0",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.0.tgz",
|
||||
"integrity": "sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.18.3",
|
||||
"@emotion/babel-plugin": "^11.11.0",
|
||||
"@emotion/is-prop-valid": "^1.2.2",
|
||||
"@emotion/serialize": "^1.1.4",
|
||||
"@emotion/use-insertion-effect-with-fallbacks": "^1.0.1",
|
||||
"@emotion/utils": "^1.2.1"
|
||||
"@emotion/babel-plugin": "^11.12.0",
|
||||
"@emotion/is-prop-valid": "^1.3.0",
|
||||
"@emotion/serialize": "^1.3.0",
|
||||
"@emotion/use-insertion-effect-with-fallbacks": "^1.1.0",
|
||||
"@emotion/utils": "^1.4.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@emotion/react": "^11.0.0-rc.0",
|
||||
|
@ -1855,27 +1867,31 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@emotion/unitless": {
|
||||
"version": "0.8.1",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz",
|
||||
"integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ=="
|
||||
"version": "0.10.0",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz",
|
||||
"integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@emotion/use-insertion-effect-with-fallbacks": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz",
|
||||
"integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==",
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz",
|
||||
"integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==",
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"react": ">=16.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@emotion/utils": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz",
|
||||
"integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg=="
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.1.tgz",
|
||||
"integrity": "sha512-BymCXzCG3r72VKJxaYVwOXATqXIZ85cuvg0YOUDxMGNrKc1DJRZk8MgV5wyXRyEayIMd4FuXJIUgTBXvDNW5cA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@emotion/weak-memoize": {
|
||||
"version": "0.3.1",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz",
|
||||
"integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww=="
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz",
|
||||
"integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@eslint-community/eslint-utils": {
|
||||
"version": "4.4.0",
|
||||
|
@ -1933,40 +1949,6 @@
|
|||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@floating-ui/core": {
|
||||
"version": "1.6.2",
|
||||
"resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.2.tgz",
|
||||
"integrity": "sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==",
|
||||
"dependencies": {
|
||||
"@floating-ui/utils": "^0.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@floating-ui/dom": {
|
||||
"version": "1.6.5",
|
||||
"resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.5.tgz",
|
||||
"integrity": "sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==",
|
||||
"dependencies": {
|
||||
"@floating-ui/core": "^1.0.0",
|
||||
"@floating-ui/utils": "^0.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@floating-ui/react-dom": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.0.tgz",
|
||||
"integrity": "sha512-lNzj5EQmEKn5FFKc04+zasr09h/uX8RtJRNj5gUXsSQIXHVWTVh+hVAg1vOMCexkX8EgvemMvIFpQfkosnVNyA==",
|
||||
"dependencies": {
|
||||
"@floating-ui/dom": "^1.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">=16.8.0",
|
||||
"react-dom": ">=16.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@floating-ui/utils": {
|
||||
"version": "0.2.2",
|
||||
"resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.2.tgz",
|
||||
"integrity": "sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw=="
|
||||
},
|
||||
"node_modules/@fontsource/roboto": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@fontsource/roboto/-/roboto-5.1.0.tgz",
|
||||
|
@ -2104,30 +2086,35 @@
|
|||
"@jridgewell/sourcemap-codec": "^1.4.14"
|
||||
}
|
||||
},
|
||||
"node_modules/@mui/base": {
|
||||
"version": "5.0.0-beta.40",
|
||||
"resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.40.tgz",
|
||||
"integrity": "sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ==",
|
||||
"node_modules/@mui/core-downloads-tracker": {
|
||||
"version": "5.16.7",
|
||||
"resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.7.tgz",
|
||||
"integrity": "sha512-RtsCt4Geed2/v74sbihWzzRs+HsIQCfclHeORh5Ynu2fS4icIKozcSubwuG7vtzq2uW3fOR1zITSP84TNt2GoQ==",
|
||||
"license": "MIT",
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/mui-org"
|
||||
}
|
||||
},
|
||||
"node_modules/@mui/icons-material": {
|
||||
"version": "6.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.1.4.tgz",
|
||||
"integrity": "sha512-nhXBNSP3WkY0pz8dg25VIYIXJkhdRLRKZtD50f9OuHVQ1eh8b+enmvaZQF0o5M8cs1sR6wQHwZYwG34qDZeG0g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.23.9",
|
||||
"@floating-ui/react-dom": "^2.0.8",
|
||||
"@mui/types": "^7.2.14",
|
||||
"@mui/utils": "^5.15.14",
|
||||
"@popperjs/core": "^2.11.8",
|
||||
"clsx": "^2.1.0",
|
||||
"prop-types": "^15.8.1"
|
||||
"@babel/runtime": "^7.25.7"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12.0.0"
|
||||
"node": ">=14.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/mui-org"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@types/react": "^17.0.0 || ^18.0.0",
|
||||
"react": "^17.0.0 || ^18.0.0",
|
||||
"react-dom": "^17.0.0 || ^18.0.0"
|
||||
"@mui/material": "^6.1.4",
|
||||
"@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
|
||||
"react": "^17.0.0 || ^18.0.0 || ^19.0.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@types/react": {
|
||||
|
@ -2135,31 +2122,23 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@mui/core-downloads-tracker": {
|
||||
"version": "5.15.20",
|
||||
"resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.20.tgz",
|
||||
"integrity": "sha512-DoL2ppgldL16utL8nNyj/P12f8mCNdx/Hb/AJnX9rLY4b52hCMIx1kH83pbXQ6uMy6n54M3StmEbvSGoj2OFuA==",
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/mui-org"
|
||||
}
|
||||
},
|
||||
"node_modules/@mui/material": {
|
||||
"version": "5.15.20",
|
||||
"resolved": "https://registry.npmjs.org/@mui/material/-/material-5.15.20.tgz",
|
||||
"integrity": "sha512-tVq3l4qoXx/NxUgIx/x3lZiPn/5xDbdTE8VrLczNpfblLYZzlrbxA7kb9mI8NoBF6+w9WE9IrxWnKK5KlPI2bg==",
|
||||
"version": "5.16.7",
|
||||
"resolved": "https://registry.npmjs.org/@mui/material/-/material-5.16.7.tgz",
|
||||
"integrity": "sha512-cwwVQxBhK60OIOqZOVLFt55t01zmarKJiJUWbk0+8s/Ix5IaUzAShqlJchxsIQ4mSrWqgcKCCXKtIlG5H+/Jmg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.23.9",
|
||||
"@mui/base": "5.0.0-beta.40",
|
||||
"@mui/core-downloads-tracker": "^5.15.20",
|
||||
"@mui/system": "^5.15.20",
|
||||
"@mui/types": "^7.2.14",
|
||||
"@mui/utils": "^5.15.20",
|
||||
"@mui/core-downloads-tracker": "^5.16.7",
|
||||
"@mui/system": "^5.16.7",
|
||||
"@mui/types": "^7.2.15",
|
||||
"@mui/utils": "^5.16.6",
|
||||
"@popperjs/core": "^2.11.8",
|
||||
"@types/react-transition-group": "^4.4.10",
|
||||
"clsx": "^2.1.0",
|
||||
"csstype": "^3.1.3",
|
||||
"prop-types": "^15.8.1",
|
||||
"react-is": "^18.2.0",
|
||||
"react-is": "^18.3.1",
|
||||
"react-transition-group": "^4.4.5"
|
||||
},
|
||||
"engines": {
|
||||
|
@ -2194,12 +2173,13 @@
|
|||
"integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="
|
||||
},
|
||||
"node_modules/@mui/private-theming": {
|
||||
"version": "5.15.20",
|
||||
"resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.20.tgz",
|
||||
"integrity": "sha512-BK8F94AIqSrnaPYXf2KAOjGZJgWfvqAVQ2gVR3EryvQFtuBnG6RwodxrCvd3B48VuMy6Wsk897+lQMUxJyk+6g==",
|
||||
"version": "5.16.6",
|
||||
"resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.16.6.tgz",
|
||||
"integrity": "sha512-rAk+Rh8Clg7Cd7shZhyt2HGTTE5wYKNSJ5sspf28Fqm/PZ69Er9o6KX25g03/FG2dfpg5GCwZh/xOojiTfm3hw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.23.9",
|
||||
"@mui/utils": "^5.15.20",
|
||||
"@mui/utils": "^5.16.6",
|
||||
"prop-types": "^15.8.1"
|
||||
},
|
||||
"engines": {
|
||||
|
@ -2220,9 +2200,10 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@mui/styled-engine": {
|
||||
"version": "5.15.14",
|
||||
"resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.14.tgz",
|
||||
"integrity": "sha512-RILkuVD8gY6PvjZjqnWhz8fu68dVkqhM5+jYWfB5yhlSQKg+2rHkmEwm75XIeAqI3qwOndK6zELK5H6Zxn4NHw==",
|
||||
"version": "5.16.6",
|
||||
"resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.16.6.tgz",
|
||||
"integrity": "sha512-zaThmS67ZmtHSWToTiHslbI8jwrmITcN93LQaR2lKArbvS7Z3iLkwRoiikNWutx9MBs8Q6okKvbZq1RQYB3v7g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.23.9",
|
||||
"@emotion/cache": "^11.11.0",
|
||||
|
@ -2251,15 +2232,16 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@mui/system": {
|
||||
"version": "5.15.20",
|
||||
"resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.20.tgz",
|
||||
"integrity": "sha512-LoMq4IlAAhxzL2VNUDBTQxAb4chnBe8JvRINVNDiMtHE2PiPOoHlhOPutSxEbaL5mkECPVWSv6p8JEV+uykwIA==",
|
||||
"version": "5.16.7",
|
||||
"resolved": "https://registry.npmjs.org/@mui/system/-/system-5.16.7.tgz",
|
||||
"integrity": "sha512-Jncvs/r/d/itkxh7O7opOunTqbbSSzMTHzZkNLM+FjAOg+cYAZHrPDlYe1ZGKUYORwwb2XexlWnpZp0kZ4AHuA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.23.9",
|
||||
"@mui/private-theming": "^5.15.20",
|
||||
"@mui/styled-engine": "^5.15.14",
|
||||
"@mui/types": "^7.2.14",
|
||||
"@mui/utils": "^5.15.20",
|
||||
"@mui/private-theming": "^5.16.6",
|
||||
"@mui/styled-engine": "^5.16.6",
|
||||
"@mui/types": "^7.2.15",
|
||||
"@mui/utils": "^5.16.6",
|
||||
"clsx": "^2.1.0",
|
||||
"csstype": "^3.1.3",
|
||||
"prop-types": "^15.8.1"
|
||||
|
@ -2290,11 +2272,12 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@mui/types": {
|
||||
"version": "7.2.14",
|
||||
"resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.14.tgz",
|
||||
"integrity": "sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ==",
|
||||
"version": "7.2.18",
|
||||
"resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.18.tgz",
|
||||
"integrity": "sha512-uvK9dWeyCJl/3ocVnTOS6nlji/Knj8/tVqVX03UVTpdmTJYu/s4jtDd9Kvv0nRGE0CUSNW1UYAci7PYypjealg==",
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"@types/react": "^17.0.0 || ^18.0.0"
|
||||
"@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@types/react": {
|
||||
|
@ -2303,14 +2286,17 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@mui/utils": {
|
||||
"version": "5.15.20",
|
||||
"resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.20.tgz",
|
||||
"integrity": "sha512-mAbYx0sovrnpAu1zHc3MDIhPqL8RPVC5W5xcO1b7PiSCJPtckIZmBkp8hefamAvUiAV8gpfMOM6Zb+eSisbI2A==",
|
||||
"version": "5.16.6",
|
||||
"resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.16.6.tgz",
|
||||
"integrity": "sha512-tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqEA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.23.9",
|
||||
"@types/prop-types": "^15.7.11",
|
||||
"@mui/types": "^7.2.15",
|
||||
"@types/prop-types": "^15.7.12",
|
||||
"clsx": "^2.1.1",
|
||||
"prop-types": "^15.8.1",
|
||||
"react-is": "^18.2.0"
|
||||
"react-is": "^18.3.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12.0.0"
|
||||
|
@ -2332,12 +2318,14 @@
|
|||
"node_modules/@mui/utils/node_modules/react-is": {
|
||||
"version": "18.3.1",
|
||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
|
||||
"integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="
|
||||
"integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@next/env": {
|
||||
"version": "14.2.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.4.tgz",
|
||||
"integrity": "sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg=="
|
||||
"version": "14.2.15",
|
||||
"resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.15.tgz",
|
||||
"integrity": "sha512-S1qaj25Wru2dUpcIZMjxeMVSwkt8BK4dmWHHiBuRstcIyOsMapqT4A4jSB6onvqeygkSSmOkyny9VVx8JIGamQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@next/eslint-plugin-next": {
|
||||
"version": "14.2.4",
|
||||
|
@ -2349,12 +2337,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@next/swc-darwin-arm64": {
|
||||
"version": "14.2.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.4.tgz",
|
||||
"integrity": "sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==",
|
||||
"version": "14.2.15",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.15.tgz",
|
||||
"integrity": "sha512-Rvh7KU9hOUBnZ9TJ28n2Oa7dD9cvDBKua9IKx7cfQQ0GoYUwg9ig31O2oMwH3wm+pE3IkAQ67ZobPfEgurPZIA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"darwin"
|
||||
|
@ -2364,12 +2353,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@next/swc-darwin-x64": {
|
||||
"version": "14.2.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.4.tgz",
|
||||
"integrity": "sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==",
|
||||
"version": "14.2.15",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.15.tgz",
|
||||
"integrity": "sha512-5TGyjFcf8ampZP3e+FyCax5zFVHi+Oe7sZyaKOngsqyaNEpOgkKB3sqmymkZfowy3ufGA/tUgDPPxpQx931lHg==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"darwin"
|
||||
|
@ -2379,12 +2369,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@next/swc-linux-arm64-gnu": {
|
||||
"version": "14.2.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.4.tgz",
|
||||
"integrity": "sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==",
|
||||
"version": "14.2.15",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.15.tgz",
|
||||
"integrity": "sha512-3Bwv4oc08ONiQ3FiOLKT72Q+ndEMyLNsc/D3qnLMbtUYTQAmkx9E/JRu0DBpHxNddBmNT5hxz1mYBphJ3mfrrw==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
|
@ -2394,12 +2385,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@next/swc-linux-arm64-musl": {
|
||||
"version": "14.2.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.4.tgz",
|
||||
"integrity": "sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==",
|
||||
"version": "14.2.15",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.15.tgz",
|
||||
"integrity": "sha512-k5xf/tg1FBv/M4CMd8S+JL3uV9BnnRmoe7F+GWC3DxkTCD9aewFRH1s5rJ1zkzDa+Do4zyN8qD0N8c84Hu96FQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
|
@ -2409,12 +2401,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@next/swc-linux-x64-gnu": {
|
||||
"version": "14.2.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.4.tgz",
|
||||
"integrity": "sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==",
|
||||
"version": "14.2.15",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.15.tgz",
|
||||
"integrity": "sha512-kE6q38hbrRbKEkkVn62reLXhThLRh6/TvgSP56GkFNhU22TbIrQDEMrO7j0IcQHcew2wfykq8lZyHFabz0oBrA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
|
@ -2424,12 +2417,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@next/swc-linux-x64-musl": {
|
||||
"version": "14.2.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.4.tgz",
|
||||
"integrity": "sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==",
|
||||
"version": "14.2.15",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.15.tgz",
|
||||
"integrity": "sha512-PZ5YE9ouy/IdO7QVJeIcyLn/Rc4ml9M2G4y3kCM9MNf1YKvFY4heg3pVa/jQbMro+tP6yc4G2o9LjAz1zxD7tQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
|
@ -2439,12 +2433,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@next/swc-win32-arm64-msvc": {
|
||||
"version": "14.2.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.4.tgz",
|
||||
"integrity": "sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==",
|
||||
"version": "14.2.15",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.15.tgz",
|
||||
"integrity": "sha512-2raR16703kBvYEQD9HNLyb0/394yfqzmIeyp2nDzcPV4yPjqNUG3ohX6jX00WryXz6s1FXpVhsCo3i+g4RUX+g==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
|
@ -2454,12 +2449,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@next/swc-win32-ia32-msvc": {
|
||||
"version": "14.2.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.4.tgz",
|
||||
"integrity": "sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==",
|
||||
"version": "14.2.15",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.15.tgz",
|
||||
"integrity": "sha512-fyTE8cklgkyR1p03kJa5zXEaZ9El+kDNM5A+66+8evQS5e/6v0Gk28LqA0Jet8gKSOyP+OTm/tJHzMlGdQerdQ==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
|
@ -2469,12 +2465,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@next/swc-win32-x64-msvc": {
|
||||
"version": "14.2.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.4.tgz",
|
||||
"integrity": "sha512-tkLrjBzqFTP8DVrAAQmZelEahfR9OxWpFR++vAI9FBhCiIxtwHwBHC23SBHCTURBtwB4kc/x44imVOnkKGNVGg==",
|
||||
"version": "14.2.15",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.15.tgz",
|
||||
"integrity": "sha512-SzqGbsLsP9OwKNUG9nekShTwhj6JSB9ZLMWQ8g1gG6hdE5gQLncbnbymrwy2yVmH9nikSLYRYxYMFu78Ggp7/g==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
|
@ -2529,6 +2526,7 @@
|
|||
"version": "2.11.8",
|
||||
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
|
||||
"integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
|
||||
"license": "MIT",
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/popperjs"
|
||||
|
@ -2712,7 +2710,8 @@
|
|||
"node_modules/@types/parse-json": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz",
|
||||
"integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw=="
|
||||
"integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@types/prop-types": {
|
||||
"version": "15.7.12",
|
||||
|
@ -3413,6 +3412,7 @@
|
|||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz",
|
||||
"integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"cosmiconfig": "^7.0.0",
|
||||
|
@ -3707,6 +3707,7 @@
|
|||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
|
||||
"integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
|
@ -3757,7 +3758,8 @@
|
|||
"node_modules/convert-source-map": {
|
||||
"version": "1.9.0",
|
||||
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
|
||||
"integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="
|
||||
"integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/core-js-compat": {
|
||||
"version": "3.37.1",
|
||||
|
@ -3775,6 +3777,7 @@
|
|||
"version": "7.1.0",
|
||||
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
|
||||
"integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/parse-json": "^4.0.0",
|
||||
"import-fresh": "^3.2.1",
|
||||
|
@ -3790,10 +3793,30 @@
|
|||
"version": "1.10.2",
|
||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
|
||||
"integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
|
||||
"license": "ISC",
|
||||
"engines": {
|
||||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/cross-env": {
|
||||
"version": "7.0.3",
|
||||
"resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
|
||||
"integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"cross-spawn": "^7.0.1"
|
||||
},
|
||||
"bin": {
|
||||
"cross-env": "src/bin/cross-env.js",
|
||||
"cross-env-shell": "src/bin/cross-env-shell.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.14",
|
||||
"npm": ">=6",
|
||||
"yarn": ">=1"
|
||||
}
|
||||
},
|
||||
"node_modules/cross-spawn": {
|
||||
"version": "7.0.3",
|
||||
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
|
||||
|
@ -4171,6 +4194,7 @@
|
|||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
|
||||
"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"is-arrayish": "^0.2.1"
|
||||
}
|
||||
|
@ -4919,7 +4943,8 @@
|
|||
"node_modules/find-root": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
|
||||
"integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="
|
||||
"integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/find-up": {
|
||||
"version": "5.0.0",
|
||||
|
@ -5421,7 +5446,8 @@
|
|||
"node_modules/is-arrayish": {
|
||||
"version": "0.2.1",
|
||||
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
|
||||
"integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
|
||||
"integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/is-async-function": {
|
||||
"version": "2.0.0",
|
||||
|
@ -6320,11 +6346,12 @@
|
|||
"peer": true
|
||||
},
|
||||
"node_modules/next": {
|
||||
"version": "14.2.4",
|
||||
"resolved": "https://registry.npmjs.org/next/-/next-14.2.4.tgz",
|
||||
"integrity": "sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ==",
|
||||
"version": "14.2.15",
|
||||
"resolved": "https://registry.npmjs.org/next/-/next-14.2.15.tgz",
|
||||
"integrity": "sha512-h9ctmOokpoDphRvMGnwOJAedT6zKhwqyZML9mDtspgf4Rh3Pn7UTYKqePNoDvhsWBAO5GoPNYshnAUGIazVGmw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@next/env": "14.2.4",
|
||||
"@next/env": "14.2.15",
|
||||
"@swc/helpers": "0.5.5",
|
||||
"busboy": "1.6.0",
|
||||
"caniuse-lite": "^1.0.30001579",
|
||||
|
@ -6339,15 +6366,15 @@
|
|||
"node": ">=18.17.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@next/swc-darwin-arm64": "14.2.4",
|
||||
"@next/swc-darwin-x64": "14.2.4",
|
||||
"@next/swc-linux-arm64-gnu": "14.2.4",
|
||||
"@next/swc-linux-arm64-musl": "14.2.4",
|
||||
"@next/swc-linux-x64-gnu": "14.2.4",
|
||||
"@next/swc-linux-x64-musl": "14.2.4",
|
||||
"@next/swc-win32-arm64-msvc": "14.2.4",
|
||||
"@next/swc-win32-ia32-msvc": "14.2.4",
|
||||
"@next/swc-win32-x64-msvc": "14.2.4"
|
||||
"@next/swc-darwin-arm64": "14.2.15",
|
||||
"@next/swc-darwin-x64": "14.2.15",
|
||||
"@next/swc-linux-arm64-gnu": "14.2.15",
|
||||
"@next/swc-linux-arm64-musl": "14.2.15",
|
||||
"@next/swc-linux-x64-gnu": "14.2.15",
|
||||
"@next/swc-linux-x64-musl": "14.2.15",
|
||||
"@next/swc-win32-arm64-msvc": "14.2.15",
|
||||
"@next/swc-win32-ia32-msvc": "14.2.15",
|
||||
"@next/swc-win32-x64-msvc": "14.2.15"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@opentelemetry/api": "^1.1.0",
|
||||
|
@ -6657,6 +6684,7 @@
|
|||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
|
||||
"integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/code-frame": "^7.0.0",
|
||||
"error-ex": "^1.3.1",
|
||||
|
@ -7582,6 +7610,7 @@
|
|||
"version": "0.5.7",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
|
||||
"integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
|
||||
"license": "BSD-3-Clause",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
|
@ -7875,7 +7904,8 @@
|
|||
"node_modules/stylis": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz",
|
||||
"integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw=="
|
||||
"integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/sucrase": {
|
||||
"version": "3.35.0",
|
||||
|
|
12
package.json
12
package.json
|
@ -3,17 +3,18 @@
|
|||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
"dev": "cross-env NODE_OPTIONS='--inspect' next dev",
|
||||
"build": "next build",
|
||||
"start": "next start",
|
||||
"lint": "next lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"@emotion/react": "^11.11.4",
|
||||
"@emotion/styled": "^11.11.5",
|
||||
"@emotion/react": "^11.13.3",
|
||||
"@emotion/styled": "^11.13.0",
|
||||
"@fontsource/roboto": "^5.1.0",
|
||||
"@mui/material": "^5.15.20",
|
||||
"next": "14.2.4",
|
||||
"@mui/icons-material": "^6.1.4",
|
||||
"@mui/material": "^5.16.7",
|
||||
"next": "^14.2.15",
|
||||
"next-pwa": "^5.6.0",
|
||||
"react": "^18",
|
||||
"react-dom": "^18"
|
||||
|
@ -22,6 +23,7 @@
|
|||
"@types/node": "^20",
|
||||
"@types/react": "^18",
|
||||
"@types/react-dom": "^18",
|
||||
"cross-env": "^7.0.3",
|
||||
"eslint": "^8",
|
||||
"eslint-config-next": "14.2.4",
|
||||
"postcss": "^8",
|
||||
|
|
|
@ -55,7 +55,6 @@ export class Bus extends React.Component<BusProps, BusState> {
|
|||
private eventCounter = new EventCounter<"onSliderResetDefaults">();
|
||||
constructor(props: BusProps) {
|
||||
super(props);
|
||||
let { values: initialValues } = props;
|
||||
this.state = getComponentState<BusState, "">(
|
||||
props.values,
|
||||
this.defaultValues
|
||||
|
@ -130,32 +129,27 @@ export class Bus extends React.Component<BusProps, BusState> {
|
|||
sx={{ width: "inherit" }}
|
||||
>
|
||||
{/* {this.props.width > 600 ? (
|
||||
// <TextField
|
||||
// inputProps={{
|
||||
// "aria-labelledby": "input-slider",
|
||||
// itemType: "number",
|
||||
// style:{padding: 0}
|
||||
// }}
|
||||
// value={Bus.percentToGain(this.state.gainPercent).toFixed(1)}
|
||||
// onWheel={(e) => this.onStripWheel(e)}
|
||||
// onClick={(e) => this.stopPropagation(e)}
|
||||
// onChange={(e) => {
|
||||
// e.target.value = Bus.gainToPercent(
|
||||
// parseInt(e.target.value)
|
||||
// ).toFixed(0);
|
||||
// this.onGainSliderChange(e as unknown as Event);
|
||||
// }}
|
||||
// size="small"
|
||||
// label={this.props.name}
|
||||
// type="number"
|
||||
// variant="outlined"
|
||||
// sx={{
|
||||
// minWidth: "100px",
|
||||
// maxWidth: "100px",
|
||||
// height: "",
|
||||
// marginBlockEnd: "8px",
|
||||
// }}
|
||||
// />
|
||||
<TextField
|
||||
inputProps={{
|
||||
"aria-labelledby": "input-slider",
|
||||
itemType: "number",
|
||||
style:{padding: 0}
|
||||
}}
|
||||
value={this.state.gain}
|
||||
// onWheel={(e) => this.on(e)}
|
||||
onClick={(e) => stopPropagation(e)}
|
||||
onChange={(e) => this.onGainSliderChange(e)}
|
||||
size="small"
|
||||
label={this.props.name}
|
||||
type="number"
|
||||
variant="outlined"
|
||||
sx={{
|
||||
minWidth: "100px",
|
||||
maxWidth: "100px",
|
||||
height: "",
|
||||
marginBlockEnd: "8px",
|
||||
}}
|
||||
/>
|
||||
) : (
|
||||
<Typography variant="caption">{this.props.name}</Typography>
|
||||
)} */}
|
||||
|
@ -174,7 +168,7 @@ export class Bus extends React.Component<BusProps, BusState> {
|
|||
)} */}
|
||||
<Slider
|
||||
valueLabelDisplay={this.props.width > 600 ? "off" : "auto"}
|
||||
value={this.state.gain}
|
||||
value={this.state.gain}
|
||||
color={
|
||||
this.state.gain > 0 && this.state.gain < 12
|
||||
? "warning"
|
||||
|
|
|
@ -8,7 +8,7 @@ import {
|
|||
withTheme,
|
||||
} from "@mui/material";
|
||||
import React from "react";
|
||||
import { Bus, BusEvent } from "./Bus";
|
||||
import { Bus, BusEvent, BusProps } from "./Bus";
|
||||
import { range } from "@/utils/Range";
|
||||
|
||||
export interface BusesListProps {
|
||||
|
@ -16,6 +16,7 @@ export interface BusesListProps {
|
|||
virtual: number;
|
||||
width: number;
|
||||
stackProps?: StackOwnProps;
|
||||
values?: BusProps["values"][];
|
||||
onChange: (event: BusEvent, id: number) => any;
|
||||
}
|
||||
export interface BusesListState {}
|
||||
|
@ -44,6 +45,7 @@ export class BusesList extends React.Component<BusesListProps, BusesListState> {
|
|||
<Bus
|
||||
width={this.props.width}
|
||||
name={name}
|
||||
values={this.props.values ? this.props.values[busId] : undefined}
|
||||
onChange={(e) => this.props.onChange(e, busId)}
|
||||
/>
|
||||
</Stack>
|
||||
|
|
|
@ -9,12 +9,15 @@ import {
|
|||
Stack,
|
||||
styled,
|
||||
TextField,
|
||||
ToggleButton,
|
||||
ToggleButtonGroup,
|
||||
Typography,
|
||||
} from "@mui/material";
|
||||
import React from "react";
|
||||
import { StripBusOutput, StripBusOutputEvent } from "./StripBusOutput";
|
||||
import { EventCounter } from "@/utils/EventCounter";
|
||||
import { stopPropagation } from "@/utils/StopPropagation";
|
||||
import { getComponentState } from "@/utils/GetComponentState";
|
||||
|
||||
export interface StripProps {
|
||||
physicalBuses: number;
|
||||
|
@ -61,26 +64,15 @@ export class Strip extends React.Component<StripProps, StripState> {
|
|||
),
|
||||
muted: false,
|
||||
};
|
||||
const getValue = (name: keyof typeof this.defaultValues) => {
|
||||
if (initialValues === undefined) return this.defaultValues[name];
|
||||
return initialValues[name] !== undefined
|
||||
? this.defaultValues[name]
|
||||
: initialValues[name];
|
||||
};
|
||||
this.state = {
|
||||
...(Object.fromEntries(
|
||||
Object.entries(this.defaultValues).map(([name]) => [
|
||||
name,
|
||||
getValue(name as keyof typeof this.defaultValues) as any,
|
||||
])
|
||||
) as Omit<StripState, StateDefaultValueException>),
|
||||
};
|
||||
|
||||
this.state = getComponentState(initialValues, this.defaultValues);
|
||||
this.eventCounter.on({
|
||||
callback: this.onResetDefaults.bind(this),
|
||||
count: 2,
|
||||
name: "onSliderResetDefaults",
|
||||
});
|
||||
}
|
||||
|
||||
onSliderClick(event: React.MouseEvent) {
|
||||
stopPropagation(event);
|
||||
this.eventCounter.emit("onSliderResetDefaults");
|
||||
|
@ -141,7 +133,6 @@ export class Strip extends React.Component<StripProps, StripState> {
|
|||
}
|
||||
);
|
||||
}
|
||||
|
||||
render() {
|
||||
return (
|
||||
<>
|
||||
|
@ -152,34 +143,17 @@ export class Strip extends React.Component<StripProps, StripState> {
|
|||
}}
|
||||
>
|
||||
<Stack alignItems={"center"} style={{ maxWidth: "70px" }}>
|
||||
{this.props.width > 600 ? (
|
||||
<TextField
|
||||
// inputProps={{
|
||||
// "aria-labelledby": "input-slider",
|
||||
// itemType: "number",
|
||||
// style: { padding: 0 },
|
||||
// }}
|
||||
value={this.state.gain}
|
||||
onWheel={(e) => this.onStripWheel(e)}
|
||||
onClick={(e) => stopPropagation(e)}
|
||||
size="small"
|
||||
type="number"
|
||||
label={this.props.name}
|
||||
// sx={{minWidth: "4em", maxWidth: "5em"}}
|
||||
// fullWidth
|
||||
/>
|
||||
) : (
|
||||
<>
|
||||
{/* <Typography variant="caption">{this.props.name}</Typography>
|
||||
<Typography width={"4em"} textAlign="center" variant="caption">
|
||||
{this.state.gain} dB
|
||||
</Typography> */}
|
||||
</>
|
||||
)}
|
||||
<Slider
|
||||
orientation="vertical"
|
||||
valueLabelDisplay={this.props.width > 600 ? "off" : "auto"}
|
||||
value={this.state.gain}
|
||||
color={
|
||||
this.state.gain > 0 && this.state.gain < 12
|
||||
? "warning"
|
||||
: this.state.gain <= 0
|
||||
? "primary"
|
||||
: "error"
|
||||
}
|
||||
min={-60}
|
||||
max={12}
|
||||
step={0.1}
|
||||
|
@ -192,7 +166,7 @@ export class Strip extends React.Component<StripProps, StripState> {
|
|||
/>
|
||||
</Stack>
|
||||
<Stack>
|
||||
<ButtonGroup orientation="vertical">
|
||||
<ButtonGroup orientation="vertical" variant="text" color="inherit" disableElevation={true}>
|
||||
{[
|
||||
...Array(this.props.physicalBuses + this.props.virtualBuses),
|
||||
].map((_v, i) => (
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
"use client";
|
||||
import { Button, Grid, Slider, Stack } from "@mui/material";
|
||||
import { Button, Grid, Slider, Stack, ToggleButton } from "@mui/material";
|
||||
import React from "react";
|
||||
|
||||
export interface StripBusOutputEvent {
|
||||
|
@ -30,7 +30,7 @@ export class StripBusOutput extends React.Component<StripProps, StripState> {
|
|||
};
|
||||
}
|
||||
onClick(event: React.MouseEvent) {
|
||||
event.nativeEvent.stopImmediatePropagation()
|
||||
event.nativeEvent.stopImmediatePropagation();
|
||||
this.setState(
|
||||
(state) => ({ enabled: !state.enabled }),
|
||||
() => {
|
||||
|
@ -50,7 +50,7 @@ export class StripBusOutput extends React.Component<StripProps, StripState> {
|
|||
size="small"
|
||||
sx={{ height: "35px" }}
|
||||
onClick={(e) => this.onClick(e)}
|
||||
variant={this.state.enabled ? "contained" : "outlined"}
|
||||
variant={this.state.enabled ? "contained" : "text"}
|
||||
>
|
||||
{this.props.isVirtual ? "B" : "A"}
|
||||
{this.props.id + 1}
|
||||
|
|
|
@ -15,6 +15,7 @@ export default function RootLayout({
|
|||
<html lang="en">
|
||||
<Head>
|
||||
<link rel="manifest" href="/manifest.json" />
|
||||
<meta name="viewport" content="width=device-width, user-scalable=no"></meta>
|
||||
</Head>
|
||||
|
||||
<body>{children}</body>
|
||||
|
|
281
src/app/page.tsx
281
src/app/page.tsx
|
@ -1,12 +1,15 @@
|
|||
"use client";
|
||||
import React, { createRef, useEffect, useMemo, useState } from "react";
|
||||
import { Strip, StripEvent } from "./component/Strip";
|
||||
import React, { createRef, useEffect, useMemo, useRef, useState } from "react";
|
||||
import { Strip, StripEvent, StripProps, StripState } from "./component/Strip";
|
||||
import {
|
||||
Backdrop,
|
||||
Button,
|
||||
CircularProgress,
|
||||
Container,
|
||||
createTheme,
|
||||
CssBaseline,
|
||||
Divider,
|
||||
Fab,
|
||||
Slide,
|
||||
Snackbar,
|
||||
Stack,
|
||||
|
@ -14,32 +17,46 @@ import {
|
|||
Typography,
|
||||
useMediaQuery,
|
||||
} from "@mui/material";
|
||||
import { Bus, BusEvent } from "./component/Bus";
|
||||
import { Bus, BusEvent, BusProps, BusState } from "./component/Bus";
|
||||
import Grid from "@mui/material/Unstable_Grid2";
|
||||
import { EventCounter } from "@/utils/EventCounter";
|
||||
import { BusesList } from "./component/BusesList";
|
||||
import { isItMobile } from "@/utils/DetectMobile";
|
||||
import FullscreenIcon from "@mui/icons-material/Fullscreen";
|
||||
import FullscreenExit from "@mui/icons-material/FullscreenExit";
|
||||
|
||||
function random(min: number, max: number, floor: boolean = true) {
|
||||
const value = Math.random() * (max - min + 1) + min;
|
||||
return floor ? Math.floor(value) : value;
|
||||
}
|
||||
|
||||
interface Values {
|
||||
strips: { gain: number; muteState: boolean; outputBuses: boolean[] }[];
|
||||
buses: { gain: number; muteState: boolean }[];
|
||||
}
|
||||
|
||||
export default function Home() {
|
||||
const theme = useMemo(
|
||||
() =>
|
||||
createTheme({
|
||||
palette: { mode: "dark", background: { default: "#000" } },
|
||||
palette: {
|
||||
mode: "dark",
|
||||
background: { default: "#000" },
|
||||
primary: { main: "#9d9d9d" },
|
||||
secondary: { main: "#262626" },
|
||||
error: { main: "#cb0801",A700: "#fff" },
|
||||
warning: {main:"#cb7c01"}
|
||||
},
|
||||
}),
|
||||
[]
|
||||
);
|
||||
function sendApi(
|
||||
path: string,
|
||||
method: RequestInit["method"],
|
||||
body: any,
|
||||
method: RequestInit["method"] = "GET",
|
||||
body?: any,
|
||||
fetchOptions?: RequestInit
|
||||
) {
|
||||
const url = new URL(path, "http://127.0.0.1:3001/");
|
||||
const url = new URL(path, "http://10.0.0.200:3001/");
|
||||
return fetch(url.toString(), {
|
||||
method,
|
||||
body: body !== undefined ? JSON.stringify(body) : undefined,
|
||||
|
@ -48,7 +65,9 @@ export default function Home() {
|
|||
? { "Content-Type": "application/json" }
|
||||
: ({} as RequestInit["headers"]))(),
|
||||
...fetchOptions,
|
||||
}).then((r) => r.json());
|
||||
})
|
||||
.then((r) => r.json())
|
||||
.catch((e) => console.error("Error:", e));
|
||||
}
|
||||
function onEvent(event: StripEvent | BusEvent, id: number) {
|
||||
console.log(event);
|
||||
|
@ -69,6 +88,21 @@ export default function Home() {
|
|||
sendApi(`/bus/${id}/gain`, "PATCH", { gain: event.gain });
|
||||
break;
|
||||
}
|
||||
case "StripBusOutputChanged":
|
||||
setValues((e) => {
|
||||
if (e === undefined) return;
|
||||
e.strips[id]!.outputBuses![
|
||||
event.isVirtual ? event.busId + buses.physical : event.busId
|
||||
] = event.enabled;
|
||||
sendApi(`/strip/${id}/outputs`, "PATCH", {
|
||||
outputs: e.strips[id]!.outputBuses,
|
||||
});
|
||||
return e;
|
||||
});
|
||||
|
||||
break;
|
||||
case "BusSelectToggle":
|
||||
break;
|
||||
}
|
||||
}
|
||||
const isSnackBarHidden = useMemo(() => {
|
||||
|
@ -76,65 +110,56 @@ export default function Home() {
|
|||
return localStorage.getItem("snackBarHidden") === "true";
|
||||
}, []);
|
||||
const [snackBarVisible, setSnackBarVisibility] = useState(false);
|
||||
const breakPoints = useMemo(() => theme.breakpoints.values, []);
|
||||
const [values, setValues] = useState<{
|
||||
buses: BusProps["values"][];
|
||||
strips: StripProps["values"][];
|
||||
}>();
|
||||
const [width, setWidth] = useState(1000);
|
||||
const eventCounter = useMemo(() => {
|
||||
const eventCounter = new EventCounter<"emptySpaceClick">();
|
||||
eventCounter.on({
|
||||
callback: () => {
|
||||
if (document.fullscreenElement === null)
|
||||
document.documentElement.requestFullscreen();
|
||||
else document.exitFullscreen();
|
||||
},
|
||||
count: 3,
|
||||
name: "emptySpaceClick",
|
||||
});
|
||||
return eventCounter;
|
||||
}, []);
|
||||
const isItMobileDevice = useMemo(() => isItMobile(navigator.userAgent), []);
|
||||
const [isLoaded, setIsLoaded] = useState(false);
|
||||
// const eventCounter = useMemo(() => {
|
||||
// const eventCounter = new EventCounter<"emptySpaceClick">();
|
||||
// eventCounter.on({
|
||||
// callback: () => {
|
||||
|
||||
// },
|
||||
// count: 3,
|
||||
// name: "emptySpaceClick",
|
||||
// });
|
||||
// return eventCounter;
|
||||
// }, []);
|
||||
const isItMobileDevice = useMemo(
|
||||
() =>
|
||||
typeof window !== "undefined" ? isItMobile(navigator.userAgent) : "",
|
||||
[]
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
sendApi("/values")
|
||||
.then((v: Values) => {
|
||||
setValues({
|
||||
buses: v.buses.map((v) => ({
|
||||
gain: v.gain,
|
||||
muted: v.muteState,
|
||||
})),
|
||||
strips: v.strips.map((v) => ({
|
||||
gain: v.gain,
|
||||
muted: v.muteState,
|
||||
outputBuses: v.outputBuses,
|
||||
})),
|
||||
});
|
||||
setIsLoaded(true);
|
||||
})
|
||||
.catch((e) => console.error(e));
|
||||
setSnackBarVisibility(!isSnackBarHidden);
|
||||
setWidth(window.innerWidth);
|
||||
}, []);
|
||||
// useEffect(() => {
|
||||
// const values = {} as Record<
|
||||
// string,
|
||||
// [number, "bigger" | "smaller" | "equal"]
|
||||
// >;
|
||||
// type valuesKey = keyof typeof breakPoints;
|
||||
// for (const key in breakPoints) {
|
||||
// if (Object.prototype.hasOwnProperty.call(breakPoints, key)) {
|
||||
// const breakPointWidth = breakPoints[key as keyof typeof breakPoints];
|
||||
// values[key as valuesKey] = [
|
||||
// breakPointWidth,
|
||||
// breakPointWidth === width
|
||||
// ? "equal"
|
||||
// : breakPointWidth > width
|
||||
// ? "bigger"
|
||||
// : "smaller",
|
||||
// ];
|
||||
// }
|
||||
// }
|
||||
// console.clear();
|
||||
// console.log(
|
||||
// width,
|
||||
// `Closest: ${
|
||||
// Object.entries(breakPoints).reduce((acc, i) => {
|
||||
// const equation =
|
||||
// Math.abs(i[1] - width) <= Math.abs(acc[1] - width) ? i : acc;
|
||||
// return equation;
|
||||
// })[0]
|
||||
// }`
|
||||
// );
|
||||
// console.table(values);
|
||||
// }, [width]);
|
||||
const strips = { virtual: 3, physical: 5 };
|
||||
const buses = { virtual: 3, physical: 5 };
|
||||
const amountOfStrips = strips.physical + strips.virtual;
|
||||
const amountOfBuses = buses.physical + buses.virtual;
|
||||
const virtualInputNames = useMemo(() => ["VAIO", "AUX", "VAIO3"], []);
|
||||
if (typeof document !== "undefined") {
|
||||
document.onclick = () => eventCounter.emit("emptySpaceClick");
|
||||
// document.onclick = () => eventCounter.emit("emptySpaceClick");
|
||||
window.onresize = () => {
|
||||
setWidth(window.innerWidth);
|
||||
};
|
||||
|
@ -160,60 +185,74 @@ export default function Home() {
|
|||
maxWidth={"xl"}
|
||||
style={{ height: "100%", paddingInline: "10px" }}
|
||||
>
|
||||
<div>
|
||||
<CssBaseline />
|
||||
<Typography variant="h5">Inputs</Typography>
|
||||
<Grid
|
||||
container
|
||||
// spacing={width ? 0 : 1}
|
||||
sx={{ paddingBlockStart: "15px" }}
|
||||
display={"flex"}
|
||||
alignItems={"center"}
|
||||
justifyContent={"space-evenly"}
|
||||
columns={{ xs: 8, sm: 12, md: 12, lg: 14 }}
|
||||
>
|
||||
{[...Array(amountOfStrips)].map((_v, stripId) => {
|
||||
const isPhysical = stripId < strips.physical;
|
||||
const name = `${isPhysical ? "A" : "B"}${
|
||||
isPhysical ? stripId + 1 : stripId + 1 - strips.physical
|
||||
}`;
|
||||
return (
|
||||
<React.Fragment key={name}>
|
||||
<Grid
|
||||
lgOffset={stripId === strips.physical ? 2 : 0}
|
||||
mdOffset={
|
||||
stripId === strips.physical ? (width > 1098 ? 0.8 : 0) : 0
|
||||
}
|
||||
sx={{ minWidth: "fit-content" }}
|
||||
>
|
||||
{/* <Typography variant="overline">{`Strip #${
|
||||
stripId + 1
|
||||
}`}</Typography> */}
|
||||
<Strip
|
||||
onChange={(ev) => onEvent(ev, stripId)}
|
||||
physicalBuses={buses.physical}
|
||||
virtualBuses={buses.virtual}
|
||||
width={width}
|
||||
name={
|
||||
isPhysical
|
||||
? `#${stripId + 1}`
|
||||
: virtualInputNames[stripId - strips.physical]
|
||||
<CssBaseline />
|
||||
{isLoaded ? (
|
||||
<div>
|
||||
<Typography variant="h5">Inputs</Typography>
|
||||
<Grid
|
||||
container
|
||||
// spacing={width ? 0 : 1}
|
||||
sx={{ paddingBlockStart: "15px" }}
|
||||
display={"flex"}
|
||||
alignItems={"center"}
|
||||
justifyContent={"space-evenly"}
|
||||
columns={{ xs: 8, sm: 12, md: 12, lg: 14 }}
|
||||
>
|
||||
{[...Array(amountOfStrips)].map((_v, stripId) => {
|
||||
const isPhysical = stripId < strips.physical;
|
||||
const name = `${isPhysical ? "A" : "B"}${
|
||||
isPhysical ? stripId + 1 : stripId + 1 - strips.physical
|
||||
}`;
|
||||
return (
|
||||
<React.Fragment key={name}>
|
||||
<Grid
|
||||
lgOffset={stripId === strips.physical ? 2 : 0}
|
||||
mdOffset={
|
||||
stripId === strips.physical
|
||||
? width > 1098
|
||||
? 0.8
|
||||
: 0
|
||||
: 0
|
||||
}
|
||||
/>
|
||||
</Grid>
|
||||
</React.Fragment>
|
||||
);
|
||||
})}
|
||||
</Grid>
|
||||
<Typography variant="h5">Outputs</Typography>
|
||||
<BusesList
|
||||
onChange={onEvent}
|
||||
stackProps={{ sx: { paddingBlockStart: "10px" } }}
|
||||
width={width}
|
||||
physical={buses.physical}
|
||||
virtual={buses.virtual}
|
||||
/>
|
||||
</div>
|
||||
sx={{ minWidth: "fit-content" }}
|
||||
>
|
||||
<Strip
|
||||
onChange={(ev) => onEvent(ev, stripId)}
|
||||
physicalBuses={buses.physical}
|
||||
values={values?.strips[stripId]}
|
||||
virtualBuses={buses.virtual}
|
||||
width={width}
|
||||
name={
|
||||
isPhysical
|
||||
? `#${stripId + 1}`
|
||||
: virtualInputNames[stripId - strips.physical]
|
||||
}
|
||||
/>
|
||||
</Grid>
|
||||
</React.Fragment>
|
||||
);
|
||||
})}
|
||||
</Grid>
|
||||
<Typography variant="h5">Outputs</Typography>
|
||||
<BusesList
|
||||
onChange={onEvent}
|
||||
stackProps={{ sx: { paddingBlockStart: "10px" } }}
|
||||
width={width}
|
||||
values={[...Array(amountOfBuses)].map(
|
||||
(_v, busId) => values?.buses[busId]
|
||||
)}
|
||||
physical={buses.physical}
|
||||
virtual={buses.virtual}
|
||||
/>
|
||||
</div>
|
||||
) : (
|
||||
<Backdrop
|
||||
sx={(theme) => ({ color: "#fff", zIndex: theme.zIndex.drawer + 1 })}
|
||||
open={!isLoaded}
|
||||
>
|
||||
<CircularProgress color="inherit" />
|
||||
</Backdrop>
|
||||
)}
|
||||
</Container>
|
||||
<Snackbar
|
||||
anchorOrigin={{ horizontal: "center", vertical: "top" }}
|
||||
|
@ -230,16 +269,36 @@ export default function Home() {
|
|||
on any gain slider to reset it's value to 0 dB
|
||||
<br />
|
||||
</Typography>
|
||||
<Typography component={"span"}>
|
||||
{/* <Typography component={"span"}>
|
||||
<Typography variant={"button"} fontWeight={500}>
|
||||
Triple {isItMobileDevice ? "tap" : "click"}
|
||||
</Typography>{" "}
|
||||
on empty space for toggle fullscreen
|
||||
</Typography>
|
||||
</Typography> */}
|
||||
</>
|
||||
}
|
||||
action={snackBarActionButton}
|
||||
/>
|
||||
<Fab
|
||||
size="medium"
|
||||
sx={{
|
||||
position: "absolute",
|
||||
bottom: 15,
|
||||
right: 15,
|
||||
}}
|
||||
color="secondary"
|
||||
onClick={() => {
|
||||
if (document.fullscreenElement === null)
|
||||
document.documentElement.requestFullscreen();
|
||||
else document.exitFullscreen();
|
||||
}}
|
||||
>
|
||||
{document.fullscreenElement === null ? (
|
||||
<FullscreenIcon />
|
||||
) : (
|
||||
<FullscreenExit />
|
||||
)}
|
||||
</Fab>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -8,10 +8,9 @@ export function getComponentState<
|
|||
type InitialValuesType = Omit<State, StateDefaultValueException>;
|
||||
// const { initialValues } = props;
|
||||
const getValue = (name: keyof InitialValuesType) => {
|
||||
if (initialValues === undefined) return defaultValues[name];
|
||||
return initialValues[name] !== undefined
|
||||
? defaultValues[name]
|
||||
: initialValues[name];
|
||||
if (initialValues === undefined || initialValues[name] === undefined)
|
||||
return defaultValues[name];
|
||||
return initialValues[name];
|
||||
};
|
||||
const state = {
|
||||
...(Object.fromEntries(
|
||||
|
|
Loading…
Reference in New Issue
Block a user