Compare commits
	
		
			No commits in common. "03c094214b0b078c293b6b250aca7b5d4714fee6" and "ec363eaefd7fce53dcaddba5d56f768a478bc905" have entirely different histories.
		
	
	
		
			03c094214b
			...
			ec363eaefd
		
	
		
					 8 changed files with 58 additions and 692 deletions
				
			
		|  | @ -6,10 +6,9 @@ SCRP=$(shell chicken-install -repository) | ||||||
| CSC=CHICKEN_REPOSITORY_PATH=../eggs:$(SCRP) csc | CSC=CHICKEN_REPOSITORY_PATH=../eggs:$(SCRP) csc | ||||||
| 
 | 
 | ||||||
| BRMINV_SOURCES=brminv.scm frontend.import.scm command-line.import.scm	\
 | BRMINV_SOURCES=brminv.scm frontend.import.scm command-line.import.scm	\
 | ||||||
| 	util-proc.import.scm duck.import.scm texts.import.scm		\
 | 	util-proc.import.scm duck.import.scm texts.import.scm | ||||||
| 	api-servlets.import.scm |  | ||||||
| BRMINV_OBJS=brminv.o frontend.o command-line.o util-proc.o duck.o	\
 | BRMINV_OBJS=brminv.o frontend.o command-line.o util-proc.o duck.o	\
 | ||||||
| 	texts.o api-servlets.o bar-db.o | 	texts.o | ||||||
| 
 | 
 | ||||||
| %.o: %.scm | %.o: %.scm | ||||||
| 	$(CSC) -c -static $< | 	$(CSC) -c -static $< | ||||||
|  | @ -47,13 +46,3 @@ TEXTS-SOURCES=texts.scm | ||||||
| 
 | 
 | ||||||
| texts.o: texts.import.scm | texts.o: texts.import.scm | ||||||
| texts.import.scm: $(TEXTS-SOURCES) | texts.import.scm: $(TEXTS-SOURCES) | ||||||
| 
 |  | ||||||
| API-SERVLETS-SOURCES=api-servlets.scm bar-db.import.scm |  | ||||||
| 
 |  | ||||||
| api-servlets.o: api-servlets.import.scm |  | ||||||
| api-servlets.import.scm: $(API-SERVLETS-SOURCES) |  | ||||||
| 
 |  | ||||||
| BAR-DB-SOURCES=bar-db.scm |  | ||||||
| 
 |  | ||||||
| bar-db.o: bar-db.import.scm |  | ||||||
| bar-db.import.scm: $(BAR-DB-SOURCES) |  | ||||||
|  |  | ||||||
|  | @ -1,90 +0,0 @@ | ||||||
| ;; |  | ||||||
| ;; api-servlets.scm |  | ||||||
| ;; |  | ||||||
| ;; All servlets in one place. |  | ||||||
| ;; |  | ||||||
| ;; ISC License |  | ||||||
| ;; |  | ||||||
| ;; Copyright 2023-2025 Brmlab, z.s. |  | ||||||
| ;; Dominik Pantůček <dominik.pantucek@trustica.cz> |  | ||||||
| ;; |  | ||||||
| ;; Permission to use, copy, modify, and/or distribute this software |  | ||||||
| ;; for any purpose with or without fee is hereby granted, provided |  | ||||||
| ;; that the above copyright notice and this permission notice appear |  | ||||||
| ;; in all copies. |  | ||||||
| ;;  |  | ||||||
| ;; THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL |  | ||||||
| ;; WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED |  | ||||||
| ;; WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE |  | ||||||
| ;; AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR |  | ||||||
| ;; CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS |  | ||||||
| ;; OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, |  | ||||||
| ;; NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN |  | ||||||
| ;; CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |  | ||||||
| ;; |  | ||||||
| 
 |  | ||||||
| (declare (unit api-servlets)) |  | ||||||
| 
 |  | ||||||
