Compare commits
	
		
			1 Commits
		
	
	
		
			nightly-v2
			...
			tmp-mediaS
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| aa19bcbc09 | 
							
								
								
									
										130
									
								
								src-tauri/Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										130
									
								
								src-tauri/Cargo.lock
									
									
									
										generated
									
									
									
								
							| @ -332,7 +332,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" | |||||||
| dependencies = [ | dependencies = [ | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -361,13 +361,13 @@ checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" | |||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "async-trait" | name = "async-trait" | ||||||
| version = "0.1.80" | version = "0.1.81" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" | checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -407,7 +407,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" | |||||||
| dependencies = [ | dependencies = [ | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -550,7 +550,7 @@ dependencies = [ | |||||||
|  "proc-macro-crate 3.1.0", |  "proc-macro-crate 3.1.0", | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
|  "syn_derive", |  "syn_derive", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| @ -792,9 +792,9 @@ dependencies = [ | |||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "clap" | name = "clap" | ||||||
| version = "4.5.7" | version = "4.5.9" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "5db83dced34638ad474f39f250d7fea9598bdd239eaced1bdf45d597da0f433f" | checksum = "64acc1846d54c1fe936a78dc189c34e28d3f5afc348403f28ecf53660b9b8462" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "clap_builder", |  "clap_builder", | ||||||
|  "clap_derive", |  "clap_derive", | ||||||
| @ -802,9 +802,9 @@ dependencies = [ | |||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "clap_builder" | name = "clap_builder" | ||||||
| version = "4.5.7" | version = "4.5.9" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "f7e204572485eb3fbf28f871612191521df159bc3e15a9f5064c66dba3a8c05f" | checksum = "6fb8393d67ba2e7bfaf28a23458e4e2b543cc73a99595511eb207fdb8aede942" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "anstream", |  "anstream", | ||||||
|  "anstyle", |  "anstyle", | ||||||
| @ -816,14 +816,14 @@ dependencies = [ | |||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "clap_derive" | name = "clap_derive" | ||||||
| version = "4.5.5" | version = "4.5.8" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "c780290ccf4fb26629baa7a1081e68ced113f1d3ec302fa5948f1c381ebf06c6" | checksum = "2bac35c6dafb060fd4d275d9a4ffae97917c13a6327903a8be2153cd964f7085" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "heck 0.5.0", |  "heck 0.5.0", | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -1073,7 +1073,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||||||
| checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" | checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -1083,7 +1083,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||||||
| checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f" | checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -1107,7 +1107,7 @@ dependencies = [ | |||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "strsim 0.10.0", |  "strsim 0.10.0", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -1118,7 +1118,7 @@ checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" | |||||||
| dependencies = [ | dependencies = [ | ||||||
|  "darling_core", |  "darling_core", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -1179,7 +1179,7 @@ checksum = "4078275de501a61ceb9e759d37bdd3d7210e654dbc167ac1a3678ef4435ed57b" | |||||||
| dependencies = [ | dependencies = [ | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
|  "synstructure", |  "synstructure", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| @ -1216,7 +1216,7 @@ dependencies = [ | |||||||
|  "regex", |  "regex", | ||||||
|  "serde", |  "serde", | ||||||
|  "serde_tokenstream", |  "serde_tokenstream", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -1227,7 +1227,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" | |||||||
| dependencies = [ | dependencies = [ | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -1288,7 +1288,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" | |||||||
| dependencies = [ | dependencies = [ | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -1320,7 +1320,7 @@ checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" | |||||||
| dependencies = [ | dependencies = [ | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -1427,7 +1427,7 @@ checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4" | |||||||
| dependencies = [ | dependencies = [ | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -1588,7 +1588,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" | |||||||
| dependencies = [ | dependencies = [ | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -1704,7 +1704,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" | |||||||
| dependencies = [ | dependencies = [ | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -1980,7 +1980,7 @@ dependencies = [ | |||||||
|  "proc-macro-error", |  "proc-macro-error", | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -2008,7 +2008,7 @@ dependencies = [ | |||||||
|  "inflections", |  "inflections", | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -2083,7 +2083,7 @@ dependencies = [ | |||||||
|  "proc-macro-error", |  "proc-macro-error", | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -2571,7 +2571,7 @@ dependencies = [ | |||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "kcl-lib" | name = "kcl-lib" | ||||||
| version = "0.1.70" | version = "0.1.72" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "anyhow", |  "anyhow", | ||||||
|  "approx", |  "approx", | ||||||
| @ -3377,7 +3377,7 @@ dependencies = [ | |||||||
|  "regex", |  "regex", | ||||||
|  "regex-syntax 0.8.3", |  "regex-syntax 0.8.3", | ||||||
|  "structmeta", |  "structmeta", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -3496,7 +3496,7 @@ dependencies = [ | |||||||
|  "phf_shared 0.11.2", |  "phf_shared 0.11.2", | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -3564,7 +3564,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" | |||||||
| dependencies = [ | dependencies = [ | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -4438,7 +4438,7 @@ dependencies = [ | |||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "serde_derive_internals", |  "serde_derive_internals", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -4523,9 +4523,9 @@ dependencies = [ | |||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "serde" | name = "serde" | ||||||
| version = "1.0.203" | version = "1.0.204" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" | checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "serde_derive", |  "serde_derive", | ||||||
| ] | ] | ||||||
| @ -4552,13 +4552,13 @@ dependencies = [ | |||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "serde_derive" | name = "serde_derive" | ||||||
| version = "1.0.203" | version = "1.0.204" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" | checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -4569,7 +4569,7 @@ checksum = "330f01ce65a3a5fe59a60c82f3c9a024b573b8a6e875bd233fe5f934e71d54e3" | |||||||
| dependencies = [ | dependencies = [ | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -4602,7 +4602,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" | |||||||
| dependencies = [ | dependencies = [ | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -4623,7 +4623,7 @@ dependencies = [ | |||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "serde", |  "serde", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -4665,7 +4665,7 @@ dependencies = [ | |||||||
|  "darling", |  "darling", | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -4933,7 +4933,7 @@ dependencies = [ | |||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "structmeta-derive", |  "structmeta-derive", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -4944,7 +4944,7 @@ checksum = "152a0b65a590ff6c3da95cabe2353ee04e6167c896b28e3b14478c2636c922fc" | |||||||
| dependencies = [ | dependencies = [ | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -4966,7 +4966,7 @@ dependencies = [ | |||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "rustversion", |  "rustversion", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -4999,9 +4999,9 @@ dependencies = [ | |||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "syn" | name = "syn" | ||||||
| version = "2.0.68" | version = "2.0.70" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" | checksum = "2f0209b68b3613b093e0ec905354eccaedcfe83b8cb37cbdeae64026c3064c16" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
| @ -5017,7 +5017,7 @@ dependencies = [ | |||||||
|  "proc-macro-error", |  "proc-macro-error", | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -5034,7 +5034,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" | |||||||
| dependencies = [ | dependencies = [ | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -5251,7 +5251,7 @@ dependencies = [ | |||||||
|  "serde", |  "serde", | ||||||
|  "serde_json", |  "serde_json", | ||||||
|  "sha2", |  "sha2", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
|  "tauri-utils", |  "tauri-utils", | ||||||
|  "thiserror", |  "thiserror", | ||||||
|  "time", |  "time", | ||||||
| @ -5269,7 +5269,7 @@ dependencies = [ | |||||||
|  "heck 0.5.0", |  "heck 0.5.0", | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
|  "tauri-codegen", |  "tauri-codegen", | ||||||
|  "tauri-utils", |  "tauri-utils", | ||||||
| ] | ] | ||||||
| @ -5642,7 +5642,7 @@ checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" | |||||||
| dependencies = [ | dependencies = [ | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -5740,7 +5740,7 @@ checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" | |||||||
| dependencies = [ | dependencies = [ | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -5940,7 +5940,7 @@ checksum = "84fd902d4e0b9a4b27f2f440108dc034e1758628a9b702f8ec61ad66355422fa" | |||||||
| dependencies = [ | dependencies = [ | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -5969,7 +5969,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" | |||||||
| dependencies = [ | dependencies = [ | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -6099,7 +6099,7 @@ checksum = "c88cc88fd23b5a04528f3a8436024f20010a16ec18eb23c164b1242f65860130" | |||||||
| dependencies = [ | dependencies = [ | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
|  "termcolor", |  "termcolor", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| @ -6280,9 +6280,9 @@ checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" | |||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "uuid" | name = "uuid" | ||||||
| version = "1.9.1" | version = "1.10.0" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "5de17fd2f7da591098415cff336e12965a28061ddace43b59cb3c430179c9439" | checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "getrandom 0.2.14", |  "getrandom 0.2.14", | ||||||
|  "serde", |  "serde", | ||||||
| @ -6316,7 +6316,7 @@ dependencies = [ | |||||||
|  "proc-macro-error", |  "proc-macro-error", | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -6415,7 +6415,7 @@ dependencies = [ | |||||||
|  "once_cell", |  "once_cell", | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
|  "wasm-bindgen-shared", |  "wasm-bindgen-shared", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| @ -6449,7 +6449,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" | |||||||
| dependencies = [ | dependencies = [ | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
|  "wasm-bindgen-backend", |  "wasm-bindgen-backend", | ||||||
|  "wasm-bindgen-shared", |  "wasm-bindgen-shared", | ||||||
| ] | ] | ||||||
| @ -6590,7 +6590,7 @@ checksum = "ac1345798ecd8122468840bcdf1b95e5dc6d2206c5e4b0eafa078d061f59c9bc" | |||||||
| dependencies = [ | dependencies = [ | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -6696,7 +6696,7 @@ checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" | |||||||
| dependencies = [ | dependencies = [ | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -6707,7 +6707,7 @@ checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" | |||||||
| dependencies = [ | dependencies = [ | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -7159,7 +7159,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" | |||||||
| dependencies = [ | dependencies = [ | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.68", |  "syn 2.0.70", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
|  | |||||||
							
								
								
									
										11
									
								
								src/App.tsx
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								src/App.tsx
									
									
									
									
									
								
							| @ -26,6 +26,7 @@ import useHotkeyWrapper from 'lib/hotkeyWrapper' | |||||||
| import Gizmo from 'components/Gizmo' | import Gizmo from 'components/Gizmo' | ||||||
| import { CoreDumpManager } from 'lib/coredump' | import { CoreDumpManager } from 'lib/coredump' | ||||||
| import { UnitsMenu } from 'components/UnitsMenu' | import { UnitsMenu } from 'components/UnitsMenu' | ||||||
|  | import { useAppState } from 'AppState' | ||||||
|  |  | ||||||
| export function App() { | export function App() { | ||||||
|   useRefreshSettings(paths.FILE + 'SETTINGS') |   useRefreshSettings(paths.FILE + 'SETTINGS') | ||||||
| @ -45,6 +46,8 @@ export function App() { | |||||||
|  |  | ||||||
|   useHotKeyListener() |   useHotKeyListener() | ||||||
|   const { context } = useModelingContext() |   const { context } = useModelingContext() | ||||||
|  |   const { streamDimensions, didDragInStream, buttonDownInStream } = | ||||||
|  |     useAppState() | ||||||
|  |  | ||||||
|   const { auth, settings } = useSettingsAuthContext() |   const { auth, settings } = useSettingsAuthContext() | ||||||
|   const token = auth?.context?.token |   const token = auth?.context?.token | ||||||
| @ -74,7 +77,7 @@ export function App() { | |||||||
|     (p) => p === onboardingStatus.current |     (p) => p === onboardingStatus.current | ||||||
|   ) |   ) | ||||||
|     ? 'opacity-20' |     ? 'opacity-20' | ||||||
|     : context.store?.didDragInStream |     : didDragInStream | ||||||
|     ? 'opacity-40' |     ? 'opacity-40' | ||||||
|     : '' |     : '' | ||||||
|  |  | ||||||
| @ -92,11 +95,11 @@ export function App() { | |||||||
|       clientX: e.clientX, |       clientX: e.clientX, | ||||||
|       clientY: e.clientY, |       clientY: e.clientY, | ||||||
|       el: e.currentTarget, |       el: e.currentTarget, | ||||||
|       ...context.store?.streamDimensions, |       ...streamDimensions, | ||||||
|     }) |     }) | ||||||
|  |  | ||||||
|     const newCmdId = uuidv4() |     const newCmdId = uuidv4() | ||||||
|     if (context.store?.buttonDownInStream === undefined) { |     if (buttonDownInStream === undefined) { | ||||||
|       debounceSocketSend({ |       debounceSocketSend({ | ||||||
|         type: 'modeling_cmd_req', |         type: 'modeling_cmd_req', | ||||||
|         cmd: { |         cmd: { | ||||||
| @ -118,7 +121,7 @@ export function App() { | |||||||
|         className={ |         className={ | ||||||
|           'transition-opacity transition-duration-75 ' + |           'transition-opacity transition-duration-75 ' + | ||||||
|           paneOpacity + |           paneOpacity + | ||||||
|           (context.store?.buttonDownInStream ? ' pointer-events-none' : '') |           (buttonDownInStream ? ' pointer-events-none' : '') | ||||||
|         } |         } | ||||||
|         project={{ project, file }} |         project={{ project, file }} | ||||||
|         enableMenu={true} |         enableMenu={true} | ||||||
|  | |||||||
| @ -1,4 +1,10 @@ | |||||||
| import { createContext, useContext, useState, ReactNode } from 'react' | import { | ||||||
|  |   createContext, | ||||||
|  |   useContext, | ||||||
|  |   useState, | ||||||
|  |   ReactNode, | ||||||
|  |   useEffect, | ||||||
|  | } from 'react' | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  |  | ||||||
| @ -11,11 +17,23 @@ Please do not fill this up with junk. | |||||||
| interface AppState { | interface AppState { | ||||||
|   isStreamReady: boolean |   isStreamReady: boolean | ||||||
|   setAppState: (newAppState: Partial<AppState>) => void |   setAppState: (newAppState: Partial<AppState>) => void | ||||||
|  |  | ||||||
|  |   mediaStream?: MediaStream | ||||||
|  |   buttonDownInStream: number | undefined | ||||||
|  |   didDragInStream: boolean | ||||||
|  |   streamDimensions: { streamWidth: number; streamHeight: number } | ||||||
|  |   // openPanes: SidebarType[] | ||||||
| } | } | ||||||
|  |  | ||||||
| const AppStateContext = createContext<AppState>({ | const AppStateContext = createContext<AppState>({ | ||||||
|   isStreamReady: false, |   isStreamReady: false, | ||||||
|   setAppState: () => {}, |   setAppState: () => {}, | ||||||
|  |  | ||||||
|  |   buttonDownInStream: undefined, | ||||||
|  |   didDragInStream: false, | ||||||
|  |   streamDimensions: { streamWidth: 1280, streamHeight: 720 }, | ||||||
|  |   mediaStream: undefined, | ||||||
|  |   // openPanes: persistedContext.openPanes || ['code'], | ||||||
| }) | }) | ||||||
|  |  | ||||||
| export const useAppState = () => useContext(AppStateContext) | export const useAppState = () => useContext(AppStateContext) | ||||||
| @ -24,15 +42,35 @@ export const AppStateProvider = ({ children }: { children: ReactNode }) => { | |||||||
|   const [appState, _setAppState] = useState<AppState>({ |   const [appState, _setAppState] = useState<AppState>({ | ||||||
|     isStreamReady: false, |     isStreamReady: false, | ||||||
|     setAppState: () => {}, |     setAppState: () => {}, | ||||||
|  |  | ||||||
|  |     buttonDownInStream: undefined, | ||||||
|  |     didDragInStream: false, | ||||||
|  |     streamDimensions: { streamWidth: 1280, streamHeight: 720 }, | ||||||
|  |     mediaStream: undefined, | ||||||
|  |     // openPanes: persistedContext.openPanes || ['code'], | ||||||
|   }) |   }) | ||||||
|   const setAppState = (newAppState: Partial<AppState>) => |   useEffect(() => { | ||||||
|     _setAppState({ ...appState, ...newAppState }) |     // console.log('appState change', appState) | ||||||
|  |   }, [appState]) | ||||||
|  |   const setAppState = (newAppState: Partial<AppState>) => { | ||||||
|  |     // console.log('appstate', newAppState) | ||||||
|  |     _setAppState({ | ||||||
|  |       ...appState, | ||||||
|  |       ...newAppState, | ||||||
|  |       mediaStream: newAppState.mediaStream || appState.mediaStream, | ||||||
|  |     }) | ||||||
|  |   } | ||||||
|  |  | ||||||
|   return ( |   return ( | ||||||
|     <AppStateContext.Provider |     <AppStateContext.Provider | ||||||
|       value={{ |       value={{ | ||||||
|         isStreamReady: appState.isStreamReady, |         isStreamReady: appState.isStreamReady, | ||||||
|         setAppState, |         setAppState, | ||||||
|  |  | ||||||
|  |         mediaStream: appState.mediaStream, | ||||||
|  |         buttonDownInStream: appState.buttonDownInStream, | ||||||
|  |         didDragInStream: appState.didDragInStream, | ||||||
|  |         streamDimensions: appState.streamDimensions, | ||||||
|       }} |       }} | ||||||
|     > |     > | ||||||
|       {children} |       {children} | ||||||
|  | |||||||
| @ -49,17 +49,17 @@ const router = createBrowserRouter([ | |||||||
|     /* Make sure auth is the outermost provider or else we will have |     /* Make sure auth is the outermost provider or else we will have | ||||||
|      * inefficient re-renders, use the react profiler to see. */ |      * inefficient re-renders, use the react profiler to see. */ | ||||||
|     element: ( |     element: ( | ||||||
|       <CommandBarProvider> |       <AppStateProvider> | ||||||
|         <SettingsAuthProvider> |         <CommandBarProvider> | ||||||
|           <LspProvider> |           <SettingsAuthProvider> | ||||||
|             <KclContextProvider> |             <LspProvider> | ||||||
|               <AppStateProvider> |               <KclContextProvider> | ||||||
|                 <Outlet /> |                 <Outlet /> | ||||||
|               </AppStateProvider> |               </KclContextProvider> | ||||||
|             </KclContextProvider> |             </LspProvider> | ||||||
|           </LspProvider> |           </SettingsAuthProvider> | ||||||
|         </SettingsAuthProvider> |         </CommandBarProvider> | ||||||
|       </CommandBarProvider> |       </AppStateProvider> | ||||||
|     ), |     ), | ||||||
|     errorElement: <ErrorPage />, |     errorElement: <ErrorPage />, | ||||||
|     children: [ |     children: [ | ||||||
|  | |||||||
| @ -1,6 +1,7 @@ | |||||||
| import styles from './ModelingPane.module.css' | import styles from './ModelingPane.module.css' | ||||||
| import { useSettingsAuthContext } from 'hooks/useSettingsAuthContext' | import { useSettingsAuthContext } from 'hooks/useSettingsAuthContext' | ||||||
| import { useModelingContext } from 'hooks/useModelingContext' | import { useModelingContext } from 'hooks/useModelingContext' | ||||||
|  | import { useAppState } from 'AppState' | ||||||
|  |  | ||||||
| export interface ModelingPaneProps | export interface ModelingPaneProps | ||||||
|   extends React.PropsWithChildren, |   extends React.PropsWithChildren, | ||||||
| @ -33,9 +34,10 @@ export const ModelingPane = ({ | |||||||
| }: ModelingPaneProps) => { | }: ModelingPaneProps) => { | ||||||
|   const { settings } = useSettingsAuthContext() |   const { settings } = useSettingsAuthContext() | ||||||
|   const onboardingStatus = settings.context.app.onboardingStatus |   const onboardingStatus = settings.context.app.onboardingStatus | ||||||
|   const { context } = useModelingContext() |   // const { context } = useModelingContext() | ||||||
|  |   const { buttonDownInStream } = useAppState() | ||||||
|   const pointerEventsCssClass = |   const pointerEventsCssClass = | ||||||
|     context.store?.buttonDownInStream || onboardingStatus.current === 'camera' |     buttonDownInStream || onboardingStatus.current === 'camera' | ||||||
|       ? 'pointer-events-none ' |       ? 'pointer-events-none ' | ||||||
|       : 'pointer-events-auto ' |       : 'pointer-events-auto ' | ||||||
|   return ( |   return ( | ||||||
|  | |||||||
| @ -15,6 +15,7 @@ import styles from './ModelingSidebar.module.css' | |||||||
| import { ModelingPane } from './ModelingPane' | import { ModelingPane } from './ModelingPane' | ||||||
| import { isTauri } from 'lib/isTauri' | import { isTauri } from 'lib/isTauri' | ||||||
| import { useModelingContext } from 'hooks/useModelingContext' | import { useModelingContext } from 'hooks/useModelingContext' | ||||||
|  | import { useAppState } from 'AppState' | ||||||
|  |  | ||||||
| interface ModelingSidebarProps { | interface ModelingSidebarProps { | ||||||
|   paneOpacity: '' | 'opacity-20' | 'opacity-40' |   paneOpacity: '' | 'opacity-20' | 'opacity-40' | ||||||
| @ -24,8 +25,9 @@ export function ModelingSidebar({ paneOpacity }: ModelingSidebarProps) { | |||||||
|   const { settings } = useSettingsAuthContext() |   const { settings } = useSettingsAuthContext() | ||||||
|   const onboardingStatus = settings.context.app.onboardingStatus |   const onboardingStatus = settings.context.app.onboardingStatus | ||||||
|   const { context } = useModelingContext() |   const { context } = useModelingContext() | ||||||
|  |   const { buttonDownInStream } = useAppState() | ||||||
|   const pointerEventsCssClass = |   const pointerEventsCssClass = | ||||||
|     context.store?.buttonDownInStream || |     buttonDownInStream || | ||||||
|     onboardingStatus.current === 'camera' || |     onboardingStatus.current === 'camera' || | ||||||
|     context.store?.openPanes.length === 0 |     context.store?.openPanes.length === 0 | ||||||
|       ? 'pointer-events-none ' |       ? 'pointer-events-none ' | ||||||
|  | |||||||
| @ -9,6 +9,7 @@ import { ClientSideScene } from 'clientSideScene/ClientSideSceneComp' | |||||||
| import { btnName } from 'lib/cameraControls' | import { btnName } from 'lib/cameraControls' | ||||||
| import { sendSelectEventToEngine } from 'lib/selections' | import { sendSelectEventToEngine } from 'lib/selections' | ||||||
| import { kclManager, engineCommandManager, sceneInfra } from 'lib/singletons' | import { kclManager, engineCommandManager, sceneInfra } from 'lib/singletons' | ||||||
|  | import { useAppState } from 'AppState' | ||||||
|  |  | ||||||
| export const Stream = () => { | export const Stream = () => { | ||||||
|   const [isLoading, setIsLoading] = useState(true) |   const [isLoading, setIsLoading] = useState(true) | ||||||
| @ -16,7 +17,10 @@ export const Stream = () => { | |||||||
|   const [clickCoords, setClickCoords] = useState<{ x: number; y: number }>() |   const [clickCoords, setClickCoords] = useState<{ x: number; y: number }>() | ||||||
|   const videoRef = useRef<HTMLVideoElement>(null) |   const videoRef = useRef<HTMLVideoElement>(null) | ||||||
|   const { settings } = useSettingsAuthContext() |   const { settings } = useSettingsAuthContext() | ||||||
|   const { state, send, context } = useModelingContext() |   const { state, send } = useModelingContext() | ||||||
|  |   const { mediaStream, streamDimensions, didDragInStream, setAppState } = | ||||||
|  |     useAppState() | ||||||
|  |  | ||||||
|   const { overallState } = useNetworkContext() |   const { overallState } = useNetworkContext() | ||||||
|   const [isFreezeFrame, setIsFreezeFrame] = useState(false) |   const [isFreezeFrame, setIsFreezeFrame] = useState(false) | ||||||
|  |  | ||||||
| @ -124,19 +128,26 @@ export const Stream = () => { | |||||||
|     ) |     ) | ||||||
|       return |       return | ||||||
|     if (!videoRef.current) return |     if (!videoRef.current) return | ||||||
|     if (!context.store?.mediaStream) return |     // console.log('setting mideastrema to vi2', mediaStream, (window as any).mediaStream) | ||||||
|  |     const _mediaStream = mediaStream || (window as any).mediaStream | ||||||
|  |     if (!_mediaStream) return | ||||||
|  |  | ||||||
|  |     // console.log('setting mideastrema to vi') | ||||||
|     // Do not immediately play the stream! |     // Do not immediately play the stream! | ||||||
|     videoRef.current.srcObject = context.store.mediaStream |     videoRef.current.srcObject = _mediaStream | ||||||
|     videoRef.current.pause() |     videoRef.current.pause() | ||||||
|  |  | ||||||
|  |     // setAppState({ | ||||||
|  |     //   mediaStream, | ||||||
|  |     // }) | ||||||
|  |  | ||||||
|     send({ |     send({ | ||||||
|       type: 'Set context', |       type: 'Set context', | ||||||
|       data: { |       data: { | ||||||
|         videoElement: videoRef.current, |         videoElement: videoRef.current, | ||||||
|       }, |       }, | ||||||
|     }) |     }) | ||||||
|   }, [context.store?.mediaStream]) |   }, [mediaStream]) | ||||||
|  |  | ||||||
|   const handleMouseDown: MouseEventHandler<HTMLDivElement> = (e) => { |   const handleMouseDown: MouseEventHandler<HTMLDivElement> = (e) => { | ||||||
|     if (!isNetworkOkay) return |     if (!isNetworkOkay) return | ||||||
| @ -148,44 +159,49 @@ export const Stream = () => { | |||||||
|       clientX: e.clientX, |       clientX: e.clientX, | ||||||
|       clientY: e.clientY, |       clientY: e.clientY, | ||||||
|       el: videoRef.current, |       el: videoRef.current, | ||||||
|       ...context.store?.streamDimensions, |       ...streamDimensions, | ||||||
|     }) |     }) | ||||||
|  |  | ||||||
|     send({ |     setAppState({ | ||||||
|       type: 'Set context', |       buttonDownInStream: e.button, | ||||||
|       data: { |  | ||||||
|         buttonDownInStream: e.button, |  | ||||||
|       }, |  | ||||||
|     }) |     }) | ||||||
|  |     // send({ | ||||||
|  |     //   type: 'Set context', | ||||||
|  |     //   data: { | ||||||
|  |     //     buttonDownInStream: e.button, | ||||||
|  |     //   }, | ||||||
|  |     // }) | ||||||
|     setClickCoords({ x, y }) |     setClickCoords({ x, y }) | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   const handleMouseUp: MouseEventHandler<HTMLDivElement> = (e) => { |   const handleMouseUp: MouseEventHandler<HTMLDivElement> = (e) => { | ||||||
|     if (!isNetworkOkay) return |     if (!isNetworkOkay) return | ||||||
|     if (!videoRef.current) return |     if (!videoRef.current) return | ||||||
|     send({ |     setAppState({ | ||||||
|       type: 'Set context', |       buttonDownInStream: undefined, | ||||||
|       data: { |  | ||||||
|         buttonDownInStream: undefined, |  | ||||||
|       }, |  | ||||||
|     }) |     }) | ||||||
|  |     // send({ | ||||||
|  |     //   type: 'Set context', | ||||||
|  |     //   data: { | ||||||
|  |     //     buttonDownInStream: undefined, | ||||||
|  |     //   }, | ||||||
|  |     // }) | ||||||
|     if (state.matches('Sketch')) return |     if (state.matches('Sketch')) return | ||||||
|     if (state.matches('Sketch no face')) return |     if (state.matches('Sketch no face')) return | ||||||
|  |  | ||||||
|     if (!context.store?.didDragInStream && btnName(e).left) { |     if (!didDragInStream && btnName(e).left) { | ||||||
|       sendSelectEventToEngine( |       sendSelectEventToEngine(e, videoRef.current, streamDimensions) | ||||||
|         e, |  | ||||||
|         videoRef.current, |  | ||||||
|         context.store?.streamDimensions |  | ||||||
|       ) |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     send({ |     setAppState({ | ||||||
|       type: 'Set context', |       didDragInStream: false, | ||||||
|       data: { |  | ||||||
|         didDragInStream: false, |  | ||||||
|       }, |  | ||||||
|     }) |     }) | ||||||
|  |     // send({ | ||||||
|  |     //   type: 'Set context', | ||||||
|  |     //   data: { | ||||||
|  |     //     didDragInStream: false, | ||||||
|  |     //   }, | ||||||
|  |     // }) | ||||||
|     setClickCoords(undefined) |     setClickCoords(undefined) | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @ -199,13 +215,16 @@ export const Stream = () => { | |||||||
|       ((clickCoords.x - e.clientX) ** 2 + (clickCoords.y - e.clientY) ** 2) ** |       ((clickCoords.x - e.clientX) ** 2 + (clickCoords.y - e.clientY) ** 2) ** | ||||||
|       0.5 |       0.5 | ||||||
|  |  | ||||||
|     if (delta > 5 && !context.store?.didDragInStream) { |     if (delta > 5 && !didDragInStream) { | ||||||
|       send({ |       setAppState({ | ||||||
|         type: 'Set context', |         didDragInStream: true, | ||||||
|         data: { |  | ||||||
|           didDragInStream: true, |  | ||||||
|         }, |  | ||||||
|       }) |       }) | ||||||
|  |       // send({ | ||||||
|  |       //   type: 'Set context', | ||||||
|  |       //   data: { | ||||||
|  |       //     didDragInStream: true, | ||||||
|  |       //   }, | ||||||
|  |       // }) | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| import { useLayoutEffect, useEffect, useRef } from 'react' | import { useLayoutEffect, useEffect, useRef } from 'react' | ||||||
| import { engineCommandManager, kclManager } from 'lib/singletons' | import { engineCommandManager, kclManager, sceneInfra } from 'lib/singletons' | ||||||
| import { deferExecution } from 'lib/utils' | import { deferExecution } from 'lib/utils' | ||||||
| import { Themes } from 'lib/theme' | import { Themes } from 'lib/theme' | ||||||
| import { makeDefaultPlanes, modifyGrid } from 'lang/wasm' | import { makeDefaultPlanes, modifyGrid } from 'lang/wasm' | ||||||
| @ -27,7 +27,7 @@ export function useSetupEngineManager( | |||||||
|     showScaleGrid: boolean |     showScaleGrid: boolean | ||||||
|   } |   } | ||||||
| ) { | ) { | ||||||
|   const { setAppState } = useAppState() |   const { setAppState, streamDimensions } = useAppState() | ||||||
|  |  | ||||||
|   const streamWidth = streamRef?.current?.offsetWidth |   const streamWidth = streamRef?.current?.offsetWidth | ||||||
|   const streamHeight = streamRef?.current?.offsetHeight |   const streamHeight = streamRef?.current?.offsetHeight | ||||||
| @ -47,18 +47,17 @@ export function useSetupEngineManager( | |||||||
|       streamWidth, |       streamWidth, | ||||||
|       streamHeight |       streamHeight | ||||||
|     ) |     ) | ||||||
|     if ( |     if (!hasSetNonZeroDimensions.current && quadHeight && quadWidth) { | ||||||
|       !hasSetNonZeroDimensions.current && |  | ||||||
|       quadHeight && |  | ||||||
|       quadWidth && |  | ||||||
|       settings.modelingSend |  | ||||||
|     ) { |  | ||||||
|       engineCommandManager.start({ |       engineCommandManager.start({ | ||||||
|         setMediaStream: (mediaStream) => |         // setMediaStream: (mediaStream) => | ||||||
|           settings.modelingSend({ |         //   settings.modelingSend({ | ||||||
|             type: 'Set context', |         //     type: 'Set context', | ||||||
|             data: { mediaStream }, |         //     data: { mediaStream }, | ||||||
|           }), |         //   }), | ||||||
|  |         setMediaStream: (mediaStream) => { | ||||||
|  |           ;(window as any).mediaStream = mediaStream | ||||||
|  |           setAppState({ mediaStream }) | ||||||
|  |         }, | ||||||
|         setIsStreamReady: (isStreamReady) => setAppState({ isStreamReady }), |         setIsStreamReady: (isStreamReady) => setAppState({ isStreamReady }), | ||||||
|         width: quadWidth, |         width: quadWidth, | ||||||
|         height: quadHeight, |         height: quadHeight, | ||||||
| @ -79,15 +78,22 @@ export function useSetupEngineManager( | |||||||
|           return modifyGrid(kclManager.engineCommandManager, hidden) |           return modifyGrid(kclManager.engineCommandManager, hidden) | ||||||
|         }, |         }, | ||||||
|       }) |       }) | ||||||
|       settings.modelingSend({ |       setAppState({ | ||||||
|         type: 'Set context', |         streamDimensions: { streamWidth: quadWidth, streamHeight: quadHeight }, | ||||||
|         data: { |  | ||||||
|           streamDimensions: { |  | ||||||
|             streamWidth: quadWidth, |  | ||||||
|             streamHeight: quadHeight, |  | ||||||
|           }, |  | ||||||
|         }, |  | ||||||
|       }) |       }) | ||||||
|  |       sceneInfra._streamDimensions = { | ||||||
|  |         streamWidth: quadWidth, | ||||||
|  |         streamHeight: quadHeight, | ||||||
|  |       } | ||||||
|  |       // settings.modelingSend({ | ||||||
|  |       //   type: 'Set context', | ||||||
|  |       //   data: { | ||||||
|  |       //     streamDimensions: { | ||||||
|  |       //       streamWidth: quadWidth, | ||||||
|  |       //       streamHeight: quadHeight, | ||||||
|  |       //     }, | ||||||
|  |       //   }, | ||||||
|  |       // }) | ||||||
|       hasSetNonZeroDimensions.current = true |       hasSetNonZeroDimensions.current = true | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| @ -96,6 +102,7 @@ export function useSetupEngineManager( | |||||||
|     streamRef?.current?.offsetWidth, |     streamRef?.current?.offsetWidth, | ||||||
|     streamRef?.current?.offsetHeight, |     streamRef?.current?.offsetHeight, | ||||||
|     settings.modelingSend, |     settings.modelingSend, | ||||||
|  |     setAppState, | ||||||
|   ]) |   ]) | ||||||
|  |  | ||||||
|   useEffect(() => { |   useEffect(() => { | ||||||
| @ -105,22 +112,29 @@ export function useSetupEngineManager( | |||||||
|         streamRef?.current?.offsetHeight |         streamRef?.current?.offsetHeight | ||||||
|       ) |       ) | ||||||
|       if ( |       if ( | ||||||
|         settings.modelingContext.store.streamDimensions.streamWidth !== width || |         streamDimensions.streamWidth !== width || | ||||||
|         settings.modelingContext.store.streamDimensions.streamHeight !== height |         streamDimensions.streamHeight !== height | ||||||
|       ) { |       ) { | ||||||
|         engineCommandManager.handleResize({ |         engineCommandManager.handleResize({ | ||||||
|           streamWidth: width, |           streamWidth: width, | ||||||
|           streamHeight: height, |           streamHeight: height, | ||||||
|         }) |         }) | ||||||
|         settings.modelingSend({ |         setAppState({ | ||||||
|           type: 'Set context', |           streamDimensions: { streamWidth: width, streamHeight: height }, | ||||||
|           data: { |  | ||||||
|             streamDimensions: { |  | ||||||
|               streamWidth: width, |  | ||||||
|               streamHeight: height, |  | ||||||
|             }, |  | ||||||
|           }, |  | ||||||
|         }) |         }) | ||||||
|  |         sceneInfra._streamDimensions = { | ||||||
|  |           streamWidth: width, | ||||||
|  |           streamHeight: height, | ||||||
|  |         } | ||||||
|  |         // settings.modelingSend({ | ||||||
|  |         //   type: 'Set context', | ||||||
|  |         //   data: { | ||||||
|  |         //     streamDimensions: { | ||||||
|  |         //       streamWidth: width, | ||||||
|  |         //       streamHeight: height, | ||||||
|  |         //     }, | ||||||
|  |         //   }, | ||||||
|  |         // }) | ||||||
|       } |       } | ||||||
|     }, 500) |     }, 500) | ||||||
|  |  | ||||||
|  | |||||||
| @ -8,9 +8,11 @@ import { | |||||||
| } from 'lib/cameraControls' | } from 'lib/cameraControls' | ||||||
| import { SettingsSection } from 'components/Settings/SettingsSection' | import { SettingsSection } from 'components/Settings/SettingsSection' | ||||||
| import { useModelingContext } from 'hooks/useModelingContext' | import { useModelingContext } from 'hooks/useModelingContext' | ||||||
|  | import { useAppState } from 'AppState' | ||||||
|  |  | ||||||
| export default function Units() { | export default function Units() { | ||||||
|   const { context } = useModelingContext() |   const { context } = useModelingContext() | ||||||
|  |   const { buttonDownInStream } = useAppState() | ||||||
|   const dismiss = useDismiss() |   const dismiss = useDismiss() | ||||||
|   const next = useNextClick(onboardingPaths.STREAMING) |   const next = useNextClick(onboardingPaths.STREAMING) | ||||||
|   const { |   const { | ||||||
| @ -29,7 +31,7 @@ export default function Units() { | |||||||
|       <div |       <div | ||||||
|         className={ |         className={ | ||||||
|           'max-w-2xl border border-chalkboard-50 dark:border-chalkboard-80 shadow-lg flex flex-col justify-center bg-chalkboard-10 dark:bg-chalkboard-90 p-8 rounded' + |           'max-w-2xl border border-chalkboard-50 dark:border-chalkboard-80 shadow-lg flex flex-col justify-center bg-chalkboard-10 dark:bg-chalkboard-90 p-8 rounded' + | ||||||
|           (context.store?.buttonDownInStream ? '' : ' pointer-events-auto') |           (buttonDownInStream ? '' : ' pointer-events-auto') | ||||||
|         } |         } | ||||||
|       > |       > | ||||||
|         <SettingsSection |         <SettingsSection | ||||||
|  | |||||||
| @ -2,9 +2,11 @@ import usePlatform from 'hooks/usePlatform' | |||||||
| import { OnboardingButtons, kbdClasses, useDismiss, useNextClick } from '.' | import { OnboardingButtons, kbdClasses, useDismiss, useNextClick } from '.' | ||||||
| import { onboardingPaths } from 'routes/Onboarding/paths' | import { onboardingPaths } from 'routes/Onboarding/paths' | ||||||
| import { useModelingContext } from 'hooks/useModelingContext' | import { useModelingContext } from 'hooks/useModelingContext' | ||||||
|  | import { useAppState } from 'AppState' | ||||||
|  |  | ||||||
| export default function CmdK() { | export default function CmdK() { | ||||||
|   const { context } = useModelingContext() |   // const { context } = useModelingContext() | ||||||
|  |   const { buttonDownInStream } = useAppState() | ||||||
|   const dismiss = useDismiss() |   const dismiss = useDismiss() | ||||||
|   const next = useNextClick(onboardingPaths.USER_MENU) |   const next = useNextClick(onboardingPaths.USER_MENU) | ||||||
|   const platformName = usePlatform() |   const platformName = usePlatform() | ||||||
| @ -14,7 +16,7 @@ export default function CmdK() { | |||||||
|       <div |       <div | ||||||
|         className={ |         className={ | ||||||
|           'max-w-full xl:max-w-4xl border border-chalkboard-50 dark:border-chalkboard-80 shadow-lg flex flex-col justify-center bg-chalkboard-10 dark:bg-chalkboard-90 p-8 rounded' + |           'max-w-full xl:max-w-4xl border border-chalkboard-50 dark:border-chalkboard-80 shadow-lg flex flex-col justify-center bg-chalkboard-10 dark:bg-chalkboard-90 p-8 rounded' + | ||||||
|           (context.store?.buttonDownInStream ? '' : ' pointer-events-auto') |           (buttonDownInStream ? '' : ' pointer-events-auto') | ||||||
|         } |         } | ||||||
|       > |       > | ||||||
|         <h2 className="text-2xl font-bold">Command Bar</h2> |         <h2 className="text-2xl font-bold">Command Bar</h2> | ||||||
|  | |||||||
| @ -1,10 +1,12 @@ | |||||||
| import { useModelingContext } from 'hooks/useModelingContext' | import { useModelingContext } from 'hooks/useModelingContext' | ||||||
| import { OnboardingButtons, useDemoCode, useDismiss, useNextClick } from '.' | import { OnboardingButtons, useDemoCode, useDismiss, useNextClick } from '.' | ||||||
| import { onboardingPaths } from 'routes/Onboarding/paths' | import { onboardingPaths } from 'routes/Onboarding/paths' | ||||||
|  | import { useAppState } from 'AppState' | ||||||
|  |  | ||||||
| export default function OnboardingCodeEditor() { | export default function OnboardingCodeEditor() { | ||||||
|   useDemoCode() |   useDemoCode() | ||||||
|   const { context } = useModelingContext() |   const { context } = useModelingContext() | ||||||
|  |   const { buttonDownInStream } = useAppState() | ||||||
|   const dismiss = useDismiss() |   const dismiss = useDismiss() | ||||||
|   const next = useNextClick(onboardingPaths.PARAMETRIC_MODELING) |   const next = useNextClick(onboardingPaths.PARAMETRIC_MODELING) | ||||||
|  |  | ||||||
| @ -13,7 +15,7 @@ export default function OnboardingCodeEditor() { | |||||||
|       <div |       <div | ||||||
|         className={ |         className={ | ||||||
|           'z-10 max-w-xl border border-chalkboard-50 dark:border-chalkboard-80 shadow-lg h-[75vh] flex flex-col justify-center bg-chalkboard-10 dark:bg-chalkboard-90 p-8 rounded' + |           'z-10 max-w-xl border border-chalkboard-50 dark:border-chalkboard-80 shadow-lg h-[75vh] flex flex-col justify-center bg-chalkboard-10 dark:bg-chalkboard-90 p-8 rounded' + | ||||||
|           (context.store?.buttonDownInStream ? '' : ' pointer-events-auto') |           (buttonDownInStream ? '' : ' pointer-events-auto') | ||||||
|         } |         } | ||||||
|       > |       > | ||||||
|         <section className="flex-1 overflow-y-auto"> |         <section className="flex-1 overflow-y-auto"> | ||||||
|  | |||||||
| @ -2,9 +2,11 @@ import { APP_NAME } from 'lib/constants' | |||||||
| import { OnboardingButtons, useDismiss, useNextClick } from '.' | import { OnboardingButtons, useDismiss, useNextClick } from '.' | ||||||
| import { onboardingPaths } from 'routes/Onboarding/paths' | import { onboardingPaths } from 'routes/Onboarding/paths' | ||||||
| import { useModelingContext } from 'hooks/useModelingContext' | import { useModelingContext } from 'hooks/useModelingContext' | ||||||
|  | import { useAppState } from 'AppState' | ||||||
|  |  | ||||||
| export default function Export() { | export default function Export() { | ||||||
|   const { context } = useModelingContext() |   const { context } = useModelingContext() | ||||||
|  |   const { buttonDownInStream } = useAppState() | ||||||
|   const dismiss = useDismiss() |   const dismiss = useDismiss() | ||||||
|   const next = useNextClick(onboardingPaths.SKETCHING) |   const next = useNextClick(onboardingPaths.SKETCHING) | ||||||
|  |  | ||||||
| @ -13,7 +15,7 @@ export default function Export() { | |||||||
|       <div |       <div | ||||||
|         className={ |         className={ | ||||||
|           'max-w-full xl:max-w-2xl border border-chalkboard-50 dark:border-chalkboard-80 shadow-lg flex flex-col justify-center bg-chalkboard-10 dark:bg-chalkboard-90 p-8 rounded' + |           'max-w-full xl:max-w-2xl border border-chalkboard-50 dark:border-chalkboard-80 shadow-lg flex flex-col justify-center bg-chalkboard-10 dark:bg-chalkboard-90 p-8 rounded' + | ||||||
|           (context.store?.buttonDownInStream ? '' : ' pointer-events-auto') |           (buttonDownInStream ? '' : ' pointer-events-auto') | ||||||
|         } |         } | ||||||
|       > |       > | ||||||
|         <section className="flex-1"> |         <section className="flex-1"> | ||||||
|  | |||||||
| @ -8,10 +8,12 @@ import { | |||||||
| import { onboardingPaths } from 'routes/Onboarding/paths' | import { onboardingPaths } from 'routes/Onboarding/paths' | ||||||
| import { bracketWidthConstantLine } from 'lib/exampleKcl' | import { bracketWidthConstantLine } from 'lib/exampleKcl' | ||||||
| import { useModelingContext } from 'hooks/useModelingContext' | import { useModelingContext } from 'hooks/useModelingContext' | ||||||
|  | import { useAppState } from 'AppState' | ||||||
|  |  | ||||||
| export default function OnboardingInteractiveNumbers() { | export default function OnboardingInteractiveNumbers() { | ||||||
|   useDemoCode() |   useDemoCode() | ||||||
|   const { context } = useModelingContext() |   const { context } = useModelingContext() | ||||||
|  |   const { buttonDownInStream } = useAppState() | ||||||
|   const dismiss = useDismiss() |   const dismiss = useDismiss() | ||||||
|   const next = useNextClick(onboardingPaths.COMMAND_K) |   const next = useNextClick(onboardingPaths.COMMAND_K) | ||||||
|  |  | ||||||
| @ -20,7 +22,7 @@ export default function OnboardingInteractiveNumbers() { | |||||||
|       <div |       <div | ||||||
|         className={ |         className={ | ||||||
|           'z-10 max-w-xl border border-chalkboard-50 dark:border-chalkboard-80 shadow-lg h-[75vh] flex flex-col justify-center bg-chalkboard-10 dark:bg-chalkboard-90 p-8 rounded' + |           'z-10 max-w-xl border border-chalkboard-50 dark:border-chalkboard-80 shadow-lg h-[75vh] flex flex-col justify-center bg-chalkboard-10 dark:bg-chalkboard-90 p-8 rounded' + | ||||||
|           (context.store?.buttonDownInStream ? '' : ' pointer-events-auto') |           (buttonDownInStream ? '' : ' pointer-events-auto') | ||||||
|         } |         } | ||||||
|       > |       > | ||||||
|         <section className="flex-1 overflow-y-auto mb-6"> |         <section className="flex-1 overflow-y-auto mb-6"> | ||||||
|  | |||||||
| @ -4,10 +4,12 @@ import { Themes, getSystemTheme } from 'lib/theme' | |||||||
| import { useSettingsAuthContext } from 'hooks/useSettingsAuthContext' | import { useSettingsAuthContext } from 'hooks/useSettingsAuthContext' | ||||||
| import { bracketThicknessCalculationLine } from 'lib/exampleKcl' | import { bracketThicknessCalculationLine } from 'lib/exampleKcl' | ||||||
| import { useModelingContext } from 'hooks/useModelingContext' | import { useModelingContext } from 'hooks/useModelingContext' | ||||||
|  | import { useAppState } from 'AppState' | ||||||
|  |  | ||||||
| export default function OnboardingParametricModeling() { | export default function OnboardingParametricModeling() { | ||||||
|   useDemoCode() |   useDemoCode() | ||||||
|   const { context } = useModelingContext() |   const { context } = useModelingContext() | ||||||
|  |   const { buttonDownInStream } = useAppState() | ||||||
|   const { |   const { | ||||||
|     settings: { |     settings: { | ||||||
|       context: { |       context: { | ||||||
| @ -30,7 +32,7 @@ export default function OnboardingParametricModeling() { | |||||||
|       <div |       <div | ||||||
|         className={ |         className={ | ||||||
|           'z-10 max-w-xl border border-chalkboard-50 dark:border-chalkboard-80 shadow-lg h-[75vh] flex flex-col justify-center bg-chalkboard-10 dark:bg-chalkboard-90 p-8 rounded' + |           'z-10 max-w-xl border border-chalkboard-50 dark:border-chalkboard-80 shadow-lg h-[75vh] flex flex-col justify-center bg-chalkboard-10 dark:bg-chalkboard-90 p-8 rounded' + | ||||||
|           (context.store?.buttonDownInStream ? '' : ' pointer-events-auto') |           (buttonDownInStream ? '' : ' pointer-events-auto') | ||||||
|         } |         } | ||||||
|       > |       > | ||||||
|         <section className="flex-1 overflow-y-auto mb-6"> |         <section className="flex-1 overflow-y-auto mb-6"> | ||||||
|  | |||||||
| @ -2,9 +2,11 @@ import { OnboardingButtons, useDismiss, useNextClick } from '.' | |||||||
| import { onboardingPaths } from 'routes/Onboarding/paths' | import { onboardingPaths } from 'routes/Onboarding/paths' | ||||||
| import { isTauri } from 'lib/isTauri' | import { isTauri } from 'lib/isTauri' | ||||||
| import { useModelingContext } from 'hooks/useModelingContext' | import { useModelingContext } from 'hooks/useModelingContext' | ||||||
|  | import { useAppState } from 'AppState' | ||||||
|  |  | ||||||
| export default function ProjectMenu() { | export default function ProjectMenu() { | ||||||
|   const { context } = useModelingContext() |   const { context } = useModelingContext() | ||||||
|  |   const { buttonDownInStream } = useAppState() | ||||||
|   const dismiss = useDismiss() |   const dismiss = useDismiss() | ||||||
|   const next = useNextClick(onboardingPaths.EXPORT) |   const next = useNextClick(onboardingPaths.EXPORT) | ||||||
|   const tauri = isTauri() |   const tauri = isTauri() | ||||||
| @ -14,7 +16,7 @@ export default function ProjectMenu() { | |||||||
|       <div |       <div | ||||||
|         className={ |         className={ | ||||||
|           'max-w-xl flex flex-col border border-chalkboard-50 dark:border-chalkboard-80 shadow-lg justify-center bg-chalkboard-10 dark:bg-chalkboard-90 p-8 rounded' + |           'max-w-xl flex flex-col border border-chalkboard-50 dark:border-chalkboard-80 shadow-lg justify-center bg-chalkboard-10 dark:bg-chalkboard-90 p-8 rounded' + | ||||||
|           (context.store?.buttonDownInStream ? '' : ' pointer-events-auto') |           (buttonDownInStream ? '' : ' pointer-events-auto') | ||||||
|         } |         } | ||||||
|       > |       > | ||||||
|         <section className="flex-1"> |         <section className="flex-1"> | ||||||
|  | |||||||
| @ -3,9 +3,11 @@ import { onboardingPaths } from 'routes/Onboarding/paths' | |||||||
| import { useEffect } from 'react' | import { useEffect } from 'react' | ||||||
| import { codeManager, kclManager } from 'lib/singletons' | import { codeManager, kclManager } from 'lib/singletons' | ||||||
| import { useModelingContext } from 'hooks/useModelingContext' | import { useModelingContext } from 'hooks/useModelingContext' | ||||||
|  | import { useAppState } from 'AppState' | ||||||
|  |  | ||||||
| export default function Sketching() { | export default function Sketching() { | ||||||
|   const { context } = useModelingContext() |   const { context } = useModelingContext() | ||||||
|  |   const { buttonDownInStream } = useAppState() | ||||||
|   const dismiss = useDismiss() |   const dismiss = useDismiss() | ||||||
|   const next = useNextClick(onboardingPaths.FUTURE_WORK) |   const next = useNextClick(onboardingPaths.FUTURE_WORK) | ||||||
|  |  | ||||||
| @ -23,7 +25,7 @@ export default function Sketching() { | |||||||
|       <div |       <div | ||||||
|         className={ |         className={ | ||||||
|           'max-w-full xl:max-w-2xl border border-chalkboard-50 dark:border-chalkboard-80 shadow-lg flex flex-col justify-center bg-chalkboard-10 dark:bg-chalkboard-90 p-8 rounded' + |           'max-w-full xl:max-w-2xl border border-chalkboard-50 dark:border-chalkboard-80 shadow-lg flex flex-col justify-center bg-chalkboard-10 dark:bg-chalkboard-90 p-8 rounded' + | ||||||
|           (context.store?.buttonDownInStream ? '' : ' pointer-events-auto') |           (buttonDownInStream ? '' : ' pointer-events-auto') | ||||||
|         } |         } | ||||||
|       > |       > | ||||||
|         <h1 className="text-2xl font-bold">Sketching</h1> |         <h1 className="text-2xl font-bold">Sketching</h1> | ||||||
|  | |||||||
| @ -1,9 +1,11 @@ | |||||||
| import { useModelingContext } from 'hooks/useModelingContext' | import { useModelingContext } from 'hooks/useModelingContext' | ||||||
| import { OnboardingButtons, useDismiss, useNextClick } from '.' | import { OnboardingButtons, useDismiss, useNextClick } from '.' | ||||||
| import { onboardingPaths } from 'routes/Onboarding/paths' | import { onboardingPaths } from 'routes/Onboarding/paths' | ||||||
|  | import { useAppState } from 'AppState' | ||||||
|  |  | ||||||
| export default function Streaming() { | export default function Streaming() { | ||||||
|   const { context } = useModelingContext() |   const { context } = useModelingContext() | ||||||
|  |   const { buttonDownInStream } = useAppState() | ||||||
|   const dismiss = useDismiss() |   const dismiss = useDismiss() | ||||||
|   const next = useNextClick(onboardingPaths.EDITOR) |   const next = useNextClick(onboardingPaths.EDITOR) | ||||||
|  |  | ||||||
| @ -12,7 +14,7 @@ export default function Streaming() { | |||||||
|       <div |       <div | ||||||
|         className={ |         className={ | ||||||
|           'max-w-xl border border-chalkboard-50 dark:border-chalkboard-80 shadow-lg h-[75vh] flex flex-col justify-center bg-chalkboard-10 dark:bg-chalkboard-90 p-8 rounded' + |           'max-w-xl border border-chalkboard-50 dark:border-chalkboard-80 shadow-lg h-[75vh] flex flex-col justify-center bg-chalkboard-10 dark:bg-chalkboard-90 p-8 rounded' + | ||||||
|           (context.store?.buttonDownInStream ? '' : ' pointer-events-auto') |           (buttonDownInStream ? '' : ' pointer-events-auto') | ||||||
|         } |         } | ||||||
|       > |       > | ||||||
|         <section className="flex-1 overflow-y-auto"> |         <section className="flex-1 overflow-y-auto"> | ||||||
|  | |||||||
| @ -3,9 +3,11 @@ import { onboardingPaths } from 'routes/Onboarding/paths' | |||||||
| import { useEffect, useState } from 'react' | import { useEffect, useState } from 'react' | ||||||
| import { useModelingContext } from 'hooks/useModelingContext' | import { useModelingContext } from 'hooks/useModelingContext' | ||||||
| import { useSettingsAuthContext } from 'hooks/useSettingsAuthContext' | import { useSettingsAuthContext } from 'hooks/useSettingsAuthContext' | ||||||
|  | import { useAppState } from 'AppState' | ||||||
|  |  | ||||||
| export default function UserMenu() { | export default function UserMenu() { | ||||||
|   const { context } = useModelingContext() |   const { context } = useModelingContext() | ||||||
|  |   const { buttonDownInStream } = useAppState() | ||||||
|   const { auth } = useSettingsAuthContext() |   const { auth } = useSettingsAuthContext() | ||||||
|   const dismiss = useDismiss() |   const dismiss = useDismiss() | ||||||
|   const next = useNextClick(onboardingPaths.PROJECT_MENU) |   const next = useNextClick(onboardingPaths.PROJECT_MENU) | ||||||
| @ -36,7 +38,7 @@ export default function UserMenu() { | |||||||
|       <div |       <div | ||||||
|         className={ |         className={ | ||||||
|           'max-w-xl flex flex-col border border-chalkboard-50 dark:border-chalkboard-80 shadow-lg justify-center bg-chalkboard-10 dark:bg-chalkboard-90 p-8 rounded' + |           'max-w-xl flex flex-col border border-chalkboard-50 dark:border-chalkboard-80 shadow-lg justify-center bg-chalkboard-10 dark:bg-chalkboard-90 p-8 rounded' + | ||||||
|           (context.store?.buttonDownInStream ? '' : ' pointer-events-auto') |           (buttonDownInStream ? '' : ' pointer-events-auto') | ||||||
|         } |         } | ||||||
|       > |       > | ||||||
|         <section className="flex-1"> |         <section className="flex-1"> | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	