{"id":13658277,"url":"https://github.com/oleksandrbalan/tagcloud","last_synced_at":"2025-04-24T08:31:49.875Z","repository":{"id":132549683,"uuid":"592092642","full_name":"oleksandrbalan/tagcloud","owner":"oleksandrbalan","description":"Tag cloud as 3D sphere","archived":false,"fork":false,"pushed_at":"2024-01-09T17:32:04.000Z","size":260,"stargazers_count":96,"open_issues_count":0,"forks_count":6,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-11-10T11:39:40.109Z","etag":null,"topics":["3dsphere","android","jetpack-compose","tagcloud"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oleksandrbalan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-01-22T22:07:32.000Z","updated_at":"2024-09-20T00:39:46.000Z","dependencies_parsed_at":"2024-01-09T18:53:10.221Z","dependency_job_id":null,"html_url":"https://github.com/oleksandrbalan/tagcloud","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oleksandrbalan%2Ftagcloud","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oleksandrbalan%2Ftagcloud/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oleksandrbalan%2Ftagcloud/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oleksandrbalan%2Ftagcloud/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oleksandrbalan","download_url":"https://codeload.github.com/oleksandrbalan/tagcloud/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250592063,"owners_count":21455492,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3dsphere","android","jetpack-compose","tagcloud"],"created_at":"2024-08-02T05:00:58.276Z","updated_at":"2025-04-24T08:31:49.153Z","avatar_url":"https://github.com/oleksandrbalan.png","language":"Kotlin","funding_links":[],"categories":["Multiplatform"],"sub_categories":["Android samples"],"readme":"[![Maven Central](https://img.shields.io/maven-central/v/io.github.oleksandrbalan/tagcloud.svg?label=Maven%20Central)](https://search.maven.org/artifact/io.github.oleksandrbalan/tagcloud)\n\n\u003cimg align=\"right\" src=\"https://user-images.githubusercontent.com/20944869/214668307-c4f4381e-c533-40f9-b5db-b21f5f2db54a.png\"\u003e\n\n# Tag Cloud\n\nTag cloud as 3D sphere.\n\nAllows to place items on the sphere to create a tag cloud.\n\n## Multiplatform\n\nLibrary supports [Android](https://developer.android.com/jetpack/compose), [iOS](https://github.com/JetBrains/compose-multiplatform-ios-android-template/#readme) and [Desktop](https://github.com/JetBrains/compose-multiplatform-desktop-template/#readme) (Windows, MacOS, Linux) targets.\n\n## Examples\n\nSee Demo application and [examples](demo/src/commonMain/kotlin/eu/wewox/tagcloud/screens).\n\n### Simple tag cloud\n\n\u003cimg src=\"https://user-images.githubusercontent.com/20944869/214673568-c972c32c-c57e-4309-9e62-e7352a0b093e.gif\" width=\"450\"\u003e\n\n### Tags placed on axis\n\n\u003cimg src=\"https://user-images.githubusercontent.com/20944869/214674832-fdf66ec6-aa77-4d36-86a1-746c65ca91f7.gif\" width=\"450\"\u003e\n\n### Fancy tag cloud with particles inside\n\n\u003cimg src=\"https://user-images.githubusercontent.com/20944869/214677164-78f2eef7-1778-43ef-9804-223332900a80.gif\" width=\"450\"\u003e\n\n\n## Usage\n\n### Get a dependency\n\n**Step 1.** Add the MavenCentral repository to your build file.\nAdd it in your root `build.gradle.kts` at the end of repositories:\n```kotlin\nallprojects {\n    repositories {\n        ...\n        mavenCentral()\n    }\n}\n```\n\nOr in `settings.gradle.kts`:\n```kotlin\ndependencyResolutionManagement {\n    repositories {\n        ...\n        mavenCentral()\n    }\n}\n```\n\n**Step 2.** Add the dependency.\nCheck latest version on the [releases page](https://github.com/oleksandrbalan/tagcloud/releases).\n```kotlin\ndependencies {\n    implementation(\"io.github.oleksandrbalan:tagcloud:$version\")\n}\n```\n\n### Use in Composable\n\nThe `TagCloud` has 2 mandatory arguments:\n* **state** - The state of the TagCloud, used to observe and change it's rotation.\n* **content** - The content lambda to register items to be shown in the TagCloud.\n\nInside `content` lambda use `item` or `items` method to register items in the TagCloud. Each method has own `content` lambda to specify how item is displayed. Inside item scope you could access item's coordinates to adjust appearance based on where item is currently in the tag cloud. Or you may use `.tagCloudItemFade()` and / or `.tagCloudItemScaleDown()` modifiers to use out-of-box behavior.\n\n```\nval labels = List(32) { \"Item #$it\" }\n\nTagCloud(\n    state = rememberTagCloudState(),\n    modifier = Modifier.padding(64.dp)\n) {\n    items(labels) {\n        Text(\n            text = it,\n            modifier = Modifier\n                .tagCloudItemFade()\n                .tagCloudItemScaleDown()\n        )\n    }\n}\n```\n\nSee Demo application and [examples](demo/src/commonMain/kotlin/eu/wewox/tagcloud/screens) for more usage examples.\n\n## TODO list\n\n* Add ability to focus an item\n* Add content padding for the TagCloud to expand gesture area\n* Add fling support\n* Add `animateTo` / `animateBy` methods to the `TagCloudState`\n* Add ability to change where item is facing\n* Fix item clipping when scale is greater than 1\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foleksandrbalan%2Ftagcloud","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foleksandrbalan%2Ftagcloud","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foleksandrbalan%2Ftagcloud/lists"}