| (module |  | ||||||
|     api-servlets |  | ||||||
|     ( |  | ||||||
|      api-dispatch |  | ||||||
|      ) |  | ||||||
| 
 |  | ||||||
|   (import scheme |  | ||||||
| 	  spiffy |  | ||||||
| 	  (chicken format)) |  | ||||||
| 
 |  | ||||||
|   (define-syntax try-match-lambda1 |  | ||||||
|     (syntax-rules () |  | ||||||
|       ((_ pp plst ((arg ->conv) . args) body) |  | ||||||
|        (let ((as (->conv pp))) |  | ||||||
| 	 (cond (as |  | ||||||
| 		(let ((arg as)) |  | ||||||
| 		  (try-match-lambda0 plst args body))) |  | ||||||
| 	       (else |  | ||||||
| 		#f)))) |  | ||||||
|       ((_ pp plst (lit . args) body) |  | ||||||
|        (if (equal? pp lit) |  | ||||||
| 	   (try-match-lambda0 plst args body) |  | ||||||
| 	   #f)))) |  | ||||||
| 
 |  | ||||||
|   (define-syntax try-match-lambda0 |  | ||||||
|     (syntax-rules () |  | ||||||
|       ((_ plst () (expr ...)) |  | ||||||
|        (let () |  | ||||||
| 	 expr ... |  | ||||||
| 	 #t)) |  | ||||||
|       ((_ plst (arg . args) body) |  | ||||||
|        (cond ((null? plst) |  | ||||||
| 	      #f) |  | ||||||
| 	     (else |  | ||||||
| 	      (let ((pp (car plst))) |  | ||||||
| 		(try-match-lambda1 pp (cdr plst) (arg . args) body))))))) |  | ||||||
| 
 |  | ||||||
|   (define-syntax try-match-lambda |  | ||||||
|     (syntax-rules () |  | ||||||
|       ((_ args . body) |  | ||||||
|        (lambda (plst) |  | ||||||
| 	 (try-match-lambda0 plst args body))))) |  | ||||||
| 
 |  | ||||||
|   (define-syntax define-try-match |  | ||||||
|     (syntax-rules () |  | ||||||
|       ((_ (name . args) . body) |  | ||||||
|        (define name (try-match-lambda args . body))))) |  | ||||||
| 
 |  | ||||||
|   (define-try-match (account-barcode-info "barcode" (barcode string->number)) |  | ||||||
|     (send-response #:body (format "API call [barcode] ~A" barcode))) |  | ||||||
| 
 |  | ||||||
|   (define api-servlets |  | ||||||
|     (list account-barcode-info)) |  | ||||||
| 
 |  | ||||||
|   (define (api-dispatch plst) |  | ||||||
|     (let loop ((as api-servlets)) |  | ||||||
|       (if (null? as) |  | ||||||
| 	  #f |  | ||||||
| 	  (if ((car as) plst) |  | ||||||
| 	      #t |  | ||||||
| 	      (loop (cdr as)))))) |  | ||||||
| 
 |  | ||||||
|   ) |  | ||||||
|  | @ -1,48 +0,0 @@ | ||||||
| ;; |  | ||||||
| ;; bar-db.scm |  | ||||||
| ;; |  | ||||||
| ;; Bar database queries. |  | ||||||
| ;; |  | ||||||
| ;; ISC License |  | ||||||
| ;; |  | ||||||
| ;; Copyright 2023-2025 Brmlab, z.s. |  | ||||||
| ;; Dominik Pantůček <dominik.pantucek@trustica.cz> |  | ||||||
| ;; |  | ||||||
| ;; Permission to use, copy, modify, and/or distribute this software |  | ||||||
| ;; for any purpose with or without fee is hereby granted, provided |  | ||||||
| ;; that the above copyright notice and this permission notice appear |  | ||||||
| ;; in all copies. |  | ||||||
| ;;  |  | ||||||
| ;; THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL |  | ||||||
| ;; WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED |  | ||||||
| ;; WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE |  | ||||||
| ;; AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR |  | ||||||
| ;; CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS |  | ||||||
| ;; OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, |  | ||||||
| ;; NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN |  | ||||||
| ;; CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |  | ||||||
| ;; |  | ||||||
| 
 |  | ||||||
| (declare (unit bar-db)) |  | ||||||
| 
 |  | ||||||
| (module |  | ||||||
|     bar-db |  | ||||||
|     ( |  | ||||||
|      bar-db-init! |  | ||||||
|      ) |  | ||||||
| 
 |  | ||||||
|   (import scheme |  | ||||||
| 	  (chicken base) |  | ||||||
| 	  postgresql) |  | ||||||
| 
 |  | ||||||
|   (define bar-db-conn (make-parameter #f)) |  | ||||||
| 
 |  | ||||||
|   (define (bar-db-init! name host user pass) |  | ||||||
|     (bar-db-conn |  | ||||||
|      (connect |  | ||||||
|       `((dbname . ,name) |  | ||||||
| 	(host . ,host) |  | ||||||
| 	(user . ,user) |  | ||||||
| 	(password . ,pass))))) |  | ||||||
| 
 |  | ||||||
|   ) |  | ||||||
|  | @ -32,8 +32,7 @@ | ||||||
| 	intarweb | 	intarweb | ||||||
| 	uri-common | 	uri-common | ||||||
| 	(chicken string) | 	(chicken string) | ||||||
| 	api-servlets | 	postgresql) | ||||||
| 	bar-db) |  | ||||||
| 
 | 
 | ||||||
| (define -port- (make-parameter #f)) | (define -port- (make-parameter #f)) | ||||||
| (define -certificate- (make-parameter #f)) | (define -certificate- (make-parameter #f)) | ||||||
|  | @ -101,13 +100,20 @@ | ||||||
| (when (and (-user-) (-group-)) | (when (and (-user-) (-group-)) | ||||||
|   (switch-user/group (-user-) (-group-))) |   (switch-user/group (-user-) (-group-))) | ||||||
| 
 | 
 | ||||||
| (bar-db-init! (-db-name-) (-db-host-) (-db-user-) (-db-pass-)) | (define dbconn | ||||||
|  |   (connect | ||||||
|  |    `((dbname . ,(-db-name-)) | ||||||
|  |      (host . ,(-db-host-)) | ||||||
|  |      (user . ,(-db-user-)) | ||||||
|  |      (password . ,(-db-pass-))))) | ||||||
|  | (print dbconn) | ||||||
| 
 | 
 | ||||||
| (define (handle-api-calls) | (define (handle-api-calls) | ||||||
|   (define plst (cdr (uri-path (request-uri (current-request))))) |   (define plst (cdr (uri-path (request-uri (current-request))))) | ||||||
|   (cond ((and (not (null? plst)) |   (cond ((and (not (null? plst)) | ||||||
| 	      (equal? (car plst) "api")) | 	      (equal? (car plst) "api")) | ||||||
| 	 (api-dispatch (cdr plst))) | 	 (send-response #:body "API call") | ||||||
|  | 	 #t) | ||||||
| 	(else | 	(else | ||||||
| 	 #f))) | 	 #f))) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										506
									
								
								frontend/package-lock.json
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										506
									
								
								frontend/package-lock.json
									
										
									
										generated
									
									
									
								
							|  | @ -8,10 +8,8 @@ | ||||||
|       "name": "frontend", |       "name": "frontend", | ||||||
|       "version": "0.0.0", |       "version": "0.0.0", | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "bootstrap": "^5.3.5", |  | ||||||
|         "qr-scanner": "^1.4.2", |         "qr-scanner": "^1.4.2", | ||||||
|         "react": "^19.0.0", |         "react": "^19.0.0", | ||||||
|         "react-bootstrap": "^2.10.9", |  | ||||||
|         "react-dom": "^19.0.0", |         "react-dom": "^19.0.0", | ||||||
|         "react-hot-toast": "^2.5.2", |         "react-hot-toast": "^2.5.2", | ||||||
|         "react-qr-barcode-scanner": "^2.0.0" |         "react-qr-barcode-scanner": "^2.0.0" | ||||||
|  | @ -250,17 +248,6 @@ | ||||||
|         "@babel/core": "^7.0.0-0" |         "@babel/core": "^7.0.0-0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/@babel/runtime": { |  | ||||||
|       "version": "7.27.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", |  | ||||||
|       "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", |  | ||||||
|       "dependencies": { |  | ||||||
|         "regenerator-runtime": "^0.14.0" |  | ||||||
|       }, |  | ||||||
|       "engines": { |  | ||||||
|         "node": ">=6.9.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "node_modules/@babel/template": { |     "node_modules/@babel/template": { | ||||||
|       "version": "7.27.0", |       "version": "7.27.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", |       "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", | ||||||
|  | @ -964,79 +951,6 @@ | ||||||
|         "@jridgewell/sourcemap-codec": "^1.4.14" |         "@jridgewell/sourcemap-codec": "^1.4.14" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/@popperjs/core": { |  | ||||||
|       "version": "2.11.8", |  | ||||||
|       "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", |  | ||||||
|       "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", |  | ||||||
|       "funding": { |  | ||||||
|         "type": "opencollective", |  | ||||||
|         "url": "https://opencollective.com/popperjs" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "node_modules/@react-aria/ssr": { |  | ||||||
|       "version": "3.9.7", |  | ||||||
|       "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.7.tgz", |  | ||||||
|       "integrity": "sha512-GQygZaGlmYjmYM+tiNBA5C6acmiDWF52Nqd40bBp0Znk4M4hP+LTmI0lpI1BuKMw45T8RIhrAsICIfKwZvi2Gg==", |  | ||||||
|       "dependencies": { |  | ||||||
|         "@swc/helpers": "^0.5.0" |  | ||||||
|       }, |  | ||||||
|       "engines": { |  | ||||||
|         "node": ">= 12" |  | ||||||
|       }, |  | ||||||
|       "peerDependencies": { |  | ||||||
|         "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "node_modules/@restart/hooks": { |  | ||||||
|       "version": "0.4.16", |  | ||||||
|       "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.16.tgz", |  | ||||||
|       "integrity": "sha512-f7aCv7c+nU/3mF7NWLtVVr0Ra80RqsO89hO72r+Y/nvQr5+q0UFGkocElTH6MJApvReVh6JHUFYn2cw1WdHF3w==", |  | ||||||
|       "dependencies": { |  | ||||||
|         "dequal": "^2.0.3" |  | ||||||
|       }, |  | ||||||
|       "peerDependencies": { |  | ||||||
|         "react": ">=16.8.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "node_modules/@restart/ui": { |  | ||||||
|       "version": "1.9.4", |  | ||||||
|       "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.9.4.tgz", |  | ||||||
|       "integrity": "sha512-N4C7haUc3vn4LTwVUPlkJN8Ach/+yIMvRuTVIhjilNHqegY60SGLrzud6errOMNJwSnmYFnt1J0H/k8FE3A4KA==", |  | ||||||
|       "dependencies": { |  | ||||||
|         "@babel/runtime": "^7.26.0", |  | ||||||
|         "@popperjs/core": "^2.11.8", |  | ||||||
|         "@react-aria/ssr": "^3.5.0", |  | ||||||
|         "@restart/hooks": "^0.5.0", |  | ||||||
|         "@types/warning": "^3.0.3", |  | ||||||
|         "dequal": "^2.0.3", |  | ||||||
|         "dom-helpers": "^5.2.0", |  | ||||||
|         "uncontrollable": "^8.0.4", |  | ||||||
|         "warning": "^4.0.3" |  | ||||||
|       }, |  | ||||||
|       "peerDependencies": { |  | ||||||
|         "react": ">=16.14.0", |  | ||||||
|         "react-dom": ">=16.14.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "node_modules/@restart/ui/node_modules/@restart/hooks": { |  | ||||||
|       "version": "0.5.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.5.1.tgz", |  | ||||||
|       "integrity": "sha512-EMoH04NHS1pbn07iLTjIjgttuqb7qu4+/EyhAx27MHpoENcB2ZdSsLTNxmKD+WEPnZigo62Qc8zjGnNxoSE/5Q==", |  | ||||||
|       "dependencies": { |  | ||||||
|         "dequal": "^2.0.3" |  | ||||||
|       }, |  | ||||||
|       "peerDependencies": { |  | ||||||
|         "react": ">=16.8.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "node_modules/@restart/ui/node_modules/uncontrollable": { |  | ||||||
|       "version": "8.0.4", |  | ||||||
|       "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-8.0.4.tgz", |  | ||||||
|       "integrity": "sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ==", |  | ||||||
|       "peerDependencies": { |  | ||||||
|         "react": ">=16.14.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "node_modules/@rollup/rollup-android-arm-eabi": { |     "node_modules/@rollup/rollup-android-arm-eabi": { | ||||||
|       "version": "4.38.0", |       "version": "4.38.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.38.0.tgz", |       "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.38.0.tgz", | ||||||
|  | @ -1297,14 +1211,6 @@ | ||||||
|         "win32" |         "win32" | ||||||
|       ] |       ] | ||||||
|     }, |     }, | ||||||
|     "node_modules/@swc/helpers": { |  | ||||||
|       "version": "0.5.15", |  | ||||||
|       "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", |  | ||||||
|       "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", |  | ||||||
|       "dependencies": { |  | ||||||
|         "tslib": "^2.8.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "node_modules/@types/babel__core": { |     "node_modules/@types/babel__core": { | ||||||
|       "version": "7.20.5", |       "version": "7.20.5", | ||||||
|       "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", |       "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", | ||||||
|  | @ -1372,6 +1278,7 @@ | ||||||
|       "version": "19.0.12", |       "version": "19.0.12", | ||||||
|       "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.12.tgz", |       "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.12.tgz", | ||||||
|       "integrity": "sha512-V6Ar115dBDrjbtXSrS+/Oruobc+qVbbUxDFC1RSbRqLt5SYvxxyIDrSC85RWml54g+jfNeEMZhEj7wW07ONQhA==", |       "integrity": "sha512-V6Ar115dBDrjbtXSrS+/Oruobc+qVbbUxDFC1RSbRqLt5SYvxxyIDrSC85RWml54g+jfNeEMZhEj7wW07ONQhA==", | ||||||
|  |       "dev": true, | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "csstype": "^3.0.2" |         "csstype": "^3.0.2" | ||||||
|       } |       } | ||||||
|  | @ -1385,19 +1292,6 @@ | ||||||
|         "@types/react": "^19.0.0" |         "@types/react": "^19.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/@types/react-transition-group": { |  | ||||||
|       "version": "4.4.12", |  | ||||||
|       "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz", |  | ||||||
|       "integrity": "sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==", |  | ||||||
|       "peerDependencies": { |  | ||||||
|         "@types/react": "*" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "node_modules/@types/warning": { |  | ||||||
|       "version": "3.0.3", |  | ||||||
|       "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.3.tgz", |  | ||||||
|       "integrity": "sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q==" |  | ||||||
|     }, |  | ||||||
|     "node_modules/@vitejs/plugin-react": { |     "node_modules/@vitejs/plugin-react": { | ||||||
|       "version": "4.3.4", |       "version": "4.3.4", | ||||||
|       "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", |       "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", | ||||||
|  | @ -1501,24 +1395,6 @@ | ||||||
|       "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", |       "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "node_modules/bootstrap": { |  | ||||||
|       "version": "5.3.5", |  | ||||||
|       "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.5.tgz", |  | ||||||
|       "integrity": "sha512-ct1CHKtiobRimyGzmsSldEtM03E8fcEX4Tb3dGXz1V8faRwM50+vfHwTzOxB3IlKO7m+9vTH3s/3C6T2EAPeTA==", |  | ||||||
|       "funding": [ |  | ||||||
|         { |  | ||||||
|           "type": "github", |  | ||||||
|           "url": "https://github.com/sponsors/twbs" |  | ||||||
|         }, |  | ||||||
|         { |  | ||||||
|           "type": "opencollective", |  | ||||||
|           "url": "https://opencollective.com/bootstrap" |  | ||||||
|         } |  | ||||||
|       ], |  | ||||||
|       "peerDependencies": { |  | ||||||
|         "@popperjs/core": "^2.11.8" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "node_modules/brace-expansion": { |     "node_modules/brace-expansion": { | ||||||
|       "version": "1.1.11", |       "version": "1.1.11", | ||||||
|       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", |       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", | ||||||
|  | @ -1606,11 +1482,6 @@ | ||||||
|         "url": "https://github.com/chalk/chalk?sponsor=1" |         "url": "https://github.com/chalk/chalk?sponsor=1" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/classnames": { |  | ||||||
|       "version": "2.5.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", |  | ||||||
|       "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" |  | ||||||
|     }, |  | ||||||
|     "node_modules/color-convert": { |     "node_modules/color-convert": { | ||||||
|       "version": "2.0.1", |       "version": "2.0.1", | ||||||
|       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", |       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", | ||||||
|  | @ -1683,23 +1554,6 @@ | ||||||
|       "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", |       "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "node_modules/dequal": { |  | ||||||
|       "version": "2.0.3", |  | ||||||
|       "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", |  | ||||||
|       "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", |  | ||||||
|       "engines": { |  | ||||||
|         "node": ">=6" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "node_modules/dom-helpers": { |  | ||||||
|       "version": "5.2.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", |  | ||||||
|       "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", |  | ||||||
|       "dependencies": { |  | ||||||
|         "@babel/runtime": "^7.8.7", |  | ||||||
|         "csstype": "^3.0.2" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "node_modules/electron-to-chromium": { |     "node_modules/electron-to-chromium": { | ||||||
|       "version": "1.5.128", |       "version": "1.5.128", | ||||||
|       "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.128.tgz", |       "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.128.tgz", | ||||||
|  | @ -2098,14 +1952,6 @@ | ||||||
|         "node": ">=0.8.19" |         "node": ">=0.8.19" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/invariant": { |  | ||||||
|       "version": "2.2.4", |  | ||||||
|       "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", |  | ||||||
|       "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", |  | ||||||
|       "dependencies": { |  | ||||||
|         "loose-envify": "^1.0.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "node_modules/is-extglob": { |     "node_modules/is-extglob": { | ||||||
|       "version": "2.1.1", |       "version": "2.1.1", | ||||||
|       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", |       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", | ||||||
|  | @ -2136,7 +1982,8 @@ | ||||||
|     "node_modules/js-tokens": { |     "node_modules/js-tokens": { | ||||||
|       "version": "4.0.0", |       "version": "4.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", |       "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", | ||||||
|       "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" |       "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", | ||||||
|  |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "node_modules/js-yaml": { |     "node_modules/js-yaml": { | ||||||
|       "version": "4.1.0", |       "version": "4.1.0", | ||||||
|  | @ -2235,17 +2082,6 @@ | ||||||
|       "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", |       "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "node_modules/loose-envify": { |  | ||||||
|       "version": "1.4.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", |  | ||||||
|       "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", |  | ||||||
|       "dependencies": { |  | ||||||
|         "js-tokens": "^3.0.0 || ^4.0.0" |  | ||||||
|       }, |  | ||||||
|       "bin": { |  | ||||||
|         "loose-envify": "cli.js" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "node_modules/lru-cache": { |     "node_modules/lru-cache": { | ||||||
|       "version": "5.1.1", |       "version": "5.1.1", | ||||||
|       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", |       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", | ||||||
|  | @ -2303,14 +2139,6 @@ | ||||||
|       "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", |       "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "node_modules/object-assign": { |  | ||||||
|       "version": "4.1.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", |  | ||||||
|       "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", |  | ||||||
|       "engines": { |  | ||||||
|         "node": ">=0.10.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "node_modules/optionator": { |     "node_modules/optionator": { | ||||||
|       "version": "0.9.4", |       "version": "0.9.4", | ||||||
|       "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", |       "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", | ||||||
|  | @ -2431,28 +2259,6 @@ | ||||||
|         "node": ">= 0.8.0" |         "node": ">= 0.8.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/prop-types": { |  | ||||||
|       "version": "15.8.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", |  | ||||||
|       "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", |  | ||||||
|       "dependencies": { |  | ||||||
|         "loose-envify": "^1.4.0", |  | ||||||
|         "object-assign": "^4.1.1", |  | ||||||
|         "react-is": "^16.13.1" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "node_modules/prop-types-extra": { |  | ||||||
|       "version": "1.1.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", |  | ||||||
|       "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", |  | ||||||
|       "dependencies": { |  | ||||||
|         "react-is": "^16.3.2", |  | ||||||
|         "warning": "^4.0.0" |  | ||||||
|       }, |  | ||||||
|       "peerDependencies": { |  | ||||||
|         "react": ">=0.14.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "node_modules/punycode": { |     "node_modules/punycode": { | ||||||
|       "version": "2.3.1", |       "version": "2.3.1", | ||||||
|       "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", |       "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", | ||||||
|  | @ -2478,36 +2284,6 @@ | ||||||
|         "node": ">=0.10.0" |         "node": ">=0.10.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/react-bootstrap": { |  | ||||||
|       "version": "2.10.9", |  | ||||||
|       "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.10.9.tgz", |  | ||||||
|       "integrity": "sha512-TJUCuHcxdgYpOqeWmRApM/Dy0+hVsxNRFvq2aRFQuxhNi/+ivOxC5OdWIeHS3agxvzJ4Ev4nDw2ZdBl9ymd/JQ==", |  | ||||||
|       "dependencies": { |  | ||||||
|         "@babel/runtime": "^7.24.7", |  | ||||||
|         "@restart/hooks": "^0.4.9", |  | ||||||
|         "@restart/ui": "^1.9.4", |  | ||||||
|         "@types/prop-types": "^15.7.12", |  | ||||||
|         "@types/react-transition-group": "^4.4.6", |  | ||||||
|         "classnames": "^2.3.2", |  | ||||||
|         "dom-helpers": "^5.2.1", |  | ||||||
|         "invariant": "^2.2.4", |  | ||||||
|         "prop-types": "^15.8.1", |  | ||||||
|         "prop-types-extra": "^1.1.0", |  | ||||||
|         "react-transition-group": "^4.4.5", |  | ||||||
|         "uncontrollable": "^7.2.1", |  | ||||||
|         "warning": "^4.0.3" |  | ||||||
|       }, |  | ||||||
|       "peerDependencies": { |  | ||||||
|         "@types/react": ">=16.14.8", |  | ||||||
|         "react": ">=16.14.0", |  | ||||||
|         "react-dom": ">=16.14.0" |  | ||||||
|       }, |  | ||||||
|       "peerDependenciesMeta": { |  | ||||||
|         "@types/react": { |  | ||||||
|           "optional": true |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "node_modules/react-dom": { |     "node_modules/react-dom": { | ||||||
|       "version": "19.1.0", |       "version": "19.1.0", | ||||||
|       "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", |       "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", | ||||||
|  | @ -2535,16 +2311,6 @@ | ||||||
|         "react-dom": ">=16" |         "react-dom": ">=16" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/react-is": { |  | ||||||
|       "version": "16.13.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", |  | ||||||
|       "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" |  | ||||||
|     }, |  | ||||||
|     "node_modules/react-lifecycles-compat": { |  | ||||||
|       "version": "3.0.4", |  | ||||||
|       "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", |  | ||||||
|       "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" |  | ||||||
|     }, |  | ||||||
|     "node_modules/react-qr-barcode-scanner": { |     "node_modules/react-qr-barcode-scanner": { | ||||||
|       "version": "2.0.0", |       "version": "2.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/react-qr-barcode-scanner/-/react-qr-barcode-scanner-2.0.0.tgz", |       "resolved": "https://registry.npmjs.org/react-qr-barcode-scanner/-/react-qr-barcode-scanner-2.0.0.tgz", | ||||||
|  | @ -2577,21 +2343,6 @@ | ||||||
|         "node": ">=0.10.0" |         "node": ">=0.10.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/react-transition-group": { |  | ||||||
|       "version": "4.4.5", |  | ||||||
|       "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", |  | ||||||
|       "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", |  | ||||||
|       "dependencies": { |  | ||||||
|         "@babel/runtime": "^7.5.5", |  | ||||||
|         "dom-helpers": "^5.0.1", |  | ||||||
|         "loose-envify": "^1.4.0", |  | ||||||
|         "prop-types": "^15.6.2" |  | ||||||
|       }, |  | ||||||
|       "peerDependencies": { |  | ||||||
|         "react": ">=16.6.0", |  | ||||||
|         "react-dom": ">=16.6.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "node_modules/react-webcam": { |     "node_modules/react-webcam": { | ||||||
|       "version": "7.2.0", |       "version": "7.2.0", | ||||||
|       "resolved": "https://registry.npmjs.org/react-webcam/-/react-webcam-7.2.0.tgz", |       "resolved": "https://registry.npmjs.org/react-webcam/-/react-webcam-7.2.0.tgz", | ||||||
|  | @ -2601,11 +2352,6 @@ | ||||||
|         "react-dom": ">=16.2.0" |         "react-dom": ">=16.2.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/regenerator-runtime": { |  | ||||||
|       "version": "0.14.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", |  | ||||||
|       "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" |  | ||||||
|     }, |  | ||||||
|     "node_modules/resolve-from": { |     "node_modules/resolve-from": { | ||||||
|       "version": "4.0.0", |       "version": "4.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", |       "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", | ||||||
|  | @ -2730,11 +2476,6 @@ | ||||||
|         "node": ">=14.0.0" |         "node": ">=14.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/tslib": { |  | ||||||
|       "version": "2.8.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", |  | ||||||
|       "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" |  | ||||||
|     }, |  | ||||||
|     "node_modules/type-check": { |     "node_modules/type-check": { | ||||||
|       "version": "0.4.0", |       "version": "0.4.0", | ||||||
|       "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", |       "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", | ||||||
|  | @ -2747,20 +2488,6 @@ | ||||||
|         "node": ">= 0.8.0" |         "node": ">= 0.8.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/uncontrollable": { |  | ||||||
|       "version": "7.2.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", |  | ||||||
|       "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", |  | ||||||
|       "dependencies": { |  | ||||||
|         "@babel/runtime": "^7.6.3", |  | ||||||
|         "@types/react": ">=16.9.11", |  | ||||||
|         "invariant": "^2.2.4", |  | ||||||
|         "react-lifecycles-compat": "^3.0.4" |  | ||||||
|       }, |  | ||||||
|       "peerDependencies": { |  | ||||||
|         "react": ">=15.0.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "node_modules/update-browserslist-db": { |     "node_modules/update-browserslist-db": { | ||||||
|       "version": "1.1.3", |       "version": "1.1.3", | ||||||
|       "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", |       "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", | ||||||
|  | @ -2871,14 +2598,6 @@ | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/warning": { |  | ||||||
|       "version": "4.0.3", |  | ||||||
|       "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", |  | ||||||
|       "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", |  | ||||||
|       "dependencies": { |  | ||||||
|         "loose-envify": "^1.0.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "node_modules/which": { |     "node_modules/which": { | ||||||
|       "version": "2.0.2", |       "version": "2.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", |       "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", | ||||||
|  | @ -3081,14 +2800,6 @@ | ||||||
|         "@babel/helper-plugin-utils": "^7.25.9" |         "@babel/helper-plugin-utils": "^7.25.9" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@babel/runtime": { |  | ||||||
|       "version": "7.27.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", |  | ||||||
|       "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", |  | ||||||
|       "requires": { |  | ||||||
|         "regenerator-runtime": "^0.14.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "@babel/template": { |     "@babel/template": { | ||||||
|       "version": "7.27.0", |       "version": "7.27.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", |       "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", | ||||||
|  | @ -3479,59 +3190,6 @@ | ||||||
|         "@jridgewell/sourcemap-codec": "^1.4.14" |         "@jridgewell/sourcemap-codec": "^1.4.14" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@popperjs/core": { |  | ||||||
|       "version": "2.11.8", |  | ||||||
|       "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", |  | ||||||
|       "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==" |  | ||||||
|     }, |  | ||||||
|     "@react-aria/ssr": { |  | ||||||
|       "version": "3.9.7", |  | ||||||
|       "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.7.tgz", |  | ||||||
|       "integrity": "sha512-GQygZaGlmYjmYM+tiNBA5C6acmiDWF52Nqd40bBp0Znk4M4hP+LTmI0lpI1BuKMw45T8RIhrAsICIfKwZvi2Gg==", |  | ||||||
|       "requires": { |  | ||||||
|         "@swc/helpers": "^0.5.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "@restart/hooks": { |  | ||||||
|       "version": "0.4.16", |  | ||||||
|       "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.16.tgz", |  | ||||||
|       "integrity": "sha512-f7aCv7c+nU/3mF7NWLtVVr0Ra80RqsO89hO72r+Y/nvQr5+q0UFGkocElTH6MJApvReVh6JHUFYn2cw1WdHF3w==", |  | ||||||
|       "requires": { |  | ||||||
|         "dequal": "^2.0.3" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "@restart/ui": { |  | ||||||
|       "version": "1.9.4", |  | ||||||
|       "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.9.4.tgz", |  | ||||||
|       "integrity": "sha512-N4C7haUc3vn4LTwVUPlkJN8Ach/+yIMvRuTVIhjilNHqegY60SGLrzud6errOMNJwSnmYFnt1J0H/k8FE3A4KA==", |  | ||||||
|       "requires": { |  | ||||||
|         "@babel/runtime": "^7.26.0", |  | ||||||
|         "@popperjs/core": "^2.11.8", |  | ||||||
|         "@react-aria/ssr": "^3.5.0", |  | ||||||
|         "@restart/hooks": "^0.5.0", |  | ||||||
|         "@types/warning": "^3.0.3", |  | ||||||
|         "dequal": "^2.0.3", |  | ||||||
|         "dom-helpers": "^5.2.0", |  | ||||||
|         "uncontrollable": "^8.0.4", |  | ||||||
|         "warning": "^4.0.3" |  | ||||||
|       }, |  | ||||||
|       "dependencies": { |  | ||||||
|         "@restart/hooks": { |  | ||||||
|           "version": "0.5.1", |  | ||||||
|           "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.5.1.tgz", |  | ||||||
|           "integrity": "sha512-EMoH04NHS1pbn07iLTjIjgttuqb7qu4+/EyhAx27MHpoENcB2ZdSsLTNxmKD+WEPnZigo62Qc8zjGnNxoSE/5Q==", |  | ||||||
|           "requires": { |  | ||||||
|             "dequal": "^2.0.3" |  | ||||||
|           } |  | ||||||
|         }, |  | ||||||
|         "uncontrollable": { |  | ||||||
|           "version": "8.0.4", |  | ||||||
|           "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-8.0.4.tgz", |  | ||||||
|           "integrity": "sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ==", |  | ||||||
|           "requires": {} |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "@rollup/rollup-android-arm-eabi": { |     "@rollup/rollup-android-arm-eabi": { | ||||||
|       "version": "4.38.0", |       "version": "4.38.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.38.0.tgz", |       "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.38.0.tgz", | ||||||
|  | @ -3672,14 +3330,6 @@ | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "optional": true |       "optional": true | ||||||
|     }, |     }, | ||||||
|     "@swc/helpers": { |  | ||||||
|       "version": "0.5.15", |  | ||||||
|       "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", |  | ||||||
|       "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", |  | ||||||
|       "requires": { |  | ||||||
|         "tslib": "^2.8.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "@types/babel__core": { |     "@types/babel__core": { | ||||||
|       "version": "7.20.5", |       "version": "7.20.5", | ||||||
|       "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", |       "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", | ||||||
|  | @ -3747,6 +3397,7 @@ | ||||||
|       "version": "19.0.12", |       "version": "19.0.12", | ||||||
|       "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.12.tgz", |       "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.12.tgz", | ||||||
|       "integrity": "sha512-V6Ar115dBDrjbtXSrS+/Oruobc+qVbbUxDFC1RSbRqLt5SYvxxyIDrSC85RWml54g+jfNeEMZhEj7wW07ONQhA==", |       "integrity": "sha512-V6Ar115dBDrjbtXSrS+/Oruobc+qVbbUxDFC1RSbRqLt5SYvxxyIDrSC85RWml54g+jfNeEMZhEj7wW07ONQhA==", | ||||||
|  |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "csstype": "^3.0.2" |         "csstype": "^3.0.2" | ||||||
|       } |       } | ||||||
|  | @ -3758,17 +3409,6 @@ | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": {} |       "requires": {} | ||||||
|     }, |     }, | ||||||
|     "@types/react-transition-group": { |  | ||||||
|       "version": "4.4.12", |  | ||||||
|       "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz", |  | ||||||
|       "integrity": "sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==", |  | ||||||
|       "requires": {} |  | ||||||
|     }, |  | ||||||
|     "@types/warning": { |  | ||||||
|       "version": "3.0.3", |  | ||||||
|       "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.3.tgz", |  | ||||||
|       "integrity": "sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q==" |  | ||||||
|     }, |  | ||||||
|     "@vitejs/plugin-react": { |     "@vitejs/plugin-react": { | ||||||
|       "version": "4.3.4", |       "version": "4.3.4", | ||||||
|       "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", |       "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", | ||||||
|  | @ -3843,12 +3483,6 @@ | ||||||
|       "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", |       "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "bootstrap": { |  | ||||||
|       "version": "5.3.5", |  | ||||||
|       "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.5.tgz", |  | ||||||
|       "integrity": "sha512-ct1CHKtiobRimyGzmsSldEtM03E8fcEX4Tb3dGXz1V8faRwM50+vfHwTzOxB3IlKO7m+9vTH3s/3C6T2EAPeTA==", |  | ||||||
|       "requires": {} |  | ||||||
|     }, |  | ||||||
|     "brace-expansion": { |     "brace-expansion": { | ||||||
|       "version": "1.1.11", |       "version": "1.1.11", | ||||||
|       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", |       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", | ||||||
|  | @ -3893,11 +3527,6 @@ | ||||||
|         "supports-color": "^7.1.0" |         "supports-color": "^7.1.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "classnames": { |  | ||||||
|       "version": "2.5.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", |  | ||||||
|       "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" |  | ||||||
|     }, |  | ||||||
|     "color-convert": { |     "color-convert": { | ||||||
|       "version": "2.0.1", |       "version": "2.0.1", | ||||||
|       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", |       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", | ||||||
|  | @ -3956,20 +3585,6 @@ | ||||||
|       "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", |       "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "dequal": { |  | ||||||
|       "version": "2.0.3", |  | ||||||
|       "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", |  | ||||||
|       "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" |  | ||||||
|     }, |  | ||||||
|     "dom-helpers": { |  | ||||||
|       "version": "5.2.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", |  | ||||||
|       "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", |  | ||||||
|       "requires": { |  | ||||||
|         "@babel/runtime": "^7.8.7", |  | ||||||
|         "csstype": "^3.0.2" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "electron-to-chromium": { |     "electron-to-chromium": { | ||||||
|       "version": "1.5.128", |       "version": "1.5.128", | ||||||
|       "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.128.tgz", |       "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.128.tgz", | ||||||
|  | @ -4250,14 +3865,6 @@ | ||||||
|       "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", |       "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "invariant": { |  | ||||||
|       "version": "2.2.4", |  | ||||||
|       "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", |  | ||||||
|       "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", |  | ||||||
|       "requires": { |  | ||||||
|         "loose-envify": "^1.0.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "is-extglob": { |     "is-extglob": { | ||||||
|       "version": "2.1.1", |       "version": "2.1.1", | ||||||
|       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", |       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", | ||||||
|  | @ -4282,7 +3889,8 @@ | ||||||
|     "js-tokens": { |     "js-tokens": { | ||||||
|       "version": "4.0.0", |       "version": "4.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", |       "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", | ||||||
|       "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" |       "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", | ||||||
|  |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "js-yaml": { |     "js-yaml": { | ||||||
|       "version": "4.1.0", |       "version": "4.1.0", | ||||||
|  | @ -4357,14 +3965,6 @@ | ||||||
|       "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", |       "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "loose-envify": { |  | ||||||
|       "version": "1.4.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", |  | ||||||
|       "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", |  | ||||||
|       "requires": { |  | ||||||
|         "js-tokens": "^3.0.0 || ^4.0.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "lru-cache": { |     "lru-cache": { | ||||||
|       "version": "5.1.1", |       "version": "5.1.1", | ||||||
|       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", |       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", | ||||||
|  | @ -4407,11 +4007,6 @@ | ||||||
|       "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", |       "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "object-assign": { |  | ||||||
|       "version": "4.1.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", |  | ||||||
|       "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" |  | ||||||
|     }, |  | ||||||
|     "optionator": { |     "optionator": { | ||||||
|       "version": "0.9.4", |       "version": "0.9.4", | ||||||
|       "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", |       "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", | ||||||
|  | @ -4488,25 +4083,6 @@ | ||||||
|       "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", |       "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "prop-types": { |  | ||||||
|       "version": "15.8.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", |  | ||||||
|       "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", |  | ||||||
|       "requires": { |  | ||||||
|         "loose-envify": "^1.4.0", |  | ||||||
|         "object-assign": "^4.1.1", |  | ||||||
|         "react-is": "^16.13.1" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "prop-types-extra": { |  | ||||||
|       "version": "1.1.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", |  | ||||||
|       "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", |  | ||||||
|       "requires": { |  | ||||||
|         "react-is": "^16.3.2", |  | ||||||
|         "warning": "^4.0.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "punycode": { |     "punycode": { | ||||||
|       "version": "2.3.1", |       "version": "2.3.1", | ||||||
|       "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", |       "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", | ||||||
|  | @ -4526,26 +4102,6 @@ | ||||||
|       "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", |       "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", | ||||||
|       "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==" |       "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==" | ||||||
|     }, |     }, | ||||||
|     "react-bootstrap": { |  | ||||||
|       "version": "2.10.9", |  | ||||||
|       "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.10.9.tgz", |  | ||||||
|       "integrity": "sha512-TJUCuHcxdgYpOqeWmRApM/Dy0+hVsxNRFvq2aRFQuxhNi/+ivOxC5OdWIeHS3agxvzJ4Ev4nDw2ZdBl9ymd/JQ==", |  | ||||||
|       "requires": { |  | ||||||
|         "@babel/runtime": "^7.24.7", |  | ||||||
|         "@restart/hooks": "^0.4.9", |  | ||||||
|         "@restart/ui": "^1.9.4", |  | ||||||
|         "@types/prop-types": "^15.7.12", |  | ||||||
|         "@types/react-transition-group": "^4.4.6", |  | ||||||
|         "classnames": "^2.3.2", |  | ||||||
|         "dom-helpers": "^5.2.1", |  | ||||||
|         "invariant": "^2.2.4", |  | ||||||
|         "prop-types": "^15.8.1", |  | ||||||
|         "prop-types-extra": "^1.1.0", |  | ||||||
|         "react-transition-group": "^4.4.5", |  | ||||||
|         "uncontrollable": "^7.2.1", |  | ||||||
|         "warning": "^4.0.3" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "react-dom": { |     "react-dom": { | ||||||
|       "version": "19.1.0", |       "version": "19.1.0", | ||||||
|       "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", |       "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", | ||||||
|  | @ -4563,16 +4119,6 @@ | ||||||
|         "goober": "^2.1.16" |         "goober": "^2.1.16" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "react-is": { |  | ||||||
|       "version": "16.13.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", |  | ||||||
|       "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" |  | ||||||
|     }, |  | ||||||
|     "react-lifecycles-compat": { |  | ||||||
|       "version": "3.0.4", |  | ||||||
|       "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", |  | ||||||
|       "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" |  | ||||||
|     }, |  | ||||||
|     "react-qr-barcode-scanner": { |     "react-qr-barcode-scanner": { | ||||||
|       "version": "2.0.0", |       "version": "2.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/react-qr-barcode-scanner/-/react-qr-barcode-scanner-2.0.0.tgz", |       "resolved": "https://registry.npmjs.org/react-qr-barcode-scanner/-/react-qr-barcode-scanner-2.0.0.tgz", | ||||||
|  | @ -4600,28 +4146,12 @@ | ||||||
|       "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", |       "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "react-transition-group": { |  | ||||||
|       "version": "4.4.5", |  | ||||||
|       "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", |  | ||||||
|       "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", |  | ||||||
|       "requires": { |  | ||||||
|         "@babel/runtime": "^7.5.5", |  | ||||||
|         "dom-helpers": "^5.0.1", |  | ||||||
|         "loose-envify": "^1.4.0", |  | ||||||
|         "prop-types": "^15.6.2" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "react-webcam": { |     "react-webcam": { | ||||||
|       "version": "7.2.0", |       "version": "7.2.0", | ||||||
|       "resolved": "https://registry.npmjs.org/react-webcam/-/react-webcam-7.2.0.tgz", |       "resolved": "https://registry.npmjs.org/react-webcam/-/react-webcam-7.2.0.tgz", | ||||||
|       "integrity": "sha512-xkrzYPqa1ag2DP+2Q/kLKBmCIfEx49bVdgCCCcZf88oF+0NPEbkwYk3/s/C7Zy0mhM8k+hpdNkBLzxg8H0aWcg==", |       "integrity": "sha512-xkrzYPqa1ag2DP+2Q/kLKBmCIfEx49bVdgCCCcZf88oF+0NPEbkwYk3/s/C7Zy0mhM8k+hpdNkBLzxg8H0aWcg==", | ||||||
|       "requires": {} |       "requires": {} | ||||||
|     }, |     }, | ||||||
|     "regenerator-runtime": { |  | ||||||
|       "version": "0.14.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", |  | ||||||
|       "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" |  | ||||||
|     }, |  | ||||||
|     "resolve-from": { |     "resolve-from": { | ||||||
|       "version": "4.0.0", |       "version": "4.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", |       "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", | ||||||
|  | @ -4710,11 +4240,6 @@ | ||||||
|       "resolved": "https://registry.npmjs.org/ts-custom-error/-/ts-custom-error-3.3.1.tgz", |       "resolved": "https://registry.npmjs.org/ts-custom-error/-/ts-custom-error-3.3.1.tgz", | ||||||
|       "integrity": "sha512-5OX1tzOjxWEgsr/YEUWSuPrQ00deKLh6D7OTWcvNHm12/7QPyRh8SYpyWvA4IZv8H/+GQWQEh/kwo95Q9OVW1A==" |       "integrity": "sha512-5OX1tzOjxWEgsr/YEUWSuPrQ00deKLh6D7OTWcvNHm12/7QPyRh8SYpyWvA4IZv8H/+GQWQEh/kwo95Q9OVW1A==" | ||||||
|     }, |     }, | ||||||
|     "tslib": { |  | ||||||
|       "version": "2.8.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", |  | ||||||
|       "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" |  | ||||||
|     }, |  | ||||||
|     "type-check": { |     "type-check": { | ||||||
|       "version": "0.4.0", |       "version": "0.4.0", | ||||||
|       "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", |       "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", | ||||||
|  | @ -4724,17 +4249,6 @@ | ||||||
|         "prelude-ls": "^1.2.1" |         "prelude-ls": "^1.2.1" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "uncontrollable": { |  | ||||||
|       "version": "7.2.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", |  | ||||||
|       "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", |  | ||||||
|       "requires": { |  | ||||||
|         "@babel/runtime": "^7.6.3", |  | ||||||
|         "@types/react": ">=16.9.11", |  | ||||||
|         "invariant": "^2.2.4", |  | ||||||
|         "react-lifecycles-compat": "^3.0.4" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "update-browserslist-db": { |     "update-browserslist-db": { | ||||||
|       "version": "1.1.3", |       "version": "1.1.3", | ||||||
|       "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", |       "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", | ||||||
|  | @ -4766,14 +4280,6 @@ | ||||||
|         "rollup": "^4.30.1" |         "rollup": "^4.30.1" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "warning": { |  | ||||||
|       "version": "4.0.3", |  | ||||||
|       "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", |  | ||||||
|       "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", |  | ||||||
|       "requires": { |  | ||||||
|         "loose-envify": "^1.0.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "which": { |     "which": { | ||||||
|       "version": "2.0.2", |       "version": "2.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", |       "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", | ||||||
|  |  | ||||||
|  | @ -10,10 +10,8 @@ | ||||||
|     "preview": "vite preview" |     "preview": "vite preview" | ||||||
|   }, |   }, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "bootstrap": "^5.3.5", |  | ||||||
|     "qr-scanner": "^1.4.2", |     "qr-scanner": "^1.4.2", | ||||||
|     "react": "^19.0.0", |     "react": "^19.0.0", | ||||||
|     "react-bootstrap": "^2.10.9", |  | ||||||
|     "react-dom": "^19.0.0", |     "react-dom": "^19.0.0", | ||||||
|     "react-hot-toast": "^2.5.2", |     "react-hot-toast": "^2.5.2", | ||||||
|     "react-qr-barcode-scanner": "^2.0.0" |     "react-qr-barcode-scanner": "^2.0.0" | ||||||
|  |  | ||||||
|  | @ -1,8 +1,36 @@ | ||||||
| .App { | #root { | ||||||
|   background-color: var(--background-color); |   max-width: 1280px; | ||||||
|   color: var(--primary-text-color) !important; |   margin: 0 auto; | ||||||
|   min-height: 100vh; |   padding: 2rem; | ||||||
|   width: 100%; |   text-align: center; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .logo { | ||||||
|  |   height: 6em; | ||||||
|  |   padding: 1.5em; | ||||||
|  |   will-change: filter; | ||||||
|  |   transition: filter 300ms; | ||||||
|  | } | ||||||
|  | .logo:hover { | ||||||
|  |   filter: drop-shadow(0 0 2em #646cffaa); | ||||||
|  | } | ||||||
|  | .logo.react:hover { | ||||||
|  |   filter: drop-shadow(0 0 2em #61dafbaa); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | @keyframes logo-spin { | ||||||
|  |   from { | ||||||
|  |     transform: rotate(0deg); | ||||||
|  |   } | ||||||
|  |   to { | ||||||
|  |     transform: rotate(360deg); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | @media (prefers-reduced-motion: no-preference) { | ||||||
|  |   a:nth-of-type(2) .logo { | ||||||
|  |     animation: logo-spin infinite 20s linear; | ||||||
|  |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .card { | .card { | ||||||
|  |  | ||||||
|  | @ -1,11 +1,9 @@ | ||||||
| import { useState } from 'react'; | import { useState } from 'react'; | ||||||
| import BarcodeScannerComponent from 'react-qr-barcode-scanner'; | import BarcodeScannerComponent from 'react-qr-barcode-scanner'; | ||||||
| import toast, { Toaster } from 'react-hot-toast'; | import toast, { Toaster } from 'react-hot-toast'; | ||||||
| import { Container, Row, Col } from 'react-bootstrap'; |  | ||||||
| 
 | 
 | ||||||
| // Styles | // Styles | ||||||
| import './App.css'; | import './App.css'; | ||||||
| import 'bootstrap/dist/css/bootstrap.min.css'; |  | ||||||
| 
 | 
 | ||||||
| function App() { | function App() { | ||||||
|   // State to store the latest scanned data |   // State to store the latest scanned data | ||||||
|  | @ -33,45 +31,26 @@ function App() { | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|     return ( |     return ( | ||||||
| 	<Container> | 	<div className="box"> | ||||||
| 	    <Row> |  | ||||||
| 		<Col> |  | ||||||
| 	    {/* Notification toaster for displaying scan success messages */} | 	    {/* Notification toaster for displaying scan success messages */} | ||||||
| 	    <Toaster position="top-right" reverseOrder={false} /> | 	    <Toaster position="top-right" reverseOrder={false} /> | ||||||
| 		</Col> |  | ||||||
| 	    </Row> |  | ||||||
| 	    <Row> |  | ||||||
| 		<Col> |  | ||||||
| 
 | 
 | ||||||
| 	    {/* Scanner title */} | 	    {/* Scanner title */} | ||||||
| 	    <div className="title">BrmInv</div> | 	    <div className="title">BrmInv</div> | ||||||
| 		</Col> |  | ||||||
| 	    </Row> |  | ||||||
| 
 |  | ||||||
| 	    <Row> |  | ||||||
| 		<Col> |  | ||||||
| 
 | 
 | ||||||
| 	    {/* Barcode scanner component */} | 	    {/* Barcode scanner component */} | ||||||
| 	    <div className="scan" style={{border: '1px solid black'}}> | 	    <div className="scan" style={{border: '1px solid black'}}> | ||||||
| 		<BarcodeScannerComponent | 		<BarcodeScannerComponent | ||||||
| 		    width={"100%"} | 		    width={500} | ||||||
| 		    height={"auto"} | 		    height={500} | ||||||
| 		    onUpdate={handleScan} | 		    onUpdate={handleScan} | ||||||
| 		    delay={1500} // 1.5 seconds delay between scans | 		    delay={1500} // 1.5 seconds delay between scans | ||||||
| 		/> | 		/> | ||||||
| 	    </div> | 	    </div> | ||||||
| 		</Col> |  | ||||||
| 	    </Row> |  | ||||||
| 
 | 
 | ||||||
| 	    <Row> |  | ||||||
| 		<Col> |  | ||||||
| 	    {/* Display the current scanned data */} | 	    {/* Display the current scanned data */} | ||||||
| 	    <p>Scanned Data: {currentData}</p> | 	    <p>Scanned Data: {currentData}</p> | ||||||
| 		</Col> |  | ||||||
| 	    </Row> |  | ||||||
| 
 | 
 | ||||||
| 	    <Row> |  | ||||||
| 		<Col> |  | ||||||
| 	    {/* Table to display scan history */} | 	    {/* Table to display scan history */} | ||||||
| 	    <h2>Scan History</h2> | 	    <h2>Scan History</h2> | ||||||
| 	    <table> | 	    <table> | ||||||
|  | @ -90,9 +69,7 @@ function App() { | ||||||
| 		    ))} | 		    ))} | ||||||
| 		</tbody> | 		</tbody> | ||||||
| 	    </table> | 	    </table> | ||||||
| 		</Col> | 	</div> | ||||||
| 	    </Row> |  | ||||||
| 	    </Container> |  | ||||||
| 		); | 		); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue