ksaa 2025.11b3__py3-none-any.whl → 2025.11.post1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- kaa/__init__.py +0 -0
- kaa/application/__init__.py +0 -0
- kaa/application/services/__init__.py +0 -0
- kaa/application/services/config_service.py +112 -0
- kaa/application/{core → services}/feedback_service.py +1 -1
- kaa/application/services/produce_solution_service.py +83 -0
- kaa/application/services/task_service.py +145 -0
- kaa/application/ui/__init__.py +0 -0
- kaa/application/ui/common.py +123 -0
- kaa/application/ui/components/alert.py +251 -0
- kaa/application/ui/components/alert.pyi +257 -0
- kaa/application/ui/components/categorized_select.pyi +697 -0
- kaa/application/ui/facade.py +189 -0
- kaa/application/ui/gradio_view.py +135 -0
- kaa/application/ui/views/__init__.py +0 -0
- kaa/application/ui/views/feedback_view.py +65 -0
- kaa/application/ui/views/produce_view.py +251 -0
- kaa/application/ui/views/settings_view.py +581 -0
- kaa/application/ui/views/status_view.py +171 -0
- kaa/application/ui/views/task_view.py +102 -0
- kaa/application/ui/views/update_view.py +106 -0
- kaa/config/schema.py +2 -0
- kaa/db/constants.py +3 -2
- kaa/main/gr.py +71 -2733
- kaa/metadata.py +71 -1
- kaa/resources/__pycache__/__init__.cpython-310.pyc +0 -0
- kaa/resources/game.db +0 -0
- kaa/resources/game_ver.txt +0 -0
- kaa/sprites/41904062-e218-4b28-972a-b5cfcd058d2c.png +0 -0
- kaa/sprites/5c49d3b3-656e-4c8c-ae1a-9b0209b9dcc3.png +0 -0
- kaa/sprites/__pycache__/__init__.cpython-310.pyc +0 -0
- kaa/sprites/ae4742aa-acda-442d-bf73-b3fe7b66e85c.png +0 -0
- kaa/tasks/R.py +136 -128
- kaa/tasks/R2.py +24 -0
- kaa/tasks/daily/club_reward.py +1 -0
- kaa/tasks/daily/purchase.py +33 -1
- kaa/tasks/daily/upgrade_support_card.py +12 -2
- kaa/tasks/produce/common.py +1 -0
- kaa/tasks/produce/in_purodyuusu.py +21 -7
- kaa/util/reactive.py +182 -0
- {ksaa-2025.11b3.dist-info → ksaa-2025.11.post1.dist-info}/METADATA +21 -21
- {ksaa-2025.11b3.dist-info → ksaa-2025.11.post1.dist-info}/RECORD +303 -278
- /kaa/application/{core → services}/update_service.py +0 -0
- /kaa/sprites/{3cda578a-fa75-4bbd-9cff-be4bc4355a58.png → 01e93c2c-28dc-41f8-8f9a-ec62ec12aa01.png} +0 -0
- /kaa/sprites/{03d22cb3-0193-4dcb-8a0d-98b7ca9c2b4c.png → 02ac01e0-00b0-46d8-a6db-56248c843c6d.png} +0 -0
- /kaa/sprites/{3ffd2992-fa55-499c-8c3b-193518ebbe07.png → 033e73d1-9f45-4bca-bf96-6778410f2fc4.png} +0 -0
- /kaa/sprites/{9f46f543-d7dc-4836-a210-125d686475f9.png → 04036690-5b0f-4ee0-a9d0-022ee822bf0e.png} +0 -0
- /kaa/sprites/{ae106b38-da4f-4b0d-b9c3-541fd58f4de7.png → 041bd3fc-d040-4773-8641-4e4509300d2f.png} +0 -0
- /kaa/sprites/{2abce6a4-111f-42bb-9255-f98d544108de.png → 04974917-b1e8-4ccc-807b-6f651026c955.png} +0 -0
- /kaa/sprites/{114730f6-eddd-4381-b723-aee18cde0d90.png → 04c4e4c2-9908-4be7-bcbe-4d926ca76737.png} +0 -0
- /kaa/sprites/{b76add75-2187-428c-9ede-fb43086bacb6.png → 052ab0f5-8d95-4b5d-8678-3838322d9e5e.png} +0 -0
- /kaa/sprites/{a3fe5859-62ba-403e-9367-65db0ad15943.png → 05b97cdf-f7df-4d91-9ec8-5e9594a46382.png} +0 -0
- /kaa/sprites/{0b436edb-8f6a-429d-87b7-5d4250f651ac.png → 061b032f-860b-4c53-889b-aa126797f062.png} +0 -0
- /kaa/sprites/{7c4ca388-5167-478a-a32b-0e108edad888.png → 07b43eb9-db32-4046-96d3-9f4314bfd80a.png} +0 -0
- /kaa/sprites/{3eb9b21b-abbe-49fd-a3a9-6e1c1a6e91d9.png → 08b12ded-8230-4c7e-bb9f-27c85b0fdabb.png} +0 -0
- /kaa/sprites/{218a6ab3-93f6-4bb1-9848-8c97ff695945.png → 09364c3a-f892-4911-abdc-2f5fea09289f.png} +0 -0
- /kaa/sprites/{307b58f0-20c1-41bd-9eaa-1337fd0e6563.png → 09d2a63d-d2f0-4b97-b3cb-22a61b1530f7.png} +0 -0
- /kaa/sprites/{ae0ce964-eb8f-45a1-aa4d-f47a5c8c720f.png → 0cad6e46-276f-424e-a79e-d272ebaa7c8e.png} +0 -0
- /kaa/sprites/{5a49b6d2-2bcb-49bc-a28f-b8bd1441f60a.png → 0e49fbde-6be6-42b3-b8d1-36e0cb9cc35d.png} +0 -0
- /kaa/sprites/{1a5c147b-e28e-42ad-893a-7430d8f4fc35.png → 0e51d671-928c-4972-8ac0-de446202070b.png} +0 -0
- /kaa/sprites/{a4c6d967-0251-4b33-acb3-81d24f82d5a4.png → 0e6f8981-f46c-4c7d-9d90-fe349f0a1d77.png} +0 -0
- /kaa/sprites/{12455dbd-7d70-4435-a3ba-f40654e75c37.png → 0e9e3dbf-6e94-4a12-b558-3d8ab500c0a6.png} +0 -0
- /kaa/sprites/{95d715c3-d569-48b5-be7b-c21cd2a160db.png → 0eafb6c1-9d85-4fe0-8011-7235704ca9d3.png} +0 -0
- /kaa/sprites/{22071c63-a1bc-4163-8d5a-973b3d579c76.png → 1002a830-1ad5-47a7-b7dd-ed2989e6fc1b.png} +0 -0
- /kaa/sprites/{8d416e23-04ef-47bd-8cc8-7f18d1bab736.png → 10943367-c1d8-41c7-a831-d5d05288875a.png} +0 -0
- /kaa/sprites/{8f9dd0f0-f9af-4eec-a89e-8f2c92f88a98.png → 10f37db0-8c3e-4790-a5c3-cdb841f106a7.png} +0 -0
- /kaa/sprites/{aeab8f9a-fe61-4c2d-a494-ffc19a9cae91.png → 11f65378-b982-4936-9ac7-68560a74a042.png} +0 -0
- /kaa/sprites/{71913fde-c3db-463d-800d-e1b35fa2c8b4.png → 1660acf7-a420-4d92-a90c-55c5ff208da6.png} +0 -0
- /kaa/sprites/{88be2dcc-68ca-4596-9b2c-544a196cab64.png → 170d28bf-d262-4bf1-b35f-8f3d4b4fff6e.png} +0 -0
- /kaa/sprites/{bd4cd421-f702-47c0-9f8b-77914973108c.png → 182d8c71-5ce5-4ee1-9f66-ef99aadae654.png} +0 -0
- /kaa/sprites/{ff8efb8f-e1a4-4202-a6e1-680eb44f58da.png → 18adb1a5-b95d-41ff-9cb9-16613fa4cf6a.png} +0 -0
- /kaa/sprites/{3a211792-1243-496a-b41e-0e3fd121cd5b.png → 18d26894-fd12-4644-8269-a09d11be9520.png} +0 -0
- /kaa/sprites/{4f370ff6-61d1-405a-b29e-e6d0b3072194.png → 1b0dd18b-eb41-4c9c-b031-bab91c93fd5d.png} +0 -0
- /kaa/sprites/{11bc7d35-e58d-4301-a0b0-f557dbd73c7b.png → 1e7a6e19-760c-4fbc-b0f1-f620f51056b9.png} +0 -0
- /kaa/sprites/{6f50cd3b-6e46-46c5-99ed-26728d3212ad.png → 1fbe13d6-3a4d-4935-b687-a76a76a1e32c.png} +0 -0
- /kaa/sprites/{2f9e2dbb-66a1-4b13-9b9e-d62e10efa6d3.png → 1fe31432-a050-48db-acc1-becde42deaf9.png} +0 -0
- /kaa/sprites/{1b3c84c5-16d1-43a7-8513-719bd7a10450.png → 20146fe6-e62b-4c57-b229-901994903b70.png} +0 -0
- /kaa/sprites/{1e57ab88-9962-4024-81df-746529a758f9.png → 20c673e9-fcbe-469b-be35-7844a1d5a9cd.png} +0 -0
- /kaa/sprites/{9f3bfe36-8462-404f-94da-9bc324b1beed.png → 21747ae5-d94d-45d1-bda8-939389dc4874.png} +0 -0
- /kaa/sprites/{12f330a6-4eab-4015-b0e3-4e1a35a7b676.png → 21fbbe96-02bf-4835-aa04-068bc5cc6ca3.png} +0 -0
- /kaa/sprites/{6069f8bc-2a06-45a4-95ca-1ac9d8fa3b04.png → 24be7d90-7944-4a0a-a60c-67c9737b322c.png} +0 -0
- /kaa/sprites/{63b74752-73ce-4020-a7c8-0a71a9f67415.png → 24d6a47c-2099-45e2-9a67-b37767f459fc.png} +0 -0
- /kaa/sprites/{80800c2e-417d-4118-b726-93aaabfc08bd.png → 2568d3d3-b642-4ea4-b929-4dee0b09738a.png} +0 -0
- /kaa/sprites/{4eb665ef-7741-40f9-8174-7b6ca66d045b.png → 263b1037-fb51-4eb1-8c71-5232b03235d2.png} +0 -0
- /kaa/sprites/{81b1b160-2d0f-42ad-924a-9572a54f343a.png → 27dbd535-7f95-4698-8fea-2bed67dd6968.png} +0 -0
- /kaa/sprites/{2a82e2d6-0722-433a-87fa-f1752ce0b9b7.png → 286801f7-3af5-4cd0-9c25-46c12c2cd8f8.png} +0 -0
- /kaa/sprites/{5f2d0b2b-8425-4dd8-8b85-d62f4b75286c.png → 298182ae-747a-44e3-8511-a64d3532b8ac.png} +0 -0
- /kaa/sprites/{f7e34403-a53c-4d3f-935b-25b4acb7f7a5.png → 2aac3a97-435e-4c02-925f-e2d1673b7982.png} +0 -0
- /kaa/sprites/{a2dd125b-9868-4e01-9a46-3b552c2ebdc9.png → 2cc63c6d-5988-4f72-ae88-b03b8246ad97.png} +0 -0
- /kaa/sprites/{0db579bf-d555-4468-8104-c2d2e68d33b1.png → 2d3470f8-a714-4175-a8fe-71eef80921b6.png} +0 -0
- /kaa/sprites/{87ed135a-2eb1-4e21-8928-d0307a22ea66.png → 2e3b2982-d14b-4b49-bb64-da8178311d75.png} +0 -0
- /kaa/sprites/{7e8904fd-5863-471f-8e9a-d69d9ca72f8f.png → 2e41df89-a8d7-4e7e-96cb-7f551414823b.png} +0 -0
- /kaa/sprites/{11870372-dc78-4a80-8320-15bb24da6f25.png → 31e02e56-f266-47b5-8b10-fe79fe06d614.png} +0 -0
- /kaa/sprites/{ed6df33a-c7aa-4542-a87b-9cc9cae0465c.png → 3208d803-2c92-4775-80dc-0527df4b63d9.png} +0 -0
- /kaa/sprites/{330c2207-af32-453b-8db7-889cda83e7cc.png → 3314dc6c-868f-4045-9f60-1f3a17fed324.png} +0 -0
- /kaa/sprites/{ad17ae00-f6ce-4f32-9386-9a8073b5e79a.png → 345435d0-5a5c-494b-95ab-1e086fb88f51.png} +0 -0
- /kaa/sprites/{03d0acec-15fd-4c21-82ce-122764def185.png → 358f1561-c16f-45a0-842d-d62fc735dc80.png} +0 -0
- /kaa/sprites/{3c490171-6810-44f0-b28d-c6b664347a3c.png → 3782897a-f1c2-4f05-a02d-4c760672f52a.png} +0 -0
- /kaa/sprites/{ec35a0b8-1afa-48ff-ae66-9c1ef966348d.png → 385e60df-2063-4caf-b1ea-e6ac909bc49d.png} +0 -0
- /kaa/sprites/{5ec51718-1403-4a79-bd85-46e1fe04d8c9.png → 39450419-26b5-4fbd-a5d4-1bab369ced30.png} +0 -0
- /kaa/sprites/{9088f8c0-59f8-41c6-994c-ae283ac94c24.png → 397c0e24-f35a-48c9-a576-aa1fcfc517b5.png} +0 -0
- /kaa/sprites/{e79a2a08-3b58-4ab0-8c2b-769f30cc8591.png → 3ad30d90-8b57-4641-a9e2-33970e5cea1d.png} +0 -0
- /kaa/sprites/{2d8e6464-aceb-41fd-9e78-7523738d5720.png → 3adef8f4-629d-4cb7-b54a-dadabfea155e.png} +0 -0
- /kaa/sprites/{3fb84a71-ed15-4989-9598-34e7342f38f5.png → 3b86b4ac-aa29-4309-82da-f47a174d88cc.png} +0 -0
- /kaa/sprites/{2460d0c9-50e2-451b-b609-ad466b574395.png → 3c6bbcea-488d-4df8-ab40-21e263aa0b16.png} +0 -0
- /kaa/sprites/{15605f7a-2206-436c-8a71-011d9f95cf4e.png → 3db54e0b-672d-4dfd-8a9b-5db37a08be74.png} +0 -0
- /kaa/sprites/{f237d88e-92ac-4ebf-85e1-80a696b5203a.png → 3e0da5df-a4de-42bd-83bd-13df3c393af4.png} +0 -0
- /kaa/sprites/{9acd9a59-004f-4e1d-a208-0c293f2702d5.png → 402d430d-b507-4aa6-b3e1-db66b38c71b4.png} +0 -0
- /kaa/sprites/{455dcf19-63f5-4b0a-99e6-b23d3876d199.png → 414140a2-de67-4c7f-a7f6-c8b30a6c8d6a.png} +0 -0
- /kaa/sprites/{97a3791d-fa9d-453d-8081-c574fe88b823.png → 4147514f-4f3f-4dd5-952b-0f2cf5f62181.png} +0 -0
- /kaa/sprites/{cb15d9a3-78fe-4f03-bd23-90ba6169ddff.png → 43e53b71-9d69-4f4f-b217-a1abeea8991e.png} +0 -0
- /kaa/sprites/{f333118a-81c2-417f-b54f-64dc4e8df613.png → 44a50906-1835-4e29-ae97-496b4cdde9e9.png} +0 -0
- /kaa/sprites/{3192a62f-224d-44b1-a0b9-b1fc22de8ec1.png → 44fab632-3920-4cd8-9967-f7a8a1ee29a0.png} +0 -0
- /kaa/sprites/{31b4c370-696f-4dfc-a918-839495520266.png → 45f705f9-58fb-4729-ae55-ee10848678d6.png} +0 -0
- /kaa/sprites/{3ea8e354-2684-46f3-9f5a-43f094717c95.png → 4678a5fa-5b1c-4fdc-b7c4-e0b820039546.png} +0 -0
- /kaa/sprites/{affc87db-2f63-4e4a-855e-6ff608226f1e.png → 4738974e-60b8-4583-8548-94211c164291.png} +0 -0
- /kaa/sprites/{0c266b0e-de7a-49c1-9709-b01fb5086f75.png → 474c1678-9c36-495b-aef2-cadbb47b237d.png} +0 -0
- /kaa/sprites/{5a677634-99cf-45b5-bc0c-94120872a518.png → 47783412-9cc7-4ba0-904d-8cd300222889.png} +0 -0
- /kaa/sprites/{72a8bcd2-3f32-4ee5-8295-eedf441d6a1a.png → 47ed66a4-9e7e-4646-b554-469dc86322db.png} +0 -0
- /kaa/sprites/{a9c5aeb0-c0c9-47da-8793-ffe8d172bea0.png → 488a1403-d300-4fa6-94c7-da71d09fd4bb.png} +0 -0
- /kaa/sprites/{d23a600a-7002-4268-96a4-18dc54928ec6.png → 48c16d60-05d6-43bc-97c3-7f099bfc0881.png} +0 -0
- /kaa/sprites/{7b4c3a81-8f09-4a00-90ee-d4df3f57e863.png → 4d0074ad-6db4-4060-b71a-05c0e36e57a6.png} +0 -0
- /kaa/sprites/{e30922ed-a02f-4ede-9968-1656be5a05b2.png → 4e3dbeb5-70bb-4642-9f73-01f9f98bc3aa.png} +0 -0
- /kaa/sprites/{b7f62cab-cc24-480e-bf4c-25c43a1e801e.png → 4f2f8328-a698-40d3-a40f-1f1ae77dc843.png} +0 -0
- /kaa/sprites/{45f09e08-53ea-4e08-97dc-70f689bab002.png → 52d0ff68-7a55-4d53-bc20-a1fa05cfe876.png} +0 -0
- /kaa/sprites/{60896822-de58-4e07-b2d9-86a7f4068de1.png → 52d737a7-5b0b-4ce0-ae3f-5d4048060f12.png} +0 -0
- /kaa/sprites/{bbe59f62-c3e7-404c-a313-b50db70de7b5.png → 54987de4-3e1b-4640-b203-1e4c82d7e98d.png} +0 -0
- /kaa/sprites/{568608bd-a1fa-4faf-ae15-179563a7e84f.png → 54a9cae1-62e5-4546-a46a-a5157f51e8b4.png} +0 -0
- /kaa/sprites/{71976c1a-5df9-44a5-b4ea-08b5d617d813.png → 56d35e14-ada9-4bfa-a48f-e4601054e7eb.png} +0 -0
- /kaa/sprites/{0814c0fd-6f89-47d3-8089-e8cfde569750.png → 575784c1-7c4a-4484-9f38-aa3c280ce56e.png} +0 -0
- /kaa/sprites/{28335ba3-9a0f-46cd-b66d-047781773264.png → 577417ee-6635-4cb4-9f28-d1e1b47ae2cd.png} +0 -0
- /kaa/sprites/{3ea03db7-4de9-45c4-a07b-a9bbc2c63e70.png → 58358122-984b-4c31-91d7-eaf5c8c9353d.png} +0 -0
- /kaa/sprites/{3a4e2d8a-deca-4980-b6c2-37bfc17d2720.png → 5a06a662-ffa9-49a9-a86d-136e5983abdd.png} +0 -0
- /kaa/sprites/{545a9032-a676-4d9d-ac74-2b2c9b330d1a.png → 5a0bfeac-fb22-4b0c-b775-4aa6220bae89.png} +0 -0
- /kaa/sprites/{fe993a91-1a49-488e-b7ff-c1b05b8f2b5f.png → 5aad0930-54a3-4b6d-bec8-250228963f69.png} +0 -0
- /kaa/sprites/{c76c6ccb-d099-4c3c-9eda-13be33aa48ae.png → 5c8eebc5-6d5e-445e-a3d1-66dce2bb6338.png} +0 -0
- /kaa/sprites/{803fb770-6982-4460-8fe0-f9ccd67367c2.png → 5c9a1581-a14a-449b-a1b0-7a31a965facc.png} +0 -0
- /kaa/sprites/{d1bdfa3b-34df-488d-9f9b-8c7b04dd4ab3.png → 5d2b03a2-acb6-4bd2-86e8-1b203d1aeaec.png} +0 -0
- /kaa/sprites/{264d021a-b322-4472-8a7b-5f1322aba993.png → 5f02656f-1314-44d0-ae31-a176c24d758c.png} +0 -0
- /kaa/sprites/{8bf08bab-7c55-45e1-8433-c2213a323480.png → 608c12e2-95dd-4efa-93b2-e648e9583062.png} +0 -0
- /kaa/sprites/{bb3990c8-4618-4d96-9365-a4d1213b59f7.png → 62411b55-7be8-46d9-aa4a-fb56dab6658c.png} +0 -0
- /kaa/sprites/{a42ac612-acbd-45cc-88fb-104ff9b7d2d8.png → 647bb09a-13f8-4d54-a8ac-5b534f1a8d87.png} +0 -0
- /kaa/sprites/{8805fead-f7e2-4905-a42e-05ebba2fbe21.png → 6483c406-26cc-44ee-ad12-2a30ec47aedb.png} +0 -0
- /kaa/sprites/{acd741da-d4ab-4b76-a6a3-4a2fd25870ef.png → 6580ea89-553e-4445-a855-f834d580e6e6.png} +0 -0
- /kaa/sprites/{622d700e-0fd8-4a92-a286-1e8143c70570.png → 67d6a201-dfb9-4c88-b42b-d968cf9a034c.png} +0 -0
- /kaa/sprites/{8d09178a-251e-4f74-b023-12233417621b.png → 686a2bf5-0498-4d53-8ba1-1110ff36f046.png} +0 -0
- /kaa/sprites/{cf49878d-a1c5-4b9f-9502-1e0d9eaadc49.png → 699ca639-3006-45c1-b5fd-8cf9631fd3ea.png} +0 -0
- /kaa/sprites/{15dd89cc-53ed-4c77-a355-62e3bd7a15dd.png → 6a93b483-0848-45e4-a937-51850f296c3d.png} +0 -0
- /kaa/sprites/{20bd834e-c99c-4e80-92db-0740e5bbe746.png → 6b4e4351-b370-48cd-8e8f-ca663d44aa0c.png} +0 -0
- /kaa/sprites/{04ea8503-cdd5-4b3e-a33b-63893b92f6ba.png → 6c961dee-87f3-42f1-acef-9fe7d6be4df1.png} +0 -0
- /kaa/sprites/{6f6d7af3-8380-439b-9d26-3fbd5a103b49.png → 6d22b7ee-6e0f-4f5d-96a4-d4cba26a4d04.png} +0 -0
- /kaa/sprites/{28df544b-72f2-4ed8-8bf3-609ff99633d9.png → 6d5a3e08-257c-4394-96a6-e0719a66e5ae.png} +0 -0
- /kaa/sprites/{e687c2ba-2c30-4fc8-804f-fea5815f6765.png → 6e8325f9-7fdb-4729-ac13-ca67244d97bc.png} +0 -0
- /kaa/sprites/{d91483a2-83fa-4664-8eda-52498c0e77bc.png → 71051aa7-81f1-4144-9318-4405e10547ee.png} +0 -0
- /kaa/sprites/{05251a85-2883-4098-842e-6544391de919.png → 71d0d086-50f1-4f50-bb24-a0190827bd08.png} +0 -0
- /kaa/sprites/{08bde3ff-7554-4bdb-a7f0-193323489d5b.png → 71f87e1c-77f1-45c7-bb9c-16f14498682b.png} +0 -0
- /kaa/sprites/{321b7040-87d7-4f87-9b44-ad2972584a11.png → 732ffc6c-6a17-41f8-9cd1-f218ebc0c23f.png} +0 -0
- /kaa/sprites/{205e03de-46d9-4983-a2ea-a7f7500d508f.png → 737570a7-b8f9-4cd7-b5bd-f40cd51b49f8.png} +0 -0
- /kaa/sprites/{cb0bbf0f-a25b-4ec4-99bd-f5742270a062.png → 744ea25a-9b6e-4f8f-9a00-0ac714571b09.png} +0 -0
- /kaa/sprites/{06cf74aa-635f-48ab-b965-36981f2063d3.png → 745ee069-0f22-4b99-9327-513f365eb922.png} +0 -0
- /kaa/sprites/{67edcd91-d2c1-418b-987a-e60263626f56.png → 74b50642-0b18-45c3-8a5d-013ef1e0eb78.png} +0 -0
- /kaa/sprites/{c4505a31-74c5-4b3d-bfcf-a67c3ef0039e.png → 7601152e-a216-4bf8-92a6-4e3e6ea01d3d.png} +0 -0
- /kaa/sprites/{5f6fafd9-43aa-443e-994e-f2688af5e238.png → 77e7262f-0d12-4bd9-9f22-e8f41a600bf8.png} +0 -0
- /kaa/sprites/{3ae72684-1d40-43cf-9508-511c010de64f.png → 78b928c6-0d24-4e87-a84f-0091d42f8e49.png} +0 -0
- /kaa/sprites/{65f79941-1c78-496a-a67c-c50f4227bd34.png → 7a23d548-4395-40cc-ac19-4497fa3d9fe2.png} +0 -0
- /kaa/sprites/{7d4709f8-6d0d-493f-819e-74cb0f7c166b.png → 7a7871dd-fd07-4234-bd01-c3c9e41bad45.png} +0 -0
- /kaa/sprites/{f7264cee-fea6-47b5-9f9b-8f3f31c03ea0.png → 7c193df5-0a1d-444d-9f92-e9c0db79e53a.png} +0 -0
- /kaa/sprites/{861a4faa-2522-41e9-8e20-7bd9180bea5a.png → 7d3c3a12-8d0f-48a7-9fd4-66db5e58488f.png} +0 -0
- /kaa/sprites/{51eb4be2-22fa-4683-82c7-513f5934f7b9.png → 7d9f8ea3-1fdf-4675-8ddf-38393e235746.png} +0 -0
- /kaa/sprites/{fda4b3eb-e31a-448b-8cb3-9126e1ab7deb.png → 7e729638-f54a-48bb-8bbf-eeaa4d697502.png} +0 -0
- /kaa/sprites/{b9770cd2-b55f-44dc-965f-f29686fba7da.png → 802e717f-d70a-4f34-8b96-be586a8dfde9.png} +0 -0
- /kaa/sprites/{ccfab3e2-7b6d-4ae3-998b-4e5c1863884a.png → 831cac7e-49e9-45d1-bb65-b1db733cda90.png} +0 -0
- /kaa/sprites/{6005bf30-fd7c-401e-8efd-050fa97ad7f3.png → 83f258af-35b8-4918-a971-80ea938a854e.png} +0 -0
- /kaa/sprites/{e05f2c16-926f-48be-bdd0-16182e879394.png → 8411b102-866d-4e41-ab12-507397b80ca5.png} +0 -0
- /kaa/sprites/{09222fb0-78a6-4663-8c1f-1d44e881513d.png → 848a6c94-97a5-44f7-b84b-2f3283dc446b.png} +0 -0
- /kaa/sprites/{e2a0c1a6-c0cf-400e-99be-1ed0d35c6ed8.png → 84b3c8e2-6e37-443c-be9b-8a95aedc6f37.png} +0 -0
- /kaa/sprites/{fa5b5b92-9c60-4811-a44c-8e897c9632c3.png → 85308e03-ba72-499a-9d12-870269fa3cd0.png} +0 -0
- /kaa/sprites/{38426696-ff13-4f20-9f74-b05855990153.png → 86a56df9-47ff-4741-822d-5b7e024d1598.png} +0 -0
- /kaa/sprites/{89437aca-7339-4795-b848-ec529b1e5e8d.png → 8922feef-17db-4b10-93da-1bad30492ac2.png} +0 -0
- /kaa/sprites/{61229c71-303b-4dc9-ba4e-6a14e5ab161e.png → 8a6ed80c-79c6-4df6-ab65-64d67afb2d5b.png} +0 -0
- /kaa/sprites/{504e4927-bfeb-43ee-aa5c-35cec664a4c8.png → 8b04d1a8-6cd6-4d2e-91e7-bdc58c46d939.png} +0 -0
- /kaa/sprites/{648d43f6-b251-4d6f-a808-ae7325c91a59.png → 8b60ce9f-09c0-48a0-93f0-d51e0aa16afb.png} +0 -0
- /kaa/sprites/{76970b91-7864-4413-bfc7-79c04a48dce7.png → 8c0439d9-9eb7-43f3-8d1e-7e41c57c1bbd.png} +0 -0
- /kaa/sprites/{922af7d1-75e9-4ac8-a4e7-2dad8bb1ca87.png → 8c59d3ca-baff-4260-aa0a-6cedac1c2771.png} +0 -0
- /kaa/sprites/{e7630ccb-6824-49e3-986f-2a65a2c4a948.png → 8d7b4761-2555-4398-bb74-b70de3b75e22.png} +0 -0
- /kaa/sprites/{fbbb73f9-880e-4c7f-9ec9-276bdab4b394.png → 8dd3de6d-07d5-4d93-9663-71a3a4c57a32.png} +0 -0
- /kaa/sprites/{ddb59f04-91a0-4fbd-8921-be13acdab291.png → 9009323d-1418-4aed-8a93-075b326d2e7a.png} +0 -0
- /kaa/sprites/{82259f79-2bef-442b-bf16-78cb4f22e3be.png → 901a2e7a-37f3-4dda-a58b-5a7644ead6b9.png} +0 -0
- /kaa/sprites/{fd8a7a5d-f021-4bfd-83f7-a2dd33325837.png → 904d22f7-51be-486f-8dd1-1871c0cf28e3.png} +0 -0
- /kaa/sprites/{bff753bb-b02e-441b-89e5-14845f18c6f6.png → 90943f62-0a03-4a75-804a-0c2fa7b27af4.png} +0 -0
- /kaa/sprites/{e392856d-ac59-4414-8fb8-df93a1a99be4.png → 9180e0e7-2cc4-46c7-95ff-fbe83806baf2.png} +0 -0
- /kaa/sprites/{f9157db8-d70b-4d46-9800-5a833ce7eda8.png → 93f5c33e-ec81-4a70-a11f-b2e8cb1751ee.png} +0 -0
- /kaa/sprites/{ed98a341-5dff-4af7-a194-d28232d481a4.png → 9558b2a5-3961-4ad0-9ce8-379d71920d78.png} +0 -0
- /kaa/sprites/{64dfeb35-61ad-4e9b-9847-a18530f02584.png → 968dff88-5a2f-42c7-b64b-406801e22c87.png} +0 -0
- /kaa/sprites/{8661bc83-9b0a-4555-8b21-2258b31c7f57.png → 99d99d78-ee37-4e84-8768-b5a7f4f9bd51.png} +0 -0
- /kaa/sprites/{6c032aa7-20e3-4e2e-b1a4-1585141ba22b.png → 9caa102c-70af-4a8c-b595-82df9f4c05d8.png} +0 -0
- /kaa/sprites/{73b6f3aa-5179-41d6-a82e-22e14aa8cd6a.png → 9cc77f5e-e7d0-4de4-aeb8-587ab8cb212a.png} +0 -0
- /kaa/sprites/{e57db8c2-c050-43fb-8205-339aeb5875e8.png → 9e06b7d6-5d15-4844-bbfe-ad1af7da3113.png} +0 -0
- /kaa/sprites/{14a697d4-0b58-4644-bb2d-8823d2fefcb8.png → 9e45adeb-4637-4b8b-a687-f1d2cd8c6c18.png} +0 -0
- /kaa/sprites/{38186efc-850c-4d83-97bc-9417f1494b94.png → a006054e-61fb-4d2b-a98e-45ce3c663662.png} +0 -0
- /kaa/sprites/{b77a7e97-dc59-493d-9d76-4ea9c2876978.png → a04ed558-25e3-42d7-a662-250cad9fa5df.png} +0 -0
- /kaa/sprites/{c78fb143-18e3-4697-a0c1-6151514f2a7c.png → a0a62dbf-a027-4b63-86e4-2e863b2edb01.png} +0 -0
- /kaa/sprites/{b02c15b5-04b4-40d9-bb13-267786e8e049.png → a0f98517-e4cf-422c-b29f-395a55939772.png} +0 -0
- /kaa/sprites/{dcea5aae-322e-4cd4-b218-0eac48690755.png → a4b898aa-405e-4235-8075-a34640a2b023.png} +0 -0
- /kaa/sprites/{b40bebbf-2800-40fb-b7a2-1c2d5995e747.png → a5c3108f-c92d-4ce7-8c4e-93b79f55ceb3.png} +0 -0
- /kaa/sprites/{fac7b90a-1174-477b-803b-28798647c307.png → a7e6222f-f8ca-47c2-af1e-f158a87f6a03.png} +0 -0
- /kaa/sprites/{d8ba1932-978c-451c-a717-d7d2b6db35d9.png → a94d76ef-db70-45a9-aeca-ba16344cc572.png} +0 -0
- /kaa/sprites/{cec36685-85a7-4e84-bbbc-4df70b4f7bac.png → ab3d3301-8297-43a8-bf0b-85413c115a7d.png} +0 -0
- /kaa/sprites/{bdb72f31-5808-4451-827f-fffc3b616083.png → ad589feb-6d19-47c7-a582-55ee130ee89d.png} +0 -0
- /kaa/sprites/{c035ac76-39e9-466b-a606-28bc52bc73e8.png → aed87cd4-eb05-4c24-8adf-cd3fab20e9a3.png} +0 -0
- /kaa/sprites/{a888e87e-49fe-405d-b074-3dda30304808.png → afb9e4a9-29a5-4202-9f75-e7d2f1b64aa4.png} +0 -0
- /kaa/sprites/{56ac84af-4c85-4b69-b449-98981c1df292.png → afe7f086-723e-4999-a7aa-3342a797d828.png} +0 -0
- /kaa/sprites/{fce4a481-e71c-4dab-aeac-59ff8b18201b.png → b1f547d4-c1ba-43fc-9398-4ccdc25b8b62.png} +0 -0
- /kaa/sprites/{0455e229-75c9-44ba-8729-745799746979.png → b2036053-36fb-4aa7-8348-e31942731a93.png} +0 -0
- /kaa/sprites/{8a0260f5-b32e-430e-bc98-7b5a77cab6ab.png → b61bd48f-1fe7-49fd-a588-09aac3b66f5a.png} +0 -0
- /kaa/sprites/{5247b052-5b45-4e64-b7fc-d566f5d4bc82.png → b6219452-323a-44eb-9f44-97b2ad0ee49a.png} +0 -0
- /kaa/sprites/{049ecbf6-d434-46fa-a42c-a447475269bb.png → b6da02bf-3f43-4ed0-9b13-f15becb42ce9.png} +0 -0
- /kaa/sprites/{f4195ceb-586a-4a8c-9424-4962239d2120.png → b7550a50-5943-45e7-9c1b-771117364844.png} +0 -0
- /kaa/sprites/{82200c8c-0916-4601-839a-945f96cc4ebc.png → b865eedf-7bea-46f6-bf14-7f8f4e9ab000.png} +0 -0
- /kaa/sprites/{c8c17304-e949-4dfc-b07d-9e7133483e31.png → b8f0ed47-6115-4b88-848a-2fc4a1ab25d8.png} +0 -0
- /kaa/sprites/{bdb1460e-c5db-494a-a58a-688f72b6bdba.png → b9224799-d0c1-43d9-9f11-1d35903fc4d9.png} +0 -0
- /kaa/sprites/{89841ff0-e834-4a7e-b9d5-00a9490b6b7f.png → ba2fd21c-6228-4e2d-b2db-a6d085cb38a6.png} +0 -0
- /kaa/sprites/{c2100faf-1234-49db-b6d4-5a08a4b08272.png → baa9c530-68cb-4111-85f6-060823ad32c4.png} +0 -0
- /kaa/sprites/{7a74b5f5-7a04-4678-8e6e-57b5de127182.png → bb224de8-828e-4bc5-a986-632c72fc9157.png} +0 -0
- /kaa/sprites/{a34502b4-10bd-42ca-9ada-a9cdb57097dc.png → bcc6ee72-ad5a-4d5c-b6c7-1b3fdfc5fa81.png} +0 -0
- /kaa/sprites/{a6ed21f0-4da4-4065-bb59-062a70e132ca.png → bebf9f6d-7cca-44c5-9b9f-fa36e29e97b3.png} +0 -0
- /kaa/sprites/{de81f919-4d01-4a4e-bdc1-ffe6e23a5c22.png → bed54f67-d828-403c-9cb3-6a7c85695c2a.png} +0 -0
- /kaa/sprites/{a2545c5c-b5cc-4fd2-93c1-04c74c17ee16.png → befadc5e-862a-4818-9223-5d58e4ac03cb.png} +0 -0
- /kaa/sprites/{8fdc102b-d8f3-4d16-b8ef-1d804f5aff07.png → c0d1896c-71a1-47d6-9847-b87543a942e9.png} +0 -0
- /kaa/sprites/{cdf310f0-b917-4f92-95a9-893af76e3c3a.png → c2984c0f-3e17-45c3-9d7c-dc4f14440b13.png} +0 -0
- /kaa/sprites/{054db45e-1434-4604-91ec-7ac586ca11b5.png → c4d0b0c9-ffbe-4b6c-9bf3-b05919e1a07c.png} +0 -0
- /kaa/sprites/{64f8ef99-4766-471b-aeb0-b109704d9615.png → c6b53acc-bc89-465e-9814-0138513327ac.png} +0 -0
- /kaa/sprites/{7c62081d-097a-4514-a69d-69e96201e816.png → c72a4609-6bf0-4568-8ebc-73c30d67c61e.png} +0 -0
- /kaa/sprites/{7e16af89-bb51-4889-8a7e-25715ff5faa1.png → c7829f82-bfce-4259-9ec6-f1cfb7bac925.png} +0 -0
- /kaa/sprites/{99a27ff1-bc1c-48a2-9f9b-0803338d1bd8.png → c82ebc01-0127-417f-831a-9d17a84b2691.png} +0 -0
- /kaa/sprites/{f1eb4089-8cd1-4830-b00e-40535ddcd116.png → c8747b3b-745c-45ed-84b6-dde1b2558ce8.png} +0 -0
- /kaa/sprites/{5f4abae0-a1f0-4c8c-9d93-a8525caa9dd0.png → c893e762-f328-4ef6-b862-5da8eb049f9c.png} +0 -0
- /kaa/sprites/{3a4ec054-2c48-4359-afb9-fa5ea8191d16.png → c944d298-a46b-4799-aea3-eec22fc7d4ac.png} +0 -0
- /kaa/sprites/{c9245201-4d29-4088-a5e0-f4e93d4494b5.png → c98ef89e-4a1c-40f0-a82e-6851f7b6bbc9.png} +0 -0
- /kaa/sprites/{cea8f98d-ba68-498f-bd3d-cc10f0d4575b.png → cb04d87c-f5a9-405c-92ac-b3603e482221.png} +0 -0
- /kaa/sprites/{f34e8026-bdfc-47e6-a0ed-49e587ef0f40.png → cb43f670-6623-4af9-ac1d-746372e40511.png} +0 -0
- /kaa/sprites/{c0801be3-f07a-4afc-ab0d-7f5d3c4afbd3.png → ce357023-436b-4a39-882f-8410acd8f0d7.png} +0 -0
- /kaa/sprites/{19513e9f-2cbb-4f66-84b7-2ad2faed252d.png → cea9f5ea-5923-4c6e-bd24-90d2e084112c.png} +0 -0
- /kaa/sprites/{1ef5fa52-b6e1-42d0-947a-ce970eba057d.png → cf62e2df-3be1-4d03-9f34-1518280abd90.png} +0 -0
- /kaa/sprites/{fda78372-04b4-4d55-92b1-aedec20d0913.png → d0a483a9-400f-4b6e-87a0-9781b4454da0.png} +0 -0
- /kaa/sprites/{7efce7bc-12a5-4a53-9a0a-9fa755649ebd.png → d10d480c-e96e-475e-815c-0969f37fe3bc.png} +0 -0
- /kaa/sprites/{5e2b4bb9-f200-4723-96ac-5f907e28eaaa.png → d1839450-8d60-41a4-b035-8e1acd0f1c7a.png} +0 -0
- /kaa/sprites/{3e669188-5933-4502-b039-38f4d4649664.png → d19859f3-f7cc-46ef-8bc6-86df7856fd53.png} +0 -0
- /kaa/sprites/{18b13508-c46f-4134-b991-975c0a1b9a74.png → d28a18db-0f66-45a6-b3cd-69173ecdd790.png} +0 -0
- /kaa/sprites/{6fadb00b-e32e-4c45-a738-f21b8f48c139.png → d2d3d77d-a06f-4167-b02b-5ca688c0c0c3.png} +0 -0
- /kaa/sprites/{c05a600a-d79e-432d-a49f-5b2443d67bd4.png → d38c5015-e461-4e09-8b56-731472bdf59e.png} +0 -0
- /kaa/sprites/{e388db01-0870-412d-b8bc-5a512ec997c8.png → d473b5bd-4be3-4f0f-bb92-b909050f273a.png} +0 -0
- /kaa/sprites/{aba47934-f264-49f9-a72c-6ed90b112701.png → d609a029-5407-43c2-a9a9-07bfd43fcbb8.png} +0 -0
- /kaa/sprites/{318abb8a-5950-4d22-ac42-77219b5bc1a0.png → d6491f82-9637-47eb-8f35-eb272b5ef8df.png} +0 -0
- /kaa/sprites/{41ff9641-d200-4caa-bcfa-d8389a3438eb.png → d8d5019c-52e6-4767-a9aa-d8da6ffcbd00.png} +0 -0
- /kaa/sprites/{8299e3e2-cfd5-4380-adce-a46c93b1be4d.png → d8dd8b59-c05c-4350-a15d-be75c94d46cc.png} +0 -0
- /kaa/sprites/{a7f25aeb-d91b-47e0-ba1a-0c6382380102.png → d98263bf-15fb-430e-ba39-2558fa99cac0.png} +0 -0
- /kaa/sprites/{f8d8c943-1b36-4391-a7fc-2a49f8966d53.png → d9bc9bbb-9a1a-4cbe-b6ed-24112d7c5ac7.png} +0 -0
- /kaa/sprites/{4729b509-0f4a-4e96-b186-ec56c680c9e6.png → d9cb2f43-2786-48d8-90f8-8cf1929f6172.png} +0 -0
- /kaa/sprites/{677933e9-1481-4f01-95b4-d55bea51db8c.png → da922566-97ba-4477-bcad-35ea02a3ee48.png} +0 -0
- /kaa/sprites/{abe2757f-84f3-4967-bd05-79c17cb1f32c.png → dac8d8fd-006c-4f50-a4e0-d79dbf3f5915.png} +0 -0
- /kaa/sprites/{9a9a1f40-d308-4aa5-8d91-60342bc6a4e0.png → db33ab8d-160d-48c7-b464-dfe194e762d4.png} +0 -0
- /kaa/sprites/{c6b6b77b-2ec7-4fb7-8033-f4d061f4e9c8.png → dbc5db78-81f5-41e6-bdc4-dafaa9173320.png} +0 -0
- /kaa/sprites/{4fb1d36c-5fb6-4fe5-9ba3-07e056eb1dfc.png → dcfdfab4-8dfb-4069-bf88-8e8401ef86f3.png} +0 -0
- /kaa/sprites/{ebe22aea-0318-49d8-ab07-ce2eef34265f.png → de354b53-2fd0-4039-87e2-fcad2e070579.png} +0 -0
- /kaa/sprites/{c6b0f9ba-a976-474b-b22d-6fe4391d9373.png → e28ea25e-0bcf-4d52-b501-9ef7a4863870.png} +0 -0
- /kaa/sprites/{a97e2840-1575-4f2c-97df-6a720c644969.png → e2ac106f-edeb-4375-af8c-45f33e9bfae6.png} +0 -0
- /kaa/sprites/{a9ba2741-38da-4448-ab80-f0e5b3c3847f.png → e2ac927f-257e-4537-995d-fbfbe4983b70.png} +0 -0
- /kaa/sprites/{83c27159-36d2-4ccf-ace7-e5d2169e7e52.png → e642b9ef-c8a7-41d5-8d71-5cfbaf3017a1.png} +0 -0
- /kaa/sprites/{719297ec-82be-4820-8ecf-8bf6322b81fe.png → e749feec-6bf2-4c24-bb12-948e696b8116.png} +0 -0
- /kaa/sprites/{94ed55fe-3ef8-46bc-855a-a7b1dedab801.png → e8a33d3f-a4fb-4851-b47a-b5f3d85e882f.png} +0 -0
- /kaa/sprites/{93e91dd0-0050-48b4-8bf8-c732cd76f0e3.png → ed3aa6e6-4256-416b-9d04-d57ca340e39d.png} +0 -0
- /kaa/sprites/{dc51eccf-9470-495a-9e38-59d4481adbd4.png → ed4c0554-84df-4c29-af18-7c38523cc59b.png} +0 -0
- /kaa/sprites/{8c3bc157-022a-4bb1-be74-af1ad254e67f.png → ef1bfd47-78e9-4cb7-a344-53d980fc3e5e.png} +0 -0
- /kaa/sprites/{f3a5992b-dabf-4c2b-83e9-4c91c3b7aac8.png → ef1ddc7d-75f9-4798-afa1-733e16794a81.png} +0 -0
- /kaa/sprites/{e6e66204-8a2f-4377-8674-b7d663ff0081.png → efb01328-b6e1-438e-9471-bef3ea77a22c.png} +0 -0
- /kaa/sprites/{d6dd92b3-310f-4f5d-a8ef-b941c3659c0c.png → f06b1a4f-eeb6-4dea-9543-5ec27640bdd9.png} +0 -0
- /kaa/sprites/{dcf465c6-ad64-48e7-9c3c-7bc7cfc13a44.png → f07bac27-9201-498f-9f26-a58291a70542.png} +0 -0
- /kaa/sprites/{f2f818c9-b0cf-436d-9d3e-6544c5399063.png → f0fd613b-d2f8-4b18-90d8-0b328373e715.png} +0 -0
- /kaa/sprites/{ae73d26b-2d47-4921-a6ec-5bbea32773a3.png → f1fbe46a-759d-467d-b8ca-2158f530f7c5.png} +0 -0
- /kaa/sprites/{ed854df1-878c-4e0b-8138-9b28d314ede6.png → f2314c76-3a2b-4644-831a-343a601145df.png} +0 -0
- /kaa/sprites/{993a33ac-994b-4eb0-9c1e-b9412d499d67.png → f329d4ba-e836-4be6-a05b-879b53667df3.png} +0 -0
- /kaa/sprites/{c91874f4-363f-4997-a38e-3e486dfd8043.png → f469d235-552f-4b07-9d03-9bcae425b6d8.png} +0 -0
- /kaa/sprites/{9f573ac2-9d28-4d92-8e3f-1b78031220dd.png → f5177258-a3cf-4d4f-9c69-0b49556f754f.png} +0 -0
- /kaa/sprites/{f9a353b2-958d-4aae-ade4-66bdc6481e35.png → f5dcac82-7c54-4020-84c5-b1334b595612.png} +0 -0
- /kaa/sprites/{d57f792a-f086-4fbe-b4d9-5db629a78d42.png → f6656842-1460-41ab-95ed-561aefaf08e2.png} +0 -0
- /kaa/sprites/{d9a636be-a017-4ef5-a70c-c374827008a0.png → f70e9455-7cc8-449c-8282-89a9e69f7ac3.png} +0 -0
- /kaa/sprites/{1b847790-90e2-44f8-b6d9-4814812006bd.png → f7facb3a-1b41-4409-b128-d4ad03245845.png} +0 -0
- /kaa/sprites/{b10281ae-cfaf-4400-b2fb-c8c2b432c8e7.png → f7fd469f-791e-4bf7-ae3f-b5aaed92f999.png} +0 -0
- /kaa/sprites/{ba8ee2cd-f662-440c-90b3-1e4bfe7bab6b.png → f873280f-bc68-40d1-8d8d-3d86964264f0.png} +0 -0
- /kaa/sprites/{bf3ff37e-d4fc-42ee-87d6-db1e2040aed5.png → f9da6eeb-ff9e-45b3-94b0-e7ba34938dec.png} +0 -0
- /kaa/sprites/{4370013d-f052-4314-94ff-a342d70754c3.png → fa24f5d5-d7e5-4421-8cbc-2ce3a0189654.png} +0 -0
- /kaa/sprites/{57741798-65dd-47eb-b4b1-b3f0e3c3e318.png → fb61dbf3-fbc1-400a-adde-83ea08b5027d.png} +0 -0
- /kaa/sprites/{f0ed1dd3-b227-48c1-8c8c-858dbd84fcc7.png → fc8457b6-f8a3-4b01-9864-0cd624c312b6.png} +0 -0
- /kaa/sprites/{f485db66-2159-4d31-ba53-0fbb726e7f64.png → fdbf6a89-b95a-481f-a269-be53e05b18de.png} +0 -0
- /kaa/sprites/{dae37bd7-6a34-4eb4-8cd0-3c0c03b4575a.png → fed11307-2186-4ede-875f-ffa0383f410c.png} +0 -0
- /kaa/sprites/{8fbee6fe-9409-407e-8f55-d2d36ab37f6a.png → ff0d3db2-c4e5-41e7-a85b-df4fd392924c.png} +0 -0
- /kaa/sprites/{d8967770-c64a-4609-a0a5-f46ba81edceb.png → ff40ff91-4e8c-46cb-a254-66cd5ffd363e.png} +0 -0
- /kaa/sprites/{62f93327-5946-4a48-aff8-a203483b0562.png → ff614071-c318-4263-af3e-01ea0ab45b73.png} +0 -0
- {ksaa-2025.11b3.dist-info → ksaa-2025.11.post1.dist-info}/WHEEL +0 -0
- {ksaa-2025.11b3.dist-info → ksaa-2025.11.post1.dist-info}/entry_points.txt +0 -0
- {ksaa-2025.11b3.dist-info → ksaa-2025.11.post1.dist-info}/licenses/LICENSE +0 -0
- {ksaa-2025.11b3.dist-info → ksaa-2025.11.post1.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
from typing import Optional, Dict, Any
|
|
2
|
+
|
|
3
|
+
import gradio as gr
|
|
4
|
+
|
|
5
|
+
# 图标 SVG 定义
|
|
6
|
+
ICONS: Dict[str, str] = {
|
|
7
|
+
"success": """<path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd" />""",
|
|
8
|
+
"info": """<path fill-rule="evenodd" d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z" clip-rule="evenodd" />""",
|
|
9
|
+
"warning": """<path fill-rule="evenodd" d="M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z" clip-rule="evenodd" />""",
|
|
10
|
+
"error": """<path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z" clip-rule="evenodd" />"""
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
class Alert(gr.HTML):
|
|
14
|
+
def __init__(
|
|
15
|
+
self,
|
|
16
|
+
value: str = "Alert Content",
|
|
17
|
+
title: Optional[str] = None,
|
|
18
|
+
variant: str = "info",
|
|
19
|
+
action_text: Optional[str] = None,
|
|
20
|
+
show_close: bool = True,
|
|
21
|
+
visible: bool = True,
|
|
22
|
+
elem_id: Optional[str] = None,
|
|
23
|
+
**kwargs: Any
|
|
24
|
+
):
|
|
25
|
+
"""
|
|
26
|
+
继承自 gr.HTML 的自定义 Alert 组件。
|
|
27
|
+
|
|
28
|
+
Args:
|
|
29
|
+
value: Alert 的主要描述文本。
|
|
30
|
+
title: Alert 的标题(可选)。
|
|
31
|
+
variant: 样式变体,可选 "success", "info", "warning", "error"。
|
|
32
|
+
action_text: 底部操作按钮的文本(可选)。
|
|
33
|
+
show_close: 是否显示关闭按钮。
|
|
34
|
+
visible: 组件初始可见性。
|
|
35
|
+
elem_id: HTML 元素 ID。
|
|
36
|
+
**kwargs: 其他传递给 gr.HTML 的参数。
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
# 1. 样式模板 (CSS Template)
|
|
40
|
+
# 修改点:调整了布局,使 actions 包含在 content 内部以实现对齐
|
|
41
|
+
css = """
|
|
42
|
+
.alert {
|
|
43
|
+
display: flex;
|
|
44
|
+
align-items: flex-start; /* 顶部对齐 */
|
|
45
|
+
padding: 1rem;
|
|
46
|
+
border-radius: 0.5rem;
|
|
47
|
+
border: 1px solid transparent;
|
|
48
|
+
margin-bottom: 1rem;
|
|
49
|
+
transition: opacity 0.3s ease;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.alert-icon {
|
|
53
|
+
width: 1.25rem;
|
|
54
|
+
height: 1.25rem;
|
|
55
|
+
margin-right: 0.75rem;
|
|
56
|
+
flex-shrink: 0;
|
|
57
|
+
margin-top: 0.125rem; /* 微调图标与首行文字对齐 */
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.alert-body-wrapper {
|
|
61
|
+
flex: 1;
|
|
62
|
+
display: flex;
|
|
63
|
+
flex-direction: column;
|
|
64
|
+
gap: 0.25rem; /* 标题、描述、按钮之间的间距 */
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.alert-title {
|
|
68
|
+
font-weight: 600;
|
|
69
|
+
font-size: 0.875rem;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.alert-description {
|
|
73
|
+
font-size: 0.875rem;
|
|
74
|
+
line-height: 1.25rem;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.alert-actions {
|
|
78
|
+
display: flex;
|
|
79
|
+
align-items: center;
|
|
80
|
+
gap: 0.5rem;
|
|
81
|
+
margin-top: 0.25rem; /* 按钮与上方文字的额外间距 */
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/* Variants Colors */
|
|
85
|
+
.alert-success { background-color: #ecfdf5; border-color: #a7f3d0; color: #065f46; }
|
|
86
|
+
.alert-success .alert-icon, .alert-success .action-btn { color: #059669; }
|
|
87
|
+
|
|
88
|
+
.alert-info { background-color: #eff6ff; border-color: #bfdbfe; color: #1e40af; }
|
|
89
|
+
.alert-info .alert-icon, .alert-info .action-btn { color: #2563eb; }
|
|
90
|
+
|
|
91
|
+
.alert-warning { background-color: #fffbeb; border-color: #fde68a; color: #92400e; }
|
|
92
|
+
.alert-warning .alert-icon, .alert-warning .action-btn { color: #d97706; }
|
|
93
|
+
|
|
94
|
+
.alert-error { background-color: #fef2f2; border-color: #fecaca; color: #991b1b; }
|
|
95
|
+
.alert-error .alert-icon, .alert-error .action-btn { color: #dc2626; }
|
|
96
|
+
|
|
97
|
+
/* Buttons */
|
|
98
|
+
.action-btn {
|
|
99
|
+
background: transparent;
|
|
100
|
+
border: none;
|
|
101
|
+
font-weight: 600;
|
|
102
|
+
cursor: pointer;
|
|
103
|
+
padding: 0; /* 移除 padding 以便像链接一样对齐,或者保留 padding 做成按钮样式 */
|
|
104
|
+
padding-right: 0.5rem;
|
|
105
|
+
font-size: 0.875rem;
|
|
106
|
+
text-align: left;
|
|
107
|
+
}
|
|
108
|
+
.action-btn:hover { text-decoration: underline; }
|
|
109
|
+
|
|
110
|
+
.close-btn {
|
|
111
|
+
background: transparent;
|
|
112
|
+
border: none;
|
|
113
|
+
cursor: pointer;
|
|
114
|
+
opacity: 0.6;
|
|
115
|
+
padding: 0.25rem;
|
|
116
|
+
margin-left: 0.75rem; /* 离内容稍微远一点 */
|
|
117
|
+
flex-shrink: 0;
|
|
118
|
+
display: flex;
|
|
119
|
+
}
|
|
120
|
+
.close-btn:hover { opacity: 1; }
|
|
121
|
+
.close-btn svg { width: 1rem; height: 1rem; }
|
|
122
|
+
"""
|
|
123
|
+
|
|
124
|
+
# 2. HTML 模板 (HTML Template)
|
|
125
|
+
# 修改点:重构 HTML 结构,将 button 放入 .alert-body-wrapper 中
|
|
126
|
+
html_template = """
|
|
127
|
+
<div class="alert alert-${variant}" role="alert">
|
|
128
|
+
<svg class="alert-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor">
|
|
129
|
+
${ {
|
|
130
|
+
'success': `""" + ICONS['success'] + """`,
|
|
131
|
+
'info': `""" + ICONS['info'] + """`,
|
|
132
|
+
'warning': `""" + ICONS['warning'] + """`,
|
|
133
|
+
'error': `""" + ICONS['error'] + """`
|
|
134
|
+
}[variant] }
|
|
135
|
+
</svg>
|
|
136
|
+
|
|
137
|
+
<div class="alert-body-wrapper">
|
|
138
|
+
${ title ? `<div class="alert-title">${title}</div>` : '' }
|
|
139
|
+
<div class="alert-description">${value}</div>
|
|
140
|
+
|
|
141
|
+
${ action_text ? `
|
|
142
|
+
<div class="alert-actions">
|
|
143
|
+
<button class="action-btn">${action_text}</button>
|
|
144
|
+
</div>` : '' }
|
|
145
|
+
</div>
|
|
146
|
+
|
|
147
|
+
${ show_close ? `
|
|
148
|
+
<button class="close-btn" aria-label="Close">
|
|
149
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor">
|
|
150
|
+
<path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd" />
|
|
151
|
+
</svg>
|
|
152
|
+
</button>` : '' }
|
|
153
|
+
</div>
|
|
154
|
+
"""
|
|
155
|
+
|
|
156
|
+
# 3. JS 加载逻辑 (JS on Load)
|
|
157
|
+
js = """
|
|
158
|
+
const actionBtn = element.querySelector('.action-btn');
|
|
159
|
+
const closeBtn = element.querySelector('.close-btn');
|
|
160
|
+
const alertBox = element.querySelector('.alert');
|
|
161
|
+
|
|
162
|
+
if (actionBtn) {
|
|
163
|
+
actionBtn.addEventListener('click', (e) => {
|
|
164
|
+
e.stopPropagation(); // 防止冒泡
|
|
165
|
+
trigger('click', {
|
|
166
|
+
action_text: props.action_text,
|
|
167
|
+
variant: props.variant
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
if (closeBtn) {
|
|
173
|
+
closeBtn.addEventListener('click', (e) => {
|
|
174
|
+
e.stopPropagation();
|
|
175
|
+
alertBox.style.opacity = '0';
|
|
176
|
+
setTimeout(() => {
|
|
177
|
+
alertBox.style.display = 'none';
|
|
178
|
+
// 触发 change 事件通知后端状态变化
|
|
179
|
+
trigger('change', { status: 'closed' });
|
|
180
|
+
}, 300);
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
"""
|
|
184
|
+
|
|
185
|
+
super().__init__(
|
|
186
|
+
value=value,
|
|
187
|
+
title=title,
|
|
188
|
+
variant=variant,
|
|
189
|
+
action_text=action_text,
|
|
190
|
+
show_close=show_close,
|
|
191
|
+
html_template=html_template,
|
|
192
|
+
css_template=css,
|
|
193
|
+
js_on_load=js,
|
|
194
|
+
visible=visible,
|
|
195
|
+
elem_id=elem_id,
|
|
196
|
+
**kwargs
|
|
197
|
+
)
|
|
198
|
+
|
|
199
|
+
# --- 使用示例 ---
|
|
200
|
+
|
|
201
|
+
if __name__ == "__main__":
|
|
202
|
+
with gr.Blocks() as demo:
|
|
203
|
+
gr.Markdown("### Alert Component with Typed Arguments & Aligned Layout")
|
|
204
|
+
|
|
205
|
+
with gr.Row():
|
|
206
|
+
with gr.Column():
|
|
207
|
+
# 控制器
|
|
208
|
+
msg_input = gr.Textbox(label="Alert Message", value="你似乎还没有创建任何培育方案。你需要先到「方案」里创建一个!")
|
|
209
|
+
title_input = gr.Textbox(label="Title", value="提示")
|
|
210
|
+
variant_input = gr.Dropdown(["success", "info", "warning", "error"], label="Variant", value="info")
|
|
211
|
+
action_input = gr.Textbox(label="Action Button Text", value="去创建")
|
|
212
|
+
update_btn = gr.Button("Update Alert")
|
|
213
|
+
|
|
214
|
+
with gr.Column():
|
|
215
|
+
# 组件实例化
|
|
216
|
+
alert = Alert(
|
|
217
|
+
title="提示",
|
|
218
|
+
value="你似乎还没有创建任何培育方案。你需要先到「方案」里创建一个!",
|
|
219
|
+
variant="info",
|
|
220
|
+
action_text="去创建",
|
|
221
|
+
elem_id="my-alert"
|
|
222
|
+
)
|
|
223
|
+
|
|
224
|
+
# 结果显示框
|
|
225
|
+
result_box = gr.Textbox(label="Event Log")
|
|
226
|
+
|
|
227
|
+
# 1. 更新 Alert 属性
|
|
228
|
+
def update_props(msg: str, title: str, variant: str, action: str) -> Alert:
|
|
229
|
+
return Alert(value=msg, title=title, variant=variant, action_text=action)
|
|
230
|
+
|
|
231
|
+
update_btn.click(
|
|
232
|
+
update_props,
|
|
233
|
+
inputs=[msg_input, title_input, variant_input, action_input],
|
|
234
|
+
outputs=alert
|
|
235
|
+
)
|
|
236
|
+
|
|
237
|
+
# 2. 处理 Action 按钮点击
|
|
238
|
+
def on_action_click(evt: gr.EventData) -> str:
|
|
239
|
+
data: Dict[str, Any] = evt._data # type: ignore
|
|
240
|
+
return f"Action Clicked! Variant: {data.get('variant')}, Action: {data.get('action_text')}"
|
|
241
|
+
|
|
242
|
+
alert.click(on_action_click, outputs=result_box)
|
|
243
|
+
|
|
244
|
+
# 3. 处理 Close 按钮点击
|
|
245
|
+
def on_close(evt: gr.EventData) -> str:
|
|
246
|
+
data: Dict[str, Any] = evt._data # type: ignore
|
|
247
|
+
return f"Alert Closed. Status: {data.get('status')}"
|
|
248
|
+
|
|
249
|
+
alert.change(on_close, outputs=result_box)
|
|
250
|
+
|
|
251
|
+
demo.launch()
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
from typing import Optional, Dict, Any
|
|
2
|
+
|
|
3
|
+
import gradio as gr
|
|
4
|
+
|
|
5
|
+
# ͼ�� SVG ����
|
|
6
|
+
ICONS: Dict[str, str] = {
|
|
7
|
+
"success": """<path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd" />""",
|
|
8
|
+
"info": """<path fill-rule="evenodd" d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z" clip-rule="evenodd" />""",
|
|
9
|
+
"warning": """<path fill-rule="evenodd" d="M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z" clip-rule="evenodd" />""",
|
|
10
|
+
"error": """<path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z" clip-rule="evenodd" />"""
|
|
11
|
+
}
|
|
12
|
+
from gradio.events import Dependency
|
|
13
|
+
|
|
14
|
+
class Alert(gr.HTML):
|
|
15
|
+
def __init__(
|
|
16
|
+
self,
|
|
17
|
+
value: str = "Alert Content",
|
|
18
|
+
title: Optional[str] = None,
|
|
19
|
+
variant: str = "info",
|
|
20
|
+
action_text: Optional[str] = None,
|
|
21
|
+
show_close: bool = True,
|
|
22
|
+
visible: bool = True,
|
|
23
|
+
elem_id: Optional[str] = None,
|
|
24
|
+
**kwargs: Any
|
|
25
|
+
):
|
|
26
|
+
"""
|
|
27
|
+
�̳��� gr.HTML ���Զ��� Alert �����
|
|
28
|
+
|
|
29
|
+
Args:
|
|
30
|
+
value: Alert ����Ҫ�����ı���
|
|
31
|
+
title: Alert �ı��⣨��ѡ����
|
|
32
|
+
variant: ��ʽ���壬��ѡ "success", "info", "warning", "error"��
|
|
33
|
+
action_text: �ײ�������ť���ı�����ѡ����
|
|
34
|
+
show_close: �Ƿ���ʾ�رհ�ť��
|
|
35
|
+
visible: �����ʼ�ɼ��ԡ�
|
|
36
|
+
elem_id: HTML Ԫ�� ID��
|
|
37
|
+
**kwargs: �������ݸ� gr.HTML �IJ�����
|
|
38
|
+
"""
|
|
39
|
+
|
|
40
|
+
# 1. ��ʽģ�� (CSS Template)
|
|
41
|
+
# �ĵ㣺�����˲��֣�ʹ actions ������ content �ڲ���ʵ�ֶ���
|
|
42
|
+
css = """
|
|
43
|
+
.alert {
|
|
44
|
+
display: flex;
|
|
45
|
+
align-items: flex-start; /* �������� */
|
|
46
|
+
padding: 1rem;
|
|
47
|
+
border-radius: 0.5rem;
|
|
48
|
+
border: 1px solid transparent;
|
|
49
|
+
margin-bottom: 1rem;
|
|
50
|
+
transition: opacity 0.3s ease;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.alert-icon {
|
|
54
|
+
width: 1.25rem;
|
|
55
|
+
height: 1.25rem;
|
|
56
|
+
margin-right: 0.75rem;
|
|
57
|
+
flex-shrink: 0;
|
|
58
|
+
margin-top: 0.125rem; /* ��ͼ�����������ֶ��� */
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.alert-body-wrapper {
|
|
62
|
+
flex: 1;
|
|
63
|
+
display: flex;
|
|
64
|
+
flex-direction: column;
|
|
65
|
+
gap: 0.25rem; /* ���⡢��������ť֮��ļ�� */
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.alert-title {
|
|
69
|
+
font-weight: 600;
|
|
70
|
+
font-size: 0.875rem;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.alert-description {
|
|
74
|
+
font-size: 0.875rem;
|
|
75
|
+
line-height: 1.25rem;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.alert-actions {
|
|
79
|
+
display: flex;
|
|
80
|
+
align-items: center;
|
|
81
|
+
gap: 0.5rem;
|
|
82
|
+
margin-top: 0.25rem; /* ��ť���Ϸ����ֵĶ����� */
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/* Variants Colors */
|
|
86
|
+
.alert-success { background-color: #ecfdf5; border-color: #a7f3d0; color: #065f46; }
|
|
87
|
+
.alert-success .alert-icon, .alert-success .action-btn { color: #059669; }
|
|
88
|
+
|
|
89
|
+
.alert-info { background-color: #eff6ff; border-color: #bfdbfe; color: #1e40af; }
|
|
90
|
+
.alert-info .alert-icon, .alert-info .action-btn { color: #2563eb; }
|
|
91
|
+
|
|
92
|
+
.alert-warning { background-color: #fffbeb; border-color: #fde68a; color: #92400e; }
|
|
93
|
+
.alert-warning .alert-icon, .alert-warning .action-btn { color: #d97706; }
|
|
94
|
+
|
|
95
|
+
.alert-error { background-color: #fef2f2; border-color: #fecaca; color: #991b1b; }
|
|
96
|
+
.alert-error .alert-icon, .alert-error .action-btn { color: #dc2626; }
|
|
97
|
+
|
|
98
|
+
/* Buttons */
|
|
99
|
+
.action-btn {
|
|
100
|
+
background: transparent;
|
|
101
|
+
border: none;
|
|
102
|
+
font-weight: 600;
|
|
103
|
+
cursor: pointer;
|
|
104
|
+
padding: 0; /* �Ƴ� padding �Ա�������һ�����룬���߱��� padding ���ɰ�ť��ʽ */
|
|
105
|
+
padding-right: 0.5rem;
|
|
106
|
+
font-size: 0.875rem;
|
|
107
|
+
text-align: left;
|
|
108
|
+
}
|
|
109
|
+
.action-btn:hover { text-decoration: underline; }
|
|
110
|
+
|
|
111
|
+
.close-btn {
|
|
112
|
+
background: transparent;
|
|
113
|
+
border: none;
|
|
114
|
+
cursor: pointer;
|
|
115
|
+
opacity: 0.6;
|
|
116
|
+
padding: 0.25rem;
|
|
117
|
+
margin-left: 0.75rem; /* ��������Զһ�� */
|
|
118
|
+
flex-shrink: 0;
|
|
119
|
+
display: flex;
|
|
120
|
+
}
|
|
121
|
+
.close-btn:hover { opacity: 1; }
|
|
122
|
+
.close-btn svg { width: 1rem; height: 1rem; }
|
|
123
|
+
"""
|
|
124
|
+
|
|
125
|
+
# 2. HTML � (HTML Template)
|
|
126
|
+
# �ĵ㣺�ع� HTML �ṹ���� button ���� .alert-body-wrapper ��
|
|
127
|
+
html_template = """
|
|
128
|
+
<div class="alert alert-${variant}" role="alert">
|
|
129
|
+
<svg class="alert-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor">
|
|
130
|
+
${ {
|
|
131
|
+
'success': `""" + ICONS['success'] + """`,
|
|
132
|
+
'info': `""" + ICONS['info'] + """`,
|
|
133
|
+
'warning': `""" + ICONS['warning'] + """`,
|
|
134
|
+
'error': `""" + ICONS['error'] + """`
|
|
135
|
+
}[variant] }
|
|
136
|
+
</svg>
|
|
137
|
+
|
|
138
|
+
<div class="alert-body-wrapper">
|
|
139
|
+
${ title ? `<div class="alert-title">${title}</div>` : '' }
|
|
140
|
+
<div class="alert-description">${value}</div>
|
|
141
|
+
|
|
142
|
+
${ action_text ? `
|
|
143
|
+
<div class="alert-actions">
|
|
144
|
+
<button class="action-btn">${action_text}</button>
|
|
145
|
+
</div>` : '' }
|
|
146
|
+
</div>
|
|
147
|
+
|
|
148
|
+
${ show_close ? `
|
|
149
|
+
<button class="close-btn" aria-label="Close">
|
|
150
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor">
|
|
151
|
+
<path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd" />
|
|
152
|
+
</svg>
|
|
153
|
+
</button>` : '' }
|
|
154
|
+
</div>
|
|
155
|
+
"""
|
|
156
|
+
|
|
157
|
+
# 3. JS ������ (JS on Load)
|
|
158
|
+
js = """
|
|
159
|
+
const actionBtn = element.querySelector('.action-btn');
|
|
160
|
+
const closeBtn = element.querySelector('.close-btn');
|
|
161
|
+
const alertBox = element.querySelector('.alert');
|
|
162
|
+
|
|
163
|
+
if (actionBtn) {
|
|
164
|
+
actionBtn.addEventListener('click', (e) => {
|
|
165
|
+
e.stopPropagation(); // ��ֹð��
|
|
166
|
+
trigger('click', {
|
|
167
|
+
action_text: props.action_text,
|
|
168
|
+
variant: props.variant
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
if (closeBtn) {
|
|
174
|
+
closeBtn.addEventListener('click', (e) => {
|
|
175
|
+
e.stopPropagation();
|
|
176
|
+
alertBox.style.opacity = '0';
|
|
177
|
+
setTimeout(() => {
|
|
178
|
+
alertBox.style.display = 'none';
|
|
179
|
+
// ���� change �¼�֪ͨ���״̬�仯
|
|
180
|
+
trigger('change', { status: 'closed' });
|
|
181
|
+
}, 300);
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
"""
|
|
185
|
+
|
|
186
|
+
super().__init__(
|
|
187
|
+
value=value,
|
|
188
|
+
title=title,
|
|
189
|
+
variant=variant,
|
|
190
|
+
action_text=action_text,
|
|
191
|
+
show_close=show_close,
|
|
192
|
+
html_template=html_template,
|
|
193
|
+
css_template=css,
|
|
194
|
+
js_on_load=js,
|
|
195
|
+
visible=visible,
|
|
196
|
+
elem_id=elem_id,
|
|
197
|
+
**kwargs
|
|
198
|
+
)
|
|
199
|
+
from typing import Callable, Literal, Sequence, Any, TYPE_CHECKING
|
|
200
|
+
from gradio.blocks import Block
|
|
201
|
+
if TYPE_CHECKING:
|
|
202
|
+
from gradio.components import Timer
|
|
203
|
+
from gradio.components.base import Component
|
|
204
|
+
|
|
205
|
+
# --- ʹ��ʾ�� ---
|
|
206
|
+
|
|
207
|
+
if __name__ == "__main__":
|
|
208
|
+
with gr.Blocks() as demo:
|
|
209
|
+
gr.Markdown("### Alert Component with Typed Arguments & Aligned Layout")
|
|
210
|
+
|
|
211
|
+
with gr.Row():
|
|
212
|
+
with gr.Column():
|
|
213
|
+
# ������
|
|
214
|
+
msg_input = gr.Textbox(label="Alert Message", value="���ƺ���û�д����κ���������������Ҫ�ȵ����������ﴴ��һ����")
|
|
215
|
+
title_input = gr.Textbox(label="Title", value="��ʾ")
|
|
216
|
+
variant_input = gr.Dropdown(["success", "info", "warning", "error"], label="Variant", value="info")
|
|
217
|
+
action_input = gr.Textbox(label="Action Button Text", value="ȥ����")
|
|
218
|
+
update_btn = gr.Button("Update Alert")
|
|
219
|
+
|
|
220
|
+
with gr.Column():
|
|
221
|
+
# ���ʵ����
|
|
222
|
+
alert = Alert(
|
|
223
|
+
title="��ʾ",
|
|
224
|
+
value="���ƺ���û�д����κ���������������Ҫ�ȵ����������ﴴ��һ����",
|
|
225
|
+
variant="info",
|
|
226
|
+
action_text="ȥ����",
|
|
227
|
+
elem_id="my-alert"
|
|
228
|
+
)
|
|
229
|
+
|
|
230
|
+
# �����ʾ��
|
|
231
|
+
result_box = gr.Textbox(label="Event Log")
|
|
232
|
+
|
|
233
|
+
# 1. ���� Alert ����
|
|
234
|
+
def update_props(msg: str, title: str, variant: str, action: str) -> Alert:
|
|
235
|
+
return Alert(value=msg, title=title, variant=variant, action_text=action)
|
|
236
|
+
|
|
237
|
+
update_btn.click(
|
|
238
|
+
update_props,
|
|
239
|
+
inputs=[msg_input, title_input, variant_input, action_input],
|
|
240
|
+
outputs=alert
|
|
241
|
+
)
|
|
242
|
+
|
|
243
|
+
# 2. ���� Action ��ť���
|
|
244
|
+
def on_action_click(evt: gr.EventData) -> str:
|
|
245
|
+
data: Dict[str, Any] = evt._data # type: ignore
|
|
246
|
+
return f"Action Clicked! Variant: {data.get('variant')}, Action: {data.get('action_text')}"
|
|
247
|
+
|
|
248
|
+
alert.click(on_action_click, outputs=result_box)
|
|
249
|
+
|
|
250
|
+
# 3. ���� Close ��ť���
|
|
251
|
+
def on_close(evt: gr.EventData) -> str:
|
|
252
|
+
data: Dict[str, Any] = evt._data # type: ignore
|
|
253
|
+
return f"Alert Closed. Status: {data.get('status')}"
|
|
254
|
+
|
|
255
|
+
alert.change(on_close, outputs=result_box)
|
|
256
|
+
|
|
257
|
+
demo.launch()
|