diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 8c2ef7e..1dde597 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -14,6 +14,7 @@ "bootstrap": "^5.3.0", "react": "^18.2.0", "react-bootstrap": "^2.8.0", + "react-bootstrap-range-slider": "^3.0.8", "react-dom": "^18.2.0", "react-scripts": "5.0.1", "socket.io-client": "^4.7.1", @@ -14403,6 +14404,20 @@ } } }, + "node_modules/react-bootstrap-range-slider": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/react-bootstrap-range-slider/-/react-bootstrap-range-slider-3.0.8.tgz", + "integrity": "sha512-FpDd1J1BW23jNN3fXmpy5nNDJ3PwMZ2/0dNse9RORwQ/z2rmpMQp/g6iNRpW6SjQkLKyGeNHyctK6dP+3zUXQA==", + "dependencies": { + "classnames": "^2.3.1", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": ">=17.0.0", + "react-bootstrap": ">=1.0.0", + "react-dom": ">=17.0.0" + } + }, "node_modules/react-dev-utils": { "version": "12.0.1", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", @@ -16459,16 +16474,16 @@ } }, "node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=14.17" + "node": ">=4.2.0" } }, "node_modules/unbox-primitive": { diff --git a/frontend/package.json b/frontend/package.json index 4eb8a39..7e46a5b 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -9,6 +9,7 @@ "bootstrap": "^5.3.0", "react": "^18.2.0", "react-bootstrap": "^2.8.0", + "react-bootstrap-range-slider": "^3.0.8", "react-dom": "^18.2.0", "react-scripts": "5.0.1", "socket.io-client": "^4.7.1", diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index a65a802..32187fa 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -3,8 +3,16 @@ import { Component, ComponentLabel } from './components/component'; import { ButtonComponent } from './components/ButtonComponent'; import { socket } from './socket'; import { NumberComponent } from './components/NumberComponent'; +import { SliderComponent } from './components/SliderComponent'; -type AttributeType = 'str' | 'bool' | 'float' | 'int' | 'method' | 'Subclass'; +type AttributeType = + | 'str' + | 'bool' + | 'float' + | 'int' + | 'method' + | 'Subclass' + | 'NumberSlider'; type ValueType = boolean | string | number | object; interface Attribute { @@ -145,6 +153,21 @@ const App = () => { /> ); + } else if (value.type === 'NumberSlider') { + return ( +
Render count: {renderCount.current}
+