├── .gitignore ├── Cargo.lock ├── Cargo.toml ├── LICENSE ├── README.md ├── examples └── homepage.rs ├── src ├── assertions.rs ├── attribute.rs ├── attribute_ident.rs ├── attributes.rs ├── close_tag.rs ├── element.rs ├── html.rs ├── html_non_recursive.rs ├── item.rs ├── lib.rs ├── open_tag.rs ├── prelude.rs └── rsx_expr.rs └── test ├── attribute ├── format_str.rs ├── format_str.stderr ├── missing_equals.rs ├── missing_equals.stderr ├── non_str_custom.rs ├── non_str_custom.stderr ├── passes.rs ├── random_expression.rs └── random_expression.stderr ├── body ├── expression.rs ├── plain_text.rs └── plain_text.stderr ├── props └── enum.rs └── tag ├── extra_close.rs ├── extra_close.stderr ├── missing_close.rs ├── missing_close.stderr ├── trailing.rs └── trailing.stderr /.gitignore: -------------------------------------------------------------------------------- 1 | *target 2 | *.vscode -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "adler" 7 | version = "1.0.2" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 10 | 11 | [[package]] 12 | name = "aho-corasick" 13 | version = "0.7.18" 14 | source = "registry+https://github.com/rust-lang/crates.io-index" 15 | checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" 16 | dependencies = [ 17 | "memchr", 18 | ] 19 | 20 | [[package]] 21 | name = "anyhow" 22 | version = "1.0.71" 23 | source = "registry+https://github.com/rust-lang/crates.io-index" 24 | checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" 25 | 26 | [[package]] 27 | name = "async-channel" 28 | version = "1.9.0" 29 | source = "registry+https://github.com/rust-lang/crates.io-index" 30 | checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" 31 | dependencies = [ 32 | "concurrent-queue", 33 | "event-listener", 34 | "futures-core", 35 | ] 36 | 37 | [[package]] 38 | name = "async-io" 39 | version = "1.13.0" 40 | source = "registry+https://github.com/rust-lang/crates.io-index" 41 | checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" 42 | dependencies = [ 43 | "async-lock", 44 | "autocfg", 45 | "cfg-if", 46 | "concurrent-queue", 47 | "futures-lite", 48 | "log", 49 | "parking", 50 | "polling", 51 | "rustix", 52 | "slab", 53 | "socket2", 54 | "waker-fn", 55 | ] 56 | 57 | [[package]] 58 | name = "async-lock" 59 | version = "2.7.0" 60 | source = "registry+https://github.com/rust-lang/crates.io-index" 61 | checksum = "fa24f727524730b077666307f2734b4a1a1c57acb79193127dcc8914d5242dd7" 62 | dependencies = [ 63 | "event-listener", 64 | ] 65 | 66 | [[package]] 67 | name = "async-task" 68 | version = "4.4.0" 69 | source = "registry+https://github.com/rust-lang/crates.io-index" 70 | checksum = "ecc7ab41815b3c653ccd2978ec3255c81349336702dfdf62ee6f7069b12a3aae" 71 | 72 | [[package]] 73 | name = "async-trait" 74 | version = "0.1.68" 75 | source = "registry+https://github.com/rust-lang/crates.io-index" 76 | checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" 77 | dependencies = [ 78 | "proc-macro2", 79 | "quote", 80 | "syn 2.0.41", 81 | ] 82 | 83 | [[package]] 84 | name = "atk" 85 | version = "0.16.0" 86 | source = "registry+https://github.com/rust-lang/crates.io-index" 87 | checksum = "39991bc421ddf72f70159011b323ff49b0f783cc676a7287c59453da2e2531cf" 88 | dependencies = [ 89 | "atk-sys", 90 | "bitflags 1.3.2", 91 | "glib", 92 | "libc", 93 | ] 94 | 95 | [[package]] 96 | name = "atk-sys" 97 | version = "0.16.0" 98 | source = "registry+https://github.com/rust-lang/crates.io-index" 99 | checksum = "11ad703eb64dc058024f0e57ccfa069e15a413b98dbd50a1a950e743b7f11148" 100 | dependencies = [ 101 | "glib-sys", 102 | "gobject-sys", 103 | "libc", 104 | "system-deps", 105 | ] 106 | 107 | [[package]] 108 | name = "atomic-waker" 109 | version = "1.1.1" 110 | source = "registry+https://github.com/rust-lang/crates.io-index" 111 | checksum = "1181e1e0d1fce796a03db1ae795d67167da795f9cf4a39c37589e85ef57f26d3" 112 | 113 | [[package]] 114 | name = "autocfg" 115 | version = "1.1.0" 116 | source = "registry+https://github.com/rust-lang/crates.io-index" 117 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 118 | 119 | [[package]] 120 | name = "base64" 121 | version = "0.13.1" 122 | source = "registry+https://github.com/rust-lang/crates.io-index" 123 | checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" 124 | 125 | [[package]] 126 | name = "bitflags" 127 | version = "1.3.2" 128 | source = "registry+https://github.com/rust-lang/crates.io-index" 129 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 130 | 131 | [[package]] 132 | name = "bitflags" 133 | version = "2.4.1" 134 | source = "registry+https://github.com/rust-lang/crates.io-index" 135 | checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" 136 | dependencies = [ 137 | "serde", 138 | ] 139 | 140 | [[package]] 141 | name = "block" 142 | version = "0.1.6" 143 | source = "registry+https://github.com/rust-lang/crates.io-index" 144 | checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" 145 | 146 | [[package]] 147 | name = "block-buffer" 148 | version = "0.10.4" 149 | source = "registry+https://github.com/rust-lang/crates.io-index" 150 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 151 | dependencies = [ 152 | "generic-array", 153 | ] 154 | 155 | [[package]] 156 | name = "blocking" 157 | version = "1.3.1" 158 | source = "registry+https://github.com/rust-lang/crates.io-index" 159 | checksum = "77231a1c8f801696fc0123ec6150ce92cffb8e164a02afb9c8ddee0e9b65ad65" 160 | dependencies = [ 161 | "async-channel", 162 | "async-lock", 163 | "async-task", 164 | "atomic-waker", 165 | "fastrand", 166 | "futures-lite", 167 | "log", 168 | ] 169 | 170 | [[package]] 171 | name = "bumpalo" 172 | version = "3.12.2" 173 | source = "registry+https://github.com/rust-lang/crates.io-index" 174 | checksum = "3c6ed94e98ecff0c12dd1b04c15ec0d7d9458ca8fe806cea6f12954efe74c63b" 175 | 176 | [[package]] 177 | name = "bytemuck" 178 | version = "1.13.1" 179 | source = "registry+https://github.com/rust-lang/crates.io-index" 180 | checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" 181 | 182 | [[package]] 183 | name = "byteorder" 184 | version = "1.4.3" 185 | source = "registry+https://github.com/rust-lang/crates.io-index" 186 | checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" 187 | 188 | [[package]] 189 | name = "bytes" 190 | version = "1.4.0" 191 | source = "registry+https://github.com/rust-lang/crates.io-index" 192 | checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" 193 | 194 | [[package]] 195 | name = "cairo-rs" 196 | version = "0.16.7" 197 | source = "registry+https://github.com/rust-lang/crates.io-index" 198 | checksum = "f3125b15ec28b84c238f6f476c6034016a5f6cc0221cb514ca46c532139fc97d" 199 | dependencies = [ 200 | "bitflags 1.3.2", 201 | "cairo-sys-rs", 202 | "glib", 203 | "libc", 204 | "once_cell", 205 | "thiserror", 206 | ] 207 | 208 | [[package]] 209 | name = "cairo-sys-rs" 210 | version = "0.16.3" 211 | source = "registry+https://github.com/rust-lang/crates.io-index" 212 | checksum = "7c48f4af05fabdcfa9658178e1326efa061853f040ce7d72e33af6885196f421" 213 | dependencies = [ 214 | "glib-sys", 215 | "libc", 216 | "system-deps", 217 | ] 218 | 219 | [[package]] 220 | name = "cc" 221 | version = "1.0.73" 222 | source = "registry+https://github.com/rust-lang/crates.io-index" 223 | checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" 224 | 225 | [[package]] 226 | name = "cesu8" 227 | version = "1.1.0" 228 | source = "registry+https://github.com/rust-lang/crates.io-index" 229 | checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" 230 | 231 | [[package]] 232 | name = "cfb" 233 | version = "0.7.3" 234 | source = "registry+https://github.com/rust-lang/crates.io-index" 235 | checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" 236 | dependencies = [ 237 | "byteorder", 238 | "fnv", 239 | "uuid", 240 | ] 241 | 242 | [[package]] 243 | name = "cfg-expr" 244 | version = "0.15.1" 245 | source = "registry+https://github.com/rust-lang/crates.io-index" 246 | checksum = "c8790cf1286da485c72cf5fc7aeba308438800036ec67d89425924c4807268c9" 247 | dependencies = [ 248 | "smallvec", 249 | "target-lexicon", 250 | ] 251 | 252 | [[package]] 253 | name = "cfg-if" 254 | version = "1.0.0" 255 | source = "registry+https://github.com/rust-lang/crates.io-index" 256 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 257 | 258 | [[package]] 259 | name = "cocoa" 260 | version = "0.24.1" 261 | source = "registry+https://github.com/rust-lang/crates.io-index" 262 | checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" 263 | dependencies = [ 264 | "bitflags 1.3.2", 265 | "block", 266 | "cocoa-foundation", 267 | "core-foundation", 268 | "core-graphics", 269 | "foreign-types", 270 | "libc", 271 | "objc", 272 | ] 273 | 274 | [[package]] 275 | name = "cocoa-foundation" 276 | version = "0.1.1" 277 | source = "registry+https://github.com/rust-lang/crates.io-index" 278 | checksum = "931d3837c286f56e3c58423ce4eba12d08db2374461a785c86f672b08b5650d6" 279 | dependencies = [ 280 | "bitflags 1.3.2", 281 | "block", 282 | "core-foundation", 283 | "core-graphics-types", 284 | "foreign-types", 285 | "libc", 286 | "objc", 287 | ] 288 | 289 | [[package]] 290 | name = "color_quant" 291 | version = "1.1.0" 292 | source = "registry+https://github.com/rust-lang/crates.io-index" 293 | checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" 294 | 295 | [[package]] 296 | name = "combine" 297 | version = "4.6.6" 298 | source = "registry+https://github.com/rust-lang/crates.io-index" 299 | checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" 300 | dependencies = [ 301 | "bytes", 302 | "memchr", 303 | ] 304 | 305 | [[package]] 306 | name = "concurrent-queue" 307 | version = "2.4.0" 308 | source = "registry+https://github.com/rust-lang/crates.io-index" 309 | checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" 310 | dependencies = [ 311 | "crossbeam-utils", 312 | ] 313 | 314 | [[package]] 315 | name = "constcat" 316 | version = "0.3.1" 317 | source = "registry+https://github.com/rust-lang/crates.io-index" 318 | checksum = "cd7e35aee659887cbfb97aaf227ac12cad1a9d7c71e55ff3376839ed4e282d08" 319 | 320 | [[package]] 321 | name = "convert_case" 322 | version = "0.4.0" 323 | source = "registry+https://github.com/rust-lang/crates.io-index" 324 | checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" 325 | 326 | [[package]] 327 | name = "core-foundation" 328 | version = "0.9.3" 329 | source = "registry+https://github.com/rust-lang/crates.io-index" 330 | checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" 331 | dependencies = [ 332 | "core-foundation-sys", 333 | "libc", 334 | ] 335 | 336 | [[package]] 337 | name = "core-foundation-sys" 338 | version = "0.8.3" 339 | source = "registry+https://github.com/rust-lang/crates.io-index" 340 | checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" 341 | 342 | [[package]] 343 | name = "core-graphics" 344 | version = "0.22.3" 345 | source = "registry+https://github.com/rust-lang/crates.io-index" 346 | checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" 347 | dependencies = [ 348 | "bitflags 1.3.2", 349 | "core-foundation", 350 | "core-graphics-types", 351 | "foreign-types", 352 | "libc", 353 | ] 354 | 355 | [[package]] 356 | name = "core-graphics-types" 357 | version = "0.1.1" 358 | source = "registry+https://github.com/rust-lang/crates.io-index" 359 | checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" 360 | dependencies = [ 361 | "bitflags 1.3.2", 362 | "core-foundation", 363 | "foreign-types", 364 | "libc", 365 | ] 366 | 367 | [[package]] 368 | name = "cpufeatures" 369 | version = "0.2.7" 370 | source = "registry+https://github.com/rust-lang/crates.io-index" 371 | checksum = "3e4c1eaa2012c47becbbad2ab175484c2a84d1185b566fb2cc5b8707343dfe58" 372 | dependencies = [ 373 | "libc", 374 | ] 375 | 376 | [[package]] 377 | name = "crc32fast" 378 | version = "1.3.2" 379 | source = "registry+https://github.com/rust-lang/crates.io-index" 380 | checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" 381 | dependencies = [ 382 | "cfg-if", 383 | ] 384 | 385 | [[package]] 386 | name = "crossbeam-channel" 387 | version = "0.5.5" 388 | source = "registry+https://github.com/rust-lang/crates.io-index" 389 | checksum = "4c02a4d71819009c192cf4872265391563fd6a84c81ff2c0f2a7026ca4c1d85c" 390 | dependencies = [ 391 | "cfg-if", 392 | "crossbeam-utils", 393 | ] 394 | 395 | [[package]] 396 | name = "crossbeam-utils" 397 | version = "0.8.17" 398 | source = "registry+https://github.com/rust-lang/crates.io-index" 399 | checksum = "c06d96137f14f244c37f989d9fff8f95e6c18b918e71f36638f8c49112e4c78f" 400 | dependencies = [ 401 | "cfg-if", 402 | ] 403 | 404 | [[package]] 405 | name = "crypto-common" 406 | version = "0.1.6" 407 | source = "registry+https://github.com/rust-lang/crates.io-index" 408 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 409 | dependencies = [ 410 | "generic-array", 411 | "typenum", 412 | ] 413 | 414 | [[package]] 415 | name = "cssparser" 416 | version = "0.27.2" 417 | source = "registry+https://github.com/rust-lang/crates.io-index" 418 | checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a" 419 | dependencies = [ 420 | "cssparser-macros", 421 | "dtoa-short", 422 | "itoa 0.4.8", 423 | "matches", 424 | "phf", 425 | "proc-macro2", 426 | "quote", 427 | "smallvec", 428 | "syn 1.0.98", 429 | ] 430 | 431 | [[package]] 432 | name = "cssparser-macros" 433 | version = "0.6.0" 434 | source = "registry+https://github.com/rust-lang/crates.io-index" 435 | checksum = "dfae75de57f2b2e85e8768c3ea840fd159c8f33e2b6522c7835b7abac81be16e" 436 | dependencies = [ 437 | "quote", 438 | "syn 1.0.98", 439 | ] 440 | 441 | [[package]] 442 | name = "darling" 443 | version = "0.20.1" 444 | source = "registry+https://github.com/rust-lang/crates.io-index" 445 | checksum = "0558d22a7b463ed0241e993f76f09f30b126687447751a8638587b864e4b3944" 446 | dependencies = [ 447 | "darling_core", 448 | "darling_macro", 449 | ] 450 | 451 | [[package]] 452 | name = "darling_core" 453 | version = "0.20.1" 454 | source = "registry+https://github.com/rust-lang/crates.io-index" 455 | checksum = "ab8bfa2e259f8ee1ce5e97824a3c55ec4404a0d772ca7fa96bf19f0752a046eb" 456 | dependencies = [ 457 | "fnv", 458 | "ident_case", 459 | "proc-macro2", 460 | "quote", 461 | "syn 2.0.41", 462 | ] 463 | 464 | [[package]] 465 | name = "darling_macro" 466 | version = "0.20.1" 467 | source = "registry+https://github.com/rust-lang/crates.io-index" 468 | checksum = "29a358ff9f12ec09c3e61fef9b5a9902623a695a46a917b07f269bff1445611a" 469 | dependencies = [ 470 | "darling_core", 471 | "quote", 472 | "syn 2.0.41", 473 | ] 474 | 475 | [[package]] 476 | name = "derive_more" 477 | version = "0.99.17" 478 | source = "registry+https://github.com/rust-lang/crates.io-index" 479 | checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" 480 | dependencies = [ 481 | "convert_case", 482 | "proc-macro2", 483 | "quote", 484 | "rustc_version", 485 | "syn 1.0.98", 486 | ] 487 | 488 | [[package]] 489 | name = "digest" 490 | version = "0.10.6" 491 | source = "registry+https://github.com/rust-lang/crates.io-index" 492 | checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" 493 | dependencies = [ 494 | "block-buffer", 495 | "crypto-common", 496 | ] 497 | 498 | [[package]] 499 | name = "dioxus" 500 | version = "0.4.3" 501 | source = "registry+https://github.com/rust-lang/crates.io-index" 502 | checksum = "2d9e3b0725e520250bf23213f996d241cca29cea4360a9bf08a44e0033f8e569" 503 | dependencies = [ 504 | "dioxus-core", 505 | "dioxus-core-macro", 506 | "dioxus-hooks", 507 | "dioxus-hot-reload", 508 | "dioxus-html", 509 | "dioxus-rsx", 510 | ] 511 | 512 | [[package]] 513 | name = "dioxus-core" 514 | version = "0.4.3" 515 | source = "registry+https://github.com/rust-lang/crates.io-index" 516 | checksum = "0f33186615b2e90bceab24a195b3cfad4e0b4d91a33ec44a94845876bfb25c13" 517 | dependencies = [ 518 | "bumpalo", 519 | "futures-channel", 520 | "futures-util", 521 | "longest-increasing-subsequence", 522 | "rustc-hash", 523 | "serde", 524 | "slab", 525 | "smallbox", 526 | "tracing", 527 | ] 528 | 529 | [[package]] 530 | name = "dioxus-core-macro" 531 | version = "0.4.3" 532 | source = "registry+https://github.com/rust-lang/crates.io-index" 533 | checksum = "21afaccb28587aed0ba98856335912f5ce7052c0aafa74b213829a3b8bfd2345" 534 | dependencies = [ 535 | "constcat", 536 | "dioxus-core", 537 | "dioxus-rsx", 538 | "prettyplease", 539 | "proc-macro2", 540 | "quote", 541 | "syn 2.0.41", 542 | ] 543 | 544 | [[package]] 545 | name = "dioxus-debug-cell" 546 | version = "0.1.1" 547 | source = "registry+https://github.com/rust-lang/crates.io-index" 548 | checksum = "2ea539174bb236e0e7dc9c12b19b88eae3cb574dedbd0252a2d43ea7e6de13e2" 549 | 550 | [[package]] 551 | name = "dioxus-desktop" 552 | version = "0.4.3" 553 | source = "registry+https://github.com/rust-lang/crates.io-index" 554 | checksum = "bf3ea0b1f6e64157b43e73d7ec3985df904c89ecf313bff93e06ff7d3b40d1cb" 555 | dependencies = [ 556 | "async-trait", 557 | "core-foundation", 558 | "dioxus-core", 559 | "dioxus-hot-reload", 560 | "dioxus-html", 561 | "dioxus-interpreter-js", 562 | "dunce", 563 | "futures-channel", 564 | "futures-util", 565 | "infer", 566 | "objc", 567 | "objc_id", 568 | "rfd", 569 | "serde", 570 | "serde_json", 571 | "slab", 572 | "thiserror", 573 | "tokio", 574 | "tracing", 575 | "urlencoding", 576 | "webbrowser", 577 | "wry", 578 | ] 579 | 580 | [[package]] 581 | name = "dioxus-hooks" 582 | version = "0.4.3" 583 | source = "registry+https://github.com/rust-lang/crates.io-index" 584 | checksum = "5bb23ce82df4fb13e9ddaa01d1469f1f32d683dd4636204bd0a0eaf434b65946" 585 | dependencies = [ 586 | "dioxus-core", 587 | "dioxus-debug-cell", 588 | "futures-channel", 589 | "slab", 590 | "thiserror", 591 | "tracing", 592 | ] 593 | 594 | [[package]] 595 | name = "dioxus-hot-reload" 596 | version = "0.4.3" 597 | source = "registry+https://github.com/rust-lang/crates.io-index" 598 | checksum = "b7d8c9e89e866a6b84b8ad696f0ff2f6f6563d2235eb99acc6952f19e516cc09" 599 | dependencies = [ 600 | "dioxus-core", 601 | "dioxus-html", 602 | "dioxus-rsx", 603 | "interprocess-docfix", 604 | "serde", 605 | "serde_json", 606 | ] 607 | 608 | [[package]] 609 | name = "dioxus-html" 610 | version = "0.4.3" 611 | source = "registry+https://github.com/rust-lang/crates.io-index" 612 | checksum = "828a42a2d70688a2412a8538c8b5a5eceadf68f682f899dc4455a0169db39dfd" 613 | dependencies = [ 614 | "async-channel", 615 | "async-trait", 616 | "dioxus-core", 617 | "enumset", 618 | "euclid", 619 | "keyboard-types", 620 | "serde", 621 | "serde-value", 622 | "serde_json", 623 | "serde_repr", 624 | "tokio", 625 | "web-sys", 626 | ] 627 | 628 | [[package]] 629 | name = "dioxus-html-macro" 630 | version = "0.3.0" 631 | dependencies = [ 632 | "dioxus", 633 | "dioxus-desktop", 634 | "proc-macro2", 635 | "quote", 636 | "syn 2.0.41", 637 | "trybuild", 638 | ] 639 | 640 | [[package]] 641 | name = "dioxus-interpreter-js" 642 | version = "0.4.3" 643 | source = "registry+https://github.com/rust-lang/crates.io-index" 644 | checksum = "d9a3115cf9f550a9af88de615c21a15a72dee44230602087dd7b0c5d01f46c37" 645 | 646 | [[package]] 647 | name = "dioxus-rsx" 648 | version = "0.4.3" 649 | source = "registry+https://github.com/rust-lang/crates.io-index" 650 | checksum = "c974133c7c95497a486d587e40449927711430b308134b9cd374b8d35eceafb3" 651 | dependencies = [ 652 | "dioxus-core", 653 | "proc-macro2", 654 | "quote", 655 | "syn 2.0.41", 656 | ] 657 | 658 | [[package]] 659 | name = "dirs" 660 | version = "4.0.0" 661 | source = "registry+https://github.com/rust-lang/crates.io-index" 662 | checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" 663 | dependencies = [ 664 | "dirs-sys", 665 | ] 666 | 667 | [[package]] 668 | name = "dirs-sys" 669 | version = "0.3.7" 670 | source = "registry+https://github.com/rust-lang/crates.io-index" 671 | checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" 672 | dependencies = [ 673 | "libc", 674 | "redox_users", 675 | "winapi", 676 | ] 677 | 678 | [[package]] 679 | name = "dispatch" 680 | version = "0.2.0" 681 | source = "registry+https://github.com/rust-lang/crates.io-index" 682 | checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" 683 | 684 | [[package]] 685 | name = "dtoa" 686 | version = "0.4.8" 687 | source = "registry+https://github.com/rust-lang/crates.io-index" 688 | checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" 689 | 690 | [[package]] 691 | name = "dtoa-short" 692 | version = "0.3.3" 693 | source = "registry+https://github.com/rust-lang/crates.io-index" 694 | checksum = "bde03329ae10e79ede66c9ce4dc930aa8599043b0743008548680f25b91502d6" 695 | dependencies = [ 696 | "dtoa", 697 | ] 698 | 699 | [[package]] 700 | name = "dunce" 701 | version = "1.0.4" 702 | source = "registry+https://github.com/rust-lang/crates.io-index" 703 | checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" 704 | 705 | [[package]] 706 | name = "enumset" 707 | version = "1.1.1" 708 | source = "registry+https://github.com/rust-lang/crates.io-index" 709 | checksum = "27f1d44683938f1f2dbb59932a7e164a21928b0a4b23ca6f9059649ae4725b2e" 710 | dependencies = [ 711 | "enumset_derive", 712 | ] 713 | 714 | [[package]] 715 | name = "enumset_derive" 716 | version = "0.8.0" 717 | source = "registry+https://github.com/rust-lang/crates.io-index" 718 | checksum = "93b15496585fddd368466056b314fbb7e826a9ef1cf17b563d30dd2665846be2" 719 | dependencies = [ 720 | "darling", 721 | "proc-macro2", 722 | "quote", 723 | "syn 2.0.41", 724 | ] 725 | 726 | [[package]] 727 | name = "errno" 728 | version = "0.3.8" 729 | source = "registry+https://github.com/rust-lang/crates.io-index" 730 | checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" 731 | dependencies = [ 732 | "libc", 733 | "windows-sys 0.52.0", 734 | ] 735 | 736 | [[package]] 737 | name = "euclid" 738 | version = "0.22.9" 739 | source = "registry+https://github.com/rust-lang/crates.io-index" 740 | checksum = "87f253bc5c813ca05792837a0ff4b3a580336b224512d48f7eda1d7dd9210787" 741 | dependencies = [ 742 | "num-traits", 743 | "serde", 744 | ] 745 | 746 | [[package]] 747 | name = "event-listener" 748 | version = "2.5.3" 749 | source = "registry+https://github.com/rust-lang/crates.io-index" 750 | checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" 751 | 752 | [[package]] 753 | name = "fastrand" 754 | version = "1.9.0" 755 | source = "registry+https://github.com/rust-lang/crates.io-index" 756 | checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" 757 | dependencies = [ 758 | "instant", 759 | ] 760 | 761 | [[package]] 762 | name = "fdeflate" 763 | version = "0.3.0" 764 | source = "registry+https://github.com/rust-lang/crates.io-index" 765 | checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10" 766 | dependencies = [ 767 | "simd-adler32", 768 | ] 769 | 770 | [[package]] 771 | name = "field-offset" 772 | version = "0.3.5" 773 | source = "registry+https://github.com/rust-lang/crates.io-index" 774 | checksum = "a3cf3a800ff6e860c863ca6d4b16fd999db8b752819c1606884047b73e468535" 775 | dependencies = [ 776 | "memoffset", 777 | "rustc_version", 778 | ] 779 | 780 | [[package]] 781 | name = "flate2" 782 | version = "1.0.26" 783 | source = "registry+https://github.com/rust-lang/crates.io-index" 784 | checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" 785 | dependencies = [ 786 | "crc32fast", 787 | "miniz_oxide", 788 | ] 789 | 790 | [[package]] 791 | name = "fnv" 792 | version = "1.0.7" 793 | source = "registry+https://github.com/rust-lang/crates.io-index" 794 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 795 | 796 | [[package]] 797 | name = "foreign-types" 798 | version = "0.3.2" 799 | source = "registry+https://github.com/rust-lang/crates.io-index" 800 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 801 | dependencies = [ 802 | "foreign-types-shared", 803 | ] 804 | 805 | [[package]] 806 | name = "foreign-types-shared" 807 | version = "0.1.1" 808 | source = "registry+https://github.com/rust-lang/crates.io-index" 809 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 810 | 811 | [[package]] 812 | name = "form_urlencoded" 813 | version = "1.1.0" 814 | source = "registry+https://github.com/rust-lang/crates.io-index" 815 | checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" 816 | dependencies = [ 817 | "percent-encoding", 818 | ] 819 | 820 | [[package]] 821 | name = "futf" 822 | version = "0.1.5" 823 | source = "registry+https://github.com/rust-lang/crates.io-index" 824 | checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" 825 | dependencies = [ 826 | "mac", 827 | "new_debug_unreachable", 828 | ] 829 | 830 | [[package]] 831 | name = "futures-channel" 832 | version = "0.3.21" 833 | source = "registry+https://github.com/rust-lang/crates.io-index" 834 | checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" 835 | dependencies = [ 836 | "futures-core", 837 | ] 838 | 839 | [[package]] 840 | name = "futures-core" 841 | version = "0.3.28" 842 | source = "registry+https://github.com/rust-lang/crates.io-index" 843 | checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" 844 | 845 | [[package]] 846 | name = "futures-executor" 847 | version = "0.3.28" 848 | source = "registry+https://github.com/rust-lang/crates.io-index" 849 | checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" 850 | dependencies = [ 851 | "futures-core", 852 | "futures-task", 853 | "futures-util", 854 | ] 855 | 856 | [[package]] 857 | name = "futures-io" 858 | version = "0.3.29" 859 | source = "registry+https://github.com/rust-lang/crates.io-index" 860 | checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" 861 | 862 | [[package]] 863 | name = "futures-lite" 864 | version = "1.13.0" 865 | source = "registry+https://github.com/rust-lang/crates.io-index" 866 | checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" 867 | dependencies = [ 868 | "fastrand", 869 | "futures-core", 870 | "futures-io", 871 | "memchr", 872 | "parking", 873 | "pin-project-lite", 874 | "waker-fn", 875 | ] 876 | 877 | [[package]] 878 | name = "futures-macro" 879 | version = "0.3.28" 880 | source = "registry+https://github.com/rust-lang/crates.io-index" 881 | checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" 882 | dependencies = [ 883 | "proc-macro2", 884 | "quote", 885 | "syn 2.0.41", 886 | ] 887 | 888 | [[package]] 889 | name = "futures-task" 890 | version = "0.3.28" 891 | source = "registry+https://github.com/rust-lang/crates.io-index" 892 | checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" 893 | 894 | [[package]] 895 | name = "futures-util" 896 | version = "0.3.28" 897 | source = "registry+https://github.com/rust-lang/crates.io-index" 898 | checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" 899 | dependencies = [ 900 | "futures-core", 901 | "futures-io", 902 | "futures-macro", 903 | "futures-task", 904 | "memchr", 905 | "pin-project-lite", 906 | "pin-utils", 907 | "slab", 908 | ] 909 | 910 | [[package]] 911 | name = "fxhash" 912 | version = "0.2.1" 913 | source = "registry+https://github.com/rust-lang/crates.io-index" 914 | checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" 915 | dependencies = [ 916 | "byteorder", 917 | ] 918 | 919 | [[package]] 920 | name = "gdk" 921 | version = "0.16.2" 922 | source = "registry+https://github.com/rust-lang/crates.io-index" 923 | checksum = "aa9cb33da481c6c040404a11f8212d193889e9b435db2c14fd86987f630d3ce1" 924 | dependencies = [ 925 | "bitflags 1.3.2", 926 | "cairo-rs", 927 | "gdk-pixbuf", 928 | "gdk-sys", 929 | "gio", 930 | "glib", 931 | "libc", 932 | "pango", 933 | ] 934 | 935 | [[package]] 936 | name = "gdk-pixbuf" 937 | version = "0.16.7" 938 | source = "registry+https://github.com/rust-lang/crates.io-index" 939 | checksum = "c3578c60dee9d029ad86593ed88cb40f35c1b83360e12498d055022385dd9a05" 940 | dependencies = [ 941 | "bitflags 1.3.2", 942 | "gdk-pixbuf-sys", 943 | "gio", 944 | "glib", 945 | "libc", 946 | ] 947 | 948 | [[package]] 949 | name = "gdk-pixbuf-sys" 950 | version = "0.16.3" 951 | source = "registry+https://github.com/rust-lang/crates.io-index" 952 | checksum = "3092cf797a5f1210479ea38070d9ae8a5b8e9f8f1be9f32f4643c529c7d70016" 953 | dependencies = [ 954 | "gio-sys", 955 | "glib-sys", 956 | "gobject-sys", 957 | "libc", 958 | "system-deps", 959 | ] 960 | 961 | [[package]] 962 | name = "gdk-sys" 963 | version = "0.16.0" 964 | source = "registry+https://github.com/rust-lang/crates.io-index" 965 | checksum = "d76354f97a913e55b984759a997b693aa7dc71068c9e98bcce51aa167a0a5c5a" 966 | dependencies = [ 967 | "cairo-sys-rs", 968 | "gdk-pixbuf-sys", 969 | "gio-sys", 970 | "glib-sys", 971 | "gobject-sys", 972 | "libc", 973 | "pango-sys", 974 | "pkg-config", 975 | "system-deps", 976 | ] 977 | 978 | [[package]] 979 | name = "gdkwayland-sys" 980 | version = "0.16.0" 981 | source = "registry+https://github.com/rust-lang/crates.io-index" 982 | checksum = "4511710212ed3020b61a8622a37aa6f0dd2a84516575da92e9b96928dcbe83ba" 983 | dependencies = [ 984 | "gdk-sys", 985 | "glib-sys", 986 | "gobject-sys", 987 | "libc", 988 | "pkg-config", 989 | "system-deps", 990 | ] 991 | 992 | [[package]] 993 | name = "gdkx11-sys" 994 | version = "0.16.0" 995 | source = "registry+https://github.com/rust-lang/crates.io-index" 996 | checksum = "9fa2bf8b5b8c414bc5d05e48b271896d0fd3ddb57464a3108438082da61de6af" 997 | dependencies = [ 998 | "gdk-sys", 999 | "glib-sys", 1000 | "libc", 1001 | "system-deps", 1002 | "x11", 1003 | ] 1004 | 1005 | [[package]] 1006 | name = "generic-array" 1007 | version = "0.14.7" 1008 | source = "registry+https://github.com/rust-lang/crates.io-index" 1009 | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 1010 | dependencies = [ 1011 | "typenum", 1012 | "version_check", 1013 | ] 1014 | 1015 | [[package]] 1016 | name = "getrandom" 1017 | version = "0.1.16" 1018 | source = "registry+https://github.com/rust-lang/crates.io-index" 1019 | checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" 1020 | dependencies = [ 1021 | "cfg-if", 1022 | "libc", 1023 | "wasi 0.9.0+wasi-snapshot-preview1", 1024 | ] 1025 | 1026 | [[package]] 1027 | name = "getrandom" 1028 | version = "0.2.9" 1029 | source = "registry+https://github.com/rust-lang/crates.io-index" 1030 | checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" 1031 | dependencies = [ 1032 | "cfg-if", 1033 | "libc", 1034 | "wasi 0.11.0+wasi-snapshot-preview1", 1035 | ] 1036 | 1037 | [[package]] 1038 | name = "gio" 1039 | version = "0.16.7" 1040 | source = "registry+https://github.com/rust-lang/crates.io-index" 1041 | checksum = "2a1c84b4534a290a29160ef5c6eff2a9c95833111472e824fc5cb78b513dd092" 1042 | dependencies = [ 1043 | "bitflags 1.3.2", 1044 | "futures-channel", 1045 | "futures-core", 1046 | "futures-io", 1047 | "futures-util", 1048 | "gio-sys", 1049 | "glib", 1050 | "libc", 1051 | "once_cell", 1052 | "pin-project-lite", 1053 | "smallvec", 1054 | "thiserror", 1055 | ] 1056 | 1057 | [[package]] 1058 | name = "gio-sys" 1059 | version = "0.16.3" 1060 | source = "registry+https://github.com/rust-lang/crates.io-index" 1061 | checksum = "e9b693b8e39d042a95547fc258a7b07349b1f0b48f4b2fa3108ba3c51c0b5229" 1062 | dependencies = [ 1063 | "glib-sys", 1064 | "gobject-sys", 1065 | "libc", 1066 | "system-deps", 1067 | "winapi", 1068 | ] 1069 | 1070 | [[package]] 1071 | name = "glib" 1072 | version = "0.16.9" 1073 | source = "registry+https://github.com/rust-lang/crates.io-index" 1074 | checksum = "16aa2475c9debed5a32832cb5ff2af5a3f9e1ab9e69df58eaadc1ab2004d6eba" 1075 | dependencies = [ 1076 | "bitflags 1.3.2", 1077 | "futures-channel", 1078 | "futures-core", 1079 | "futures-executor", 1080 | "futures-task", 1081 | "futures-util", 1082 | "gio-sys", 1083 | "glib-macros", 1084 | "glib-sys", 1085 | "gobject-sys", 1086 | "libc", 1087 | "once_cell", 1088 | "smallvec", 1089 | "thiserror", 1090 | ] 1091 | 1092 | [[package]] 1093 | name = "glib-macros" 1094 | version = "0.16.8" 1095 | source = "registry+https://github.com/rust-lang/crates.io-index" 1096 | checksum = "fb1a9325847aa46f1e96ffea37611b9d51fc4827e67f79e7de502a297560a67b" 1097 | dependencies = [ 1098 | "anyhow", 1099 | "heck", 1100 | "proc-macro-crate", 1101 | "proc-macro-error", 1102 | "proc-macro2", 1103 | "quote", 1104 | "syn 1.0.98", 1105 | ] 1106 | 1107 | [[package]] 1108 | name = "glib-sys" 1109 | version = "0.16.3" 1110 | source = "registry+https://github.com/rust-lang/crates.io-index" 1111 | checksum = "c61a4f46316d06bfa33a7ac22df6f0524c8be58e3db2d9ca99ccb1f357b62a65" 1112 | dependencies = [ 1113 | "libc", 1114 | "system-deps", 1115 | ] 1116 | 1117 | [[package]] 1118 | name = "glob" 1119 | version = "0.3.0" 1120 | source = "registry+https://github.com/rust-lang/crates.io-index" 1121 | checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" 1122 | 1123 | [[package]] 1124 | name = "gobject-sys" 1125 | version = "0.16.3" 1126 | source = "registry+https://github.com/rust-lang/crates.io-index" 1127 | checksum = "3520bb9c07ae2a12c7f2fbb24d4efc11231c8146a86956413fb1a79bb760a0f1" 1128 | dependencies = [ 1129 | "glib-sys", 1130 | "libc", 1131 | "system-deps", 1132 | ] 1133 | 1134 | [[package]] 1135 | name = "gtk" 1136 | version = "0.16.2" 1137 | source = "registry+https://github.com/rust-lang/crates.io-index" 1138 | checksum = "e4d3507d43908c866c805f74c9dd593c0ce7ba5c38e576e41846639cdcd4bee6" 1139 | dependencies = [ 1140 | "atk", 1141 | "bitflags 1.3.2", 1142 | "cairo-rs", 1143 | "field-offset", 1144 | "futures-channel", 1145 | "gdk", 1146 | "gdk-pixbuf", 1147 | "gio", 1148 | "glib", 1149 | "gtk-sys", 1150 | "gtk3-macros", 1151 | "libc", 1152 | "once_cell", 1153 | "pango", 1154 | "pkg-config", 1155 | ] 1156 | 1157 | [[package]] 1158 | name = "gtk-sys" 1159 | version = "0.16.0" 1160 | source = "registry+https://github.com/rust-lang/crates.io-index" 1161 | checksum = "89b5f8946685d5fe44497007786600c2f368ff6b1e61a16251c89f72a97520a3" 1162 | dependencies = [ 1163 | "atk-sys", 1164 | "cairo-sys-rs", 1165 | "gdk-pixbuf-sys", 1166 | "gdk-sys", 1167 | "gio-sys", 1168 | "glib-sys", 1169 | "gobject-sys", 1170 | "libc", 1171 | "pango-sys", 1172 | "system-deps", 1173 | ] 1174 | 1175 | [[package]] 1176 | name = "gtk3-macros" 1177 | version = "0.16.3" 1178 | source = "registry+https://github.com/rust-lang/crates.io-index" 1179 | checksum = "096eb63c6fedf03bafe65e5924595785eaf1bcb7200dac0f2cbe9c9738f05ad8" 1180 | dependencies = [ 1181 | "anyhow", 1182 | "proc-macro-crate", 1183 | "proc-macro-error", 1184 | "proc-macro2", 1185 | "quote", 1186 | "syn 1.0.98", 1187 | ] 1188 | 1189 | [[package]] 1190 | name = "hashbrown" 1191 | version = "0.12.1" 1192 | source = "registry+https://github.com/rust-lang/crates.io-index" 1193 | checksum = "db0d4cf898abf0081f964436dc980e96670a0f36863e4b83aaacdb65c9d7ccc3" 1194 | 1195 | [[package]] 1196 | name = "heck" 1197 | version = "0.4.1" 1198 | source = "registry+https://github.com/rust-lang/crates.io-index" 1199 | checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" 1200 | 1201 | [[package]] 1202 | name = "hermit-abi" 1203 | version = "0.2.6" 1204 | source = "registry+https://github.com/rust-lang/crates.io-index" 1205 | checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" 1206 | dependencies = [ 1207 | "libc", 1208 | ] 1209 | 1210 | [[package]] 1211 | name = "hermit-abi" 1212 | version = "0.3.3" 1213 | source = "registry+https://github.com/rust-lang/crates.io-index" 1214 | checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" 1215 | 1216 | [[package]] 1217 | name = "html5ever" 1218 | version = "0.25.2" 1219 | source = "registry+https://github.com/rust-lang/crates.io-index" 1220 | checksum = "e5c13fb08e5d4dfc151ee5e88bae63f7773d61852f3bdc73c9f4b9e1bde03148" 1221 | dependencies = [ 1222 | "log", 1223 | "mac", 1224 | "markup5ever", 1225 | "proc-macro2", 1226 | "quote", 1227 | "syn 1.0.98", 1228 | ] 1229 | 1230 | [[package]] 1231 | name = "http" 1232 | version = "0.2.9" 1233 | source = "registry+https://github.com/rust-lang/crates.io-index" 1234 | checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" 1235 | dependencies = [ 1236 | "bytes", 1237 | "fnv", 1238 | "itoa 1.0.2", 1239 | ] 1240 | 1241 | [[package]] 1242 | name = "ident_case" 1243 | version = "1.0.1" 1244 | source = "registry+https://github.com/rust-lang/crates.io-index" 1245 | checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 1246 | 1247 | [[package]] 1248 | name = "idna" 1249 | version = "0.3.0" 1250 | source = "registry+https://github.com/rust-lang/crates.io-index" 1251 | checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" 1252 | dependencies = [ 1253 | "unicode-bidi", 1254 | "unicode-normalization", 1255 | ] 1256 | 1257 | [[package]] 1258 | name = "image" 1259 | version = "0.24.6" 1260 | source = "registry+https://github.com/rust-lang/crates.io-index" 1261 | checksum = "527909aa81e20ac3a44803521443a765550f09b5130c2c2fa1ea59c2f8f50a3a" 1262 | dependencies = [ 1263 | "bytemuck", 1264 | "byteorder", 1265 | "color_quant", 1266 | "num-rational", 1267 | "num-traits", 1268 | ] 1269 | 1270 | [[package]] 1271 | name = "indexmap" 1272 | version = "1.9.1" 1273 | source = "registry+https://github.com/rust-lang/crates.io-index" 1274 | checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" 1275 | dependencies = [ 1276 | "autocfg", 1277 | "hashbrown", 1278 | ] 1279 | 1280 | [[package]] 1281 | name = "infer" 1282 | version = "0.11.0" 1283 | source = "registry+https://github.com/rust-lang/crates.io-index" 1284 | checksum = "0a6c16b11a665b26aeeb9b1d7f954cdeb034be38dd00adab4f2ae921a8fee804" 1285 | dependencies = [ 1286 | "cfb", 1287 | ] 1288 | 1289 | [[package]] 1290 | name = "instant" 1291 | version = "0.1.12" 1292 | source = "registry+https://github.com/rust-lang/crates.io-index" 1293 | checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" 1294 | dependencies = [ 1295 | "cfg-if", 1296 | ] 1297 | 1298 | [[package]] 1299 | name = "interprocess-docfix" 1300 | version = "1.2.2" 1301 | source = "registry+https://github.com/rust-lang/crates.io-index" 1302 | checksum = "4b84ee245c606aeb0841649a9288e3eae8c61b853a8cd5c0e14450e96d53d28f" 1303 | dependencies = [ 1304 | "blocking", 1305 | "cfg-if", 1306 | "futures-core", 1307 | "futures-io", 1308 | "intmap", 1309 | "libc", 1310 | "once_cell", 1311 | "rustc_version", 1312 | "spinning", 1313 | "thiserror", 1314 | "to_method", 1315 | "winapi", 1316 | ] 1317 | 1318 | [[package]] 1319 | name = "intmap" 1320 | version = "0.7.1" 1321 | source = "registry+https://github.com/rust-lang/crates.io-index" 1322 | checksum = "ae52f28f45ac2bc96edb7714de995cffc174a395fb0abf5bff453587c980d7b9" 1323 | 1324 | [[package]] 1325 | name = "io-lifetimes" 1326 | version = "1.0.11" 1327 | source = "registry+https://github.com/rust-lang/crates.io-index" 1328 | checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" 1329 | dependencies = [ 1330 | "hermit-abi 0.3.3", 1331 | "libc", 1332 | "windows-sys 0.48.0", 1333 | ] 1334 | 1335 | [[package]] 1336 | name = "itoa" 1337 | version = "0.4.8" 1338 | source = "registry+https://github.com/rust-lang/crates.io-index" 1339 | checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" 1340 | 1341 | [[package]] 1342 | name = "itoa" 1343 | version = "1.0.2" 1344 | source = "registry+https://github.com/rust-lang/crates.io-index" 1345 | checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d" 1346 | 1347 | [[package]] 1348 | name = "javascriptcore-rs" 1349 | version = "0.17.0" 1350 | source = "registry+https://github.com/rust-lang/crates.io-index" 1351 | checksum = "110b9902c80c12bf113c432d0b71c7a94490b294a8234f326fd0abca2fac0b00" 1352 | dependencies = [ 1353 | "bitflags 1.3.2", 1354 | "glib", 1355 | "javascriptcore-rs-sys", 1356 | ] 1357 | 1358 | [[package]] 1359 | name = "javascriptcore-rs-sys" 1360 | version = "0.5.1" 1361 | source = "registry+https://github.com/rust-lang/crates.io-index" 1362 | checksum = "98a216519a52cd941a733a0ad3f1023cfdb1cd47f3955e8e863ed56f558f916c" 1363 | dependencies = [ 1364 | "glib-sys", 1365 | "gobject-sys", 1366 | "libc", 1367 | "system-deps", 1368 | ] 1369 | 1370 | [[package]] 1371 | name = "jni" 1372 | version = "0.20.0" 1373 | source = "registry+https://github.com/rust-lang/crates.io-index" 1374 | checksum = "039022cdf4d7b1cf548d31f60ae783138e5fd42013f6271049d7df7afadef96c" 1375 | dependencies = [ 1376 | "cesu8", 1377 | "combine", 1378 | "jni-sys", 1379 | "log", 1380 | "thiserror", 1381 | "walkdir", 1382 | ] 1383 | 1384 | [[package]] 1385 | name = "jni" 1386 | version = "0.21.1" 1387 | source = "registry+https://github.com/rust-lang/crates.io-index" 1388 | checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" 1389 | dependencies = [ 1390 | "cesu8", 1391 | "cfg-if", 1392 | "combine", 1393 | "jni-sys", 1394 | "log", 1395 | "thiserror", 1396 | "walkdir", 1397 | "windows-sys 0.45.0", 1398 | ] 1399 | 1400 | [[package]] 1401 | name = "jni-sys" 1402 | version = "0.3.0" 1403 | source = "registry+https://github.com/rust-lang/crates.io-index" 1404 | checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" 1405 | 1406 | [[package]] 1407 | name = "js-sys" 1408 | version = "0.3.58" 1409 | source = "registry+https://github.com/rust-lang/crates.io-index" 1410 | checksum = "c3fac17f7123a73ca62df411b1bf727ccc805daa070338fda671c86dac1bdc27" 1411 | dependencies = [ 1412 | "wasm-bindgen", 1413 | ] 1414 | 1415 | [[package]] 1416 | name = "keyboard-types" 1417 | version = "0.7.0" 1418 | source = "registry+https://github.com/rust-lang/crates.io-index" 1419 | checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" 1420 | dependencies = [ 1421 | "bitflags 2.4.1", 1422 | "serde", 1423 | "unicode-segmentation", 1424 | ] 1425 | 1426 | [[package]] 1427 | name = "kuchiki" 1428 | version = "0.8.1" 1429 | source = "registry+https://github.com/rust-lang/crates.io-index" 1430 | checksum = "1ea8e9c6e031377cff82ee3001dc8026cdf431ed4e2e6b51f98ab8c73484a358" 1431 | dependencies = [ 1432 | "cssparser", 1433 | "html5ever", 1434 | "matches", 1435 | "selectors", 1436 | ] 1437 | 1438 | [[package]] 1439 | name = "lazy_static" 1440 | version = "1.4.0" 1441 | source = "registry+https://github.com/rust-lang/crates.io-index" 1442 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 1443 | 1444 | [[package]] 1445 | name = "libc" 1446 | version = "0.2.151" 1447 | source = "registry+https://github.com/rust-lang/crates.io-index" 1448 | checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" 1449 | 1450 | [[package]] 1451 | name = "linux-raw-sys" 1452 | version = "0.3.8" 1453 | source = "registry+https://github.com/rust-lang/crates.io-index" 1454 | checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" 1455 | 1456 | [[package]] 1457 | name = "lock_api" 1458 | version = "0.4.7" 1459 | source = "registry+https://github.com/rust-lang/crates.io-index" 1460 | checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53" 1461 | dependencies = [ 1462 | "autocfg", 1463 | "scopeguard", 1464 | ] 1465 | 1466 | [[package]] 1467 | name = "log" 1468 | version = "0.4.17" 1469 | source = "registry+https://github.com/rust-lang/crates.io-index" 1470 | checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" 1471 | dependencies = [ 1472 | "cfg-if", 1473 | ] 1474 | 1475 | [[package]] 1476 | name = "longest-increasing-subsequence" 1477 | version = "0.1.0" 1478 | source = "registry+https://github.com/rust-lang/crates.io-index" 1479 | checksum = "b3bd0dd2cd90571056fdb71f6275fada10131182f84899f4b2a916e565d81d86" 1480 | 1481 | [[package]] 1482 | name = "mac" 1483 | version = "0.1.1" 1484 | source = "registry+https://github.com/rust-lang/crates.io-index" 1485 | checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" 1486 | 1487 | [[package]] 1488 | name = "malloc_buf" 1489 | version = "0.0.6" 1490 | source = "registry+https://github.com/rust-lang/crates.io-index" 1491 | checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" 1492 | dependencies = [ 1493 | "libc", 1494 | ] 1495 | 1496 | [[package]] 1497 | name = "markup5ever" 1498 | version = "0.10.1" 1499 | source = "registry+https://github.com/rust-lang/crates.io-index" 1500 | checksum = "a24f40fb03852d1cdd84330cddcaf98e9ec08a7b7768e952fad3b4cf048ec8fd" 1501 | dependencies = [ 1502 | "log", 1503 | "phf", 1504 | "phf_codegen", 1505 | "string_cache", 1506 | "string_cache_codegen", 1507 | "tendril", 1508 | ] 1509 | 1510 | [[package]] 1511 | name = "matches" 1512 | version = "0.1.10" 1513 | source = "registry+https://github.com/rust-lang/crates.io-index" 1514 | checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" 1515 | 1516 | [[package]] 1517 | name = "memchr" 1518 | version = "2.5.0" 1519 | source = "registry+https://github.com/rust-lang/crates.io-index" 1520 | checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" 1521 | 1522 | [[package]] 1523 | name = "memoffset" 1524 | version = "0.8.0" 1525 | source = "registry+https://github.com/rust-lang/crates.io-index" 1526 | checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" 1527 | dependencies = [ 1528 | "autocfg", 1529 | ] 1530 | 1531 | [[package]] 1532 | name = "miniz_oxide" 1533 | version = "0.7.1" 1534 | source = "registry+https://github.com/rust-lang/crates.io-index" 1535 | checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" 1536 | dependencies = [ 1537 | "adler", 1538 | "simd-adler32", 1539 | ] 1540 | 1541 | [[package]] 1542 | name = "ndk" 1543 | version = "0.6.0" 1544 | source = "registry+https://github.com/rust-lang/crates.io-index" 1545 | checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4" 1546 | dependencies = [ 1547 | "bitflags 1.3.2", 1548 | "jni-sys", 1549 | "ndk-sys", 1550 | "num_enum", 1551 | "thiserror", 1552 | ] 1553 | 1554 | [[package]] 1555 | name = "ndk-context" 1556 | version = "0.1.1" 1557 | source = "registry+https://github.com/rust-lang/crates.io-index" 1558 | checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" 1559 | 1560 | [[package]] 1561 | name = "ndk-sys" 1562 | version = "0.3.0" 1563 | source = "registry+https://github.com/rust-lang/crates.io-index" 1564 | checksum = "6e5a6ae77c8ee183dcbbba6150e2e6b9f3f4196a7666c02a715a95692ec1fa97" 1565 | dependencies = [ 1566 | "jni-sys", 1567 | ] 1568 | 1569 | [[package]] 1570 | name = "new_debug_unreachable" 1571 | version = "1.0.4" 1572 | source = "registry+https://github.com/rust-lang/crates.io-index" 1573 | checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" 1574 | 1575 | [[package]] 1576 | name = "nodrop" 1577 | version = "0.1.14" 1578 | source = "registry+https://github.com/rust-lang/crates.io-index" 1579 | checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" 1580 | 1581 | [[package]] 1582 | name = "num-integer" 1583 | version = "0.1.45" 1584 | source = "registry+https://github.com/rust-lang/crates.io-index" 1585 | checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" 1586 | dependencies = [ 1587 | "autocfg", 1588 | "num-traits", 1589 | ] 1590 | 1591 | [[package]] 1592 | name = "num-rational" 1593 | version = "0.4.1" 1594 | source = "registry+https://github.com/rust-lang/crates.io-index" 1595 | checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" 1596 | dependencies = [ 1597 | "autocfg", 1598 | "num-integer", 1599 | "num-traits", 1600 | ] 1601 | 1602 | [[package]] 1603 | name = "num-traits" 1604 | version = "0.2.15" 1605 | source = "registry+https://github.com/rust-lang/crates.io-index" 1606 | checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" 1607 | dependencies = [ 1608 | "autocfg", 1609 | ] 1610 | 1611 | [[package]] 1612 | name = "num_cpus" 1613 | version = "1.15.0" 1614 | source = "registry+https://github.com/rust-lang/crates.io-index" 1615 | checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" 1616 | dependencies = [ 1617 | "hermit-abi 0.2.6", 1618 | "libc", 1619 | ] 1620 | 1621 | [[package]] 1622 | name = "num_enum" 1623 | version = "0.5.11" 1624 | source = "registry+https://github.com/rust-lang/crates.io-index" 1625 | checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" 1626 | dependencies = [ 1627 | "num_enum_derive", 1628 | ] 1629 | 1630 | [[package]] 1631 | name = "num_enum_derive" 1632 | version = "0.5.11" 1633 | source = "registry+https://github.com/rust-lang/crates.io-index" 1634 | checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" 1635 | dependencies = [ 1636 | "proc-macro-crate", 1637 | "proc-macro2", 1638 | "quote", 1639 | "syn 1.0.98", 1640 | ] 1641 | 1642 | [[package]] 1643 | name = "objc" 1644 | version = "0.2.7" 1645 | source = "registry+https://github.com/rust-lang/crates.io-index" 1646 | checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" 1647 | dependencies = [ 1648 | "malloc_buf", 1649 | "objc_exception", 1650 | ] 1651 | 1652 | [[package]] 1653 | name = "objc-foundation" 1654 | version = "0.1.1" 1655 | source = "registry+https://github.com/rust-lang/crates.io-index" 1656 | checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" 1657 | dependencies = [ 1658 | "block", 1659 | "objc", 1660 | "objc_id", 1661 | ] 1662 | 1663 | [[package]] 1664 | name = "objc_exception" 1665 | version = "0.1.2" 1666 | source = "registry+https://github.com/rust-lang/crates.io-index" 1667 | checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" 1668 | dependencies = [ 1669 | "cc", 1670 | ] 1671 | 1672 | [[package]] 1673 | name = "objc_id" 1674 | version = "0.1.1" 1675 | source = "registry+https://github.com/rust-lang/crates.io-index" 1676 | checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" 1677 | dependencies = [ 1678 | "objc", 1679 | ] 1680 | 1681 | [[package]] 1682 | name = "once_cell" 1683 | version = "1.17.1" 1684 | source = "registry+https://github.com/rust-lang/crates.io-index" 1685 | checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" 1686 | 1687 | [[package]] 1688 | name = "ordered-float" 1689 | version = "2.10.0" 1690 | source = "registry+https://github.com/rust-lang/crates.io-index" 1691 | checksum = "7940cf2ca942593318d07fcf2596cdca60a85c9e7fab408a5e21a4f9dcd40d87" 1692 | dependencies = [ 1693 | "num-traits", 1694 | ] 1695 | 1696 | [[package]] 1697 | name = "pango" 1698 | version = "0.16.5" 1699 | source = "registry+https://github.com/rust-lang/crates.io-index" 1700 | checksum = "cdff66b271861037b89d028656184059e03b0b6ccb36003820be19f7200b1e94" 1701 | dependencies = [ 1702 | "bitflags 1.3.2", 1703 | "gio", 1704 | "glib", 1705 | "libc", 1706 | "once_cell", 1707 | "pango-sys", 1708 | ] 1709 | 1710 | [[package]] 1711 | name = "pango-sys" 1712 | version = "0.16.3" 1713 | source = "registry+https://github.com/rust-lang/crates.io-index" 1714 | checksum = "9e134909a9a293e04d2cc31928aa95679c5e4df954d0b85483159bd20d8f047f" 1715 | dependencies = [ 1716 | "glib-sys", 1717 | "gobject-sys", 1718 | "libc", 1719 | "system-deps", 1720 | ] 1721 | 1722 | [[package]] 1723 | name = "parking" 1724 | version = "2.1.0" 1725 | source = "registry+https://github.com/rust-lang/crates.io-index" 1726 | checksum = "14f2252c834a40ed9bb5422029649578e63aa341ac401f74e719dd1afda8394e" 1727 | 1728 | [[package]] 1729 | name = "parking_lot" 1730 | version = "0.12.1" 1731 | source = "registry+https://github.com/rust-lang/crates.io-index" 1732 | checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" 1733 | dependencies = [ 1734 | "lock_api", 1735 | "parking_lot_core", 1736 | ] 1737 | 1738 | [[package]] 1739 | name = "parking_lot_core" 1740 | version = "0.9.7" 1741 | source = "registry+https://github.com/rust-lang/crates.io-index" 1742 | checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" 1743 | dependencies = [ 1744 | "cfg-if", 1745 | "libc", 1746 | "redox_syscall", 1747 | "smallvec", 1748 | "windows-sys 0.45.0", 1749 | ] 1750 | 1751 | [[package]] 1752 | name = "percent-encoding" 1753 | version = "2.2.0" 1754 | source = "registry+https://github.com/rust-lang/crates.io-index" 1755 | checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" 1756 | 1757 | [[package]] 1758 | name = "phf" 1759 | version = "0.8.0" 1760 | source = "registry+https://github.com/rust-lang/crates.io-index" 1761 | checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" 1762 | dependencies = [ 1763 | "phf_macros", 1764 | "phf_shared 0.8.0", 1765 | "proc-macro-hack", 1766 | ] 1767 | 1768 | [[package]] 1769 | name = "phf_codegen" 1770 | version = "0.8.0" 1771 | source = "registry+https://github.com/rust-lang/crates.io-index" 1772 | checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" 1773 | dependencies = [ 1774 | "phf_generator 0.8.0", 1775 | "phf_shared 0.8.0", 1776 | ] 1777 | 1778 | [[package]] 1779 | name = "phf_generator" 1780 | version = "0.8.0" 1781 | source = "registry+https://github.com/rust-lang/crates.io-index" 1782 | checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" 1783 | dependencies = [ 1784 | "phf_shared 0.8.0", 1785 | "rand 0.7.3", 1786 | ] 1787 | 1788 | [[package]] 1789 | name = "phf_generator" 1790 | version = "0.10.0" 1791 | source = "registry+https://github.com/rust-lang/crates.io-index" 1792 | checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" 1793 | dependencies = [ 1794 | "phf_shared 0.10.0", 1795 | "rand 0.8.5", 1796 | ] 1797 | 1798 | [[package]] 1799 | name = "phf_macros" 1800 | version = "0.8.0" 1801 | source = "registry+https://github.com/rust-lang/crates.io-index" 1802 | checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c" 1803 | dependencies = [ 1804 | "phf_generator 0.8.0", 1805 | "phf_shared 0.8.0", 1806 | "proc-macro-hack", 1807 | "proc-macro2", 1808 | "quote", 1809 | "syn 1.0.98", 1810 | ] 1811 | 1812 | [[package]] 1813 | name = "phf_shared" 1814 | version = "0.8.0" 1815 | source = "registry+https://github.com/rust-lang/crates.io-index" 1816 | checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" 1817 | dependencies = [ 1818 | "siphasher", 1819 | ] 1820 | 1821 | [[package]] 1822 | name = "phf_shared" 1823 | version = "0.10.0" 1824 | source = "registry+https://github.com/rust-lang/crates.io-index" 1825 | checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" 1826 | dependencies = [ 1827 | "siphasher", 1828 | ] 1829 | 1830 | [[package]] 1831 | name = "pin-project-lite" 1832 | version = "0.2.9" 1833 | source = "registry+https://github.com/rust-lang/crates.io-index" 1834 | checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" 1835 | 1836 | [[package]] 1837 | name = "pin-utils" 1838 | version = "0.1.0" 1839 | source = "registry+https://github.com/rust-lang/crates.io-index" 1840 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 1841 | 1842 | [[package]] 1843 | name = "pkg-config" 1844 | version = "0.3.27" 1845 | source = "registry+https://github.com/rust-lang/crates.io-index" 1846 | checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" 1847 | 1848 | [[package]] 1849 | name = "png" 1850 | version = "0.17.8" 1851 | source = "registry+https://github.com/rust-lang/crates.io-index" 1852 | checksum = "aaeebc51f9e7d2c150d3f3bfeb667f2aa985db5ef1e3d212847bdedb488beeaa" 1853 | dependencies = [ 1854 | "bitflags 1.3.2", 1855 | "crc32fast", 1856 | "fdeflate", 1857 | "flate2", 1858 | "miniz_oxide", 1859 | ] 1860 | 1861 | [[package]] 1862 | name = "polling" 1863 | version = "2.8.0" 1864 | source = "registry+https://github.com/rust-lang/crates.io-index" 1865 | checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" 1866 | dependencies = [ 1867 | "autocfg", 1868 | "bitflags 1.3.2", 1869 | "cfg-if", 1870 | "concurrent-queue", 1871 | "libc", 1872 | "log", 1873 | "pin-project-lite", 1874 | "windows-sys 0.48.0", 1875 | ] 1876 | 1877 | [[package]] 1878 | name = "ppv-lite86" 1879 | version = "0.2.17" 1880 | source = "registry+https://github.com/rust-lang/crates.io-index" 1881 | checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 1882 | 1883 | [[package]] 1884 | name = "precomputed-hash" 1885 | version = "0.1.1" 1886 | source = "registry+https://github.com/rust-lang/crates.io-index" 1887 | checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" 1888 | 1889 | [[package]] 1890 | name = "prettyplease" 1891 | version = "0.2.15" 1892 | source = "registry+https://github.com/rust-lang/crates.io-index" 1893 | checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" 1894 | dependencies = [ 1895 | "proc-macro2", 1896 | "syn 2.0.41", 1897 | ] 1898 | 1899 | [[package]] 1900 | name = "proc-macro-crate" 1901 | version = "1.3.1" 1902 | source = "registry+https://github.com/rust-lang/crates.io-index" 1903 | checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" 1904 | dependencies = [ 1905 | "once_cell", 1906 | "toml_edit", 1907 | ] 1908 | 1909 | [[package]] 1910 | name = "proc-macro-error" 1911 | version = "1.0.4" 1912 | source = "registry+https://github.com/rust-lang/crates.io-index" 1913 | checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" 1914 | dependencies = [ 1915 | "proc-macro-error-attr", 1916 | "proc-macro2", 1917 | "quote", 1918 | "syn 1.0.98", 1919 | "version_check", 1920 | ] 1921 | 1922 | [[package]] 1923 | name = "proc-macro-error-attr" 1924 | version = "1.0.4" 1925 | source = "registry+https://github.com/rust-lang/crates.io-index" 1926 | checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" 1927 | dependencies = [ 1928 | "proc-macro2", 1929 | "quote", 1930 | "version_check", 1931 | ] 1932 | 1933 | [[package]] 1934 | name = "proc-macro-hack" 1935 | version = "0.5.20+deprecated" 1936 | source = "registry+https://github.com/rust-lang/crates.io-index" 1937 | checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" 1938 | 1939 | [[package]] 1940 | name = "proc-macro2" 1941 | version = "1.0.70" 1942 | source = "registry+https://github.com/rust-lang/crates.io-index" 1943 | checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" 1944 | dependencies = [ 1945 | "unicode-ident", 1946 | ] 1947 | 1948 | [[package]] 1949 | name = "quote" 1950 | version = "1.0.33" 1951 | source = "registry+https://github.com/rust-lang/crates.io-index" 1952 | checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" 1953 | dependencies = [ 1954 | "proc-macro2", 1955 | ] 1956 | 1957 | [[package]] 1958 | name = "rand" 1959 | version = "0.7.3" 1960 | source = "registry+https://github.com/rust-lang/crates.io-index" 1961 | checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" 1962 | dependencies = [ 1963 | "getrandom 0.1.16", 1964 | "libc", 1965 | "rand_chacha 0.2.2", 1966 | "rand_core 0.5.1", 1967 | "rand_hc", 1968 | "rand_pcg", 1969 | ] 1970 | 1971 | [[package]] 1972 | name = "rand" 1973 | version = "0.8.5" 1974 | source = "registry+https://github.com/rust-lang/crates.io-index" 1975 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 1976 | dependencies = [ 1977 | "libc", 1978 | "rand_chacha 0.3.1", 1979 | "rand_core 0.6.4", 1980 | ] 1981 | 1982 | [[package]] 1983 | name = "rand_chacha" 1984 | version = "0.2.2" 1985 | source = "registry+https://github.com/rust-lang/crates.io-index" 1986 | checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" 1987 | dependencies = [ 1988 | "ppv-lite86", 1989 | "rand_core 0.5.1", 1990 | ] 1991 | 1992 | [[package]] 1993 | name = "rand_chacha" 1994 | version = "0.3.1" 1995 | source = "registry+https://github.com/rust-lang/crates.io-index" 1996 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 1997 | dependencies = [ 1998 | "ppv-lite86", 1999 | "rand_core 0.6.4", 2000 | ] 2001 | 2002 | [[package]] 2003 | name = "rand_core" 2004 | version = "0.5.1" 2005 | source = "registry+https://github.com/rust-lang/crates.io-index" 2006 | checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" 2007 | dependencies = [ 2008 | "getrandom 0.1.16", 2009 | ] 2010 | 2011 | [[package]] 2012 | name = "rand_core" 2013 | version = "0.6.4" 2014 | source = "registry+https://github.com/rust-lang/crates.io-index" 2015 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 2016 | dependencies = [ 2017 | "getrandom 0.2.9", 2018 | ] 2019 | 2020 | [[package]] 2021 | name = "rand_hc" 2022 | version = "0.2.0" 2023 | source = "registry+https://github.com/rust-lang/crates.io-index" 2024 | checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" 2025 | dependencies = [ 2026 | "rand_core 0.5.1", 2027 | ] 2028 | 2029 | [[package]] 2030 | name = "rand_pcg" 2031 | version = "0.2.1" 2032 | source = "registry+https://github.com/rust-lang/crates.io-index" 2033 | checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" 2034 | dependencies = [ 2035 | "rand_core 0.5.1", 2036 | ] 2037 | 2038 | [[package]] 2039 | name = "raw-window-handle" 2040 | version = "0.5.2" 2041 | source = "registry+https://github.com/rust-lang/crates.io-index" 2042 | checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" 2043 | 2044 | [[package]] 2045 | name = "redox_syscall" 2046 | version = "0.2.13" 2047 | source = "registry+https://github.com/rust-lang/crates.io-index" 2048 | checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42" 2049 | dependencies = [ 2050 | "bitflags 1.3.2", 2051 | ] 2052 | 2053 | [[package]] 2054 | name = "redox_users" 2055 | version = "0.4.3" 2056 | source = "registry+https://github.com/rust-lang/crates.io-index" 2057 | checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" 2058 | dependencies = [ 2059 | "getrandom 0.2.9", 2060 | "redox_syscall", 2061 | "thiserror", 2062 | ] 2063 | 2064 | [[package]] 2065 | name = "regex" 2066 | version = "1.6.0" 2067 | source = "registry+https://github.com/rust-lang/crates.io-index" 2068 | checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" 2069 | dependencies = [ 2070 | "aho-corasick", 2071 | "memchr", 2072 | "regex-syntax", 2073 | ] 2074 | 2075 | [[package]] 2076 | name = "regex-syntax" 2077 | version = "0.6.27" 2078 | source = "registry+https://github.com/rust-lang/crates.io-index" 2079 | checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" 2080 | 2081 | [[package]] 2082 | name = "rfd" 2083 | version = "0.11.4" 2084 | source = "registry+https://github.com/rust-lang/crates.io-index" 2085 | checksum = "4fe664af397d2b6a13a8ba1d172a2b5c87c6c5149039edbf8fa122b98c9ed96f" 2086 | dependencies = [ 2087 | "async-io", 2088 | "block", 2089 | "dispatch", 2090 | "futures-util", 2091 | "glib-sys", 2092 | "gobject-sys", 2093 | "gtk-sys", 2094 | "js-sys", 2095 | "log", 2096 | "objc", 2097 | "objc-foundation", 2098 | "objc_id", 2099 | "raw-window-handle", 2100 | "wasm-bindgen", 2101 | "wasm-bindgen-futures", 2102 | "web-sys", 2103 | "windows", 2104 | ] 2105 | 2106 | [[package]] 2107 | name = "rustc-hash" 2108 | version = "1.1.0" 2109 | source = "registry+https://github.com/rust-lang/crates.io-index" 2110 | checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" 2111 | 2112 | [[package]] 2113 | name = "rustc_version" 2114 | version = "0.4.0" 2115 | source = "registry+https://github.com/rust-lang/crates.io-index" 2116 | checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" 2117 | dependencies = [ 2118 | "semver", 2119 | ] 2120 | 2121 | [[package]] 2122 | name = "rustix" 2123 | version = "0.37.27" 2124 | source = "registry+https://github.com/rust-lang/crates.io-index" 2125 | checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" 2126 | dependencies = [ 2127 | "bitflags 1.3.2", 2128 | "errno", 2129 | "io-lifetimes", 2130 | "libc", 2131 | "linux-raw-sys", 2132 | "windows-sys 0.48.0", 2133 | ] 2134 | 2135 | [[package]] 2136 | name = "ryu" 2137 | version = "1.0.10" 2138 | source = "registry+https://github.com/rust-lang/crates.io-index" 2139 | checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695" 2140 | 2141 | [[package]] 2142 | name = "same-file" 2143 | version = "1.0.6" 2144 | source = "registry+https://github.com/rust-lang/crates.io-index" 2145 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 2146 | dependencies = [ 2147 | "winapi-util", 2148 | ] 2149 | 2150 | [[package]] 2151 | name = "scopeguard" 2152 | version = "1.1.0" 2153 | source = "registry+https://github.com/rust-lang/crates.io-index" 2154 | checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" 2155 | 2156 | [[package]] 2157 | name = "selectors" 2158 | version = "0.22.0" 2159 | source = "registry+https://github.com/rust-lang/crates.io-index" 2160 | checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe" 2161 | dependencies = [ 2162 | "bitflags 1.3.2", 2163 | "cssparser", 2164 | "derive_more", 2165 | "fxhash", 2166 | "log", 2167 | "matches", 2168 | "phf", 2169 | "phf_codegen", 2170 | "precomputed-hash", 2171 | "servo_arc", 2172 | "smallvec", 2173 | "thin-slice", 2174 | ] 2175 | 2176 | [[package]] 2177 | name = "semver" 2178 | version = "1.0.17" 2179 | source = "registry+https://github.com/rust-lang/crates.io-index" 2180 | checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" 2181 | 2182 | [[package]] 2183 | name = "serde" 2184 | version = "1.0.162" 2185 | source = "registry+https://github.com/rust-lang/crates.io-index" 2186 | checksum = "71b2f6e1ab5c2b98c05f0f35b236b22e8df7ead6ffbf51d7808da7f8817e7ab6" 2187 | dependencies = [ 2188 | "serde_derive", 2189 | ] 2190 | 2191 | [[package]] 2192 | name = "serde-value" 2193 | version = "0.7.0" 2194 | source = "registry+https://github.com/rust-lang/crates.io-index" 2195 | checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" 2196 | dependencies = [ 2197 | "ordered-float", 2198 | "serde", 2199 | ] 2200 | 2201 | [[package]] 2202 | name = "serde_derive" 2203 | version = "1.0.162" 2204 | source = "registry+https://github.com/rust-lang/crates.io-index" 2205 | checksum = "a2a0814352fd64b58489904a44ea8d90cb1a91dcb6b4f5ebabc32c8318e93cb6" 2206 | dependencies = [ 2207 | "proc-macro2", 2208 | "quote", 2209 | "syn 2.0.41", 2210 | ] 2211 | 2212 | [[package]] 2213 | name = "serde_json" 2214 | version = "1.0.96" 2215 | source = "registry+https://github.com/rust-lang/crates.io-index" 2216 | checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" 2217 | dependencies = [ 2218 | "itoa 1.0.2", 2219 | "ryu", 2220 | "serde", 2221 | ] 2222 | 2223 | [[package]] 2224 | name = "serde_repr" 2225 | version = "0.1.8" 2226 | source = "registry+https://github.com/rust-lang/crates.io-index" 2227 | checksum = "a2ad84e47328a31223de7fed7a4f5087f2d6ddfe586cf3ca25b7a165bc0a5aed" 2228 | dependencies = [ 2229 | "proc-macro2", 2230 | "quote", 2231 | "syn 1.0.98", 2232 | ] 2233 | 2234 | [[package]] 2235 | name = "serde_spanned" 2236 | version = "0.6.1" 2237 | source = "registry+https://github.com/rust-lang/crates.io-index" 2238 | checksum = "0efd8caf556a6cebd3b285caf480045fcc1ac04f6bd786b09a6f11af30c4fcf4" 2239 | dependencies = [ 2240 | "serde", 2241 | ] 2242 | 2243 | [[package]] 2244 | name = "servo_arc" 2245 | version = "0.1.1" 2246 | source = "registry+https://github.com/rust-lang/crates.io-index" 2247 | checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432" 2248 | dependencies = [ 2249 | "nodrop", 2250 | "stable_deref_trait", 2251 | ] 2252 | 2253 | [[package]] 2254 | name = "sha2" 2255 | version = "0.10.6" 2256 | source = "registry+https://github.com/rust-lang/crates.io-index" 2257 | checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" 2258 | dependencies = [ 2259 | "cfg-if", 2260 | "cpufeatures", 2261 | "digest", 2262 | ] 2263 | 2264 | [[package]] 2265 | name = "simd-adler32" 2266 | version = "0.3.5" 2267 | source = "registry+https://github.com/rust-lang/crates.io-index" 2268 | checksum = "238abfbb77c1915110ad968465608b68e869e0772622c9656714e73e5a1a522f" 2269 | 2270 | [[package]] 2271 | name = "siphasher" 2272 | version = "0.3.10" 2273 | source = "registry+https://github.com/rust-lang/crates.io-index" 2274 | checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" 2275 | 2276 | [[package]] 2277 | name = "slab" 2278 | version = "0.4.6" 2279 | source = "registry+https://github.com/rust-lang/crates.io-index" 2280 | checksum = "eb703cfe953bccee95685111adeedb76fabe4e97549a58d16f03ea7b9367bb32" 2281 | 2282 | [[package]] 2283 | name = "smallbox" 2284 | version = "0.8.1" 2285 | source = "registry+https://github.com/rust-lang/crates.io-index" 2286 | checksum = "4679d6eef28b85020158619fc09769de89e90886c5de7157587d87cb72648faa" 2287 | 2288 | [[package]] 2289 | name = "smallvec" 2290 | version = "1.9.0" 2291 | source = "registry+https://github.com/rust-lang/crates.io-index" 2292 | checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1" 2293 | 2294 | [[package]] 2295 | name = "socket2" 2296 | version = "0.4.10" 2297 | source = "registry+https://github.com/rust-lang/crates.io-index" 2298 | checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" 2299 | dependencies = [ 2300 | "libc", 2301 | "winapi", 2302 | ] 2303 | 2304 | [[package]] 2305 | name = "soup3" 2306 | version = "0.3.2" 2307 | source = "registry+https://github.com/rust-lang/crates.io-index" 2308 | checksum = "82bc46048125fefd69d30b32b9d263d6556c9ffe82a7a7df181a86d912da5616" 2309 | dependencies = [ 2310 | "bitflags 1.3.2", 2311 | "futures-channel", 2312 | "gio", 2313 | "glib", 2314 | "libc", 2315 | "once_cell", 2316 | "soup3-sys", 2317 | ] 2318 | 2319 | [[package]] 2320 | name = "soup3-sys" 2321 | version = "0.3.1" 2322 | source = "registry+https://github.com/rust-lang/crates.io-index" 2323 | checksum = "014bbeb1c4cdb30739dc181e8d98b7908f124d9555843afa89b5570aaf4ec62b" 2324 | dependencies = [ 2325 | "gio-sys", 2326 | "glib-sys", 2327 | "gobject-sys", 2328 | "libc", 2329 | "system-deps", 2330 | ] 2331 | 2332 | [[package]] 2333 | name = "spinning" 2334 | version = "0.1.0" 2335 | source = "registry+https://github.com/rust-lang/crates.io-index" 2336 | checksum = "2d4f0e86297cad2658d92a707320d87bf4e6ae1050287f51d19b67ef3f153a7b" 2337 | dependencies = [ 2338 | "lock_api", 2339 | ] 2340 | 2341 | [[package]] 2342 | name = "stable_deref_trait" 2343 | version = "1.2.0" 2344 | source = "registry+https://github.com/rust-lang/crates.io-index" 2345 | checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 2346 | 2347 | [[package]] 2348 | name = "string_cache" 2349 | version = "0.8.7" 2350 | source = "registry+https://github.com/rust-lang/crates.io-index" 2351 | checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" 2352 | dependencies = [ 2353 | "new_debug_unreachable", 2354 | "once_cell", 2355 | "parking_lot", 2356 | "phf_shared 0.10.0", 2357 | "precomputed-hash", 2358 | "serde", 2359 | ] 2360 | 2361 | [[package]] 2362 | name = "string_cache_codegen" 2363 | version = "0.5.2" 2364 | source = "registry+https://github.com/rust-lang/crates.io-index" 2365 | checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" 2366 | dependencies = [ 2367 | "phf_generator 0.10.0", 2368 | "phf_shared 0.10.0", 2369 | "proc-macro2", 2370 | "quote", 2371 | ] 2372 | 2373 | [[package]] 2374 | name = "syn" 2375 | version = "1.0.98" 2376 | source = "registry+https://github.com/rust-lang/crates.io-index" 2377 | checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd" 2378 | dependencies = [ 2379 | "proc-macro2", 2380 | "quote", 2381 | "unicode-ident", 2382 | ] 2383 | 2384 | [[package]] 2385 | name = "syn" 2386 | version = "2.0.41" 2387 | source = "registry+https://github.com/rust-lang/crates.io-index" 2388 | checksum = "44c8b28c477cc3bf0e7966561e3460130e1255f7a1cf71931075f1c5e7a7e269" 2389 | dependencies = [ 2390 | "proc-macro2", 2391 | "quote", 2392 | "unicode-ident", 2393 | ] 2394 | 2395 | [[package]] 2396 | name = "system-deps" 2397 | version = "6.1.0" 2398 | source = "registry+https://github.com/rust-lang/crates.io-index" 2399 | checksum = "e5fa6fb9ee296c0dc2df41a656ca7948546d061958115ddb0bcaae43ad0d17d2" 2400 | dependencies = [ 2401 | "cfg-expr", 2402 | "heck", 2403 | "pkg-config", 2404 | "toml 0.7.3", 2405 | "version-compare", 2406 | ] 2407 | 2408 | [[package]] 2409 | name = "tao" 2410 | version = "0.19.1" 2411 | source = "registry+https://github.com/rust-lang/crates.io-index" 2412 | checksum = "746ae5d0ca57ae275a792f109f6e992e0b41a443abdf3f5c6eff179ef5b3443a" 2413 | dependencies = [ 2414 | "bitflags 1.3.2", 2415 | "cairo-rs", 2416 | "cc", 2417 | "cocoa", 2418 | "core-foundation", 2419 | "core-graphics", 2420 | "crossbeam-channel", 2421 | "dispatch", 2422 | "gdk", 2423 | "gdk-pixbuf", 2424 | "gdk-sys", 2425 | "gdkwayland-sys", 2426 | "gdkx11-sys", 2427 | "gio", 2428 | "glib", 2429 | "glib-sys", 2430 | "gtk", 2431 | "image", 2432 | "instant", 2433 | "jni 0.20.0", 2434 | "lazy_static", 2435 | "libc", 2436 | "log", 2437 | "ndk", 2438 | "ndk-context", 2439 | "ndk-sys", 2440 | "objc", 2441 | "once_cell", 2442 | "parking_lot", 2443 | "png", 2444 | "raw-window-handle", 2445 | "scopeguard", 2446 | "serde", 2447 | "tao-macros", 2448 | "unicode-segmentation", 2449 | "uuid", 2450 | "windows", 2451 | "windows-implement", 2452 | "x11-dl", 2453 | ] 2454 | 2455 | [[package]] 2456 | name = "tao-macros" 2457 | version = "0.1.2" 2458 | source = "registry+https://github.com/rust-lang/crates.io-index" 2459 | checksum = "ec114582505d158b669b136e6851f85840c109819d77c42bb7c0709f727d18c2" 2460 | dependencies = [ 2461 | "proc-macro2", 2462 | "quote", 2463 | "syn 1.0.98", 2464 | ] 2465 | 2466 | [[package]] 2467 | name = "target-lexicon" 2468 | version = "0.12.7" 2469 | source = "registry+https://github.com/rust-lang/crates.io-index" 2470 | checksum = "fd1ba337640d60c3e96bc6f0638a939b9c9a7f2c316a1598c279828b3d1dc8c5" 2471 | 2472 | [[package]] 2473 | name = "tendril" 2474 | version = "0.4.3" 2475 | source = "registry+https://github.com/rust-lang/crates.io-index" 2476 | checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" 2477 | dependencies = [ 2478 | "futf", 2479 | "mac", 2480 | "utf-8", 2481 | ] 2482 | 2483 | [[package]] 2484 | name = "termcolor" 2485 | version = "1.1.3" 2486 | source = "registry+https://github.com/rust-lang/crates.io-index" 2487 | checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" 2488 | dependencies = [ 2489 | "winapi-util", 2490 | ] 2491 | 2492 | [[package]] 2493 | name = "thin-slice" 2494 | version = "0.1.1" 2495 | source = "registry+https://github.com/rust-lang/crates.io-index" 2496 | checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" 2497 | 2498 | [[package]] 2499 | name = "thiserror" 2500 | version = "1.0.51" 2501 | source = "registry+https://github.com/rust-lang/crates.io-index" 2502 | checksum = "f11c217e1416d6f036b870f14e0413d480dbf28edbee1f877abaf0206af43bb7" 2503 | dependencies = [ 2504 | "thiserror-impl", 2505 | ] 2506 | 2507 | [[package]] 2508 | name = "thiserror-impl" 2509 | version = "1.0.51" 2510 | source = "registry+https://github.com/rust-lang/crates.io-index" 2511 | checksum = "01742297787513b79cf8e29d1056ede1313e2420b7b3b15d0a768b4921f549df" 2512 | dependencies = [ 2513 | "proc-macro2", 2514 | "quote", 2515 | "syn 2.0.41", 2516 | ] 2517 | 2518 | [[package]] 2519 | name = "tinyvec" 2520 | version = "1.6.0" 2521 | source = "registry+https://github.com/rust-lang/crates.io-index" 2522 | checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" 2523 | dependencies = [ 2524 | "tinyvec_macros", 2525 | ] 2526 | 2527 | [[package]] 2528 | name = "tinyvec_macros" 2529 | version = "0.1.1" 2530 | source = "registry+https://github.com/rust-lang/crates.io-index" 2531 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 2532 | 2533 | [[package]] 2534 | name = "to_method" 2535 | version = "1.1.0" 2536 | source = "registry+https://github.com/rust-lang/crates.io-index" 2537 | checksum = "c7c4ceeeca15c8384bbc3e011dbd8fccb7f068a440b752b7d9b32ceb0ca0e2e8" 2538 | 2539 | [[package]] 2540 | name = "tokio" 2541 | version = "1.28.0" 2542 | source = "registry+https://github.com/rust-lang/crates.io-index" 2543 | checksum = "c3c786bf8134e5a3a166db9b29ab8f48134739014a3eca7bc6bfa95d673b136f" 2544 | dependencies = [ 2545 | "autocfg", 2546 | "bytes", 2547 | "num_cpus", 2548 | "pin-project-lite", 2549 | "tokio-macros", 2550 | "windows-sys 0.48.0", 2551 | ] 2552 | 2553 | [[package]] 2554 | name = "tokio-macros" 2555 | version = "2.1.0" 2556 | source = "registry+https://github.com/rust-lang/crates.io-index" 2557 | checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" 2558 | dependencies = [ 2559 | "proc-macro2", 2560 | "quote", 2561 | "syn 2.0.41", 2562 | ] 2563 | 2564 | [[package]] 2565 | name = "toml" 2566 | version = "0.5.9" 2567 | source = "registry+https://github.com/rust-lang/crates.io-index" 2568 | checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" 2569 | dependencies = [ 2570 | "serde", 2571 | ] 2572 | 2573 | [[package]] 2574 | name = "toml" 2575 | version = "0.7.3" 2576 | source = "registry+https://github.com/rust-lang/crates.io-index" 2577 | checksum = "b403acf6f2bb0859c93c7f0d967cb4a75a7ac552100f9322faf64dc047669b21" 2578 | dependencies = [ 2579 | "serde", 2580 | "serde_spanned", 2581 | "toml_datetime", 2582 | "toml_edit", 2583 | ] 2584 | 2585 | [[package]] 2586 | name = "toml_datetime" 2587 | version = "0.6.1" 2588 | source = "registry+https://github.com/rust-lang/crates.io-index" 2589 | checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" 2590 | dependencies = [ 2591 | "serde", 2592 | ] 2593 | 2594 | [[package]] 2595 | name = "toml_edit" 2596 | version = "0.19.8" 2597 | source = "registry+https://github.com/rust-lang/crates.io-index" 2598 | checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13" 2599 | dependencies = [ 2600 | "indexmap", 2601 | "serde", 2602 | "serde_spanned", 2603 | "toml_datetime", 2604 | "winnow", 2605 | ] 2606 | 2607 | [[package]] 2608 | name = "tracing" 2609 | version = "0.1.40" 2610 | source = "registry+https://github.com/rust-lang/crates.io-index" 2611 | checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" 2612 | dependencies = [ 2613 | "pin-project-lite", 2614 | "tracing-attributes", 2615 | "tracing-core", 2616 | ] 2617 | 2618 | [[package]] 2619 | name = "tracing-attributes" 2620 | version = "0.1.27" 2621 | source = "registry+https://github.com/rust-lang/crates.io-index" 2622 | checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" 2623 | dependencies = [ 2624 | "proc-macro2", 2625 | "quote", 2626 | "syn 2.0.41", 2627 | ] 2628 | 2629 | [[package]] 2630 | name = "tracing-core" 2631 | version = "0.1.32" 2632 | source = "registry+https://github.com/rust-lang/crates.io-index" 2633 | checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" 2634 | dependencies = [ 2635 | "once_cell", 2636 | ] 2637 | 2638 | [[package]] 2639 | name = "trybuild" 2640 | version = "1.0.63" 2641 | source = "registry+https://github.com/rust-lang/crates.io-index" 2642 | checksum = "764b9e244b482a9b81bde596aa37aa6f1347bf8007adab25e59f901b32b4e0a0" 2643 | dependencies = [ 2644 | "glob", 2645 | "once_cell", 2646 | "serde", 2647 | "serde_derive", 2648 | "serde_json", 2649 | "termcolor", 2650 | "toml 0.5.9", 2651 | ] 2652 | 2653 | [[package]] 2654 | name = "typenum" 2655 | version = "1.16.0" 2656 | source = "registry+https://github.com/rust-lang/crates.io-index" 2657 | checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" 2658 | 2659 | [[package]] 2660 | name = "unicode-bidi" 2661 | version = "0.3.13" 2662 | source = "registry+https://github.com/rust-lang/crates.io-index" 2663 | checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" 2664 | 2665 | [[package]] 2666 | name = "unicode-ident" 2667 | version = "1.0.1" 2668 | source = "registry+https://github.com/rust-lang/crates.io-index" 2669 | checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c" 2670 | 2671 | [[package]] 2672 | name = "unicode-normalization" 2673 | version = "0.1.22" 2674 | source = "registry+https://github.com/rust-lang/crates.io-index" 2675 | checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" 2676 | dependencies = [ 2677 | "tinyvec", 2678 | ] 2679 | 2680 | [[package]] 2681 | name = "unicode-segmentation" 2682 | version = "1.10.1" 2683 | source = "registry+https://github.com/rust-lang/crates.io-index" 2684 | checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" 2685 | 2686 | [[package]] 2687 | name = "url" 2688 | version = "2.3.1" 2689 | source = "registry+https://github.com/rust-lang/crates.io-index" 2690 | checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" 2691 | dependencies = [ 2692 | "form_urlencoded", 2693 | "idna", 2694 | "percent-encoding", 2695 | ] 2696 | 2697 | [[package]] 2698 | name = "urlencoding" 2699 | version = "2.1.3" 2700 | source = "registry+https://github.com/rust-lang/crates.io-index" 2701 | checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" 2702 | 2703 | [[package]] 2704 | name = "utf-8" 2705 | version = "0.7.6" 2706 | source = "registry+https://github.com/rust-lang/crates.io-index" 2707 | checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" 2708 | 2709 | [[package]] 2710 | name = "uuid" 2711 | version = "1.3.2" 2712 | source = "registry+https://github.com/rust-lang/crates.io-index" 2713 | checksum = "4dad5567ad0cf5b760e5665964bec1b47dfd077ba8a2544b513f3556d3d239a2" 2714 | dependencies = [ 2715 | "getrandom 0.2.9", 2716 | ] 2717 | 2718 | [[package]] 2719 | name = "version-compare" 2720 | version = "0.1.1" 2721 | source = "registry+https://github.com/rust-lang/crates.io-index" 2722 | checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29" 2723 | 2724 | [[package]] 2725 | name = "version_check" 2726 | version = "0.9.4" 2727 | source = "registry+https://github.com/rust-lang/crates.io-index" 2728 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 2729 | 2730 | [[package]] 2731 | name = "waker-fn" 2732 | version = "1.1.0" 2733 | source = "registry+https://github.com/rust-lang/crates.io-index" 2734 | checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" 2735 | 2736 | [[package]] 2737 | name = "walkdir" 2738 | version = "2.3.2" 2739 | source = "registry+https://github.com/rust-lang/crates.io-index" 2740 | checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" 2741 | dependencies = [ 2742 | "same-file", 2743 | "winapi", 2744 | "winapi-util", 2745 | ] 2746 | 2747 | [[package]] 2748 | name = "wasi" 2749 | version = "0.9.0+wasi-snapshot-preview1" 2750 | source = "registry+https://github.com/rust-lang/crates.io-index" 2751 | checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" 2752 | 2753 | [[package]] 2754 | name = "wasi" 2755 | version = "0.11.0+wasi-snapshot-preview1" 2756 | source = "registry+https://github.com/rust-lang/crates.io-index" 2757 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 2758 | 2759 | [[package]] 2760 | name = "wasm-bindgen" 2761 | version = "0.2.81" 2762 | source = "registry+https://github.com/rust-lang/crates.io-index" 2763 | checksum = "7c53b543413a17a202f4be280a7e5c62a1c69345f5de525ee64f8cfdbc954994" 2764 | dependencies = [ 2765 | "cfg-if", 2766 | "wasm-bindgen-macro", 2767 | ] 2768 | 2769 | [[package]] 2770 | name = "wasm-bindgen-backend" 2771 | version = "0.2.81" 2772 | source = "registry+https://github.com/rust-lang/crates.io-index" 2773 | checksum = "5491a68ab4500fa6b4d726bd67408630c3dbe9c4fe7bda16d5c82a1fd8c7340a" 2774 | dependencies = [ 2775 | "bumpalo", 2776 | "lazy_static", 2777 | "log", 2778 | "proc-macro2", 2779 | "quote", 2780 | "syn 1.0.98", 2781 | "wasm-bindgen-shared", 2782 | ] 2783 | 2784 | [[package]] 2785 | name = "wasm-bindgen-futures" 2786 | version = "0.4.31" 2787 | source = "registry+https://github.com/rust-lang/crates.io-index" 2788 | checksum = "de9a9cec1733468a8c657e57fa2413d2ae2c0129b95e87c5b72b8ace4d13f31f" 2789 | dependencies = [ 2790 | "cfg-if", 2791 | "js-sys", 2792 | "wasm-bindgen", 2793 | "web-sys", 2794 | ] 2795 | 2796 | [[package]] 2797 | name = "wasm-bindgen-macro" 2798 | version = "0.2.81" 2799 | source = "registry+https://github.com/rust-lang/crates.io-index" 2800 | checksum = "c441e177922bc58f1e12c022624b6216378e5febc2f0533e41ba443d505b80aa" 2801 | dependencies = [ 2802 | "quote", 2803 | "wasm-bindgen-macro-support", 2804 | ] 2805 | 2806 | [[package]] 2807 | name = "wasm-bindgen-macro-support" 2808 | version = "0.2.81" 2809 | source = "registry+https://github.com/rust-lang/crates.io-index" 2810 | checksum = "7d94ac45fcf608c1f45ef53e748d35660f168490c10b23704c7779ab8f5c3048" 2811 | dependencies = [ 2812 | "proc-macro2", 2813 | "quote", 2814 | "syn 1.0.98", 2815 | "wasm-bindgen-backend", 2816 | "wasm-bindgen-shared", 2817 | ] 2818 | 2819 | [[package]] 2820 | name = "wasm-bindgen-shared" 2821 | version = "0.2.81" 2822 | source = "registry+https://github.com/rust-lang/crates.io-index" 2823 | checksum = "6a89911bd99e5f3659ec4acf9c4d93b0a90fe4a2a11f15328472058edc5261be" 2824 | 2825 | [[package]] 2826 | name = "web-sys" 2827 | version = "0.3.58" 2828 | source = "registry+https://github.com/rust-lang/crates.io-index" 2829 | checksum = "2fed94beee57daf8dd7d51f2b15dc2bcde92d7a72304cdf662a4371008b71b90" 2830 | dependencies = [ 2831 | "js-sys", 2832 | "wasm-bindgen", 2833 | ] 2834 | 2835 | [[package]] 2836 | name = "webbrowser" 2837 | version = "0.8.9" 2838 | source = "registry+https://github.com/rust-lang/crates.io-index" 2839 | checksum = "b692165700260bbd40fbc5ff23766c03e339fbaca907aeea5cb77bf0a553ca83" 2840 | dependencies = [ 2841 | "core-foundation", 2842 | "dirs", 2843 | "jni 0.21.1", 2844 | "log", 2845 | "ndk-context", 2846 | "objc", 2847 | "raw-window-handle", 2848 | "url", 2849 | "web-sys", 2850 | ] 2851 | 2852 | [[package]] 2853 | name = "webkit2gtk" 2854 | version = "0.19.2" 2855 | source = "registry+https://github.com/rust-lang/crates.io-index" 2856 | checksum = "d8eea819afe15eb8dcdff4f19d8bfda540bae84d874c10e6f4b8faf2d6704bd1" 2857 | dependencies = [ 2858 | "bitflags 1.3.2", 2859 | "cairo-rs", 2860 | "gdk", 2861 | "gdk-sys", 2862 | "gio", 2863 | "gio-sys", 2864 | "glib", 2865 | "glib-sys", 2866 | "gobject-sys", 2867 | "gtk", 2868 | "gtk-sys", 2869 | "javascriptcore-rs", 2870 | "libc", 2871 | "once_cell", 2872 | "soup3", 2873 | "webkit2gtk-sys", 2874 | ] 2875 | 2876 | [[package]] 2877 | name = "webkit2gtk-sys" 2878 | version = "0.19.1" 2879 | source = "registry+https://github.com/rust-lang/crates.io-index" 2880 | checksum = "d0ac7a95ddd3fdfcaf83d8e513b4b1ad101b95b413b6aa6662ed95f284fc3d5b" 2881 | dependencies = [ 2882 | "bitflags 1.3.2", 2883 | "cairo-sys-rs", 2884 | "gdk-sys", 2885 | "gio-sys", 2886 | "glib-sys", 2887 | "gobject-sys", 2888 | "gtk-sys", 2889 | "javascriptcore-rs-sys", 2890 | "libc", 2891 | "pkg-config", 2892 | "soup3-sys", 2893 | "system-deps", 2894 | ] 2895 | 2896 | [[package]] 2897 | name = "webview2-com" 2898 | version = "0.22.1" 2899 | source = "registry+https://github.com/rust-lang/crates.io-index" 2900 | checksum = "11296e5daf3a653b79bf47d66c380e4143d5b9c975818871179a3bda79499562" 2901 | dependencies = [ 2902 | "webview2-com-macros", 2903 | "webview2-com-sys", 2904 | "windows", 2905 | "windows-implement", 2906 | ] 2907 | 2908 | [[package]] 2909 | name = "webview2-com-macros" 2910 | version = "0.6.0" 2911 | source = "registry+https://github.com/rust-lang/crates.io-index" 2912 | checksum = "eaebe196c01691db62e9e4ca52c5ef1e4fd837dcae27dae3ada599b5a8fd05ac" 2913 | dependencies = [ 2914 | "proc-macro2", 2915 | "quote", 2916 | "syn 1.0.98", 2917 | ] 2918 | 2919 | [[package]] 2920 | name = "webview2-com-sys" 2921 | version = "0.22.1" 2922 | source = "registry+https://github.com/rust-lang/crates.io-index" 2923 | checksum = "cde542bed28058a5b028d459689ee57f1d06685bb6c266da3b91b1be6703952f" 2924 | dependencies = [ 2925 | "regex", 2926 | "serde", 2927 | "serde_json", 2928 | "thiserror", 2929 | "windows", 2930 | "windows-bindgen", 2931 | "windows-metadata", 2932 | ] 2933 | 2934 | [[package]] 2935 | name = "winapi" 2936 | version = "0.3.9" 2937 | source = "registry+https://github.com/rust-lang/crates.io-index" 2938 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 2939 | dependencies = [ 2940 | "winapi-i686-pc-windows-gnu", 2941 | "winapi-x86_64-pc-windows-gnu", 2942 | ] 2943 | 2944 | [[package]] 2945 | name = "winapi-i686-pc-windows-gnu" 2946 | version = "0.4.0" 2947 | source = "registry+https://github.com/rust-lang/crates.io-index" 2948 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 2949 | 2950 | [[package]] 2951 | name = "winapi-util" 2952 | version = "0.1.5" 2953 | source = "registry+https://github.com/rust-lang/crates.io-index" 2954 | checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" 2955 | dependencies = [ 2956 | "winapi", 2957 | ] 2958 | 2959 | [[package]] 2960 | name = "winapi-x86_64-pc-windows-gnu" 2961 | version = "0.4.0" 2962 | source = "registry+https://github.com/rust-lang/crates.io-index" 2963 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 2964 | 2965 | [[package]] 2966 | name = "windows" 2967 | version = "0.44.0" 2968 | source = "registry+https://github.com/rust-lang/crates.io-index" 2969 | checksum = "9e745dab35a0c4c77aa3ce42d595e13d2003d6902d6b08c9ef5fc326d08da12b" 2970 | dependencies = [ 2971 | "windows-implement", 2972 | "windows-interface", 2973 | "windows-targets 0.42.2", 2974 | ] 2975 | 2976 | [[package]] 2977 | name = "windows-bindgen" 2978 | version = "0.44.0" 2979 | source = "registry+https://github.com/rust-lang/crates.io-index" 2980 | checksum = "222204ecf46521382a4d88b4a1bbefca9f8855697b4ab7d20803901425e061a3" 2981 | dependencies = [ 2982 | "windows-metadata", 2983 | "windows-tokens", 2984 | ] 2985 | 2986 | [[package]] 2987 | name = "windows-implement" 2988 | version = "0.44.0" 2989 | source = "registry+https://github.com/rust-lang/crates.io-index" 2990 | checksum = "6ce87ca8e3417b02dc2a8a22769306658670ec92d78f1bd420d6310a67c245c6" 2991 | dependencies = [ 2992 | "proc-macro2", 2993 | "quote", 2994 | "syn 1.0.98", 2995 | ] 2996 | 2997 | [[package]] 2998 | name = "windows-interface" 2999 | version = "0.44.0" 3000 | source = "registry+https://github.com/rust-lang/crates.io-index" 3001 | checksum = "853f69a591ecd4f810d29f17e902d40e349fb05b0b11fff63b08b826bfe39c7f" 3002 | dependencies = [ 3003 | "proc-macro2", 3004 | "quote", 3005 | "syn 1.0.98", 3006 | ] 3007 | 3008 | [[package]] 3009 | name = "windows-metadata" 3010 | version = "0.44.0" 3011 | source = "registry+https://github.com/rust-lang/crates.io-index" 3012 | checksum = "ee78911e3f4ce32c1ad9d3c7b0bd95389662ad8d8f1a3155688fed70bd96e2b6" 3013 | 3014 | [[package]] 3015 | name = "windows-sys" 3016 | version = "0.45.0" 3017 | source = "registry+https://github.com/rust-lang/crates.io-index" 3018 | checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" 3019 | dependencies = [ 3020 | "windows-targets 0.42.2", 3021 | ] 3022 | 3023 | [[package]] 3024 | name = "windows-sys" 3025 | version = "0.48.0" 3026 | source = "registry+https://github.com/rust-lang/crates.io-index" 3027 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 3028 | dependencies = [ 3029 | "windows-targets 0.48.0", 3030 | ] 3031 | 3032 | [[package]] 3033 | name = "windows-sys" 3034 | version = "0.52.0" 3035 | source = "registry+https://github.com/rust-lang/crates.io-index" 3036 | checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 3037 | dependencies = [ 3038 | "windows-targets 0.52.0", 3039 | ] 3040 | 3041 | [[package]] 3042 | name = "windows-targets" 3043 | version = "0.42.2" 3044 | source = "registry+https://github.com/rust-lang/crates.io-index" 3045 | checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" 3046 | dependencies = [ 3047 | "windows_aarch64_gnullvm 0.42.2", 3048 | "windows_aarch64_msvc 0.42.2", 3049 | "windows_i686_gnu 0.42.2", 3050 | "windows_i686_msvc 0.42.2", 3051 | "windows_x86_64_gnu 0.42.2", 3052 | "windows_x86_64_gnullvm 0.42.2", 3053 | "windows_x86_64_msvc 0.42.2", 3054 | ] 3055 | 3056 | [[package]] 3057 | name = "windows-targets" 3058 | version = "0.48.0" 3059 | source = "registry+https://github.com/rust-lang/crates.io-index" 3060 | checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" 3061 | dependencies = [ 3062 | "windows_aarch64_gnullvm 0.48.0", 3063 | "windows_aarch64_msvc 0.48.0", 3064 | "windows_i686_gnu 0.48.0", 3065 | "windows_i686_msvc 0.48.0", 3066 | "windows_x86_64_gnu 0.48.0", 3067 | "windows_x86_64_gnullvm 0.48.0", 3068 | "windows_x86_64_msvc 0.48.0", 3069 | ] 3070 | 3071 | [[package]] 3072 | name = "windows-targets" 3073 | version = "0.52.0" 3074 | source = "registry+https://github.com/rust-lang/crates.io-index" 3075 | checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" 3076 | dependencies = [ 3077 | "windows_aarch64_gnullvm 0.52.0", 3078 | "windows_aarch64_msvc 0.52.0", 3079 | "windows_i686_gnu 0.52.0", 3080 | "windows_i686_msvc 0.52.0", 3081 | "windows_x86_64_gnu 0.52.0", 3082 | "windows_x86_64_gnullvm 0.52.0", 3083 | "windows_x86_64_msvc 0.52.0", 3084 | ] 3085 | 3086 | [[package]] 3087 | name = "windows-tokens" 3088 | version = "0.44.0" 3089 | source = "registry+https://github.com/rust-lang/crates.io-index" 3090 | checksum = "fa4251900975a0d10841c5d4bde79c56681543367ef811f3fabb8d1803b0959b" 3091 | 3092 | [[package]] 3093 | name = "windows_aarch64_gnullvm" 3094 | version = "0.42.2" 3095 | source = "registry+https://github.com/rust-lang/crates.io-index" 3096 | checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" 3097 | 3098 | [[package]] 3099 | name = "windows_aarch64_gnullvm" 3100 | version = "0.48.0" 3101 | source = "registry+https://github.com/rust-lang/crates.io-index" 3102 | checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" 3103 | 3104 | [[package]] 3105 | name = "windows_aarch64_gnullvm" 3106 | version = "0.52.0" 3107 | source = "registry+https://github.com/rust-lang/crates.io-index" 3108 | checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" 3109 | 3110 | [[package]] 3111 | name = "windows_aarch64_msvc" 3112 | version = "0.42.2" 3113 | source = "registry+https://github.com/rust-lang/crates.io-index" 3114 | checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" 3115 | 3116 | [[package]] 3117 | name = "windows_aarch64_msvc" 3118 | version = "0.48.0" 3119 | source = "registry+https://github.com/rust-lang/crates.io-index" 3120 | checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" 3121 | 3122 | [[package]] 3123 | name = "windows_aarch64_msvc" 3124 | version = "0.52.0" 3125 | source = "registry+https://github.com/rust-lang/crates.io-index" 3126 | checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" 3127 | 3128 | [[package]] 3129 | name = "windows_i686_gnu" 3130 | version = "0.42.2" 3131 | source = "registry+https://github.com/rust-lang/crates.io-index" 3132 | checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" 3133 | 3134 | [[package]] 3135 | name = "windows_i686_gnu" 3136 | version = "0.48.0" 3137 | source = "registry+https://github.com/rust-lang/crates.io-index" 3138 | checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" 3139 | 3140 | [[package]] 3141 | name = "windows_i686_gnu" 3142 | version = "0.52.0" 3143 | source = "registry+https://github.com/rust-lang/crates.io-index" 3144 | checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" 3145 | 3146 | [[package]] 3147 | name = "windows_i686_msvc" 3148 | version = "0.42.2" 3149 | source = "registry+https://github.com/rust-lang/crates.io-index" 3150 | checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" 3151 | 3152 | [[package]] 3153 | name = "windows_i686_msvc" 3154 | version = "0.48.0" 3155 | source = "registry+https://github.com/rust-lang/crates.io-index" 3156 | checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" 3157 | 3158 | [[package]] 3159 | name = "windows_i686_msvc" 3160 | version = "0.52.0" 3161 | source = "registry+https://github.com/rust-lang/crates.io-index" 3162 | checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" 3163 | 3164 | [[package]] 3165 | name = "windows_x86_64_gnu" 3166 | version = "0.42.2" 3167 | source = "registry+https://github.com/rust-lang/crates.io-index" 3168 | checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" 3169 | 3170 | [[package]] 3171 | name = "windows_x86_64_gnu" 3172 | version = "0.48.0" 3173 | source = "registry+https://github.com/rust-lang/crates.io-index" 3174 | checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" 3175 | 3176 | [[package]] 3177 | name = "windows_x86_64_gnu" 3178 | version = "0.52.0" 3179 | source = "registry+https://github.com/rust-lang/crates.io-index" 3180 | checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" 3181 | 3182 | [[package]] 3183 | name = "windows_x86_64_gnullvm" 3184 | version = "0.42.2" 3185 | source = "registry+https://github.com/rust-lang/crates.io-index" 3186 | checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" 3187 | 3188 | [[package]] 3189 | name = "windows_x86_64_gnullvm" 3190 | version = "0.48.0" 3191 | source = "registry+https://github.com/rust-lang/crates.io-index" 3192 | checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" 3193 | 3194 | [[package]] 3195 | name = "windows_x86_64_gnullvm" 3196 | version = "0.52.0" 3197 | source = "registry+https://github.com/rust-lang/crates.io-index" 3198 | checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" 3199 | 3200 | [[package]] 3201 | name = "windows_x86_64_msvc" 3202 | version = "0.42.2" 3203 | source = "registry+https://github.com/rust-lang/crates.io-index" 3204 | checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" 3205 | 3206 | [[package]] 3207 | name = "windows_x86_64_msvc" 3208 | version = "0.48.0" 3209 | source = "registry+https://github.com/rust-lang/crates.io-index" 3210 | checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" 3211 | 3212 | [[package]] 3213 | name = "windows_x86_64_msvc" 3214 | version = "0.52.0" 3215 | source = "registry+https://github.com/rust-lang/crates.io-index" 3216 | checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" 3217 | 3218 | [[package]] 3219 | name = "winnow" 3220 | version = "0.4.6" 3221 | source = "registry+https://github.com/rust-lang/crates.io-index" 3222 | checksum = "61de7bac303dc551fe038e2b3cef0f571087a47571ea6e79a87692ac99b99699" 3223 | dependencies = [ 3224 | "memchr", 3225 | ] 3226 | 3227 | [[package]] 3228 | name = "wry" 3229 | version = "0.28.3" 3230 | source = "registry+https://github.com/rust-lang/crates.io-index" 3231 | checksum = "7d15f9f827d537cefe6d047be3930f5d89b238dfb85e08ba6a319153217635aa" 3232 | dependencies = [ 3233 | "base64", 3234 | "block", 3235 | "cocoa", 3236 | "core-graphics", 3237 | "crossbeam-channel", 3238 | "dunce", 3239 | "gdk", 3240 | "gio", 3241 | "glib", 3242 | "gtk", 3243 | "html5ever", 3244 | "http", 3245 | "javascriptcore-rs", 3246 | "kuchiki", 3247 | "libc", 3248 | "log", 3249 | "objc", 3250 | "objc_id", 3251 | "once_cell", 3252 | "serde", 3253 | "serde_json", 3254 | "sha2", 3255 | "soup3", 3256 | "tao", 3257 | "thiserror", 3258 | "url", 3259 | "webkit2gtk", 3260 | "webkit2gtk-sys", 3261 | "webview2-com", 3262 | "windows", 3263 | "windows-implement", 3264 | ] 3265 | 3266 | [[package]] 3267 | name = "x11" 3268 | version = "2.21.0" 3269 | source = "registry+https://github.com/rust-lang/crates.io-index" 3270 | checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" 3271 | dependencies = [ 3272 | "libc", 3273 | "pkg-config", 3274 | ] 3275 | 3276 | [[package]] 3277 | name = "x11-dl" 3278 | version = "2.21.0" 3279 | source = "registry+https://github.com/rust-lang/crates.io-index" 3280 | checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" 3281 | dependencies = [ 3282 | "libc", 3283 | "once_cell", 3284 | "pkg-config", 3285 | ] 3286 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "dioxus-html-macro" 3 | version = "0.3.0" 4 | edition = "2021" 5 | license = "Apache-2.0" 6 | keywords = ["macro", "dioxus", "html", "rsx"] 7 | readme = "README.md" 8 | repository = "https://github.com/DioxusLabs/dioxus-html-macro" 9 | description = "An html macro for dioxus applications." 10 | authors = ["Tomas Vallotton "] 11 | 12 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 13 | [lib] 14 | proc-macro = true 15 | 16 | [dependencies] 17 | dioxus = { version = "0.4.3", default-features = false } 18 | proc-macro2 = "1.0.40" 19 | quote = "1.0.20" 20 | syn = { version = "2.0.41", features = ["full"] } 21 | 22 | [dev-dependencies] 23 | dioxus-desktop = "0.4.0" 24 | dioxus = { version = "0.4.3", default-features = true } 25 | trybuild = "1.0.63" 26 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # dioxus html macro 3 | This crate offers an `html!` like macro for 4 | dioxus applications. It expands to the equivalent `rsx!` macro 5 | call you would have made otherwise, so it does not rely on any 6 | dioxus' internals. 7 | ```rust 8 | use dioxus::prelude::*; 9 | use dioxus_html_macro::html; 10 | 11 | fn app(cx: Scope) -> Element { 12 | let mut count = use_state(&cx, || 0); 13 | cx.render(html!( 14 |

"High-Five counter: {count}"

15 | 16 | 17 | )) 18 | } 19 | ``` 20 | Note that unlike HTML and JSX, styling of html tags is done via 21 | attributes: 22 | ```rust 23 | html!( 24 |

"High-Five counter: {count}"

25 | ) 26 | ``` 27 | -------------------------------------------------------------------------------- /examples/homepage.rs: -------------------------------------------------------------------------------- 1 | use dioxus::prelude::*; 2 | use dioxus_html_macro::html; 3 | 4 | fn app(cx: Scope) -> Element { 5 | let mut count = use_state(cx, || 0); 6 | cx.render(html!( 7 |

"High-Five counter: {count}"

8 | 9 | 10 | )) 11 | } 12 | 13 | fn main() { 14 | dioxus_desktop::launch(app); 15 | } 16 | -------------------------------------------------------------------------------- /src/assertions.rs: -------------------------------------------------------------------------------- 1 | use crate::close_tag::CloseTag; 2 | use crate::element::closing; 3 | use crate::prelude::*; 4 | 5 | /// This struct is used to make sure there are no trailing 6 | /// closing html tags. Without this, the error message for 7 | /// `
` wouldn't be very useful. 8 | pub struct AssertStreamIsEmpty { 9 | _option: Option, 10 | } 11 | 12 | impl Parse for AssertStreamIsEmpty { 13 | fn parse(input: ParseStream) -> Result { 14 | if input.is_empty() { 15 | Ok(AssertStreamIsEmpty { _option: None }) 16 | } else { 17 | let tag: CloseTag = input.parse()?; 18 | Err(closing(&tag.name)) 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/attribute.rs: -------------------------------------------------------------------------------- 1 | use crate::prelude::*; 2 | /// An attribute can have one of the 3 | /// following two structures: 4 | /// * `ident=value` 5 | /// * `"custom-attr"="string-lit" 6 | pub struct Attribute { 7 | pub name: AttributeIdent, 8 | pub equals: Token![=], 9 | pub value: RsxExpr, 10 | } 11 | 12 | impl Parse for Attribute { 13 | fn parse(input: ParseStream) -> Result { 14 | let name = input.parse()?; 15 | let equals = input.parse()?; 16 | let value = input.parse()?; 17 | let attr = Attribute { 18 | name, 19 | equals, 20 | value, 21 | }; 22 | attr.validate()?; 23 | Ok(attr) 24 | } 25 | } 26 | 27 | impl ToTokens for Attribute { 28 | fn to_tokens(&self, tokens: &mut TokenStream) { 29 | let Attribute { name, value, .. } = self; 30 | tokens.extend(quote! { 31 | #name: #value 32 | }); 33 | } 34 | } 35 | 36 | impl Attribute { 37 | fn validate(&self) -> Result<()> { 38 | if !self.name.is_ident() && !self.value.is_str() { 39 | return Err( 40 | Error::new( 41 | self.value.span(), 42 | "expected a string literal." 43 | ) 44 | ); 45 | } 46 | Ok(()) 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/attribute_ident.rs: -------------------------------------------------------------------------------- 1 | use crate::prelude::*; 2 | 3 | /// represents either an identifier or a string literal 4 | pub enum AttributeIdent { 5 | Ident(Ident), 6 | LitStr(LitStr), 7 | } 8 | 9 | impl Parse for AttributeIdent { 10 | fn parse(input: ParseStream) -> Result { 11 | Ok({ 12 | if input.peek(LitStr) { 13 | Self::LitStr(input.parse()?) 14 | } else { 15 | Self::Ident(input.parse()?) 16 | } 17 | }) 18 | } 19 | } 20 | 21 | impl ToTokens for AttributeIdent { 22 | fn to_tokens(&self, tokens: &mut proc_macro2::TokenStream) { 23 | tokens.extend({ 24 | match self { 25 | Self::Ident(ident) => quote!(#ident), 26 | Self::LitStr(litstr) => quote!(#litstr), 27 | } 28 | }); 29 | } 30 | } 31 | 32 | impl AttributeIdent { 33 | pub fn is_ident(&self) -> bool { 34 | matches!(&self, Self::Ident(_)) 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/attributes.rs: -------------------------------------------------------------------------------- 1 | use crate::prelude::*; 2 | 3 | pub struct Attributes(Vec); 4 | 5 | impl Parse for Attributes { 6 | fn parse(input: ParseStream) -> Result { 7 | let mut attrs = vec![]; 8 | loop { 9 | if input.peek(Token![/]) || input.peek(Token![>]) { 10 | break Ok(Attributes(attrs)); 11 | } 12 | let attr = input.parse()?; 13 | attrs.push(attr); 14 | } 15 | } 16 | } 17 | 18 | impl ToTokens for Attributes { 19 | fn to_tokens(&self, tokens: &mut TokenStream) { 20 | let Attributes(attributes) = self; 21 | tokens.extend(quote! {#(#attributes,)*}) 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/close_tag.rs: -------------------------------------------------------------------------------- 1 | use crate::prelude::*; 2 | 3 | pub struct CloseTag { 4 | pub open_angle: Token![<], 5 | pub slash: Token![/], 6 | pub name: Ident, 7 | pub close_angle: Token![>], 8 | } 9 | 10 | impl Parse for CloseTag { 11 | fn parse(input: ParseStream) -> Result { 12 | let open_angle = input.parse()?; 13 | let slash = input.parse()?; 14 | let name: Ident = input.parse()?; 15 | let close_angle = input.parse()?; 16 | 17 | Ok(CloseTag { 18 | open_angle, 19 | slash, 20 | name, 21 | close_angle, 22 | }) 23 | } 24 | } 25 | 26 | // impl ToTokens for OpenTag { 27 | // fn to_tokens(&self, tokens: &mut TokenStream) { 28 | // } 29 | // } 30 | -------------------------------------------------------------------------------- /src/element.rs: -------------------------------------------------------------------------------- 1 | use crate::prelude::*; 2 | 3 | /// An HTML element is composed of an 4 | /// opening tag, an HTML body, and a closing tag. 5 | pub struct Element { 6 | open_tag: OpenTag, 7 | html: Html, 8 | close_tag: Option, 9 | } 10 | 11 | impl Parse for Element { 12 | fn parse(input: ParseStream) -> Result { 13 | let fork = input.fork(); 14 | let open_tag: OpenTag = input.parse().map_err(|err| unmatched_msg(err, &&fork))?; 15 | let mut html = Default::default(); 16 | let mut close_tag = None; 17 | if open_tag.slash.is_none() { 18 | html = input.parse()?; 19 | 20 | close_tag = Some(input.parse().map_err(|_| opening(&open_tag.name))?); 21 | } 22 | 23 | let element = Element { 24 | open_tag, 25 | html, 26 | close_tag, 27 | }; 28 | 29 | element.validate()?; 30 | 31 | Ok(element) 32 | } 33 | } 34 | 35 | impl ToTokens for Element { 36 | fn to_tokens(&self, tokens: &mut TokenStream) { 37 | let Element { open_tag, html, .. } = self; 38 | let OpenTag { 39 | name, attributes, .. 40 | } = open_tag; 41 | 42 | tokens.extend(quote! { 43 | #name { 44 | #attributes 45 | #html 46 | } 47 | }); 48 | } 49 | } 50 | 51 | impl Element { 52 | fn validate(&self) -> Result<()> { 53 | let name = &self.open_tag.name; 54 | match &self.close_tag { 55 | Some(tag) if tag.name != *name => { 56 | let error = opening(name); 57 | Err(error) 58 | } 59 | _ => Ok(()), 60 | } 61 | } 62 | } 63 | 64 | fn unmatched_msg(error: Error, fork: &ParseStream) -> Error { 65 | let backup = fork.fork(); 66 | if let Ok(tag) = fork.parse::() { 67 | closing(&tag.name) 68 | } else if let Ok(tag) = backup.parse::() { 69 | Error::new( 70 | tag.span(), 71 | "expected string literal, found identifier. hint: try wrapping the text in quotes.", 72 | ) 73 | } else { 74 | error 75 | } 76 | } 77 | 78 | pub fn closing(name: &Ident) -> Error { 79 | Error::new( 80 | name.span(), 81 | format!( 82 | "encountered a closing HTML element \"{name}\" without a corresponding opening tag." 83 | ), 84 | ) 85 | } 86 | 87 | fn opening(name: &Ident) -> Error { 88 | Error::new( 89 | name.span(), 90 | format!( 91 | "encountered an opening HTML element \"{name}\" without a corresponding closing tag." 92 | ), 93 | ) 94 | } 95 | -------------------------------------------------------------------------------- /src/html.rs: -------------------------------------------------------------------------------- 1 | use crate::prelude::*; 2 | 3 | 4 | /// A recursive HTML AST. 5 | #[derive(Default)] 6 | pub struct Html { 7 | pub elements: Vec, 8 | } 9 | 10 | impl Parse for Html { 11 | fn parse(input: syn::parse::ParseStream) -> syn::Result { 12 | let mut elements = vec![]; 13 | while !input.is_empty() && !input.peek2(Token![/]) { 14 | elements.push(input.parse()?); 15 | } 16 | Ok(Html { elements }) 17 | } 18 | } 19 | 20 | impl ToTokens for Html { 21 | fn to_tokens(&self, tokens: &mut TokenStream) { 22 | for element in &self.elements { 23 | tokens.extend(quote! { 24 | #element 25 | }); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/html_non_recursive.rs: -------------------------------------------------------------------------------- 1 | use crate::prelude::*; 2 | 3 | /// Unlike Html, HtmlNonRecursive attempts to consume 4 | /// the entire stream, and errors if it fails. This makes in 5 | /// throw better error messages when there are trailing 6 | /// closing html tags. 7 | pub struct HtmlNonRecursive { 8 | html: Html, 9 | } 10 | 11 | impl Parse for HtmlNonRecursive { 12 | fn parse(input: ParseStream) -> Result { 13 | let html = input.parse()?; 14 | let _: AssertStreamIsEmpty = input.parse()?; 15 | Ok(HtmlNonRecursive { html }) 16 | } 17 | } 18 | 19 | impl ToTokens for HtmlNonRecursive { 20 | fn to_tokens(&self, tokens: &mut proc_macro2::TokenStream) { 21 | let HtmlNonRecursive { html } = self; 22 | tokens.extend(if !html.elements.is_empty() { 23 | quote!(#html) 24 | } else { 25 | quote!("") 26 | }); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/item.rs: -------------------------------------------------------------------------------- 1 | use crate::element::Element; 2 | use crate::prelude::*; 3 | use crate::rsx_expr::RsxExpr; 4 | use syn::token::Brace; 5 | use Item::*; 6 | 7 | /// An Item can either be an rsx expression or an 8 | /// html element. 9 | pub enum Item { 10 | Element(Element), 11 | Expr(RsxExpr), 12 | } 13 | 14 | impl Parse for Item { 15 | fn parse(input: syn::parse::ParseStream) -> syn::Result { 16 | let lookahead1 = input.lookahead1(); 17 | let expr = lookahead1.peek(Brace) || lookahead1.peek(LitStr); 18 | Ok(if expr { 19 | Expr(input.parse()?) 20 | } else { 21 | Element(input.parse()?) 22 | }) 23 | } 24 | } 25 | 26 | impl ToTokens for Item { 27 | fn to_tokens(&self, tokens: &mut TokenStream) { 28 | match self { 29 | Element(el) => tokens.extend(quote!(#el)), 30 | Expr(expr) => tokens.extend(quote!(#expr)), 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/lib.rs: -------------------------------------------------------------------------------- 1 | /// # dioxus html macro 2 | /// This crate offers an `html!` like macro for 3 | /// dioxus applications. It expands to the equivalent `rsx!` macro 4 | /// call you would have made otherwise, so it does not rely on any 5 | /// dioxus' internals. 6 | /// ```rust 7 | /// # use dioxus::prelude::*; 8 | /// # use dioxus_html_macro::html; 9 | /// fn app(cx: Scope) -> Element { 10 | /// let mut count = use_state(&cx, || 0); 11 | /// cx.render(html!( 12 | ///

"High-Five counter: {count}"

13 | /// 14 | /// 15 | /// )) 16 | /// } 17 | /// ``` 18 | /// Note that unlike HTML and JSX, styling of html tags is done via 19 | /// attributes: 20 | /// ```rust 21 | /// # use dioxus::prelude::*; 22 | /// # use dioxus_html_macro::html; 23 | /// html!( 24 | ///

"Title"

25 | /// ); 26 | /// ``` 27 | 28 | #[macro_use] 29 | extern crate syn; 30 | #[macro_use] 31 | extern crate quote; 32 | 33 | use html_non_recursive::HtmlNonRecursive; 34 | use proc_macro::TokenStream; 35 | 36 | mod assertions; 37 | mod attribute; 38 | mod attribute_ident; 39 | mod attributes; 40 | mod close_tag; 41 | mod element; 42 | mod html; 43 | mod html_non_recursive; 44 | mod item; 45 | mod open_tag; 46 | mod prelude; 47 | mod rsx_expr; 48 | 49 | /// macro for generating components using HTML syntax instead of rsx. 50 | #[proc_macro] 51 | pub fn html(input: TokenStream) -> TokenStream { 52 | let html: HtmlNonRecursive = parse_macro_input!(input); 53 | quote! { 54 | dioxus::prelude::rsx! { 55 | #html 56 | } 57 | } 58 | .into() 59 | } 60 | 61 | #[cfg(test)] 62 | #[test] 63 | fn trybuild() { 64 | let t = trybuild::TestCases::new(); 65 | t.compile_fail("test/tag/trailing.rs"); 66 | t.compile_fail("test/tag/extra_close.rs"); 67 | t.compile_fail("test/tag/missing_close.rs"); 68 | 69 | t.compile_fail("test/attribute/non_str_custom.rs"); 70 | t.compile_fail("test/attribute/format_str.rs"); 71 | t.compile_fail("test/attribute/missing_equals.rs"); 72 | t.compile_fail("test/attribute/random_expression.rs"); 73 | t.pass("test/attribute/passes.rs"); 74 | 75 | t.compile_fail("test/body/plain_text.rs"); 76 | t.pass("test/body/expression.rs"); 77 | t.pass("test/props/enum.rs"); 78 | } 79 | -------------------------------------------------------------------------------- /src/open_tag.rs: -------------------------------------------------------------------------------- 1 | use crate::prelude::*; 2 | 3 | 4 | /// represents a `` part of 5 | /// an HTML element. 6 | pub struct OpenTag { 7 | pub open_angle: Token![<], 8 | pub name: Ident, 9 | pub attributes: Attributes, 10 | pub slash: Option, 11 | pub close_angle: Token![>], 12 | } 13 | 14 | impl Parse for OpenTag { 15 | fn parse(input: ParseStream) -> Result { 16 | let open_angle = input.parse()?; 17 | let name = input.parse()?; 18 | let attributes = input.parse()?; 19 | let slash = input.parse()?; 20 | let close_angle = input.parse()?; 21 | 22 | Ok(OpenTag { 23 | open_angle, 24 | name, 25 | attributes, 26 | slash, 27 | close_angle, 28 | }) 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/prelude.rs: -------------------------------------------------------------------------------- 1 | pub use proc_macro2::TokenStream; 2 | 3 | pub use syn::parse::{Parse, ParseBuffer, ParseStream}; 4 | pub use syn::{Result, Ident, LitStr, Error, Expr}; 5 | pub use quote::{ToTokens, quote}; 6 | pub use crate::assertions::*; 7 | pub use crate::attribute::*; 8 | pub use crate::attribute_ident::*; 9 | pub use crate::attributes::*; 10 | pub use crate::close_tag::*; 11 | pub use crate::element::*; 12 | pub use crate::html::*; 13 | pub use crate::item::*; 14 | pub use crate::open_tag::*; 15 | pub use crate::rsx_expr::*; 16 | -------------------------------------------------------------------------------- /src/rsx_expr.rs: -------------------------------------------------------------------------------- 1 | use proc_macro2::Span; 2 | use syn::{token::Brace, spanned::Spanned}; 3 | use crate::prelude::*; 4 | 5 | /// An RSX expression can either be a string literal, 6 | /// or any rust expression inside curly braces. 7 | pub enum RsxExpr { 8 | LitStr(LitStr), 9 | Expr { brace: Brace, expr: Expr }, 10 | } 11 | 12 | impl Parse for RsxExpr { 13 | fn parse(input: ParseStream) -> Result { 14 | let expr = match input.parse() { 15 | Ok(lit) => RsxExpr::LitStr(lit), 16 | Err(_) => { 17 | let expr; 18 | let brace = braced!(expr in input); 19 | RsxExpr::Expr { 20 | expr: expr.parse()?, 21 | brace, 22 | } 23 | } 24 | }; 25 | Ok(expr) 26 | } 27 | } 28 | 29 | impl ToTokens for RsxExpr { 30 | fn to_tokens(&self, tokens: &mut TokenStream) { 31 | match self { 32 | RsxExpr::LitStr(lit) => tokens.extend(quote!(#lit)), 33 | RsxExpr::Expr { expr, .. } => tokens.extend(quote!({#expr})), 34 | } 35 | } 36 | } 37 | 38 | impl RsxExpr { 39 | pub fn span(&self) -> Span { 40 | match self { 41 | RsxExpr::Expr { expr, .. } => expr.span(), 42 | RsxExpr::LitStr(lit) => lit.span(), 43 | } 44 | } 45 | pub fn is_str(&self) -> bool { 46 | matches!(self, RsxExpr::LitStr(_)) 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /test/attribute/format_str.rs: -------------------------------------------------------------------------------- 1 | use dioxus::prelude::*; 2 | use dioxus_html_macro::html; 3 | 4 | fn main() { 5 | struct Foo; 6 | 7 | html!( 8 |
9 |
10 | ); 11 | } 12 | -------------------------------------------------------------------------------- /test/attribute/format_str.stderr: -------------------------------------------------------------------------------- 1 | error[E0277]: `Foo` doesn't implement `std::fmt::Display` 2 | --> test/attribute/format_str.rs:7:5 3 | | 4 | 7 | / html!( 5 | 8 | |
6 | 9 | |
7 | 10 | | ); 8 | | |_____^ `Foo` cannot be formatted with the default formatter 9 | | 10 | = help: the trait `std::fmt::Display` is not implemented for `Foo` 11 | = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead 12 | = note: this error originates in the macro `format_args` (in Nightly builds, run with -Z macro-backtrace for more info) 13 | -------------------------------------------------------------------------------- /test/attribute/missing_equals.rs: -------------------------------------------------------------------------------- 1 | use dioxus::prelude::*; 2 | use dioxus_html_macro::html; 3 | 4 | fn main() { 5 | html!( 6 |
7 |
8 | ); 9 | } 10 | -------------------------------------------------------------------------------- /test/attribute/missing_equals.stderr: -------------------------------------------------------------------------------- 1 | error: expected `=` 2 | --> test/attribute/missing_equals.rs:6:18 3 | | 4 | 6 |
5 | | ^ 6 | 7 | warning: unused import: `dioxus::prelude::*` 8 | --> test/attribute/missing_equals.rs:1:5 9 | | 10 | 1 | use dioxus::prelude::*; 11 | | ^^^^^^^^^^^^^^^^^^ 12 | | 13 | = note: `#[warn(unused_imports)]` on by default 14 | -------------------------------------------------------------------------------- /test/attribute/non_str_custom.rs: -------------------------------------------------------------------------------- 1 | use dioxus_html_macro::html; 2 | 3 | fn main() { 4 | 5 | html!( 6 |
7 |
8 | ); 9 | } 10 | -------------------------------------------------------------------------------- /test/attribute/non_str_custom.stderr: -------------------------------------------------------------------------------- 1 | error: expected a string literal. 2 | --> test/attribute/non_str_custom.rs:6:24 3 | | 4 | 6 |
5 | | ^^^^ 6 | -------------------------------------------------------------------------------- /test/attribute/passes.rs: -------------------------------------------------------------------------------- 1 | use dioxus::prelude::*; 2 | use dioxus_html_macro::html; 3 | 4 | fn main() { 5 | 6 | html!( 7 |
8 |
9 | ); 10 | } 11 | -------------------------------------------------------------------------------- /test/attribute/random_expression.rs: -------------------------------------------------------------------------------- 1 | use dioxus::prelude::*; 2 | use dioxus_html_macro::html; 3 | 4 | fn main() { 5 | html!( 6 |
7 |
8 | ); 9 | } 10 | -------------------------------------------------------------------------------- /test/attribute/random_expression.stderr: -------------------------------------------------------------------------------- 1 | error: expected identifier 2 | --> test/attribute/random_expression.rs:6:14 3 | | 4 | 6 |
5 | | ^ 6 | 7 | warning: unused import: `dioxus::prelude::*` 8 | --> test/attribute/random_expression.rs:1:5 9 | | 10 | 1 | use dioxus::prelude::*; 11 | | ^^^^^^^^^^^^^^^^^^ 12 | | 13 | = note: `#[warn(unused_imports)]` on by default 14 | -------------------------------------------------------------------------------- /test/body/expression.rs: -------------------------------------------------------------------------------- 1 | use dioxus::prelude::*; 2 | use dioxus_html_macro::html; 3 | 4 | fn main() { 5 | html!( 6 |
7 | { "hello" } 8 |
9 | ); 10 | } 11 | -------------------------------------------------------------------------------- /test/body/plain_text.rs: -------------------------------------------------------------------------------- 1 | use dioxus_html_macro::html; 2 | 3 | fn main() { 4 | html!( 5 |
6 | oops, I forgot to wrap it in quotes 7 |
8 | ); 9 | } 10 | -------------------------------------------------------------------------------- /test/body/plain_text.stderr: -------------------------------------------------------------------------------- 1 | error: expected string literal, found identifier. hint: try wrapping the text in quotes. 2 | --> test/body/plain_text.rs:6:12 3 | | 4 | 6 | oops, I forgot to wrap it in quotes 5 | | ^^^^ 6 | -------------------------------------------------------------------------------- /test/props/enum.rs: -------------------------------------------------------------------------------- 1 | #![allow(non_upper_case_globals)] 2 | #![allow(non_upper_case_globals)] 3 | use dioxus::prelude::*; 4 | use dioxus_html_macro::html; 5 | 6 | 7 | #[derive(Props, PartialEq, Eq)] 8 | struct Props { 9 | number_is: Parity, 10 | } 11 | #[derive(PartialEq, Eq)] 12 | enum Parity { 13 | Even, 14 | Odd 15 | } 16 | 17 | const App: Component = |ref s| { 18 | s.render(html!( 19 | 20 | )) 21 | 22 | }; 23 | 24 | fn main() { 25 | 26 | } 27 | -------------------------------------------------------------------------------- /test/tag/extra_close.rs: -------------------------------------------------------------------------------- 1 | use dioxus_html_macro::html; 2 | 3 | fn main() { 4 | html!( 5 |

"High-Five counter: {count}"

6 | 7 | // <- random 8 | 9 | ); 10 | } 11 | -------------------------------------------------------------------------------- /test/tag/extra_close.stderr: -------------------------------------------------------------------------------- 1 | error: encountered a closing HTML element "button" without a corresponding opening tag. 2 | --> test/tag/extra_close.rs:7:11 3 | | 4 | 7 | // <- random 5 | | ^^^^^^ 6 | -------------------------------------------------------------------------------- /test/tag/missing_close.rs: -------------------------------------------------------------------------------- 1 | use dioxus_html_macro::html; 2 | 3 | fn main() { 4 | html!( 5 |
6 |

"High-Five counter: {count}" 7 | 8 | 9 |

10 | ); 11 | } 12 | -------------------------------------------------------------------------------- /test/tag/missing_close.stderr: -------------------------------------------------------------------------------- 1 | error: encountered an opening HTML element "h1" without a corresponding closing tag. 2 | --> test/tag/missing_close.rs:6:14 3 | | 4 | 6 |

"High-Five counter: {count}" 5 | | ^^ 6 | -------------------------------------------------------------------------------- /test/tag/trailing.rs: -------------------------------------------------------------------------------- 1 | use dioxus_html_macro::html; 2 | 3 | fn main() { 4 | html!( 5 |

"High-Five counter: {count}"

6 | 7 | 8 | // <- trailing 9 | ); 10 | } 11 | -------------------------------------------------------------------------------- /test/tag/trailing.stderr: -------------------------------------------------------------------------------- 1 | error: encountered a closing HTML element "button" without a corresponding opening tag. 2 | --> test/tag/trailing.rs:8:11 3 | | 4 | 8 | // <- trailing 5 | | ^^^^^^ 6 | --------------------------------------------------------------------------------