├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md ├── pull-request-labels.yml ├── release-drafter.yml └── workflows │ ├── pr-automations.yml │ └── release-drafter.yml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── app ├── .gitignore ├── build.gradle.kts ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── withplum │ │ └── emojiapp │ │ ├── ActivityUtils.kt │ │ └── MainActivity.kt │ └── res │ ├── drawable-v24 │ └── ic_launcher_foreground.xml │ ├── drawable │ └── ic_launcher_background.xml │ ├── layout │ └── activity_main.xml │ ├── mipmap-anydpi-v26 │ ├── ic_launcher.xml │ └── ic_launcher_round.xml │ ├── mipmap-hdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-mdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xxhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xxxhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ └── values │ ├── colors.xml │ ├── strings.xml │ └── styles.xml ├── build.gradle.kts ├── emojiBottomSheetDialog ├── .gitignore ├── build.gradle.kts ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── withplum │ │ └── emojibottomsheetdialog │ │ ├── emoji │ │ ├── EmojiCategoryTransformer.kt │ │ ├── categories │ │ │ ├── ActivitiesCategory.kt │ │ │ ├── AnimalsNatureCategory.kt │ │ │ ├── Category.kt │ │ │ ├── FlagsCategory.kt │ │ │ ├── FoodDrinkCategory.kt │ │ │ ├── ObjectsCategory.kt │ │ │ ├── SmileysPeopleCategory.kt │ │ │ ├── SymbolsCategory.kt │ │ │ └── TravelPlacesCategory.kt │ │ └── categoryUnicodes │ │ │ ├── ActivityCategoryUnicodes.kt │ │ │ ├── AnimalsNatureCategoryUnicodes.kt │ │ │ ├── CategoryUnicodes.kt │ │ │ ├── FlagsCategoryUnicodes.kt │ │ │ ├── FoodDrinkCategoryUnicodes.kt │ │ │ ├── ObjectsCategoryUnicodes.kt │ │ │ ├── SmileysPeopleCategoryUnicodes.kt │ │ │ ├── SymbolsCategoryUnicodes.kt │ │ │ └── TravelPlacesCategoryUnicodes.kt │ │ └── view │ │ ├── EmojiPickerDialog.kt │ │ └── recyclerview │ │ ├── EmojiRecyclerView.kt │ │ ├── EmojiRecyclerViewAdapter.kt │ │ └── RecyclerViewUtils.kt │ └── res │ ├── layout │ ├── row_emoji.xml │ ├── row_title.xml │ └── view_emoji_bottom_sheet.xml │ └── values │ ├── attrs.xml │ ├── colors.xml │ └── dimens.xml ├── gradle.properties ├── gradle ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── lint.xml ├── renovate.json └── settings.gradle.kts /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - OS: [e.g. iOS] 28 | - Browser [e.g. chrome, safari] 29 | - Version [e.g. 22] 30 | 31 | **Smartphone (please complete the following information):** 32 | - Device: [e.g. iPhone6] 33 | - OS: [e.g. iOS8.1] 34 | - Browser [e.g. stock browser, safari] 35 | - Version [e.g. 22] 36 | 37 | **Additional context** 38 | Add any other context about the problem here. 39 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/pull-request-labels.yml: -------------------------------------------------------------------------------- 1 | Bugfix: [ 'bugfix/**', 'bug/**' ] 2 | Enhancement: [ 'feature/**', 'enhancement/**' ] 3 | Release: 'release/**' 4 | Platform: 'platform/**' 5 | documentation: 'documentation/**' 6 | -------------------------------------------------------------------------------- /.github/release-drafter.yml: -------------------------------------------------------------------------------- 1 | name-template: 'v$RESOLVED_VERSION 🤓👩‍🎨' 2 | tag-template: 'v$RESOLVED_VERSION' 3 | categories: 4 | - title: '🚀 Features' 5 | labels: 6 | - 'feature' 7 | - 'enhancement' 8 | - title: '🐛 Bug Fixes' 9 | labels: 10 | - 'fix' 11 | - 'bugfix' 12 | - 'bug' 13 | - title: '🧰 Maintenance' 14 | label: 'platform' 15 | - title: '🧐 Documentation' 16 | label: 'documentation' 17 | change-template: '- $TITLE @$AUTHOR (#$NUMBER)' 18 | exclude-labels: 19 | - 'Release' 20 | version-resolver: 21 | major: 22 | labels: 23 | - 'major' 24 | minor: 25 | labels: 26 | - 'minor' 27 | patch: 28 | labels: 29 | - 'patch' 30 | default: patch 31 | 32 | template: | 33 | ## Changes 34 | 35 | $CHANGES 36 | -------------------------------------------------------------------------------- /.github/workflows/pr-automations.yml: -------------------------------------------------------------------------------- 1 | name: Pull Request PlumDroid 2 | 3 | on: 4 | pull_request: 5 | types: [ opened, closed, ready_for_review, reopened ] 6 | 7 | jobs: 8 | # Add labels based on branch name 9 | add-branch-labels: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Add branch labels 13 | if: ${{ github.event.action == 'opened' }} 14 | uses: TimonVS/pr-labeler-action@v3 15 | with: 16 | configuration-path: .github/pull-request-labels.yml 17 | env: 18 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 19 | -------------------------------------------------------------------------------- /.github/workflows/release-drafter.yml: -------------------------------------------------------------------------------- 1 | name: Compile Release Notes 2 | 3 | on: 4 | push: 5 | branches: [ 'master' ] 6 | 7 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel 8 | jobs: 9 | update_release_draft: 10 | runs-on: ubuntu-latest 11 | # Steps represent a sequence of tasks that will be executed as part of the job 12 | steps: 13 | - name: Release Drafter 14 | uses: release-drafter/release-drafter@v5 15 | env: 16 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Built application files 2 | *.apk 3 | *.aar 4 | *.ap_ 5 | *.aab 6 | 7 | # Files for the ART/Dalvik VM 8 | *.dex 9 | 10 | # Java class files 11 | *.class 12 | 13 | # Generated files 14 | bin/ 15 | gen/ 16 | out/ 17 | # Uncomment the following line in case you need and you don't have the release build type files in your app 18 | # release/ 19 | 20 | # Gradle files 21 | .gradle/ 22 | build/ 23 | 24 | # Local configuration file (sdk path, etc) 25 | local.properties 26 | 27 | # Proguard folder generated by Eclipse 28 | proguard/ 29 | 30 | # Log Files 31 | *.log 32 | 33 | # Android Studio Navigation editor temp files 34 | .navigation/ 35 | 36 | # Android Studio captures folder 37 | captures/ 38 | 39 | # IntelliJ 40 | *.iml 41 | .idea/ 42 | 43 | # Keystore files 44 | # Uncomment the following lines if you do not want to check your keystore files in. 45 | #*.jks 46 | #*.keystore 47 | 48 | # External native build folder generated in Android Studio 2.2 and later 49 | .externalNativeBuild 50 | .cxx/ 51 | 52 | # Google Services (e.g. APIs or Firebase) 53 | # google-services.json 54 | 55 | # Freeline 56 | freeline.py 57 | freeline/ 58 | freeline_project_description.json 59 | 60 | # fastlane 61 | fastlane/report.xml 62 | fastlane/Preview.html 63 | fastlane/screenshots 64 | fastlane/test_output 65 | fastlane/readme.md 66 | 67 | # Version control 68 | vcs.xml 69 | 70 | # lint 71 | lint/intermediates/ 72 | lint/generated/ 73 | lint/outputs/ 74 | lint/tmp/ 75 | # lint/reports/ 76 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | 2 | # Contributor Covenant Code of Conduct 3 | 4 | ## Our Pledge 5 | 6 | We as members, contributors, and leaders pledge to make participation in our 7 | community a harassment-free experience for everyone, regardless of age, body 8 | size, visible or invisible disability, ethnicity, sex characteristics, gender 9 | identity and expression, level of experience, education, socio-economic status, 10 | nationality, personal appearance, race, religion, or sexual identity 11 | and orientation. 12 | 13 | We pledge to act and interact in ways that contribute to an open, welcoming, 14 | diverse, inclusive, and healthy community. 15 | 16 | ## Our Standards 17 | 18 | Examples of behavior that contributes to a positive environment for our 19 | community include: 20 | 21 | * Demonstrating empathy and kindness toward other people 22 | * Being respectful of differing opinions, viewpoints, and experiences 23 | * Giving and gracefully accepting constructive feedback 24 | * Accepting responsibility and apologizing to those affected by our mistakes, 25 | and learning from the experience 26 | * Focusing on what is best not just for us as individuals, but for the 27 | overall community 28 | 29 | Examples of unacceptable behavior include: 30 | 31 | * The use of sexualized language or imagery, and sexual attention or 32 | advances of any kind 33 | * Trolling, insulting or derogatory comments, and personal or political attacks 34 | * Public or private harassment 35 | * Publishing others' private information, such as a physical or email 36 | address, without their explicit permission 37 | * Other conduct which could reasonably be considered inappropriate in a 38 | professional setting 39 | 40 | ## Enforcement Responsibilities 41 | 42 | Community leaders are responsible for clarifying and enforcing our standards of 43 | acceptable behavior and will take appropriate and fair corrective action in 44 | response to any behavior that they deem inappropriate, threatening, offensive, 45 | or harmful. 46 | 47 | Community leaders have the right and responsibility to remove, edit, or reject 48 | comments, commits, code, wiki edits, issues, and other contributions that are 49 | not aligned to this Code of Conduct, and will communicate reasons for moderation 50 | decisions when appropriate. 51 | 52 | ## Scope 53 | 54 | This Code of Conduct applies within all community spaces, and also applies when 55 | an individual is officially representing the community in public spaces. 56 | Examples of representing our community include using an official e-mail address, 57 | posting via an official social media account, or acting as an appointed 58 | representative at an online or offline event. 59 | 60 | ## Enforcement 61 | 62 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 63 | reported to the community leaders responsible for enforcement at 64 | android@withplum.com. 65 | All complaints will be reviewed and investigated promptly and fairly. 66 | 67 | All community leaders are obligated to respect the privacy and security of the 68 | reporter of any incident. 69 | 70 | ## Enforcement Guidelines 71 | 72 | Community leaders will follow these Community Impact Guidelines in determining 73 | the consequences for any action they deem in violation of this Code of Conduct: 74 | 75 | ### 1. Correction 76 | 77 | **Community Impact**: Use of inappropriate language or other behavior deemed 78 | unprofessional or unwelcome in the community. 79 | 80 | **Consequence**: A private, written warning from community leaders, providing 81 | clarity around the nature of the violation and an explanation of why the 82 | behavior was inappropriate. A public apology may be requested. 83 | 84 | ### 2. Warning 85 | 86 | **Community Impact**: A violation through a single incident or series 87 | of actions. 88 | 89 | **Consequence**: A warning with consequences for continued behavior. No 90 | interaction with the people involved, including unsolicited interaction with 91 | those enforcing the Code of Conduct, for a specified period of time. This 92 | includes avoiding interactions in community spaces as well as external channels 93 | like social media. Violating these terms may lead to a temporary or 94 | permanent ban. 95 | 96 | ### 3. Temporary Ban 97 | 98 | **Community Impact**: A serious violation of community standards, including 99 | sustained inappropriate behavior. 100 | 101 | **Consequence**: A temporary ban from any sort of interaction or public 102 | communication with the community for a specified period of time. No public or 103 | private interaction with the people involved, including unsolicited interaction 104 | with those enforcing the Code of Conduct, is allowed during this period. 105 | Violating these terms may lead to a permanent ban. 106 | 107 | ### 4. Permanent Ban 108 | 109 | **Community Impact**: Demonstrating a pattern of violation of community 110 | standards, including sustained inappropriate behavior, harassment of an 111 | individual, or aggression toward or disparagement of classes of individuals. 112 | 113 | **Consequence**: A permanent ban from any sort of public interaction within 114 | the community. 115 | 116 | ## Attribution 117 | 118 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 119 | version 2.0, available at 120 | [https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0]. 121 | 122 | Community Impact Guidelines were inspired by 123 | [Mozilla's code of conduct enforcement ladder][Mozilla CoC]. 124 | 125 | For answers to common questions about this code of conduct, see the FAQ at 126 | [https://www.contributor-covenant.org/faq][FAQ]. Translations are available 127 | at [https://www.contributor-covenant.org/translations][translations]. 128 | 129 | [homepage]: https://www.contributor-covenant.org 130 | [v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html 131 | [Mozilla CoC]: https://github.com/mozilla/diversity 132 | [FAQ]: https://www.contributor-covenant.org/faq 133 | [translations]: https://www.contributor-covenant.org/translations 134 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Plum 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Maven Central](https://img.shields.io/maven-central/v/com.withplum/emojiBottomSheetDialog.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:%22com.withplum%22%20AND%20a:%22emojiBottomSheetDialog%22) 2 | # EmojiBottomSheetDialog 3 | A nice Android bottom sheet dialog populated with AndroidX EmojiCompat supported emojis. 4 | 5 | ![EmojiBottomSheetDialog gif](https://i.imgur.com/0GisGjI.gif) 6 | 7 | ## Usage 8 | 9 | ### Add the dependency 10 | 11 | ```gradle 12 | dependencies { 13 | implementation("com.withplum:emojiBottomSheetDialog:) 14 | } 15 | ``` 16 | 17 | ### Style customization 18 | 19 | The appearance of the Bottom Sheet can be customised by providing a custom style like this example: 20 | 21 | ```xml 22 | 23 | 24 | 31 | 32 | 38 | 39 | 42 | 43 | 46 | 47 | ``` 48 | 49 | The title and section headers can be styled by providing custom text appearances in the style. 50 | 51 | | Element | Attribute | Default value | 52 | |--------------------|-----------------------------------------------|------------------------------------------------------| 53 | | **Title** | `emojiBottomSheetTitleTextAppearance` | `@style/TextAppearance.MaterialComponents.Headline6` | 54 | | **Section Header** | `emojiBottomSheetSectionHeaderTextAppearance` | `TextAppearance.MaterialComponents.Body1` | 55 | | **Background** | `colorSurface` | `?android:attr/colorSurface` | 56 | 57 | ### Initialize the dialog 58 | ```kotlin 59 | 60 | private fun initializeEmojiCategoriesPreferred() { 61 | emojiItemViewList = EmojiCategoryTransformer().transform(initializeEmojiCategoryList()) 62 | } 63 | 64 | private fun initializeEmojiCategoryList(): List { 65 | return listOf( 66 | ActivitiesCategory(getString(R.string.activitiesCategoryTitle)), 67 | AnimalsNatureCategory(getString(R.string.animalsAndNatureTitle)), 68 | FoodDrinkCategory(getString(R.string.foodAndDrinkTitle)), 69 | FlagsCategory(getString(R.string.flagsTitle)), 70 | ObjectsCategory(getString(R.string.objectsTitle)), 71 | SmileysPeopleCategory(getString(R.string.smileysAndPeopleTitle)), 72 | SymbolsCategory(getString(R.string.symbolsTitle)), 73 | TravelPlacesCategory(getString(R.string.travelAndPlacesTitle)) 74 | ) 75 | } 76 | 77 | private fun showEmojiDialog() { 78 | EmojiPickerDialog.Builder(this@MainActivity, emojiItemViewList) 79 | .dismissWithAnimation(true) 80 | .title(getString(R.string.emojiDialogTitle)) 81 | .cancelable(true) 82 | .listener(object : EmojiClickListener { 83 | override fun emojiClicked(unicode: EmojiItemView) { 84 | selectedEmoji.text = unicode.value 85 | selectedEmojiName.text = unicode.name 86 | } 87 | }).build().show() 88 | } 89 | ``` 90 | 91 | ## Breaking changes of version `3.0.0` 92 | 93 | 1. Certain APIs have become `internal`. 94 | 2. In version `3.0.0` the library uses Java 17. You'll have to add the following to your build file: 95 | 96 | ```kotlin 97 | android { 98 | compileOptions { 99 | sourceCompatibility = JavaVersion.VERSION_17 100 | targetCompatibility = JavaVersion.VERSION_17 101 | } 102 | 103 | kotlinOptions { 104 | jvmTarget = "17" 105 | } 106 | } 107 | ``` 108 | 109 | ## Breaking changes of version `2.0.0` 110 | In version `2.0.0` we migrated to [Emoji2](https://developer.android.com/jetpack/androidx/releases/emoji2). 111 | This results in the removal of: 112 | * `EmojiCompatUtils` 113 | * `EmojInitListener` 114 | * `EmojiValues` which was mostly used internally. 115 | 116 | Initialization now happens internally via the [Emoji2](https://developer.android.com/jetpack/androidx/releases/emoji2). 117 | If you still need an initialization listener you should use the official API as described [here](https://developer.android.com/develop/ui/views/text-and-emoji/emoji2#add-initialization-listeners). 118 | The whole document [Support modern emoji - Android Developers](https://developer.android.com/develop/ui/views/text-and-emoji/emoji2) provides further details. 119 | 120 | The same document will help you if you rely on AppCompat version lower than `1.4.0-alpha01` or on the [Emoji](https://developer.android.com/jetpack/androidx/releases/emoji) 121 | library itself which provides [these custom views](https://developer.android.com/reference/kotlin/androidx/emoji/widget/package-summary) for compatibility. 122 | 123 | ## Contributing 124 | Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. 125 | 126 | ### Publishing 127 | The project uses [gradle-maven-publish-plugin](https://github.com/vanniktech/gradle-maven-publish-plugin) to publish artifacts to maven central. 128 | 129 | To upload archives use the command (after having put the appropriate credentials in gradle properties or env variables): 130 | 131 | ``` 132 | ./gradlew clean build emojiBottomSheetDialog:publish 133 | ``` 134 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | alias(libs.plugins.android.application) 3 | alias(libs.plugins.kotlin.gradle.plugin) 4 | } 5 | 6 | android { 7 | compileSdk = 35 8 | namespace = "com.withplum.emojiapp" 9 | 10 | defaultConfig { 11 | applicationId = "com.withplum.emojiapp" 12 | minSdk = 23 13 | targetSdk = 35 14 | } 15 | 16 | compileOptions { 17 | sourceCompatibility = JavaVersion.VERSION_17 18 | targetCompatibility = JavaVersion.VERSION_17 19 | } 20 | 21 | kotlinOptions { 22 | jvmTarget = "17" 23 | } 24 | 25 | buildTypes { 26 | getByName("release") { 27 | isMinifyEnabled = false 28 | proguardFiles( 29 | getDefaultProguardFile("proguard-android-optimize.txt"), 30 | "proguard-rules.pro" 31 | ) 32 | } 33 | } 34 | } 35 | 36 | dependencies { 37 | implementation(project(":emojiBottomSheetDialog")) 38 | implementation(libs.kotlin.stdlib) 39 | implementation(libs.constraintlayout) 40 | implementation(libs.appcompat) 41 | } 42 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/withplum/emojiapp/ActivityUtils.kt: -------------------------------------------------------------------------------- 1 | package com.withplum.emojiapp 2 | 3 | import android.app.Activity 4 | import android.view.View 5 | import androidx.annotation.IdRes 6 | 7 | fun Activity.bind(@IdRes idRes: Int): Lazy { 8 | return unsafeLazy { findViewById(idRes) } 9 | } 10 | 11 | fun unsafeLazy(initializer: () -> T) = lazy(LazyThreadSafetyMode.NONE, initializer) 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/withplum/emojiapp/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.withplum.emojiapp 2 | 3 | import android.os.Bundle 4 | import android.widget.TextView 5 | import androidx.appcompat.app.AppCompatActivity 6 | import com.withplum.emojibottomsheetdialog.emoji.EmojiCategoryTransformer 7 | import com.withplum.emojibottomsheetdialog.emoji.categories.ActivitiesCategory 8 | import com.withplum.emojibottomsheetdialog.emoji.categories.AnimalsNatureCategory 9 | import com.withplum.emojibottomsheetdialog.emoji.categories.Category 10 | import com.withplum.emojibottomsheetdialog.emoji.categories.FlagsCategory 11 | import com.withplum.emojibottomsheetdialog.emoji.categories.FoodDrinkCategory 12 | import com.withplum.emojibottomsheetdialog.emoji.categories.ObjectsCategory 13 | import com.withplum.emojibottomsheetdialog.emoji.categories.SmileysPeopleCategory 14 | import com.withplum.emojibottomsheetdialog.emoji.categories.SymbolsCategory 15 | import com.withplum.emojibottomsheetdialog.emoji.categories.TravelPlacesCategory 16 | import com.withplum.emojibottomsheetdialog.view.EmojiClickListener 17 | import com.withplum.emojibottomsheetdialog.view.EmojiPickerDialog 18 | import com.withplum.emojibottomsheetdialog.view.recyclerview.EmojiItemView 19 | 20 | class MainActivity : AppCompatActivity() { 21 | 22 | private val selectedEmoji: TextView by bind(R.id.etv_selected_emoji) 23 | private val selectedEmojiName: TextView by bind(R.id.tv_selected_emoji_name) 24 | private var emojiItemViewList: List = emptyList() 25 | 26 | override fun onCreate(savedInstanceState: Bundle?) { 27 | super.onCreate(savedInstanceState) 28 | setContentView(R.layout.activity_main) 29 | initializeOnClickListeners() 30 | initializeEmojiCategoriesPreferred() 31 | showEmojiDialog() 32 | } 33 | 34 | private fun initializeEmojiCategoriesPreferred() { 35 | emojiItemViewList = EmojiCategoryTransformer().transform(initializeEmojiCategoryList()) 36 | } 37 | 38 | private fun initializeOnClickListeners() { 39 | selectedEmoji.setOnClickListener { showEmojiDialog() } 40 | } 41 | 42 | private fun showEmojiDialog() { 43 | EmojiPickerDialog.Builder(this@MainActivity, emojiItemViewList) 44 | .dismissWithAnimation(true) 45 | .title(getString(R.string.emojiDialogTitle)) 46 | .cancelable(true) 47 | .listener(object : EmojiClickListener { 48 | override fun emojiClicked(unicode: EmojiItemView) { 49 | selectedEmoji.text = unicode.value 50 | selectedEmojiName.text = unicode.name 51 | } 52 | }).build().show() 53 | } 54 | 55 | private fun initializeEmojiCategoryList(): List { 56 | return listOf( 57 | ActivitiesCategory(getString(R.string.activitiesCategoryTitle)), 58 | AnimalsNatureCategory(getString(R.string.animalsAndNatureTitle)), 59 | FoodDrinkCategory(getString(R.string.foodAndDrinkTitle)), 60 | FlagsCategory(getString(R.string.flagsTitle)), 61 | ObjectsCategory(getString(R.string.objectsTitle)), 62 | SmileysPeopleCategory(getString(R.string.smileysAndPeopleTitle)), 63 | SymbolsCategory(getString(R.string.symbolsTitle)), 64 | TravelPlacesCategory(getString(R.string.travelAndPlacesTitle)) 65 | ) 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 15 | 18 | 21 | 22 | 23 | 24 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | 50 | 55 | 60 | 65 | 70 | 75 | 80 | 85 | 90 | 95 | 100 | 105 | 110 | 115 | 120 | 125 | 130 | 135 | 140 | 145 | 150 | 155 | 160 | 165 | 170 | 171 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 19 | 20 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/withplum/EmojiBottomSheetDialog/1e42a452d87a886283347ea4cab87c126b858ab6/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/withplum/EmojiBottomSheetDialog/1e42a452d87a886283347ea4cab87c126b858ab6/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/withplum/EmojiBottomSheetDialog/1e42a452d87a886283347ea4cab87c126b858ab6/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/withplum/EmojiBottomSheetDialog/1e42a452d87a886283347ea4cab87c126b858ab6/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/withplum/EmojiBottomSheetDialog/1e42a452d87a886283347ea4cab87c126b858ab6/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/withplum/EmojiBottomSheetDialog/1e42a452d87a886283347ea4cab87c126b858ab6/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/withplum/EmojiBottomSheetDialog/1e42a452d87a886283347ea4cab87c126b858ab6/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/withplum/EmojiBottomSheetDialog/1e42a452d87a886283347ea4cab87c126b858ab6/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/withplum/EmojiBottomSheetDialog/1e42a452d87a886283347ea4cab87c126b858ab6/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/withplum/EmojiBottomSheetDialog/1e42a452d87a886283347ea4cab87c126b858ab6/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #6200EE 4 | #3700B3 5 | #03DAC5 6 | #464646 7 | #143647 8 | #FFFFFF 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Emoji Bottom Sheet Dialog 3 | Choose an emoji: 4 | Activity 5 | Smileys and People 6 | Food and Drink 7 | Animals and Nature 8 | Travel and Places 9 | Objects 10 | Symbols 11 | Flags 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | 11 | 17 | 18 | 21 | 22 | 25 | 26 | -------------------------------------------------------------------------------- /build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | alias(libs.plugins.android.application) apply false 3 | alias(libs.plugins.android.library) apply false 4 | alias(libs.plugins.kotlin.gradle.plugin) apply false 5 | alias(libs.plugins.gradle.maven.publish) apply false 6 | alias(libs.plugins.dokka) apply false 7 | } 8 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | alias(libs.plugins.android.library) 3 | alias(libs.plugins.kotlin.gradle.plugin) 4 | alias(libs.plugins.dokka) 5 | alias(libs.plugins.gradle.maven.publish) 6 | } 7 | 8 | android { 9 | namespace = "com.withplum.emojibottomsheetdialog" 10 | compileSdk = 35 11 | defaultConfig { 12 | minSdk = 23 13 | } 14 | 15 | compileOptions { 16 | sourceCompatibility = JavaVersion.VERSION_17 17 | targetCompatibility = JavaVersion.VERSION_17 18 | } 19 | 20 | kotlinOptions { 21 | jvmTarget = "17" 22 | } 23 | 24 | buildTypes { 25 | getByName("release") { 26 | isMinifyEnabled = false 27 | proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") 28 | } 29 | } 30 | } 31 | 32 | dependencies { 33 | 34 | implementation(libs.kotlin.stdlib) 35 | implementation(libs.material) 36 | 37 | implementation(libs.emoji2) 38 | implementation(libs.emoji2.views) 39 | 40 | implementation(libs.recyclerview) 41 | } 42 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/java/com/withplum/emojibottomsheetdialog/emoji/EmojiCategoryTransformer.kt: -------------------------------------------------------------------------------- 1 | package com.withplum.emojibottomsheetdialog.emoji 2 | 3 | import com.withplum.emojibottomsheetdialog.emoji.categories.Category 4 | import com.withplum.emojibottomsheetdialog.view.recyclerview.EmojiItemView 5 | 6 | class EmojiCategoryTransformer { 7 | 8 | fun transform(categoryList: List): List = transformCategoriesToEmojiItems(categoryList) 9 | 10 | private fun transformCategoriesToEmojiItems(createEmojiList: List): List { 11 | val list: MutableList = mutableListOf() 12 | createEmojiList.map { category -> 13 | list.add(EmojiItemView.createTitleViewItem(category.categoryName)) 14 | list.apply { 15 | category.categoryUnicode.forEach { 16 | list.add(EmojiItemView.createEmojiViewItem(it.unicode, it.name)) 17 | } 18 | } 19 | } 20 | return list 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/java/com/withplum/emojibottomsheetdialog/emoji/categories/ActivitiesCategory.kt: -------------------------------------------------------------------------------- 1 | package com.withplum.emojibottomsheetdialog.emoji.categories 2 | 3 | import com.withplum.emojibottomsheetdialog.emoji.categoryUnicodes.ActivityCategoryUnicodes 4 | 5 | data class ActivitiesCategory( 6 | override val categoryName: String, 7 | override val categoryUnicode: List = enumValues().toList() 8 | ) : Category 9 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/java/com/withplum/emojibottomsheetdialog/emoji/categories/AnimalsNatureCategory.kt: -------------------------------------------------------------------------------- 1 | package com.withplum.emojibottomsheetdialog.emoji.categories 2 | 3 | import com.withplum.emojibottomsheetdialog.emoji.categoryUnicodes.AnimalsNatureCategoryUnicodes 4 | 5 | data class AnimalsNatureCategory( 6 | override val categoryName: String, 7 | override val categoryUnicode: List = enumValues().toList() 8 | ) : Category 9 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/java/com/withplum/emojibottomsheetdialog/emoji/categories/Category.kt: -------------------------------------------------------------------------------- 1 | package com.withplum.emojibottomsheetdialog.emoji.categories 2 | 3 | import com.withplum.emojibottomsheetdialog.emoji.categoryUnicodes.CategoryUnicodes 4 | 5 | interface Category { 6 | val categoryName: String 7 | val categoryUnicode: List 8 | } 9 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/java/com/withplum/emojibottomsheetdialog/emoji/categories/FlagsCategory.kt: -------------------------------------------------------------------------------- 1 | package com.withplum.emojibottomsheetdialog.emoji.categories 2 | 3 | import com.withplum.emojibottomsheetdialog.emoji.categoryUnicodes.FlagsCategoryUnicodes 4 | 5 | data class FlagsCategory( 6 | override val categoryName: String, 7 | override val categoryUnicode: List = enumValues().toList() 8 | ) : Category 9 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/java/com/withplum/emojibottomsheetdialog/emoji/categories/FoodDrinkCategory.kt: -------------------------------------------------------------------------------- 1 | package com.withplum.emojibottomsheetdialog.emoji.categories 2 | 3 | import com.withplum.emojibottomsheetdialog.emoji.categoryUnicodes.FoodDrinkCategoryUnicodes 4 | 5 | data class FoodDrinkCategory( 6 | override val categoryName: String, 7 | override val categoryUnicode: List = enumValues().toList() 8 | ) : Category 9 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/java/com/withplum/emojibottomsheetdialog/emoji/categories/ObjectsCategory.kt: -------------------------------------------------------------------------------- 1 | package com.withplum.emojibottomsheetdialog.emoji.categories 2 | 3 | import com.withplum.emojibottomsheetdialog.emoji.categoryUnicodes.ObjectsCategoryUnicodes 4 | 5 | data class ObjectsCategory( 6 | override val categoryName: String, 7 | override val categoryUnicode: List = enumValues().toList() 8 | ) : Category 9 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/java/com/withplum/emojibottomsheetdialog/emoji/categories/SmileysPeopleCategory.kt: -------------------------------------------------------------------------------- 1 | package com.withplum.emojibottomsheetdialog.emoji.categories 2 | 3 | import com.withplum.emojibottomsheetdialog.emoji.categoryUnicodes.SmileysPeopleCategoryUnicodes 4 | 5 | data class SmileysPeopleCategory( 6 | override val categoryName: String, 7 | override val categoryUnicode: List = enumValues().toList() 8 | ) : Category 9 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/java/com/withplum/emojibottomsheetdialog/emoji/categories/SymbolsCategory.kt: -------------------------------------------------------------------------------- 1 | package com.withplum.emojibottomsheetdialog.emoji.categories 2 | 3 | import com.withplum.emojibottomsheetdialog.emoji.categoryUnicodes.SymbolsCategoryUnicodes 4 | 5 | data class SymbolsCategory( 6 | override val categoryName: String, 7 | override val categoryUnicode: List = enumValues().toList() 8 | ) : Category 9 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/java/com/withplum/emojibottomsheetdialog/emoji/categories/TravelPlacesCategory.kt: -------------------------------------------------------------------------------- 1 | package com.withplum.emojibottomsheetdialog.emoji.categories 2 | 3 | import com.withplum.emojibottomsheetdialog.emoji.categoryUnicodes.TravelPlacesCategoryUnicodes 4 | 5 | data class TravelPlacesCategory( 6 | override val categoryName: String, 7 | override val categoryUnicode: List = enumValues().toList() 8 | ) : Category 9 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/java/com/withplum/emojibottomsheetdialog/emoji/categoryUnicodes/ActivityCategoryUnicodes.kt: -------------------------------------------------------------------------------- 1 | package com.withplum.emojibottomsheetdialog.emoji.categoryUnicodes 2 | 3 | enum class ActivityCategoryUnicodes(override val unicode: ByteArray) : CategoryUnicodes { 4 | JACK_O_LANTERN("\uD83C\uDF83".toByteArray(Charsets.UTF_8)), 5 | CHRISTMAS_TREE("\uD83C\uDF84".toByteArray(Charsets.UTF_8)), 6 | FIREWORKS("\uD83C\uDF86".toByteArray(Charsets.UTF_8)), 7 | SPARKLER("\uD83C\uDF87".toByteArray(Charsets.UTF_8)), 8 | FIRECRACKER("\uD83E\uDDE8".toByteArray(Charsets.UTF_8)), 9 | SPARKLES("✨".toByteArray(Charsets.UTF_8)), 10 | BALLOON("\uD83C\uDF88".toByteArray(Charsets.UTF_8)), 11 | PARTY_POPPER("\uD83C\uDF89".toByteArray(Charsets.UTF_8)), 12 | CONFETTI_BALL("\uD83C\uDF8A".toByteArray(Charsets.UTF_8)), 13 | TANABATA_TREE("\uD83C\uDF8B".toByteArray(Charsets.UTF_8)), 14 | PINE_DECORATION("\uD83C\uDF8D".toByteArray(Charsets.UTF_8)), 15 | JAPANESE_DOLLS("\uD83C\uDF8E".toByteArray(Charsets.UTF_8)), 16 | CARP_STREAMER("\uD83C\uDF8F".toByteArray(Charsets.UTF_8)), 17 | WIND_CHIME("\uD83C\uDF90".toByteArray(Charsets.UTF_8)), 18 | MOON_VIEWING_CEREMONY("\uD83C\uDF91".toByteArray(Charsets.UTF_8)), 19 | RED_ENVELOPE("\uD83E\uDDE7".toByteArray(Charsets.UTF_8)), 20 | RIBBON("\uD83C\uDF80".toByteArray(Charsets.UTF_8)), 21 | WRAPPED_GIFT("\uD83C\uDF81".toByteArray(Charsets.UTF_8)), 22 | REMINDER_RIBBON("\uD83C\uDF97️".toByteArray(Charsets.UTF_8)), 23 | ADMISSION_TICKETS("🎟️".toByteArray(Charsets.UTF_8)), 24 | TICKET("\uD83C\uDFAB".toByteArray(Charsets.UTF_8)), 25 | MILITARY_MEDAL("\uD83C\uDF96".toByteArray(Charsets.UTF_8)), 26 | TROPHY("\uD83C\uDFC6".toByteArray(Charsets.UTF_8)), 27 | SPORTS_MEDAL("\uD83C\uDFC5".toByteArray(Charsets.UTF_8)), 28 | FIRST_PLACE_MEDAL("\uD83E\uDD47".toByteArray(Charsets.UTF_8)), 29 | SECOND_PLACE_MEDAL("\uD83E\uDD48".toByteArray(Charsets.UTF_8)), 30 | THIRD_PLACE_MEDAL("\uD83E\uDD49".toByteArray(Charsets.UTF_8)), 31 | SOCCER_BALL("⚽".toByteArray(Charsets.UTF_8)), 32 | BASEBALL("⚾".toByteArray(Charsets.UTF_8)), 33 | SOFTBALL("\uD83E\uDD4E".toByteArray(Charsets.UTF_8)), 34 | BASKETBALL("\uD83C\uDFC0".toByteArray(Charsets.UTF_8)), 35 | VOLLEYBALL("\uD83C\uDFD0".toByteArray(Charsets.UTF_8)), 36 | AMERICAN_FOOTBALL("\uD83C\uDFC8".toByteArray(Charsets.UTF_8)), 37 | RUGBY_FOOTBALL("\uD83C\uDFC9".toByteArray(Charsets.UTF_8)), 38 | TENNIS("\uD83C\uDFBE".toByteArray(Charsets.UTF_8)), 39 | FLYING_DISC("\uD83E\uDD4F".toByteArray(Charsets.UTF_8)), 40 | BOWLING("\uD83C\uDFB3".toByteArray(Charsets.UTF_8)), 41 | CRICKET_GAME("\uD83C\uDFCF".toByteArray(Charsets.UTF_8)), 42 | FIELD_HOCKEY("\uD83C\uDFD1".toByteArray(Charsets.UTF_8)), 43 | ICE_HOCKEY("\uD83C\uDFD2".toByteArray(Charsets.UTF_8)), 44 | LACROSSE("\uD83E\uDD4D".toByteArray(Charsets.UTF_8)), 45 | PING_PONG("\uD83C\uDFD3".toByteArray(Charsets.UTF_8)), 46 | BADMINTON("\uD83C\uDFF8".toByteArray(Charsets.UTF_8)), 47 | BOXING_GLOVE("\uD83E\uDD4A".toByteArray(Charsets.UTF_8)), 48 | MARTIAL_ARTS_UNIFORM("\uD83E\uDD4B".toByteArray(Charsets.UTF_8)), 49 | GOAL_NET("\uD83E\uDD45".toByteArray(Charsets.UTF_8)), 50 | FLAG_IN_HOLE("⛳".toByteArray(Charsets.UTF_8)), 51 | ICE_SKATE("⛸️".toByteArray(Charsets.UTF_8)), 52 | FISHING_POLE("\uD83C\uDFA3".toByteArray(Charsets.UTF_8)), 53 | DIVING_MASK("\uD83E\uDD3F".toByteArray(Charsets.UTF_8)), 54 | RUNNING_SHIRT("\uD83C\uDFBD".toByteArray(Charsets.UTF_8)), 55 | SKIS("\uD83C\uDFBF".toByteArray(Charsets.UTF_8)), 56 | SLED("\uD83D\uDEF7".toByteArray(Charsets.UTF_8)), 57 | CURLING_STONE("\uD83E\uDD4C".toByteArray(Charsets.UTF_8)), 58 | DIRECT_HIT("\uD83C\uDFAF".toByteArray(Charsets.UTF_8)), 59 | YO_YO("\uD83E\uDE80".toByteArray(Charsets.UTF_8)), 60 | KITE("\uD83E\uDE81".toByteArray(Charsets.UTF_8)), 61 | POOL_8_BALL("\uD83C\uDFB1".toByteArray(Charsets.UTF_8)), 62 | CRYSTAL_BALL("\uD83D\uDD2E".toByteArray(Charsets.UTF_8)), 63 | NAZAR_AMULET("\uD83E\uDDFF".toByteArray(Charsets.UTF_8)), 64 | VIDEO_GAME("\uD83C\uDFAE".toByteArray(Charsets.UTF_8)), 65 | JOYSTICK("\uD83D\uDD79️".toByteArray(Charsets.UTF_8)), 66 | SLOT_MACHINE("\uD83C\uDFB0".toByteArray(Charsets.UTF_8)), 67 | GAME_DIE("\uD83C\uDFB2".toByteArray(Charsets.UTF_8)), 68 | PUZZLE_PIECE("\uD83E\uDDE9".toByteArray(Charsets.UTF_8)), 69 | TEDDY_BEAR("\uD83E\uDDF8".toByteArray(Charsets.UTF_8)), 70 | SPADE_SUIT("♠️".toByteArray(Charsets.UTF_8)), 71 | HEART_SUIT("♥️".toByteArray(Charsets.UTF_8)), 72 | DIAMOND_SUIT("♦️".toByteArray(Charsets.UTF_8)), 73 | CLUB_SUIT("♣️".toByteArray(Charsets.UTF_8)), 74 | CHESS_PAWN("♟️".toByteArray(Charsets.UTF_8)), 75 | JOKER("\uD83C\uDCCF".toByteArray(Charsets.UTF_8)), 76 | MAHJONG_RED_DRAGON("\uD83C\uDC04".toByteArray(Charsets.UTF_8)), 77 | FLOWER_PLAYING_CARDS("\uD83C\uDFB4".toByteArray(Charsets.UTF_8)), 78 | PERFORMING_ARTS("\uD83C\uDFAD".toByteArray(Charsets.UTF_8)), 79 | FRAMED_PICTURE("\uD83D\uDDBC️".toByteArray(Charsets.UTF_8)), 80 | ARTIST_PALETTE("\uD83C\uDFA8".toByteArray(Charsets.UTF_8)), 81 | THREAD("\uD83E\uDDF5".toByteArray(Charsets.UTF_8)), 82 | YARN("\uD83E\uDDF6".toByteArray(Charsets.UTF_8)), 83 | FOOTPRINTS("\uD83D\uDC63".toByteArray(Charsets.UTF_8)), 84 | LUGGAGE("\uD83E\uDDF3".toByteArray(Charsets.UTF_8)), 85 | CLOSED_UMBRELLA("\uD83C\uDF02".toByteArray(Charsets.UTF_8)), 86 | UMBRELLA("☂️".toByteArray(Charsets.UTF_8)); 87 | } 88 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/java/com/withplum/emojibottomsheetdialog/emoji/categoryUnicodes/AnimalsNatureCategoryUnicodes.kt: -------------------------------------------------------------------------------- 1 | package com.withplum.emojibottomsheetdialog.emoji.categoryUnicodes 2 | 3 | enum class AnimalsNatureCategoryUnicodes(override val unicode: ByteArray) : CategoryUnicodes { 4 | MONKEY_FACE("\uD83D\uDC35".toByteArray(Charsets.UTF_8)), 5 | MONKEY("\uD83D\uDC12".toByteArray(Charsets.UTF_8)), 6 | GORILLA("\uD83E\uDD8D".toByteArray(Charsets.UTF_8)), 7 | ORANGUTAN("\uD83E\uDDA7".toByteArray(Charsets.UTF_8)), 8 | DOG_FACE("\uD83D\uDC36".toByteArray(Charsets.UTF_8)), 9 | DOG("\uD83D\uDC15".toByteArray(Charsets.UTF_8)), 10 | GUIDE_DOG("\uD83E\uDDAE".toByteArray(Charsets.UTF_8)), 11 | SERVICE_DOG("\uD83D\uDC15\u200D\uD83E\uDDBA".toByteArray(Charsets.UTF_8)), 12 | POODLE("\uD83D\uDC29".toByteArray(Charsets.UTF_8)), 13 | WOLF("\uD83D\uDC3A".toByteArray(Charsets.UTF_8)), 14 | FOX("\uD83E\uDD8A".toByteArray(Charsets.UTF_8)), 15 | RACCOON("\uD83E\uDD9D".toByteArray(Charsets.UTF_8)), 16 | CAT_FACE("\uD83D\uDC31".toByteArray(Charsets.UTF_8)), 17 | CAT("\uD83D\uDC08".toByteArray(Charsets.UTF_8)), 18 | LION("\uD83E\uDD81".toByteArray(Charsets.UTF_8)), 19 | TIGER_FACE("\uD83D\uDC2F".toByteArray(Charsets.UTF_8)), 20 | TIGER("\uD83D\uDC05".toByteArray(Charsets.UTF_8)), 21 | LEOPARD("\uD83D\uDC06".toByteArray(Charsets.UTF_8)), 22 | HORSE_FACE("\uD83D\uDC34".toByteArray(Charsets.UTF_8)), 23 | HORSE("\uD83D\uDC0E".toByteArray(Charsets.UTF_8)), 24 | UNICORN("\uD83E\uDD84".toByteArray(Charsets.UTF_8)), 25 | ZEBRA("\uD83E\uDD93".toByteArray(Charsets.UTF_8)), 26 | DEER("\uD83E\uDD8C".toByteArray(Charsets.UTF_8)), 27 | COW_FACE("\uD83D\uDC2E".toByteArray(Charsets.UTF_8)), 28 | OX("\uD83D\uDC02".toByteArray(Charsets.UTF_8)), 29 | WATER_BUFFALO("\uD83D\uDC03".toByteArray(Charsets.UTF_8)), 30 | COW("\uD83D\uDC04".toByteArray(Charsets.UTF_8)), 31 | PIG_FACE("\uD83D\uDC37".toByteArray(Charsets.UTF_8)), 32 | PIG("\uD83D\uDC16".toByteArray(Charsets.UTF_8)), 33 | BOAR("\uD83D\uDC17".toByteArray(Charsets.UTF_8)), 34 | PIG_NOSE("\uD83D\uDC3D".toByteArray(Charsets.UTF_8)), 35 | RAM("\uD83D\uDC0F".toByteArray(Charsets.UTF_8)), 36 | EWE("\uD83D\uDC11".toByteArray(Charsets.UTF_8)), 37 | GOAT("\uD83D\uDC10".toByteArray(Charsets.UTF_8)), 38 | CAMEL("\uD83D\uDC2A".toByteArray(Charsets.UTF_8)), 39 | TWO_HUMP_CAMEL("\uD83D\uDC2B".toByteArray(Charsets.UTF_8)), 40 | LLAMA("\uD83E\uDD99".toByteArray(Charsets.UTF_8)), 41 | GIRAFFE("\uD83E\uDD92".toByteArray(Charsets.UTF_8)), 42 | ELEPHANT("\uD83D\uDC18".toByteArray(Charsets.UTF_8)), 43 | RHINOCEROS("\uD83E\uDD8F".toByteArray(Charsets.UTF_8)), 44 | HIPPOPOTAMUS("\uD83E\uDD9B".toByteArray(Charsets.UTF_8)), 45 | MOUSE_FACE("\uD83D\uDC2D".toByteArray(Charsets.UTF_8)), 46 | MOUSE("\uD83D\uDC01".toByteArray(Charsets.UTF_8)), 47 | RAT("\uD83D\uDC00".toByteArray(Charsets.UTF_8)), 48 | HAMSTER("\uD83D\uDC39".toByteArray(Charsets.UTF_8)), 49 | RABBIT_FACE("\uD83D\uDC30".toByteArray(Charsets.UTF_8)), 50 | RABBIT("\uD83D\uDC07".toByteArray(Charsets.UTF_8)), 51 | CHIPMUNK("\uD83D\uDC3F️".toByteArray(Charsets.UTF_8)), 52 | HEDGEHOG("\uD83E\uDD94".toByteArray(Charsets.UTF_8)), 53 | BAT("\uD83E\uDD87".toByteArray(Charsets.UTF_8)), 54 | BEAR("\uD83D\uDC3B".toByteArray(Charsets.UTF_8)), 55 | KOALA("\uD83D\uDC28".toByteArray(Charsets.UTF_8)), 56 | PANDA("\uD83D\uDC3C".toByteArray(Charsets.UTF_8)), 57 | SLOTH("\uD83E\uDDA5".toByteArray(Charsets.UTF_8)), 58 | OTTER("\uD83E\uDDA6".toByteArray(Charsets.UTF_8)), 59 | SKUNK("\uD83E\uDDA8".toByteArray(Charsets.UTF_8)), 60 | KANGAROO("\uD83E\uDD98".toByteArray(Charsets.UTF_8)), 61 | BADGER("\uD83E\uDDA1".toByteArray(Charsets.UTF_8)), 62 | PAW_PRINTS("\uD83D\uDC3E".toByteArray(Charsets.UTF_8)), 63 | TURKEY("\uD83E\uDD83".toByteArray(Charsets.UTF_8)), 64 | CHICKEN("\uD83D\uDC14".toByteArray(Charsets.UTF_8)), 65 | ROOSTER("\uD83D\uDC13".toByteArray(Charsets.UTF_8)), 66 | HATCHING_CHICK("\uD83D\uDC23".toByteArray(Charsets.UTF_8)), 67 | BABY_CHICK("\uD83D\uDC24".toByteArray(Charsets.UTF_8)), 68 | FRONT_FACING_BABY_CHICK("\uD83D\uDC25".toByteArray(Charsets.UTF_8)), 69 | BIRD("\uD83D\uDC26".toByteArray(Charsets.UTF_8)), 70 | PENGUIN("\uD83D\uDC27".toByteArray(Charsets.UTF_8)), 71 | DOVE("\uD83D\uDD4A️".toByteArray(Charsets.UTF_8)), 72 | EAGLE("\uD83E\uDD85".toByteArray(Charsets.UTF_8)), 73 | DUCK("\uD83E\uDD86".toByteArray(Charsets.UTF_8)), 74 | SWAN("\uD83E\uDDA2".toByteArray(Charsets.UTF_8)), 75 | OWL("\uD83E\uDD89".toByteArray(Charsets.UTF_8)), 76 | FLAMINGO("\uD83E\uDDA9".toByteArray(Charsets.UTF_8)), 77 | PEACOCK("\uD83E\uDD9A".toByteArray(Charsets.UTF_8)), 78 | PARROT("\uD83E\uDD9C".toByteArray(Charsets.UTF_8)), 79 | FROG("\uD83D\uDC38".toByteArray(Charsets.UTF_8)), 80 | CROCODILE("\uD83D\uDC0A".toByteArray(Charsets.UTF_8)), 81 | TURTLE("\uD83D\uDC22".toByteArray(Charsets.UTF_8)), 82 | LIZARD("\uD83E\uDD8E".toByteArray(Charsets.UTF_8)), 83 | SNAKE("\uD83D\uDC0D".toByteArray(Charsets.UTF_8)), 84 | DRAGON_FACE("\uD83D\uDC32".toByteArray(Charsets.UTF_8)), 85 | DRAGON("\uD83D\uDC09".toByteArray(Charsets.UTF_8)), 86 | SAUROPOD("\uD83E\uDD95".toByteArray(Charsets.UTF_8)), 87 | T_REX("\uD83E\uDD96".toByteArray(Charsets.UTF_8)), 88 | SPOUTING_WHALE("\uD83D\uDC33".toByteArray(Charsets.UTF_8)), 89 | WHALE("\uD83D\uDC0B".toByteArray(Charsets.UTF_8)), 90 | DOLPHIN("\uD83D\uDC2C".toByteArray(Charsets.UTF_8)), 91 | FISH("\uD83D\uDC1F".toByteArray(Charsets.UTF_8)), 92 | TROPICAL_FISH("\uD83D\uDC20".toByteArray(Charsets.UTF_8)), 93 | BLOWFISH("\uD83D\uDC21".toByteArray(Charsets.UTF_8)), 94 | SHARK("\uD83E\uDD88".toByteArray(Charsets.UTF_8)), 95 | OCTOPUS("\uD83D\uDC19".toByteArray(Charsets.UTF_8)), 96 | SPIRAL_SHELL("\uD83D\uDC1A".toByteArray(Charsets.UTF_8)), 97 | SNAIL("\uD83D\uDC0C".toByteArray(Charsets.UTF_8)), 98 | BUTTERFLY("\uD83E\uDD8B".toByteArray(Charsets.UTF_8)), 99 | BUG("\uD83D\uDC1B".toByteArray(Charsets.UTF_8)), 100 | ANT("\uD83D\uDC1C".toByteArray(Charsets.UTF_8)), 101 | HONEYBEE("\uD83D\uDC1D".toByteArray(Charsets.UTF_8)), 102 | LADY_BEETLE("\uD83D\uDC1E".toByteArray(Charsets.UTF_8)), 103 | CRICKET("\uD83E\uDD97".toByteArray(Charsets.UTF_8)), 104 | SPIDER("\uD83D\uDD77️".toByteArray(Charsets.UTF_8)), 105 | SPIDER_WEB("\uD83D\uDD78️".toByteArray(Charsets.UTF_8)), 106 | SCORPION("\uD83E\uDD82".toByteArray(Charsets.UTF_8)), 107 | MOSQUITO("\uD83E\uDD9F".toByteArray(Charsets.UTF_8)), 108 | MICROBE("\uD83E\uDDA0".toByteArray(Charsets.UTF_8)), 109 | BOUQUET("\uD83D\uDC90".toByteArray(Charsets.UTF_8)), 110 | CHERRY_BLOSSOM("\uD83C\uDF38".toByteArray(Charsets.UTF_8)), 111 | WHITE_FLOWER("\uD83D\uDCAE".toByteArray(Charsets.UTF_8)), 112 | ROSETTE("\uD83C\uDFF5️".toByteArray(Charsets.UTF_8)), 113 | ROSE("\uD83C\uDF39".toByteArray(Charsets.UTF_8)), 114 | WILTED_FLOWER("\uD83E\uDD40".toByteArray(Charsets.UTF_8)), 115 | HIBISCUS("\uD83C\uDF3A".toByteArray(Charsets.UTF_8)), 116 | SUNFLOWER("\uD83C\uDF3B".toByteArray(Charsets.UTF_8)), 117 | BLOSSOM("\uD83C\uDF3C".toByteArray(Charsets.UTF_8)), 118 | TULIP("\uD83C\uDF37".toByteArray(Charsets.UTF_8)), 119 | SEEDLING("\uD83C\uDF31".toByteArray(Charsets.UTF_8)), 120 | EVERGREEN_TREE("\uD83C\uDF32".toByteArray(Charsets.UTF_8)), 121 | DECIDUOUS_TREE("\uD83C\uDF33".toByteArray(Charsets.UTF_8)), 122 | PALM_TREE("\uD83C\uDF34".toByteArray(Charsets.UTF_8)), 123 | CACTUS("\uD83C\uDF35".toByteArray(Charsets.UTF_8)), 124 | SHEAF_OF_RICE("\uD83C\uDF3E".toByteArray(Charsets.UTF_8)), 125 | HERB("\uD83C\uDF3F".toByteArray(Charsets.UTF_8)), 126 | SHAMROCK("☘".toByteArray(Charsets.UTF_8)), 127 | FOUR_LEAF_CLOVER("\uD83C\uDF40".toByteArray(Charsets.UTF_8)), 128 | MAPLE_LEAF("\uD83C\uDF41".toByteArray(Charsets.UTF_8)), 129 | FALLEN_LEAF("\uD83C\uDF42".toByteArray(Charsets.UTF_8)), 130 | LEAF_FLUTTERING_IN_WIND("\uD83C\uDF43".toByteArray(Charsets.UTF_8)); 131 | } 132 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/java/com/withplum/emojibottomsheetdialog/emoji/categoryUnicodes/CategoryUnicodes.kt: -------------------------------------------------------------------------------- 1 | package com.withplum.emojibottomsheetdialog.emoji.categoryUnicodes 2 | 3 | interface CategoryUnicodes { 4 | val name: String 5 | val unicode: ByteArray 6 | } 7 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/java/com/withplum/emojibottomsheetdialog/emoji/categoryUnicodes/FlagsCategoryUnicodes.kt: -------------------------------------------------------------------------------- 1 | package com.withplum.emojibottomsheetdialog.emoji.categoryUnicodes 2 | 3 | enum class FlagsCategoryUnicodes(override val unicode: ByteArray) : CategoryUnicodes { 4 | FRENCH_POLYNESIA("\uD83C\uDDF5\uD83C\uDDEB".toByteArray(Charsets.UTF_8)), 5 | PAPUA_NEW_GUINEA("\uD83C\uDDF5\uD83C\uDDEC".toByteArray(Charsets.UTF_8)), 6 | PHILIPPINES("\uD83C\uDDF5\uD83C\uDDED".toByteArray(Charsets.UTF_8)), 7 | PAKISTAN("\uD83C\uDDF5\uD83C\uDDF0".toByteArray(Charsets.UTF_8)), 8 | POLAND("\uD83C\uDDF5\uD83C\uDDF1".toByteArray(Charsets.UTF_8)), 9 | ST_PIERRE_AND_MIQUELON("\uD83C\uDDF5\uD83C\uDDF2".toByteArray(Charsets.UTF_8)), 10 | PITCAIRN_ISLANDS("\uD83C\uDDF5\uD83C\uDDF3".toByteArray(Charsets.UTF_8)), 11 | PUERTO_RICO("\uD83C\uDDF5\uD83C\uDDF7".toByteArray(Charsets.UTF_8)), 12 | PALESTINIAN_TERRITORIES("\uD83C\uDDF5\uD83C\uDDF8".toByteArray(Charsets.UTF_8)), 13 | PORTUGAL("\uD83C\uDDF5\uD83C\uDDF9".toByteArray(Charsets.UTF_8)), 14 | PALAU("\uD83C\uDDF5\uD83C\uDDFC".toByteArray(Charsets.UTF_8)), 15 | PARAGUAY("\uD83C\uDDF5\uD83C\uDDFE".toByteArray(Charsets.UTF_8)), 16 | QATAR("\uD83C\uDDF6\uD83C\uDDE6".toByteArray(Charsets.UTF_8)), 17 | REUNION("\uD83C\uDDF7\uD83C\uDDEA".toByteArray(Charsets.UTF_8)), 18 | ROMANIA("\uD83C\uDDF7\uD83C\uDDF4".toByteArray(Charsets.UTF_8)), 19 | SERBIA("\uD83C\uDDF7\uD83C\uDDF8".toByteArray(Charsets.UTF_8)), 20 | RUSSIA("\uD83C\uDDF7\uD83C\uDDFA".toByteArray(Charsets.UTF_8)), 21 | RWANDA("\uD83C\uDDF7\uD83C\uDDFC".toByteArray(Charsets.UTF_8)), 22 | SAUDI_ARABIA("\uD83C\uDDF8\uD83C\uDDE6".toByteArray(Charsets.UTF_8)), 23 | SOLOMON_ISLANDS("\uD83C\uDDF8\uD83C\uDDE7".toByteArray(Charsets.UTF_8)), 24 | SEYCHELLES("\uD83C\uDDF8\uD83C\uDDE8".toByteArray(Charsets.UTF_8)), 25 | SUDAN("\uD83C\uDDF8\uD83C\uDDE9".toByteArray(Charsets.UTF_8)), 26 | SWEDEN("\uD83C\uDDF8\uD83C\uDDEA".toByteArray(Charsets.UTF_8)), 27 | SINGAPORE("\uD83C\uDDF8\uD83C\uDDEC".toByteArray(Charsets.UTF_8)), 28 | ST_HELENA("\uD83C\uDDF8\uD83C\uDDED".toByteArray(Charsets.UTF_8)), 29 | SLOVENIA("\uD83C\uDDF8\uD83C\uDDEE".toByteArray(Charsets.UTF_8)), 30 | SVALBARD_AND_JAN_MAYEN("\uD83C\uDDF8\uD83C\uDDEF".toByteArray(Charsets.UTF_8)), 31 | SLOVAKIA("\uD83C\uDDF8\uD83C\uDDF0".toByteArray(Charsets.UTF_8)), 32 | SIERRA_LEONE("\uD83C\uDDF8\uD83C\uDDF1".toByteArray(Charsets.UTF_8)), 33 | SAN_MARINO("\uD83C\uDDF8\uD83C\uDDF2".toByteArray(Charsets.UTF_8)), 34 | SENEGAL("\uD83C\uDDF8\uD83C\uDDF3".toByteArray(Charsets.UTF_8)), 35 | SOMALIA("\uD83C\uDDF8\uD83C\uDDF4".toByteArray(Charsets.UTF_8)), 36 | SURINAME("\uD83C\uDDF8\uD83C\uDDF7".toByteArray(Charsets.UTF_8)), 37 | SOUTH_SUDAN(" \uD83C\uDDF8\uD83C\uDDF8".toByteArray(Charsets.UTF_8)), 38 | SAO_TOME_AND_PRINCIPE("\uD83C\uDDF8\uD83C\uDDF9".toByteArray(Charsets.UTF_8)), 39 | EL_SALVADOR("\uD83C\uDDF8\uD83C\uDDFB".toByteArray(Charsets.UTF_8)), 40 | SINT_MAARTEN("\uD83C\uDDF8\uD83C\uDDFD".toByteArray(Charsets.UTF_8)), 41 | SYRIA("\uD83C\uDDF8\uD83C\uDDFE".toByteArray(Charsets.UTF_8)), 42 | ESWATINI("\uD83C\uDDF8\uD83C\uDDFF".toByteArray(Charsets.UTF_8)), 43 | TRISTAN_DA_CUNHA("\uD83C\uDDF9\uD83C\uDDE6".toByteArray(Charsets.UTF_8)), 44 | TURKS_AND_CAICOS_ISLANDS("\uD83C\uDDF9\uD83C\uDDE8".toByteArray(Charsets.UTF_8)), 45 | CHAD("\uD83C\uDDF9\uD83C\uDDE9".toByteArray(Charsets.UTF_8)), 46 | FRENCH_SOUTHERN_TERRITORIES("\uD83C\uDDF9\uD83C\uDDEB".toByteArray(Charsets.UTF_8)), 47 | TOGO("\uD83C\uDDF9\uD83C\uDDEC".toByteArray(Charsets.UTF_8)), 48 | THAILAND("\uD83C\uDDF9\uD83C\uDDED".toByteArray(Charsets.UTF_8)), 49 | TAJIKISTAN(" \uD83C\uDDF9\uD83C\uDDEF".toByteArray(Charsets.UTF_8)), 50 | TOKELAU("\uD83C\uDDF9\uD83C\uDDF0".toByteArray(Charsets.UTF_8)), 51 | TIMOR_LESTE("\uD83C\uDDF9\uD83C\uDDF1".toByteArray(Charsets.UTF_8)), 52 | TURKMENISTAN("\uD83C\uDDF9\uD83C\uDDF2".toByteArray(Charsets.UTF_8)), 53 | TUNISIA("\uD83C\uDDF9\uD83C\uDDF3".toByteArray(Charsets.UTF_8)), 54 | TONGA("\uD83C\uDDF9\uD83C\uDDF4".toByteArray(Charsets.UTF_8)), 55 | TURKEY("\uD83C\uDDF9\uD83C\uDDF7".toByteArray(Charsets.UTF_8)), 56 | TRINIDAD_AND_TOBAGO("\uD83C\uDDF9\uD83C\uDDF9".toByteArray(Charsets.UTF_8)), 57 | TUVALU("\uD83C\uDDF9\uD83C\uDDFB".toByteArray(Charsets.UTF_8)), 58 | TAIWAN("\uD83C\uDDF9\uD83C\uDDFC".toByteArray(Charsets.UTF_8)), 59 | TANZANIA(" \uD83C\uDDF9\uD83C\uDDFF".toByteArray(Charsets.UTF_8)), 60 | UKRAINE("\uD83C\uDDFA\uD83C\uDDE6".toByteArray(Charsets.UTF_8)), 61 | UGANDA("\uD83C\uDDFA\uD83C\uDDEC".toByteArray(Charsets.UTF_8)), 62 | US_OUTLYING_ISLANDS("\uD83C\uDDFA\uD83C\uDDF2".toByteArray(Charsets.UTF_8)), 63 | UNITED_NATIONS("\uD83C\uDDFA\uD83C\uDDF3".toByteArray(Charsets.UTF_8)), 64 | UNITED_STATES("\uD83C\uDDFA\uD83C\uDDF8".toByteArray(Charsets.UTF_8)), 65 | URUGUAY("\uD83C\uDDFA\uD83C\uDDFE".toByteArray(Charsets.UTF_8)), 66 | UZBEKISTAN("\uD83C\uDDFA\uD83C\uDDFF".toByteArray(Charsets.UTF_8)), 67 | VATICAN_CITY(" \uD83C\uDDFB\uD83C\uDDE6".toByteArray(Charsets.UTF_8)), 68 | ST_VINCENT_AND_GRENADINES("\uD83C\uDDFB\uD83C\uDDE8".toByteArray(Charsets.UTF_8)), 69 | VENEZUELA("\uD83C\uDDFB\uD83C\uDDEA".toByteArray(Charsets.UTF_8)), 70 | BRITISH_VIRGIN_ISLANDS("\uD83C\uDDFB\uD83C\uDDEC".toByteArray(Charsets.UTF_8)), 71 | US_VIRGIN_ISLANDS("\uD83C\uDDFB\uD83C\uDDEE".toByteArray(Charsets.UTF_8)), 72 | VIETNAM("\uD83C\uDDFB\uD83C\uDDF3".toByteArray(Charsets.UTF_8)), 73 | VANUATU("\uD83C\uDDFB\uD83C\uDDFA".toByteArray(Charsets.UTF_8)), 74 | WALLIS_AND_FUTUNA("\uD83C\uDDFC\uD83C\uDDEB".toByteArray(Charsets.UTF_8)), 75 | SAMOA("\uD83C\uDDFC\uD83C\uDDF8".toByteArray(Charsets.UTF_8)), 76 | KOSOVO("\uD83C\uDDFD\uD83C\uDDF0".toByteArray(Charsets.UTF_8)), 77 | YEMEN("\uD83C\uDDFE\uD83C\uDDEA".toByteArray(Charsets.UTF_8)), 78 | MAYOTTE("\uD83C\uDDFE\uD83C\uDDF9".toByteArray(Charsets.UTF_8)), 79 | SOUTH_AFRICA("\uD83C\uDDFF\uD83C\uDDE6".toByteArray(Charsets.UTF_8)), 80 | ZAMBIA("\uD83C\uDDFF\uD83C\uDDF2".toByteArray(Charsets.UTF_8)), 81 | ZIMBABWE("\uD83C\uDDFF\uD83C\uDDFC".toByteArray(Charsets.UTF_8)), 82 | ENGLAND("\uD83C\uDFF4\uDB40\uDC67󠁢󠁥󠁮󠁧󠁿".toByteArray(Charsets.UTF_8)), 83 | SCOTLAND("\uD83C\uDFF4󠁧󠁢󠁳󠁣󠁴󠁿".toByteArray(Charsets.UTF_8)), 84 | WALES("\uD83C\uDFF4󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 85 | ASCENSION_ISLAND("\uD83C\uDDE6\uD83C\uDDE8󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 86 | ANDORRA("\uD83C\uDDE6\uD83C\uDDE9".toByteArray(Charsets.UTF_8)), 87 | UNITED_ARAB_EMIRATES("\uD83C\uDDE6\uD83C\uDDEA".toByteArray(Charsets.UTF_8)), 88 | AFGHANISTAN("\uD83C\uDDE6\uD83C\uDDEB".toByteArray(Charsets.UTF_8)), 89 | ANTIGUA_AND_BARBUDA("\uD83C\uDDE6\uD83C\uDDEC󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 90 | ANGUILLA("\uD83C\uDDE6\uD83C\uDDEE󠁳󠁿".toByteArray(Charsets.UTF_8)), 91 | ALBANIA("\uD83C\uDDE6\uD83C\uDDF1".toByteArray(Charsets.UTF_8)), 92 | ARMENIA("\uD83C\uDDE6\uD83C\uDDF2󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 93 | ANGOLA("\uD83C\uDDE6\uD83C\uDDF4󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 94 | ANTARCTICA("\uD83C\uDDE6\uD83C\uDDF6󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 95 | ARGENTINA("\uD83C\uDDE6\uD83C\uDDF7󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 96 | AMERICAN_SAMOA("\uD83C\uDDE6\uD83C\uDDF8󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 97 | AUSTRIA("\uD83C\uDDE6\uD83C\uDDF9󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 98 | AUSTRALIA("\uD83C\uDDE6\uD83C\uDDFA\uDB40\uDC67󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 99 | ARUBA("\uD83C\uDDE6\uD83C\uDDFC󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 100 | ALAND_ISLANDS("\uD83C\uDDE6\uD83C\uDDFD󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 101 | AZERBAIJAN("\uD83C\uDDE6\uD83C\uDDFF".toByteArray(Charsets.UTF_8)), 102 | BOSNIA_AND_HERZEGOVINA("\uD83C\uDDE7\uD83C\uDDE6󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 103 | BARBADOS("\uD83C\uDDE7\uD83C\uDDE7󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 104 | BANGLADESH("\uD83C\uDDE7\uD83C\uDDE9󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 105 | BELGIUM("\uD83C\uDDE7\uD83C\uDDEA󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 106 | BURKINA_FASO("\uD83C\uDDE7\uD83C\uDDEB󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 107 | BULGARIA("\uD83C\uDDE7\uD83C\uDDEC󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 108 | BAHRAIN("\uD83C\uDDE7\uD83C\uDDED󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 109 | BURUNDI("\uD83C\uDDE7\uD83C\uDDEE󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 110 | BENIN("\uD83C\uDDE7\uD83C\uDDEF󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 111 | ST_BARTHELEMY("\uD83C\uDDE7\uD83C\uDDF1󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 112 | BERMUDA("\uD83C\uDDE7\uD83C\uDDF2󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 113 | BRUNEI("\uD83C\uDDE7\uD83C\uDDF3󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 114 | BOLIVIA("\uD83C\uDDE7\uD83C\uDDF4󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 115 | CARIBBEAN_NETHERLANDS("\uDB40\uDC67\uD83C\uDDE7\uD83C\uDDF6󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 116 | BRAZIL("\uD83C\uDDE7\uD83C\uDDF7\uDB40\uDC67󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 117 | BAHAMAS("\uD83C\uDDE7\uD83C\uDDF8󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 118 | BHUTAN("\uD83C\uDDE7\uD83C\uDDF9󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 119 | BOUVET_ISLAND("\uD83C\uDDE7\uD83C\uDDFB󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 120 | BOTSWANA("\uD83C\uDDE7\uD83C\uDDFC󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 121 | BELARUS("\uD83C\uDDE7\uD83C\uDDFE\uDB40\uDC67󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 122 | BELIZE("\uD83C\uDDE7\uD83C\uDDFF󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 123 | CANADA("\uD83C\uDDE8\uD83C\uDDE6󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 124 | COCOS_KEELING_ISLANDS("\uD83C\uDDE8\uD83C\uDDE8󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 125 | CONGO_KINSHASA("\uD83C\uDDE8\uD83C\uDDE9󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 126 | CENTRAL_AFRICAN_REPUBLIC("\uD83C\uDDE8\uD83C\uDDEB󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 127 | CONGO_BRAZZAVILLE("\uD83C\uDDE8\uD83C\uDDEC󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 128 | SWITZERLAND("\uD83C\uDDE8\uD83C\uDDED󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 129 | COTE_D_IVOIRE("\uD83C\uDDE8\uD83C\uDDEE󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 130 | COOK_ISLANDS("\uD83C\uDDE8\uD83C\uDDF0󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 131 | CHILE("\uD83C\uDDE8\uD83C\uDDF1󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 132 | CAMEROON("\uD83C\uDDE8\uD83C\uDDF2󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 133 | CHINA("\uD83C\uDDE8\uD83C\uDDF3󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 134 | COLOMBIA("\uD83C\uDDE8\uD83C\uDDF4󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 135 | CLIPPERTON_ISLAND("\uD83C\uDDE8\uD83C\uDDF5󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 136 | COSTA_RICA("\uD83C\uDDE8\uD83C\uDDF7󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 137 | CUBA("\uD83C\uDDE8\uD83C\uDDFA󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 138 | CAPE_VERDE("\uD83C\uDDE8\uD83C\uDDFB󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 139 | CURACAO("\uD83C\uDDE8\uD83C\uDDFC󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 140 | CHRISTMAS_ISLAND("\uD83C\uDDE8\uD83C\uDDFD\uDB40\uDC67󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 141 | CYPRUS("\uD83C\uDDE8\uD83C\uDDFE󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 142 | CZECHIA("\uD83C\uDDE8\uD83C\uDDFF󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 143 | GERMANY("\uD83C\uDDE9\uD83C\uDDEA󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 144 | DIEGO_GARCIA("\uD83C\uDDE9\uD83C\uDDEC󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 145 | DJIBOUTI("\uD83C\uDDE9\uD83C\uDDEF󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 146 | DENMARK("\uD83C\uDDE9\uD83C\uDDF0󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 147 | DOMINICA("\uD83C\uDDE9\uD83C\uDDF2󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 148 | DOMINICAN_REPUBLIC("\uD83C\uDDE9\uD83C\uDDF4󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 149 | ALGERIA("\uD83C\uDDE9\uD83C\uDDFF󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 150 | CEUTA_AND_MELILLA("\uD83C\uDDEA\uD83C\uDDE6󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 151 | ECUADOR("\uD83C\uDDEA\uD83C\uDDE8󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 152 | ESTONIA("\uD83C\uDDEA\uD83C\uDDEA󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 153 | EGYPT("\uD83C\uDDEA\uD83C\uDDEC󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 154 | WESTERN_SAHARA("\uD83C\uDDEA\uD83C\uDDED󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 155 | ERITREA("\uD83C\uDDEA\uD83C\uDDF7󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 156 | SPAIN("\uD83C\uDDEA\uD83C\uDDF8󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 157 | ETHIOPIA("\uD83C\uDDEA\uD83C\uDDF9󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 158 | EUROPEAN_UNION("\uD83C\uDDEA\uD83C\uDDFA󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 159 | FINLAND("\uD83C\uDDEB\uD83C\uDDEE󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 160 | FIJI("\uD83C\uDDEB\uD83C\uDDEF󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 161 | FALKLAND_ISLANDS("\uD83C\uDDEB\uD83C\uDDF0󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 162 | MICRONESIA("\uD83C\uDDEB\uD83C\uDDF2󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 163 | FAROE_ISLANDS("\uD83C\uDDEB\uD83C\uDDF4󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 164 | FRANCE("\uD83C\uDDEB\uD83C\uDDF7󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 165 | GABON("\uD83C\uDDEC\uD83C\uDDE6󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 166 | UNITED_KINGDOM("\uD83C\uDDEC\uD83C\uDDE7󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 167 | GRENADA("\uD83C\uDDEC\uD83C\uDDE9󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 168 | GEORGIA("\uD83C\uDDEC\uD83C\uDDEA󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 169 | FRENCH_GUIANA("\uD83C\uDDEC\uD83C\uDDEB󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 170 | GUERNSEY("\uD83C\uDDEC\uD83C\uDDEC󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 171 | GHANA("\uD83C\uDDEC\uD83C\uDDED󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 172 | GIBRALTAR("\uD83C\uDDEC\uD83C\uDDEE󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 173 | GREENLAND("\uD83C\uDDEC\uD83C\uDDF1󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 174 | GAMBIA("\uD83C\uDDEC\uD83C\uDDF2󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 175 | GUINEA("\uD83C\uDDEC\uD83C\uDDF3󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 176 | GUADELOUPE("\uD83C\uDDEC\uD83C\uDDF5󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 177 | EQUATORIAL_GUINEA("\uDB40\uDC67\uD83C\uDDEC\uD83C\uDDF6󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 178 | GREECE("\uD83C\uDDEC\uD83C\uDDF7󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 179 | SOUTH_GEORGIA_AND_SOUTH_SANDWICH_ISLANDS("\uD83C\uDDEC\uD83C\uDDF8󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 180 | GUATEMALA("\uD83C\uDDEC\uD83C\uDDF9󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 181 | GUAM("\uD83C\uDDEC\uD83C\uDDFA󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 182 | GUINEA_BISSAU("\uD83C\uDDEC\uD83C\uDDFC󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 183 | GUYANA("\uD83C\uDDEC\uD83C\uDDFE󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 184 | HONG_KONG_SAR_CHINA("\uD83C\uDDED\uD83C\uDDF0󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 185 | HEARD_AND_MCDONALD_ISLANDS("\uD83C\uDDED\uD83C\uDDF2󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 186 | HONDURAS("\uD83C\uDDED\uD83C\uDDF3󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 187 | CROATIA("\uD83C\uDDED\uD83C\uDDF7󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 188 | HAITI("\uD83C\uDDED\uD83C\uDDF9󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 189 | HUNGARY("\uD83C\uDDED\uD83C\uDDFA󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 190 | CANARY_ISLANDS("\uD83C\uDDEE\uD83C\uDDE8󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 191 | INDONESIA("\uD83C\uDDEE\uD83C\uDDE9󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 192 | IRELAND("\uD83C\uDDEE\uD83C\uDDEA󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 193 | ISRAEL("\uD83C\uDDEE\uD83C\uDDF1󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 194 | ISLE_OF_MAN("\uD83C\uDDEE\uD83C\uDDF2󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 195 | INDIA("\uD83C\uDDEE\uD83C\uDDF3󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 196 | BRITISH_INDIAN_OCEAN_TERRITORY("\uD83C\uDDEE\uD83C\uDDF4󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 197 | IRAQ("\uD83C\uDDEE\uD83C\uDDF6󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 198 | IRAN("\uD83C\uDDEE\uD83C\uDDF7󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 199 | ICELAND("\uD83C\uDDEE\uD83C\uDDF8󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 200 | ITALY("\uD83C\uDDEE\uD83C\uDDF9󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 201 | JERSEY("\uD83C\uDDEF\uD83C\uDDEA󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 202 | JAMAICA("\uD83C\uDDEF\uD83C\uDDF2󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 203 | JORDAN("\uDB40\uDC67\uD83C\uDDEF\uD83C\uDDF4󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 204 | JAPAN("\uD83C\uDDEF\uD83C\uDDF5\uDB40\uDC67󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 205 | KENYA("\uD83C\uDDF0\uD83C\uDDEA󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 206 | KYRGYZSTAN("\uD83C\uDDF0\uD83C\uDDEC󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 207 | CAMBODIA("\uD83C\uDDF0\uD83C\uDDED󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 208 | KIRIBATI("\uD83C\uDDF0\uD83C\uDDEE󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 209 | COMOROS("\uD83C\uDDF0\uD83C\uDDF2󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 210 | ST_KITTS_AND_NEVIS("\uD83C\uDDF0\uD83C\uDDF3󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 211 | NORTH_KOREA("\uD83C\uDDF0\uD83C\uDDF5\uDB40\uDC67󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 212 | SOUTH_KOREA("\uD83C\uDDF0\uD83C\uDDF7\uDB40\uDC67󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 213 | KUWAIT("\uD83C\uDDF0\uD83C\uDDFC󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 214 | CAYMAN_ISLANDS("\uD83C\uDDF0\uD83C\uDDFE󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 215 | KAZAKHSTAN("\uD83C\uDDF0\uD83C\uDDFF󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 216 | LAOS("\uD83C\uDDF1\uD83C\uDDE6󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 217 | LEBANON("\uD83C\uDDF1\uD83C\uDDE7󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 218 | ST_LUCIA("\uD83C\uDDF1\uD83C\uDDE8󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 219 | LIECHTENSTEIN("\uD83C\uDDF1\uD83C\uDDEE󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 220 | SRI_LANKA("\uD83C\uDDF1\uD83C\uDDF0󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 221 | LIBERIA("\uD83C\uDDF1\uD83C\uDDF7󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 222 | LESOTHO("\uD83C\uDDF1\uD83C\uDDF8󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 223 | LITHUANIA("\uD83C\uDDF1\uD83C\uDDF9󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 224 | LUXEMBOURG("\uDB40\uDC67\uD83C\uDDF1\uD83C\uDDFA󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 225 | LATVIA("\uD83C\uDDF1\uD83C\uDDFB󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 226 | LIBYA("\uD83C\uDDF1\uD83C\uDDFE󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 227 | MOROCCO("\uD83C\uDDF2\uD83C\uDDE6󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 228 | MONACO("\uD83C\uDDF2\uD83C\uDDE8󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 229 | MOLDOVA("\uD83C\uDDF2\uD83C\uDDE9󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 230 | MONTENEGRO("\uD83C\uDDF2\uD83C\uDDEA󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 231 | ST_MARTIN("\uD83C\uDDF2\uD83C\uDDEB󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 232 | MADAGASCAR("\uD83C\uDDF2\uD83C\uDDEC󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 233 | MARSHALL_ISLANDS("\uD83C\uDDF2\uD83C\uDDED󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 234 | NORTH_MACEDONIA("\uD83C\uDDF2\uD83C\uDDF0󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 235 | MALI("\uD83C\uDDF2\uD83C\uDDF1󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 236 | MYANMAR_BURMA("\uD83C\uDDF2\uD83C\uDDF2󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 237 | MONGOLIA("\uD83C\uDDF2\uD83C\uDDF3󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 238 | MACAO_SAR_CHINA("\uD83C\uDDF2\uD83C\uDDF4󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 239 | NORTHERN_MARIANA_ISLANDS("\uD83C\uDDF2\uD83C\uDDF5󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 240 | MARTINIQUE("\uD83C\uDDF2\uD83C\uDDF6󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 241 | MAURITANIA("\uD83C\uDDF2\uD83C\uDDF7󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 242 | MONTSERRAT("\uD83C\uDDF2\uD83C\uDDF8󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 243 | MALTA("\uD83C\uDDF2\uD83C\uDDF9󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 244 | MAURITIUS("\uD83C\uDDF2\uD83C\uDDFA󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 245 | MALDIVES("\uD83C\uDDF2\uD83C\uDDFB󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 246 | MALAWI("\uD83C\uDDF2\uD83C\uDDFC󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 247 | MEXICO("\uD83C\uDDF2\uD83C\uDDFD󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 248 | MALAYSIA("\uD83C\uDDF2\uD83C\uDDFE󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 249 | MOZAMBIQUE("\uD83C\uDDF2\uD83C\uDDFF󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 250 | NAMIBIA("\uD83C\uDDF3\uD83C\uDDE6󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 251 | NEW_CALEDONIA("\uD83C\uDDF3\uD83C\uDDE8󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 252 | NIGER("\uD83C\uDDF3\uD83C\uDDEA󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 253 | NORFOLK_ISLAND("\uD83C\uDDF3\uD83C\uDDEB󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 254 | NIGERIA("\uD83C\uDDF3\uD83C\uDDEC󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 255 | NICARAGUA("\uD83C\uDDF3\uD83C\uDDEE󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 256 | NETHERLANDS("\uD83C\uDDF3\uD83C\uDDF1 󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 257 | NORWAY("\uD83C\uDDF3\uD83C\uDDF4󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 258 | NEPAL("\uD83C\uDDF3\uD83C\uDDF5󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 259 | NAURU("\uD83C\uDDF3\uD83C\uDDF7󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 260 | NIUE("\uD83C\uDDF3\uD83C\uDDFA󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 261 | NEW_ZEALAND("\uD83C\uDDF3\uD83C\uDDFF󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 262 | OMAN("\uD83C\uDDF4\uD83C\uDDF2󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 263 | PANAMA("\uD83C\uDDF5\uD83C\uDDE6󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 264 | PERU("\uD83C\uDDF5\uD83C\uDDEA󠁧󠁢󠁷󠁬󠁳󠁿".toByteArray(Charsets.UTF_8)), 265 | TEXAS_US_TX_("\uD83C\uDFF4\uDB40\uDC75\uDB40\uDC73\uDB40\uDC74\uDB40\uDC78\uDB40\uDC7F".toByteArray(Charsets.UTF_8)); 266 | } 267 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/java/com/withplum/emojibottomsheetdialog/emoji/categoryUnicodes/FoodDrinkCategoryUnicodes.kt: -------------------------------------------------------------------------------- 1 | package com.withplum.emojibottomsheetdialog.emoji.categoryUnicodes 2 | 3 | enum class FoodDrinkCategoryUnicodes(override val unicode: ByteArray) : CategoryUnicodes { 4 | GRAPES("\uD83C\uDF47".toByteArray(Charsets.UTF_8)), 5 | MELON("\uD83C\uDF48".toByteArray(Charsets.UTF_8)), 6 | WATERMELON("\uD83C\uDF49".toByteArray(Charsets.UTF_8)), 7 | TANGERINE("\uD83C\uDF4A".toByteArray(Charsets.UTF_8)), 8 | LEMON("\uD83C\uDF4B".toByteArray(Charsets.UTF_8)), 9 | BANANA("\uD83C\uDF4C".toByteArray(Charsets.UTF_8)), 10 | PINEAPPLE("\uD83C\uDF4D".toByteArray(Charsets.UTF_8)), 11 | CHERRIES("\uD83C\uDF52".toByteArray(Charsets.UTF_8)), 12 | MANGO("\uD83E\uDD6D".toByteArray(Charsets.UTF_8)), 13 | RED_APPLE("\uD83C\uDF4E".toByteArray(Charsets.UTF_8)), 14 | GREEN_APPLE("\uD83C\uDF4F".toByteArray(Charsets.UTF_8)), 15 | PEAR("\uD83C\uDF50".toByteArray(Charsets.UTF_8)), 16 | PEACH("\uD83C\uDF51".toByteArray(Charsets.UTF_8)), 17 | STRAWBERRY("\uD83C\uDF53".toByteArray(Charsets.UTF_8)), 18 | KIWI_FRUIT("\uD83E\uDD5D".toByteArray(Charsets.UTF_8)), 19 | TOMATO("\uD83C\uDF45".toByteArray(Charsets.UTF_8)), 20 | COCONUT("\uD83E\uDD65".toByteArray(Charsets.UTF_8)), 21 | AVOCADO("\uD83E\uDD51".toByteArray(Charsets.UTF_8)), 22 | EGGPLANT("\uD83C\uDF46".toByteArray(Charsets.UTF_8)), 23 | POTATO("\uD83E\uDD54".toByteArray(Charsets.UTF_8)), 24 | CARROT("\uD83E\uDD55".toByteArray(Charsets.UTF_8)), 25 | EAR_OF_CORN("\uD83C\uDF3D".toByteArray(Charsets.UTF_8)), 26 | HOT_PEPPER("\uD83C\uDF36️".toByteArray(Charsets.UTF_8)), 27 | CUCUMBER("\uD83E\uDD52".toByteArray(Charsets.UTF_8)), 28 | LEAFY_GREEN("\uD83E\uDD6C".toByteArray(Charsets.UTF_8)), 29 | BROCCOLI("\uD83E\uDD66".toByteArray(Charsets.UTF_8)), 30 | GARLIC("\uD83E\uDDC4".toByteArray(Charsets.UTF_8)), 31 | ONION("\uD83E\uDDC5".toByteArray(Charsets.UTF_8)), 32 | MUSHROOM("\uD83C\uDF44".toByteArray(Charsets.UTF_8)), 33 | PEANUTS("\uD83E\uDD5C".toByteArray(Charsets.UTF_8)), 34 | CHESTNUT("\uD83C\uDF30".toByteArray(Charsets.UTF_8)), 35 | BREAD("\uD83C\uDF5E".toByteArray(Charsets.UTF_8)), 36 | CROISSANT("\uD83E\uDD50".toByteArray(Charsets.UTF_8)), 37 | BAGUETTE_BREAD("\uD83E\uDD56".toByteArray(Charsets.UTF_8)), 38 | PRETZEL("\uD83E\uDD68".toByteArray(Charsets.UTF_8)), 39 | BAGEL("\uD83E\uDD6F".toByteArray(Charsets.UTF_8)), 40 | PANCAKES("\uD83E\uDD5E".toByteArray(Charsets.UTF_8)), 41 | WAFFLE("\uD83E\uDDC7".toByteArray(Charsets.UTF_8)), 42 | CHEESE_WEDGE("\uD83E\uDDC0".toByteArray(Charsets.UTF_8)), 43 | MEAT_ON_BONE("\uD83C\uDF56".toByteArray(Charsets.UTF_8)), 44 | POUTLRY_LEG("\uD83C\uDF57".toByteArray(Charsets.UTF_8)), 45 | CUT_OF_MEAT("\uD83E\uDD69".toByteArray(Charsets.UTF_8)), 46 | BACON("\uD83E\uDD53".toByteArray(Charsets.UTF_8)), 47 | HAMBURGER("\uD83C\uDF54".toByteArray(Charsets.UTF_8)), 48 | FRENCH_FRIES("\uD83C\uDF5F".toByteArray(Charsets.UTF_8)), 49 | PIZZA("\uD83C\uDF55".toByteArray(Charsets.UTF_8)), 50 | HOT_DOG("\uD83C\uDF2D".toByteArray(Charsets.UTF_8)), 51 | SANDWITCH("\uD83E\uDD6A".toByteArray(Charsets.UTF_8)), 52 | TACO("\uD83C\uDF2E".toByteArray(Charsets.UTF_8)), 53 | BURRITO("\uD83C\uDF2F".toByteArray(Charsets.UTF_8)), 54 | STUFFED_FLATBREAD("\uD83E\uDD59".toByteArray(Charsets.UTF_8)), 55 | FALAFEL("\uD83E\uDDC6".toByteArray(Charsets.UTF_8)), 56 | EGG("\uD83E\uDD5A".toByteArray(Charsets.UTF_8)), 57 | COOKING("\uD83C\uDF73".toByteArray(Charsets.UTF_8)), 58 | SHALLOW_PAN_OF_FOOD("\uD83E\uDD58".toByteArray(Charsets.UTF_8)), 59 | POT_OF_FOOD("\uD83C\uDF72".toByteArray(Charsets.UTF_8)), 60 | BOWL_WITH_SPOON("\uD83E\uDD63".toByteArray(Charsets.UTF_8)), 61 | GREEN_SALAD("\uD83E\uDD57".toByteArray(Charsets.UTF_8)), 62 | POPCORN("\uD83C\uDF7F".toByteArray(Charsets.UTF_8)), 63 | BUTTER("\uD83E\uDDC8".toByteArray(Charsets.UTF_8)), 64 | SALT("\uD83E\uDDC2".toByteArray(Charsets.UTF_8)), 65 | CANNED_FOOD("\uD83E\uDD6B".toByteArray(Charsets.UTF_8)), 66 | BENTO_BOX("\uD83C\uDF71".toByteArray(Charsets.UTF_8)), 67 | RICE_CRACKER("\uD83C\uDF58".toByteArray(Charsets.UTF_8)), 68 | RICE_BALL("\uD83C\uDF59".toByteArray(Charsets.UTF_8)), 69 | COOKED_RICE("\uD83C\uDF5A".toByteArray(Charsets.UTF_8)), 70 | CURRY_RICE("\uD83C\uDF5B".toByteArray(Charsets.UTF_8)), 71 | STEAMING_BOWL("\uD83C\uDF5C".toByteArray(Charsets.UTF_8)), 72 | SPAGHETTI("\uD83C\uDF5D".toByteArray(Charsets.UTF_8)), 73 | ROASTED_SWEET_POTATO("\uD83C\uDF60".toByteArray(Charsets.UTF_8)), 74 | ODEN("\uD83C\uDF62".toByteArray(Charsets.UTF_8)), 75 | SUSHI("\uD83C\uDF63".toByteArray(Charsets.UTF_8)), 76 | FRIED_SHRIMP("\uD83C\uDF64".toByteArray(Charsets.UTF_8)), 77 | FISH_CAKE_WITH_SWIRL("\uD83C\uDF65".toByteArray(Charsets.UTF_8)), 78 | MOON_CAKE("\uD83E\uDD6E".toByteArray(Charsets.UTF_8)), 79 | DANGO("\uD83C\uDF61".toByteArray(Charsets.UTF_8)), 80 | DUMPLING("\uD83E\uDD5F".toByteArray(Charsets.UTF_8)), 81 | FORTUNE_COOKIE("\uD83E\uDD60".toByteArray(Charsets.UTF_8)), 82 | TAKEOUT_BOX("\uD83E\uDD61".toByteArray(Charsets.UTF_8)), 83 | CRAB("\uD83E\uDD80".toByteArray(Charsets.UTF_8)), 84 | LOBSTER("\uD83E\uDD9E".toByteArray(Charsets.UTF_8)), 85 | SHRIMP("\uD83E\uDD90".toByteArray(Charsets.UTF_8)), 86 | SQUID("\uD83E\uDD91".toByteArray(Charsets.UTF_8)), 87 | OYSTER("\uD83E\uDDAA".toByteArray(Charsets.UTF_8)), 88 | SOFT_ICE_CREAM("\uD83C\uDF66".toByteArray(Charsets.UTF_8)), 89 | SHAVE_ICE("\uD83C\uDF67".toByteArray(Charsets.UTF_8)), 90 | ICE_CREAM("\uD83C\uDF68".toByteArray(Charsets.UTF_8)), 91 | DOUGHNUT("\uD83C\uDF69".toByteArray(Charsets.UTF_8)), 92 | COOKIE("\uD83C\uDF6A".toByteArray(Charsets.UTF_8)), 93 | BIRTHDAY_CAKE("\uD83C\uDF82".toByteArray(Charsets.UTF_8)), 94 | SHORTCAKE("\uD83C\uDF70".toByteArray(Charsets.UTF_8)), 95 | CUPCAKE("\uD83E\uDDC1".toByteArray(Charsets.UTF_8)), 96 | PIE("\uD83E\uDD67".toByteArray(Charsets.UTF_8)), 97 | CHOCOLATE_BAR("\uD83C\uDF6B".toByteArray(Charsets.UTF_8)), 98 | CANDY("\uD83C\uDF6C".toByteArray(Charsets.UTF_8)), 99 | LOLLIPOP("\uD83C\uDF6D".toByteArray(Charsets.UTF_8)), 100 | CUSTARD("\uD83C\uDF6E".toByteArray(Charsets.UTF_8)), 101 | HONEY_POT("\uD83C\uDF6F".toByteArray(Charsets.UTF_8)), 102 | BABY_BOTTLE("\uD83C\uDF7C".toByteArray(Charsets.UTF_8)), 103 | GLASS_OF_MIL("\uD83E\uDD5B".toByteArray(Charsets.UTF_8)), 104 | HOT_BEVERAGE("☕".toByteArray(Charsets.UTF_8)), 105 | TEACUP_WITHOUT_HANDLE("\uD83C\uDF75".toByteArray(Charsets.UTF_8)), 106 | SAKE("\uD83C\uDF76".toByteArray(Charsets.UTF_8)), 107 | BOTTLE_WITH_POPPING_CORK("\uD83C\uDF7E".toByteArray(Charsets.UTF_8)), 108 | WINE_GLASS("\uD83C\uDF77".toByteArray(Charsets.UTF_8)), 109 | COCKTAIL_GLASS("\uD83C\uDF78".toByteArray(Charsets.UTF_8)), 110 | TROPICAL_DRINK("\uD83C\uDF79".toByteArray(Charsets.UTF_8)), 111 | BEER_MUG("\uD83C\uDF7A".toByteArray(Charsets.UTF_8)), 112 | CLINKING_BEER_MUGS("\uD83C\uDF7B".toByteArray(Charsets.UTF_8)), 113 | CLINKING_GLASSES("\uD83E\uDD42".toByteArray(Charsets.UTF_8)), 114 | TUMBLER_GLASS("\uD83E\uDD43".toByteArray(Charsets.UTF_8)), 115 | CUP_WITH_STRAW("\uD83E\uDD64".toByteArray(Charsets.UTF_8)), 116 | BEVERAGE_BOX("\uD83E\uDDC3".toByteArray(Charsets.UTF_8)), 117 | MATE("\uD83E\uDDC9".toByteArray(Charsets.UTF_8)), 118 | ICE("\uD83E\uDDCA".toByteArray(Charsets.UTF_8)), 119 | CHOPSTICKS("\uD83E\uDD62".toByteArray(Charsets.UTF_8)), 120 | FORK_AND_KNIFE_WITH_PLATE("\uD83C\uDF7D️".toByteArray(Charsets.UTF_8)), 121 | FORK_AND_KNIFE("\uD83C\uDF74".toByteArray(Charsets.UTF_8)), 122 | SPOON("\uD83E\uDD44".toByteArray(Charsets.UTF_8)), 123 | KITCHEN_KNIFE("\uD83D\uDD2A".toByteArray(Charsets.UTF_8)), 124 | AMPHORA("\uD83C\uDFFA".toByteArray(Charsets.UTF_8)); 125 | } 126 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/java/com/withplum/emojibottomsheetdialog/emoji/categoryUnicodes/ObjectsCategoryUnicodes.kt: -------------------------------------------------------------------------------- 1 | package com.withplum.emojibottomsheetdialog.emoji.categoryUnicodes 2 | 3 | enum class ObjectsCategoryUnicodes(override val unicode: ByteArray) : CategoryUnicodes { 4 | GLASSES("\uD83D\uDC53".toByteArray(Charsets.UTF_8)), 5 | SUNGLASSES("\uD83D\uDD76️".toByteArray(Charsets.UTF_8)), 6 | GOGGLES("\uD83E\uDD7D".toByteArray(Charsets.UTF_8)), 7 | LAB_COAT("\uD83E\uDD7C".toByteArray(Charsets.UTF_8)), 8 | SAFETY_VEST("\uD83E\uDDBA".toByteArray(Charsets.UTF_8)), 9 | NECKTIE("\uD83D\uDC54".toByteArray(Charsets.UTF_8)), 10 | TSHIRT("\uD83D\uDC55".toByteArray(Charsets.UTF_8)), 11 | JEANS("\uD83D\uDC56".toByteArray(Charsets.UTF_8)), 12 | SCARF("\uD83E\uDDE3".toByteArray(Charsets.UTF_8)), 13 | GLOVES("\uD83E\uDDE4".toByteArray(Charsets.UTF_8)), 14 | COAT("\uD83E\uDDE5".toByteArray(Charsets.UTF_8)), 15 | SOCKS("\uD83E\uDDE6".toByteArray(Charsets.UTF_8)), 16 | DRESS("\uD83D\uDC57".toByteArray(Charsets.UTF_8)), 17 | KIMONO("\uD83D\uDC58".toByteArray(Charsets.UTF_8)), 18 | SARI("\uD83E\uDD7B".toByteArray(Charsets.UTF_8)), 19 | ONE_PIECE_SWIMSUIT("\uD83E\uDE71".toByteArray(Charsets.UTF_8)), 20 | BRIEFS("\uD83E\uDE72".toByteArray(Charsets.UTF_8)), 21 | SHORTS("\uD83E\uDE73".toByteArray(Charsets.UTF_8)), 22 | BIKINI("\uD83D\uDC59".toByteArray(Charsets.UTF_8)), 23 | WOMANS_CLOTHES("\uD83D\uDC5A".toByteArray(Charsets.UTF_8)), 24 | PURSE("\uD83D\uDC5B".toByteArray(Charsets.UTF_8)), 25 | HANDBAG("\uD83D\uDC5C".toByteArray(Charsets.UTF_8)), 26 | CLUTCH_BAG("\uD83D\uDC5D".toByteArray(Charsets.UTF_8)), 27 | SHOPPING_BAGS("\uD83D\uDECD️".toByteArray(Charsets.UTF_8)), 28 | BACKPACK("\uD83C\uDF92".toByteArray(Charsets.UTF_8)), 29 | MANS_SHOE("\uD83D\uDC5E".toByteArray(Charsets.UTF_8)), 30 | RUNNING_SHOE("\uD83D\uDC5F".toByteArray(Charsets.UTF_8)), 31 | FLAT_SHOE("🥿".toByteArray(Charsets.UTF_8)), 32 | HIGH_HEELED_SHOE("👠".toByteArray(Charsets.UTF_8)), 33 | WOMANS_SANDAL("👡".toByteArray(Charsets.UTF_8)), 34 | BALLET_SHOES("🩰".toByteArray(Charsets.UTF_8)), 35 | WOMANS_BOOT("👢".toByteArray(Charsets.UTF_8)), 36 | CROWN("👑".toByteArray(Charsets.UTF_8)), 37 | WOMANS_HAT("👒".toByteArray(Charsets.UTF_8)), 38 | TOP_HAT("🎩".toByteArray(Charsets.UTF_8)), 39 | GRADUATION_CAP("🎓".toByteArray(Charsets.UTF_8)), 40 | BILLED_CAP("🧢".toByteArray(Charsets.UTF_8)), 41 | RESCUE_WORKERS_HELMET("⛑️".toByteArray(Charsets.UTF_8)), 42 | PRAYER_BEADS("📿".toByteArray(Charsets.UTF_8)), 43 | LIPSTICK("💄".toByteArray(Charsets.UTF_8)), 44 | RING("💍".toByteArray(Charsets.UTF_8)), 45 | GEM_STONE("💎".toByteArray(Charsets.UTF_8)), 46 | MUTED_SPEAKER("🔇".toByteArray(Charsets.UTF_8)), 47 | SPEAKER_LOW_VOLUME("🔈".toByteArray(Charsets.UTF_8)), 48 | SPEAKER_MEDIUM_VOLUME("🔉".toByteArray(Charsets.UTF_8)), 49 | SPEAKER_HIGH_VOLUME("🔊".toByteArray(Charsets.UTF_8)), 50 | LOUDSPEAKER("📢".toByteArray(Charsets.UTF_8)), 51 | MEGAPHONE("📣".toByteArray(Charsets.UTF_8)), 52 | POSTAL_HORN("📯".toByteArray(Charsets.UTF_8)), 53 | BELL("🔔".toByteArray(Charsets.UTF_8)), 54 | BELL_WITH_SLASH("🔕".toByteArray(Charsets.UTF_8)), 55 | MUSICAL_SCORE("🎼".toByteArray(Charsets.UTF_8)), 56 | MUSICAL_NOTE("🎵".toByteArray(Charsets.UTF_8)), 57 | MUSICAL_NOTES("🎶".toByteArray(Charsets.UTF_8)), 58 | STUDIO_MICROPHONE("🎙️".toByteArray(Charsets.UTF_8)), 59 | LEVEL_SLIDER("🎚️".toByteArray(Charsets.UTF_8)), 60 | CONTROL_KNOBS("🎛️".toByteArray(Charsets.UTF_8)), 61 | MICROPHONE("🎤".toByteArray(Charsets.UTF_8)), 62 | HEADPHONE("🎧".toByteArray(Charsets.UTF_8)), 63 | RADIO("📻".toByteArray(Charsets.UTF_8)), 64 | SAXOPHONE("🎷".toByteArray(Charsets.UTF_8)), 65 | GUITAR("🎸".toByteArray(Charsets.UTF_8)), 66 | MUSICAL_KEYBOARD("🎹".toByteArray(Charsets.UTF_8)), 67 | TRUMPET("🎺".toByteArray(Charsets.UTF_8)), 68 | VIOLIN("🎻".toByteArray(Charsets.UTF_8)), 69 | BANJO("🪕".toByteArray(Charsets.UTF_8)), 70 | DRUM("🥁".toByteArray(Charsets.UTF_8)), 71 | MOBILE_PHONE("📱".toByteArray(Charsets.UTF_8)), 72 | MOBILE_PHONE_WITH_ARROW("📲".toByteArray(Charsets.UTF_8)), 73 | TELEPHONE("☎️".toByteArray(Charsets.UTF_8)), 74 | TELEPHONE_RECEIVER("📞".toByteArray(Charsets.UTF_8)), 75 | PAGER("📟".toByteArray(Charsets.UTF_8)), 76 | FAX_MACHINE("📠".toByteArray(Charsets.UTF_8)), 77 | BATTERY("🔋".toByteArray(Charsets.UTF_8)), 78 | ELECTRIC_PLUG("🔌".toByteArray(Charsets.UTF_8)), 79 | LAPTOP_COMPUTER("💻".toByteArray(Charsets.UTF_8)), 80 | DESKTOP_COMPUTER("🖥️".toByteArray(Charsets.UTF_8)), 81 | PRINTER("🖨️".toByteArray(Charsets.UTF_8)), 82 | KEYBOARD("⌨️".toByteArray(Charsets.UTF_8)), 83 | COMPUTER_MOUSE("🖱️".toByteArray(Charsets.UTF_8)), 84 | TRACKBALL("🖲".toByteArray(Charsets.UTF_8)), 85 | COMPUTER_DISK("💽".toByteArray(Charsets.UTF_8)), 86 | FLOPPY_DISK("💾".toByteArray(Charsets.UTF_8)), 87 | OPTICAL_DISK("💿".toByteArray(Charsets.UTF_8)), 88 | DVD("📀".toByteArray(Charsets.UTF_8)), 89 | ABACUS("🧮".toByteArray(Charsets.UTF_8)), 90 | MOVIE_CAMERA("🎥".toByteArray(Charsets.UTF_8)), 91 | FILM_FRAMES("🎞️".toByteArray(Charsets.UTF_8)), 92 | FILM_PROJECTOR("️📽".toByteArray(Charsets.UTF_8)), 93 | CLAPPER_BOARD("🎬".toByteArray(Charsets.UTF_8)), 94 | TELEVISION("📺".toByteArray(Charsets.UTF_8)), 95 | CAMERA("📷".toByteArray(Charsets.UTF_8)), 96 | CAMERA_WITH_FLASH("📸".toByteArray(Charsets.UTF_8)), 97 | VIDEO_CAMERA("📹".toByteArray(Charsets.UTF_8)), 98 | VIDEOCASSETTE("📼".toByteArray(Charsets.UTF_8)), 99 | MAGNIFYING_GLASS_TILTED_LEFT("🔍".toByteArray(Charsets.UTF_8)), 100 | MAGNIFYING_GLASS_TILTED_RIGHT("🔎".toByteArray(Charsets.UTF_8)), 101 | CANDLE("🕯".toByteArray(Charsets.UTF_8)), 102 | LIGHT_BULB("💡".toByteArray(Charsets.UTF_8)), 103 | FLASHLIGHT("🔦".toByteArray(Charsets.UTF_8)), 104 | RED_PAPER_LANTERN("🏮".toByteArray(Charsets.UTF_8)), 105 | DIYA_LAMP("🪔".toByteArray(Charsets.UTF_8)), 106 | NOTEBOOK_WITH_DECORATIVE_COVER("📔".toByteArray(Charsets.UTF_8)), 107 | CLOSED_BOOK("📕".toByteArray(Charsets.UTF_8)), 108 | OPEN_BOOK("📖".toByteArray(Charsets.UTF_8)), 109 | GREEN_BOOK("📗".toByteArray(Charsets.UTF_8)), 110 | BLUE_BOOK("📘".toByteArray(Charsets.UTF_8)), 111 | ORANGE_BOOK("📙".toByteArray(Charsets.UTF_8)), 112 | BOOKS("📚".toByteArray(Charsets.UTF_8)), 113 | NOTEBOOK("📓".toByteArray(Charsets.UTF_8)), 114 | LEDGER("📒".toByteArray(Charsets.UTF_8)), 115 | PAGE_WITH_CURL("📃".toByteArray(Charsets.UTF_8)), 116 | SCROLL("📜".toByteArray(Charsets.UTF_8)), 117 | PAGE_FACING_UP("📄".toByteArray(Charsets.UTF_8)), 118 | NEWSPAPER("📰".toByteArray(Charsets.UTF_8)), 119 | ROLLED_UP_NEWSPAPER("🗞️".toByteArray(Charsets.UTF_8)), 120 | BOOKMARK_TABS("v".toByteArray(Charsets.UTF_8)), 121 | BOOKMARK("🔖".toByteArray(Charsets.UTF_8)), 122 | LABEL("🏷️".toByteArray(Charsets.UTF_8)), 123 | MONEY_BAG("💰".toByteArray(Charsets.UTF_8)), 124 | YEN_BANKNOTE("💴".toByteArray(Charsets.UTF_8)), 125 | DOLLAR_BANKNOTE("💵".toByteArray(Charsets.UTF_8)), 126 | EURO_BANKNOTE("💶".toByteArray(Charsets.UTF_8)), 127 | POUND_BANKNOTE("💷".toByteArray(Charsets.UTF_8)), 128 | MONEY_WITH_WINGS("💸".toByteArray(Charsets.UTF_8)), 129 | CREDIT_CARD("💳".toByteArray(Charsets.UTF_8)), 130 | RECEIPT("🧾".toByteArray(Charsets.UTF_8)), 131 | CHART_INCREASING_WITH_YEN("💹".toByteArray(Charsets.UTF_8)), 132 | CURRENCY_EXCHANGE("💱".toByteArray(Charsets.UTF_8)), 133 | HEAVY_DOLLAR_SIGN("💲".toByteArray(Charsets.UTF_8)), 134 | ENVELOPE("✉".toByteArray(Charsets.UTF_8)), 135 | EMAIL("📧".toByteArray(Charsets.UTF_8)), 136 | INCOMING_ENVELOPE("📨".toByteArray(Charsets.UTF_8)), 137 | ENVELOPE_WITH_ARROW("📩".toByteArray(Charsets.UTF_8)), 138 | OUTBOX_TRAY("📤".toByteArray(Charsets.UTF_8)), 139 | INBOX_TRAY("📥".toByteArray(Charsets.UTF_8)), 140 | PACKAGE("📦".toByteArray(Charsets.UTF_8)), 141 | CLOSED_MAILBOX_WITH_RAISED_FLAG("📫".toByteArray(Charsets.UTF_8)), 142 | CLOSED_MAILBOX_WITH_LOWERED_FLAG("📪".toByteArray(Charsets.UTF_8)), 143 | OPEN_MAILBOX_WITH_RAISED_FLAG("📬".toByteArray(Charsets.UTF_8)), 144 | OPEN_MAILBOX_WITH_LOWERED_FLAG("📭".toByteArray(Charsets.UTF_8)), 145 | POSTBOX("📮".toByteArray(Charsets.UTF_8)), 146 | BALLOT_BOX_WITH_BALLOT("🗿🗳️".toByteArray(Charsets.UTF_8)), 147 | PENCIL("✏".toByteArray(Charsets.UTF_8)), 148 | BLACK_NIB("✒".toByteArray(Charsets.UTF_8)), 149 | FOUNTAIN_PEN("🖋️".toByteArray(Charsets.UTF_8)), 150 | PEN("🖊️".toByteArray(Charsets.UTF_8)), 151 | PAINTBRUSH("🖌️".toByteArray(Charsets.UTF_8)), 152 | CRAYON("🖍️".toByteArray(Charsets.UTF_8)), 153 | MEMO("📝".toByteArray(Charsets.UTF_8)), 154 | BRIEFCASE("💼".toByteArray(Charsets.UTF_8)), 155 | FILE_FOLDER("📁".toByteArray(Charsets.UTF_8)), 156 | OPEN_FILE_FOLDER("📂".toByteArray(Charsets.UTF_8)), 157 | CARD_INDEX_DIVIDERS("🗂".toByteArray(Charsets.UTF_8)), 158 | CALENDAR("📅".toByteArray(Charsets.UTF_8)), 159 | TEAR_OFF_CALENDAR("📆".toByteArray(Charsets.UTF_8)), 160 | SPIRAL_NOTEPAD("🗒️".toByteArray(Charsets.UTF_8)), 161 | SPIRAL_CALENDAR("🗓".toByteArray(Charsets.UTF_8)), 162 | CARD_INDEX("📇".toByteArray(Charsets.UTF_8)), 163 | CHART_INCREASING("📈".toByteArray(Charsets.UTF_8)), 164 | CHART_DECREASING("📉".toByteArray(Charsets.UTF_8)), 165 | BAR_CHART("📊".toByteArray(Charsets.UTF_8)), 166 | CLIPBOARD("📋".toByteArray(Charsets.UTF_8)), 167 | PUSHPIN("📌".toByteArray(Charsets.UTF_8)), 168 | ROUND_PUSHPIN("📍".toByteArray(Charsets.UTF_8)), 169 | PAPERCLIP("📎".toByteArray(Charsets.UTF_8)), 170 | LINKED_PAPERCLIPS("🖇️".toByteArray(Charsets.UTF_8)), 171 | STRAIGHT_RULER("📏".toByteArray(Charsets.UTF_8)), 172 | TRIANGULAR_RULER("📐".toByteArray(Charsets.UTF_8)), 173 | SCISSORS("✂️".toByteArray(Charsets.UTF_8)), 174 | CARD_FILE_BOX("🗃️".toByteArray(Charsets.UTF_8)), 175 | FILE_CABINET("🗄".toByteArray(Charsets.UTF_8)), 176 | WASTEBASKET("🗑️".toByteArray(Charsets.UTF_8)), 177 | LOCKED("🔒".toByteArray(Charsets.UTF_8)), 178 | UNLOCKED("🔓".toByteArray(Charsets.UTF_8)), 179 | LOCKED_WITH_PEN("🔏".toByteArray(Charsets.UTF_8)), 180 | LOCKED_WITH_KEY("🔐".toByteArray(Charsets.UTF_8)), 181 | KEY("🔑".toByteArray(Charsets.UTF_8)), 182 | OLD_KEY("🗝️".toByteArray(Charsets.UTF_8)), 183 | HAMMER("🔨".toByteArray(Charsets.UTF_8)), 184 | AXE("🪓".toByteArray(Charsets.UTF_8)), 185 | PICK("⛏".toByteArray(Charsets.UTF_8)), 186 | HAMMER_AND_PICK("⚒".toByteArray(Charsets.UTF_8)), 187 | HAMMER_AND_WRENCH("🛠️".toByteArray(Charsets.UTF_8)), 188 | DAGGER("🗡️".toByteArray(Charsets.UTF_8)), 189 | CROSSED_SWORDS("⚔️".toByteArray(Charsets.UTF_8)), 190 | PISTOL("🔫".toByteArray(Charsets.UTF_8)), 191 | BOW_AND_ARROW("🏹".toByteArray(Charsets.UTF_8)), 192 | SHIELD("🛡".toByteArray(Charsets.UTF_8)), 193 | WRENCH("🔧".toByteArray(Charsets.UTF_8)), 194 | NUT_AND_BOLT("🔩".toByteArray(Charsets.UTF_8)), 195 | GEAR("⚙".toByteArray(Charsets.UTF_8)), 196 | CLAMP("🗜️".toByteArray(Charsets.UTF_8)), 197 | BALANCE_SCALE("⚖️".toByteArray(Charsets.UTF_8)), 198 | PROBING_CANE("🦯".toByteArray(Charsets.UTF_8)), 199 | LINK("🔗".toByteArray(Charsets.UTF_8)), 200 | CHAINS("⛓️".toByteArray(Charsets.UTF_8)), 201 | TOOLBOX("🧰".toByteArray(Charsets.UTF_8)), 202 | MAGNET("🧲".toByteArray(Charsets.UTF_8)), 203 | ALEMBIC("⚗".toByteArray(Charsets.UTF_8)), 204 | TEST_TUBE("🧪".toByteArray(Charsets.UTF_8)), 205 | PETRI_DISH("🧫".toByteArray(Charsets.UTF_8)), 206 | DNA("🧬".toByteArray(Charsets.UTF_8)), 207 | MICROSCOPE("🔬".toByteArray(Charsets.UTF_8)), 208 | TELESCOPE("🔭".toByteArray(Charsets.UTF_8)), 209 | SATELLITE_ANTENNA("📡".toByteArray(Charsets.UTF_8)), 210 | SYRINGE("💉".toByteArray(Charsets.UTF_8)), 211 | DROP_OF_BLOOD("🩸".toByteArray(Charsets.UTF_8)), 212 | PILL("💊".toByteArray(Charsets.UTF_8)), 213 | ADHESIVE_BANDAGE("🩹".toByteArray(Charsets.UTF_8)), 214 | STETHOSCOPE("🩺".toByteArray(Charsets.UTF_8)), 215 | DOOR("🚪".toByteArray(Charsets.UTF_8)), 216 | BED("🛏️".toByteArray(Charsets.UTF_8)), 217 | COUCH_AND_LAMP("🛋️".toByteArray(Charsets.UTF_8)), 218 | CHAIR("🪑".toByteArray(Charsets.UTF_8)), 219 | TOILET("🚽".toByteArray(Charsets.UTF_8)), 220 | SHOWER("🚿".toByteArray(Charsets.UTF_8)), 221 | BATHTUB("🛁".toByteArray(Charsets.UTF_8)), 222 | RAZOR("🪒".toByteArray(Charsets.UTF_8)), 223 | LOTION_BOTTLE("🧴".toByteArray(Charsets.UTF_8)), 224 | SAFETY_PIN("🧷".toByteArray(Charsets.UTF_8)), 225 | BROOM("🧹".toByteArray(Charsets.UTF_8)), 226 | BASKET("🧺".toByteArray(Charsets.UTF_8)), 227 | ROLL_OF_PAPER("🧻".toByteArray(Charsets.UTF_8)), 228 | SOAP("🧼".toByteArray(Charsets.UTF_8)), 229 | SPONGE("🧽".toByteArray(Charsets.UTF_8)), 230 | FIRE_EXTINGUISHER("🧯".toByteArray(Charsets.UTF_8)), 231 | SHOPPING_CART("🛒".toByteArray(Charsets.UTF_8)), 232 | CIGARETTE("🚬".toByteArray(Charsets.UTF_8)), 233 | COFFIN("⚰️".toByteArray(Charsets.UTF_8)), 234 | FUNERAL_URN("⚱️".toByteArray(Charsets.UTF_8)), 235 | MOAI("🗿".toByteArray(Charsets.UTF_8)), 236 | HIKING_BOOT("🥾".toByteArray(Charsets.UTF_8)); 237 | } 238 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/java/com/withplum/emojibottomsheetdialog/emoji/categoryUnicodes/SmileysPeopleCategoryUnicodes.kt: -------------------------------------------------------------------------------- 1 | package com.withplum.emojibottomsheetdialog.emoji.categoryUnicodes 2 | 3 | enum class SmileysPeopleCategoryUnicodes(override val unicode: ByteArray) : CategoryUnicodes { 4 | GRINNING_FACE("\uD83D\uDE00".toByteArray(Charsets.UTF_8)), 5 | GRINNING_FACE_WITH_BIG_EYES("\uD83D\uDE03".toByteArray(Charsets.UTF_8)), 6 | GRINNING_FACE_WITH_SMILING("\uD83D\uDE04".toByteArray(Charsets.UTF_8)), 7 | GRINNING_SQUINTING_FACE("\uD83D\uDE06".toByteArray(Charsets.UTF_8)), 8 | GRINNING_FACE_WITH_SWEAT("\uD83D\uDE05".toByteArray(Charsets.UTF_8)), 9 | ROLLING_ON_THE_FLOOR_LAUGHING("\uD83E\uDD23".toByteArray(Charsets.UTF_8)), 10 | FACE_WITH_TEARS_OF_JOY("\uD83D\uDE02".toByteArray(Charsets.UTF_8)), 11 | SLIGHTLY_SMILING_FACE("\uD83D\uDE42".toByteArray(Charsets.UTF_8)), 12 | UPSIDE_DOWN_FACE("\uD83D\uDE43".toByteArray(Charsets.UTF_8)), 13 | WINKING_FACE("\uD83D\uDE09".toByteArray(Charsets.UTF_8)), 14 | SMILING_FACE_WITH_SMILING_EYES("\uD83D\uDE0A".toByteArray(Charsets.UTF_8)), 15 | SMILING_FACE_WITH_HALO("\uD83D\uDE04".toByteArray(Charsets.UTF_8)), 16 | SMILING_FACE_WITH_HEARTS("\uD83E\uDD70".toByteArray(Charsets.UTF_8)), 17 | SMILING_FACE_WITH_HEART_EYES("\uD83D\uDE0D".toByteArray(Charsets.UTF_8)), 18 | STAR_STRUCK("\uD83E\uDD29".toByteArray(Charsets.UTF_8)), 19 | FACE_BLOWING_A_KISS("\uD83D\uDE18".toByteArray(Charsets.UTF_8)), 20 | KISSING_FACE("\uD83D\uDE17".toByteArray(Charsets.UTF_8)), 21 | SMILING_FACE("☺️".toByteArray(Charsets.UTF_8)), 22 | KISSING_FACE_WITH_CLOSED_EYES("\uD83D\uDE1A".toByteArray(Charsets.UTF_8)), 23 | KISSING_FACE_WITH_SMILING_EYES("\uD83D\uDE19".toByteArray(Charsets.UTF_8)), 24 | FACE_SAVORING_FOOD("\uD83D\uDE04".toByteArray(Charsets.UTF_8)), 25 | FACE_WITH_TONGUE("\uD83D\uDE1B".toByteArray(Charsets.UTF_8)), 26 | WINKING_FACE_WITH_TONGUE("\uD83D\uDE1C".toByteArray(Charsets.UTF_8)), 27 | ZANY_FACE("\uD83E\uDD2A".toByteArray(Charsets.UTF_8)), 28 | SQUINTING_FACE_WITH_TONGUE("\uD83D\uDE1D".toByteArray(Charsets.UTF_8)), 29 | MONEY_MOUTH_FACE("\uD83E\uDD11".toByteArray(Charsets.UTF_8)), 30 | HUGGING_FACE("\uD83E\uDD17️️".toByteArray(Charsets.UTF_8)), 31 | FACE_WITH_HAND_OVER_MOUTH("\uD83E\uDD2D️️".toByteArray(Charsets.UTF_8)), 32 | SHUSHING_FACE("\uD83E\uDD2B️️".toByteArray(Charsets.UTF_8)), 33 | THINKING_FACE("\uD83E\uDD14️️".toByteArray(Charsets.UTF_8)), 34 | ZIPPER_MOUTH_FACE("\uD83E\uDD10️️".toByteArray(Charsets.UTF_8)), 35 | FACE_WITH_RAISED_EYEBROW("\uD83E\uDD28️".toByteArray(Charsets.UTF_8)), 36 | EXPRESSIONLESS_FACE("\uD83D\uDE11".toByteArray(Charsets.UTF_8)), 37 | WAVING_HAND("\uD83D\uDC4B".toByteArray(Charsets.UTF_8)), 38 | RAISED_BACK_OF_HAND("\uD83E\uDD1A".toByteArray(Charsets.UTF_8)), 39 | HAND_WITH_FINGERS_SPLAYED("\uD83D\uDD90️".toByteArray(Charsets.UTF_8)), 40 | RAISED_HAND("✋".toByteArray(Charsets.UTF_8)), 41 | VULCAN_SALUTE("\uD83D\uDD96".toByteArray(Charsets.UTF_8)), 42 | OK_HAND("\uD83D\uDC4C".toByteArray(Charsets.UTF_8)), 43 | PINCHING_HAND("\uD83E\uDD0F".toByteArray(Charsets.UTF_8)), 44 | VICTORY_HAND("✌️".toByteArray(Charsets.UTF_8)), 45 | CROSSED_FINGERS("\uD83E\uDD1E".toByteArray(Charsets.UTF_8)), 46 | LOVE_YOU_FINGERS("\uD83E\uDD1F".toByteArray(Charsets.UTF_8)), 47 | SIGN_OF_THE_HORNS("\uD83E\uDD18".toByteArray(Charsets.UTF_8)), 48 | CALL_ME_HAND("\uD83E\uDD19".toByteArray(Charsets.UTF_8)), 49 | BACKHAND_INDEX_POINTING_LEFT("\uD83D\uDC48".toByteArray(Charsets.UTF_8)), 50 | BACKHAND_INDEX_POINTING_RIGHT("\uD83D\uDC49".toByteArray(Charsets.UTF_8)), 51 | BACKHAND_INDEX_POINTING_UP("\uD83D\uDC46".toByteArray(Charsets.UTF_8)), 52 | MIDDLE_FINGER("\uD83D\uDD95".toByteArray(Charsets.UTF_8)), 53 | BACKHAND_INDEX_POINTING_DOWN("\uD83D\uDC47".toByteArray(Charsets.UTF_8)), 54 | INDEX_POINTING_UP("☝️️".toByteArray(Charsets.UTF_8)), 55 | THUMBS_UP("\uD83D\uDC4D".toByteArray(Charsets.UTF_8)), 56 | THUMBS_DOWN(" \uD83D\uDC4E".toByteArray(Charsets.UTF_8)), 57 | RAISED_FIST("✊".toByteArray(Charsets.UTF_8)), 58 | ONCOMING_FIST("\uD83D\uDC4A".toByteArray(Charsets.UTF_8)), 59 | LEFT_FACING_FIST("\uD83E\uDD1B".toByteArray(Charsets.UTF_8)), 60 | RIGHT_FACING_FIST("\uD83E\uDD1C".toByteArray(Charsets.UTF_8)), 61 | CLAPPING_HANDS("\uD83D\uDC4F".toByteArray(Charsets.UTF_8)), 62 | GRINNING_FACE_WITH_SMILING_EYES("\uD83D\uDE04".toByteArray(Charsets.UTF_8)), 63 | BEAMING_FACE_WITH_SMILING_EYES("\uD83D\uDE01".toByteArray(Charsets.UTF_8)), 64 | NEUTRAL_FACE("\uD83D\uDE10".toByteArray(Charsets.UTF_8)), 65 | FACE_WITHOUT_MOUTH("\uD83D\uDE36".toByteArray(Charsets.UTF_8)), 66 | SMIRKING_FACE("\uD83D\uDE0F".toByteArray(Charsets.UTF_8)), 67 | UNAMUSED_FACE("\uD83D\uDE12".toByteArray(Charsets.UTF_8)), 68 | FACE_WITH_ROLLING_EYES("\uD83D\uDE44".toByteArray(Charsets.UTF_8)), 69 | GRIMACING_FACE("\uD83D\uDE2C".toByteArray(Charsets.UTF_8)), 70 | LYING_FACE("\uD83E\uDD25".toByteArray(Charsets.UTF_8)), 71 | RELIEVED_FACE("\uD83D\uDE0C".toByteArray(Charsets.UTF_8)), 72 | PENSIVE_FACE("\uD83D\uDE14".toByteArray(Charsets.UTF_8)), 73 | SLEEPY_FACE("\uD83D\uDE2A".toByteArray(Charsets.UTF_8)), 74 | DROOLING_FACE("\uD83E\uDD24".toByteArray(Charsets.UTF_8)), 75 | SLEEPING_FACE("\uD83D\uDE34".toByteArray(Charsets.UTF_8)), 76 | FACE_WITH_MEDICAL_MASK("\uD83D\uDE37".toByteArray(Charsets.UTF_8)), 77 | FACE_WITH_THERMOMETER("\uD83E\uDD12".toByteArray(Charsets.UTF_8)), 78 | FACE_WITH_HEAD_BANDAGE("\uD83E\uDD15".toByteArray(Charsets.UTF_8)), 79 | NAUSEATED_FACE("\uD83E\uDD22".toByteArray(Charsets.UTF_8)), 80 | FACE_VOMITING("\uD83E\uDD2E".toByteArray(Charsets.UTF_8)), 81 | SNEEZING_FACE("\uD83E\uDD27".toByteArray(Charsets.UTF_8)), 82 | HOT_FACE("\uD83E\uDD75".toByteArray(Charsets.UTF_8)), 83 | COLD_FACE(" \uD83E\uDD76".toByteArray(Charsets.UTF_8)), 84 | WOOZY_FACE(" \uD83E\uDD74".toByteArray(Charsets.UTF_8)), 85 | DIZZY_FACE(" \uD83D\uDE35".toByteArray(Charsets.UTF_8)), 86 | EXPLODING_HEAD(" \uD83E\uDD2F".toByteArray(Charsets.UTF_8)), 87 | COWBOY_HAT_FACE(" \uD83E\uDD20".toByteArray(Charsets.UTF_8)), 88 | PARTYING_FACE(" \uD83E\uDD73".toByteArray(Charsets.UTF_8)), 89 | SMILING_FACE_WITH_SUNGLASSES("\uD83D\uDE0E".toByteArray(Charsets.UTF_8)), 90 | NERD_FACE("\uD83E\uDD13".toByteArray(Charsets.UTF_8)), 91 | FACE_WITH_MONOCLE("\uD83E\uDDD0".toByteArray(Charsets.UTF_8)), 92 | CONFUSED_FACE("\uD83D\uDE15".toByteArray(Charsets.UTF_8)), 93 | WORRIED_FACE("\uD83D\uDE1F".toByteArray(Charsets.UTF_8)), 94 | SLIGHTLY_FROWNING_FACE(" \uD83D\uDE41".toByteArray(Charsets.UTF_8)), 95 | FROWNING_FACE("☹".toByteArray(Charsets.UTF_8)), 96 | FACE_WITH_OPEN_MOUTH("\uD83D\uDE2E".toByteArray(Charsets.UTF_8)), 97 | HUSHED_FACE(" \uD83D\uDE2F".toByteArray(Charsets.UTF_8)), 98 | ASTONISHED_FACE(" \uD83D\uDE32".toByteArray(Charsets.UTF_8)), 99 | FLUSHED_FACE("\uD83D\uDE33".toByteArray(Charsets.UTF_8)), 100 | PLEADING_FACE(" \uD83E\uDD7A".toByteArray(Charsets.UTF_8)), 101 | FROWNING_FACE_WITH_OPEN_MOUTH(" \uD83D\uDE26".toByteArray(Charsets.UTF_8)), 102 | ANGUISHED_FACE(" \uD83D\uDE27".toByteArray(Charsets.UTF_8)), 103 | FEARFUL_FACE("\uD83D\uDE28".toByteArray(Charsets.UTF_8)), 104 | ANXIOUS_FACE_WITH_SWEAT(" \uD83D\uDE30".toByteArray(Charsets.UTF_8)), 105 | SAD_BUT_RELIEVED_FACE(" \uD83D\uDE25".toByteArray(Charsets.UTF_8)), 106 | CRYING_FACE(" \uD83D\uDE22".toByteArray(Charsets.UTF_8)), 107 | LOUDLY_CRYING_FACE(" \uD83D\uDE2D".toByteArray(Charsets.UTF_8)), 108 | FACE_SCREAMING_IN_FEAR(" \uD83D\uDE31".toByteArray(Charsets.UTF_8)), 109 | CONFOUNDED_FACE(" \uD83D\uDE16".toByteArray(Charsets.UTF_8)), 110 | PERSEVERING_FACE(" \uD83D\uDE23".toByteArray(Charsets.UTF_8)), 111 | DISAPPOINTED_FACE(" \uD83D\uDE1E ".toByteArray(Charsets.UTF_8)), 112 | DOWNCAST_FACE_WITH_SWEAT("\uD83D\uDE13".toByteArray(Charsets.UTF_8)), 113 | WEARY_FACE(" \uD83D\uDE29 ".toByteArray(Charsets.UTF_8)), 114 | TIRED_FACE("\uD83D\uDE2B ".toByteArray(Charsets.UTF_8)), 115 | YAWNING_FACE("\uD83E\uDD71".toByteArray(Charsets.UTF_8)), 116 | FACE_WITH_STEAM_FROM_NOSE(" \uD83D\uDE24".toByteArray(Charsets.UTF_8)), 117 | POUTING_FACE("\uD83D\uDE21".toByteArray(Charsets.UTF_8)), 118 | ANGRY_FACE(" \uD83D\uDE20".toByteArray(Charsets.UTF_8)), 119 | FACE_WITH_SYMBOLS_ON_MOUTH("\uD83E\uDD2C".toByteArray(Charsets.UTF_8)), 120 | SMILING_FACE_WITH_HORNS("\uD83D\uDE08".toByteArray(Charsets.UTF_8)), 121 | ANGRY_FACE_WITH_HORNS("\uD83D\uDC7F".toByteArray(Charsets.UTF_8)), 122 | SKULL("\uD83D\uDC80".toByteArray(Charsets.UTF_8)), 123 | SKULL_AND_CROSSBONES("☠".toByteArray(Charsets.UTF_8)), 124 | PILE_OF_POO("\uD83D\uDCA9".toByteArray(Charsets.UTF_8)), 125 | CLOWN_FACE("\uD83E\uDD21".toByteArray(Charsets.UTF_8)), 126 | OGRE("\uD83D\uDC79".toByteArray(Charsets.UTF_8)), 127 | GOBLIN("\uD83D\uDC7A".toByteArray(Charsets.UTF_8)), 128 | GHOST("\uD83D\uDC7B".toByteArray(Charsets.UTF_8)), 129 | ALIEN("\uD83D\uDC7D".toByteArray(Charsets.UTF_8)), 130 | ALIEN_MONSTER("\uD83D\uDC7E".toByteArray(Charsets.UTF_8)), 131 | ROBOT("\uD83E\uDD16".toByteArray(Charsets.UTF_8)), 132 | GRINNING_CAT("\uD83D\uDE3A".toByteArray(Charsets.UTF_8)), 133 | GRINNING_CAT_WITH_SMILING_EYES("\uD83D\uDE38".toByteArray(Charsets.UTF_8)), 134 | CAT_WITH_TEARS_OF_JOY("\uD83D\uDE39".toByteArray(Charsets.UTF_8)), 135 | SMILING_CAT_WITH_HEART_EYES("\uD83D\uDE3B".toByteArray(Charsets.UTF_8)), 136 | CAT_WITH_WRY_SMILE("\uD83D\uDE3C".toByteArray(Charsets.UTF_8)), 137 | KISSING_CAT("\uD83D\uDE3D".toByteArray(Charsets.UTF_8)), 138 | WEARY_CAT("\uD83D\uDE40".toByteArray(Charsets.UTF_8)), 139 | CRYING_CAT("\uD83D\uDE3F".toByteArray(Charsets.UTF_8)), 140 | POUTING_CAT("\uD83D\uDE3E".toByteArray(Charsets.UTF_8)), 141 | KISS_MARK("\uD83D\uDC8B".toByteArray(Charsets.UTF_8)), 142 | LOVE_YOU_GESTURE("\uD83E\uDD1F".toByteArray(Charsets.UTF_8)), 143 | RAISING_HANDS("\uD83D\uDE4C".toByteArray(Charsets.UTF_8)), 144 | OPEN_HANDS(" \uD83D\uDC50".toByteArray(Charsets.UTF_8)), 145 | PALMS_UP_TOGETHER(" \uD83E\uDD32".toByteArray(Charsets.UTF_8)), 146 | HANDSHAKE(" \uD83E\uDD1D".toByteArray(Charsets.UTF_8)), 147 | FOLDED_HANDS(" \uD83D\uDE4F".toByteArray(Charsets.UTF_8)), 148 | WRITING_HAND("✍".toByteArray(Charsets.UTF_8)), 149 | NAIL_POLISH(" \uD83D\uDC85".toByteArray(Charsets.UTF_8)), 150 | SELFIE(" \uD83E\uDD33".toByteArray(Charsets.UTF_8)), 151 | FLEXED_BICEPS(" \uD83D\uDCAA".toByteArray(Charsets.UTF_8)), 152 | MECHANICAL_ARM(" \uD83E\uDDBE ".toByteArray(Charsets.UTF_8)), 153 | MECHANICAL_LEG("\uD83E\uDDBF".toByteArray(Charsets.UTF_8)), 154 | LEG(" \uD83E\uDDB5".toByteArray(Charsets.UTF_8)), 155 | FOOT(" \uD83E\uDDB6".toByteArray(Charsets.UTF_8)), 156 | EAR(" \uD83D\uDC42".toByteArray(Charsets.UTF_8)), 157 | EAR_WITH_HEARING_AID(" \uD83E\uDDBB".toByteArray(Charsets.UTF_8)), 158 | NOSE(" \uD83D\uDC43".toByteArray(Charsets.UTF_8)), 159 | BRAIN(" \uD83E\uDDE0".toByteArray(Charsets.UTF_8)), 160 | TOOTH(" \uD83E\uDDB7".toByteArray(Charsets.UTF_8)), 161 | BONE(" \uD83E\uDDB4".toByteArray(Charsets.UTF_8)), 162 | EYES(" \uD83D\uDC40".toByteArray(Charsets.UTF_8)), 163 | EYE(" \uD83D\uDC41".toByteArray(Charsets.UTF_8)), 164 | TONGUE(" \uD83D\uDC45".toByteArray(Charsets.UTF_8)), 165 | MOUTH(" \uD83D\uDC44".toByteArray(Charsets.UTF_8)), 166 | BABY(" \uD83D\uDC76".toByteArray(Charsets.UTF_8)), 167 | CHILD(" \uD83E\uDDD2 ".toByteArray(Charsets.UTF_8)), 168 | BOY("\uD83D\uDC66".toByteArray(Charsets.UTF_8)), 169 | GIRL(" \uD83D\uDC67".toByteArray(Charsets.UTF_8)), 170 | PERSON(" \uD83E\uDDD1".toByteArray(Charsets.UTF_8)), 171 | PERSON_BLOND_HAIR(" \uD83D\uDC71".toByteArray(Charsets.UTF_8)), 172 | MAN(" \uD83D\uDC68".toByteArray(Charsets.UTF_8)), 173 | MAN_BEARD("\uD83E\uDDD4".toByteArray(Charsets.UTF_8)), 174 | MAN_RED_HAIR("\uD83D\uDC68\u200D\uD83E\uDDB0".toByteArray(Charsets.UTF_8)), 175 | MAN_CURLY_HAIR("\uD83D\uDC68\u200D\uD83E\uDDB1".toByteArray(Charsets.UTF_8)), 176 | MAN_WHITE_HAIR("\uD83D\uDC68\u200D\uD83E\uDDB3".toByteArray(Charsets.UTF_8)), 177 | MAN_BALD("\uD83D\uDC68\u200D\uD83E\uDDB2".toByteArray(Charsets.UTF_8)), 178 | WOMAN("\uD83D\uDC69".toByteArray(Charsets.UTF_8)), 179 | WOMAN_RED_HAIR("\uD83D\uDC69\u200D\uD83E\uDDB0".toByteArray(Charsets.UTF_8)), 180 | PERSON_RED_HAIR("\uD83E\uDDD1\u200D\uD83E\uDDB0".toByteArray(Charsets.UTF_8)), 181 | WOMAN_CURLY_HAIR("\uD83D\uDC69\u200D\uD83E\uDDB1".toByteArray(Charsets.UTF_8)), 182 | PERSON_CURLY_HAIR("\uD83E\uDDD1\u200D\uD83E\uDDB1".toByteArray(Charsets.UTF_8)), 183 | WOMAN_WHITE_HAIR("\uD83D\uDC69\u200D\uD83E\uDDB3".toByteArray(Charsets.UTF_8)), 184 | PERSON_WHITE_HAIR("\uD83E\uDDD1\u200D\uD83E\uDDD1\u200D".toByteArray(Charsets.UTF_8)), 185 | WOMAN_BALD("\uD83D\uDC69\u200D\uD83E\uDDB2".toByteArray(Charsets.UTF_8)), 186 | PERSON_BALD("\uD83D\uDC69\u200D\uD83E\uDDB2\uD83E\uDDB2".toByteArray(Charsets.UTF_8)), 187 | WOMAN_BLOND_HAIR(" \uD83D\uDC71\u200D♀".toByteArray(Charsets.UTF_8)), 188 | MAN_BLOND_HAIR("\uD83D\uDC71\u200D♂".toByteArray(Charsets.UTF_8)), 189 | OLDER_PERSON("\uD83E\uDDD3".toByteArray(Charsets.UTF_8)), 190 | OLD_MAN("\uD83D\uDC74".toByteArray(Charsets.UTF_8)), 191 | OLD_WOMAN("\uD83D\uDC75".toByteArray(Charsets.UTF_8)), 192 | PERSON_FROWNING("\uD83D\uDE4D".toByteArray(Charsets.UTF_8)), 193 | MAN_FROWNING("\uD83D\uDE4D\u200D♂".toByteArray(Charsets.UTF_8)), 194 | WOMAN_FROWNING("\uD83D\uDE4D\u200D♀".toByteArray(Charsets.UTF_8)), 195 | PERSON_POUTING("\uD83D\uDE4E".toByteArray(Charsets.UTF_8)), 196 | MAN_POUTING("\uD83D\uDE4E\u200D♂".toByteArray(Charsets.UTF_8)), 197 | WOMAN_POUTING("\uD83D\uDE4E\u200D♀".toByteArray(Charsets.UTF_8)), 198 | PERSON_GESTURING_NO("\uD83D\uDE45".toByteArray(Charsets.UTF_8)), 199 | MAN_GESTURING_NO("\uD83D\uDE45\u200D♂".toByteArray(Charsets.UTF_8)), 200 | WOMAN_GESTURING_NO("\uD83D\uDE45\u200D♀".toByteArray(Charsets.UTF_8)), 201 | PERSON_GESTURING_OK("\uD83D\uDE46".toByteArray(Charsets.UTF_8)), 202 | MAN_GESTURING_OK("\uD83D\uDE46\u200D♂".toByteArray(Charsets.UTF_8)), 203 | WOMAN_GESTURING_OK("\uD83D\uDE46\u200D♀".toByteArray(Charsets.UTF_8)), 204 | PERSON_TIPPING_HAND("\uD83D\uDC81".toByteArray(Charsets.UTF_8)), 205 | MAN_TIPPING_HAND("\uD83D\uDC81\u200D♂".toByteArray(Charsets.UTF_8)), 206 | WOMAN_TIPPING_HAND("\uD83D\uDC81\u200D♀".toByteArray(Charsets.UTF_8)), 207 | PERSON_RAISING_HAND("\uD83D\uDE4B".toByteArray(Charsets.UTF_8)), 208 | MAN_RAISING_HAND("\uD83D\uDE4B\u200D♂".toByteArray(Charsets.UTF_8)), 209 | WOMAN_RAISING_HAND("\uD83D\uDE4B\u200D♀".toByteArray(Charsets.UTF_8)), 210 | DEAF_PERSON("\uD83E\uDDCF".toByteArray(Charsets.UTF_8)), 211 | DEAF_MAN("\uD83E\uDDCF\u200D♂".toByteArray(Charsets.UTF_8)), 212 | DEAF_WOMAN("\uD83E\uDDCF\u200D♀".toByteArray(Charsets.UTF_8)), 213 | PERSON_BOWING("\uD83D\uDE47".toByteArray(Charsets.UTF_8)), 214 | MAN_BOWING("\uD83D\uDE47\u200D♂".toByteArray(Charsets.UTF_8)), 215 | WOMAN_BOWING("\uD83D\uDE47\u200D♀".toByteArray(Charsets.UTF_8)), 216 | PERSON_FACEPALMING("\uD83E\uDD26".toByteArray(Charsets.UTF_8)), 217 | MAN_FACEPALMING("\uD83E\uDD26\u200D♂".toByteArray(Charsets.UTF_8)), 218 | WOMAN_FACEPALMING("\uD83E\uDD26\u200D♀".toByteArray(Charsets.UTF_8)), 219 | PERSON_SHRUGGING("\uD83E\uDD37".toByteArray(Charsets.UTF_8)), 220 | MAN_SHRUGGING("\uD83E\uDD37\u200D♂".toByteArray(Charsets.UTF_8)), 221 | WOMAN_SHRUGGING("\uD83E\uDD37\u200D♀".toByteArray(Charsets.UTF_8)), 222 | HEALTH_WORKER("\uD83E\uDDD1\u200D⚕".toByteArray(Charsets.UTF_8)), 223 | MAN_HEALTH_WORKER("\uD83D\uDC68\u200D⚕".toByteArray(Charsets.UTF_8)), 224 | WOMAN_HEALTH_WORKER("\uD83D\uDC69\u200D⚕".toByteArray(Charsets.UTF_8)), 225 | STUDENT("\uD83E\uDDD1\u200D\uD83C\uDF93".toByteArray(Charsets.UTF_8)), 226 | MAN_STUDENT("\uD83D\uDC68\u200D\uD83C\uDF93".toByteArray(Charsets.UTF_8)), 227 | WOMAN_STUDENT("\uD83D\uDC69\u200D\uD83C\uDF93".toByteArray(Charsets.UTF_8)), 228 | TEACHER("\uD83E\uDDD1\u200D\uD83C\uDFEB".toByteArray(Charsets.UTF_8)), 229 | MAN_TEACHER("\uD83D\uDC68\u200D\uD83C\uDFEB".toByteArray(Charsets.UTF_8)), 230 | WOMAN_TEACHER("\uD83D\uDC69\u200D\uD83C\uDFEB".toByteArray(Charsets.UTF_8)), 231 | JUDGE("\uD83E\uDDD1\u200D⚖️".toByteArray(Charsets.UTF_8)), 232 | MAN_JUDGE("\uD83D\uDC68\u200D⚖️".toByteArray(Charsets.UTF_8)), 233 | WOMAN_JUDGE("\uD83D\uDC69\u200D⚖️".toByteArray(Charsets.UTF_8)), 234 | FARMER("\uD83E\uDDD1\u200D\uD83C\uDF3E".toByteArray(Charsets.UTF_8)), 235 | MAN_FARMER("\uD83D\uDC68\u200D🌾".toByteArray(Charsets.UTF_8)), 236 | WOMAN_FARMER("\uD83D\uDC69\u200D🌾".toByteArray(Charsets.UTF_8)), 237 | COOK("\uD83E\uDDD1\u200D\uD83C\uDF73".toByteArray(Charsets.UTF_8)), 238 | MAN_COOK("\uD83D\uDC68\u200D\uD83C\uDF73".toByteArray(Charsets.UTF_8)), 239 | WOMAN_COOK("\uD83D\uDC69\u200D\uD83C\uDF73".toByteArray(Charsets.UTF_8)), 240 | MECHANIC("\uD83E\uDDD1\u200D\uD83D\uDD27".toByteArray(Charsets.UTF_8)), 241 | MAN_MECHANIC("\uD83D\uDC68\u200D\uD83D\uDD27".toByteArray(Charsets.UTF_8)), 242 | WOMAN_MECHANIC("\uD83D\uDC69\u200D\uD83D\uDD27".toByteArray(Charsets.UTF_8)), 243 | FACTORY_WORKER("\uD83E\uDDD1\u200D\uD83C\uDFED".toByteArray(Charsets.UTF_8)), 244 | MAN_FACTORY_WORKER("\uD83D\uDC68\u200D\uD83C\uDFED".toByteArray(Charsets.UTF_8)), 245 | WOMAN_FACTORY_WORKER("\uD83D\uDC69\u200D\uD83C\uDFED".toByteArray(Charsets.UTF_8)), 246 | OFFICE_WORKER("\uD83E\uDDD1\u200D\uD83D\uDCBC".toByteArray(Charsets.UTF_8)), 247 | MAN_OFFICE_WORKER("\uD83D\uDC68\u200D\uD83D\uDCBC".toByteArray(Charsets.UTF_8)), 248 | WOMAN_OFFICE_WORKER("\uD83D\uDC69\u200D\uD83D\uDCBC".toByteArray(Charsets.UTF_8)), 249 | SCIENTIST("\uD83E\uDDD1\u200D\uD83D\uDD2C".toByteArray(Charsets.UTF_8)), 250 | MAN_SCIENTIST("\uD83D\uDC68\u200D\uD83D\uDD2C".toByteArray(Charsets.UTF_8)), 251 | WOMAN_SCIENTIST("\uD83D\uDC69\u200D\uD83D\uDD2C".toByteArray(Charsets.UTF_8)), 252 | TECHNOLOGIST("\uD83E\uDDD1\u200D\uD83D\uDCBB".toByteArray(Charsets.UTF_8)), 253 | MAN_TECHNOLOGIST("\uD83D\uDC68\u200D\uD83D\uDCBB".toByteArray(Charsets.UTF_8)), 254 | WOMAN_TECHNOLOGIST("\uD83D\uDC69\u200D\uD83D\uDCBB".toByteArray(Charsets.UTF_8)), 255 | SINGER("\uD83E\uDDD1\u200D\uD83C\uDFA4".toByteArray(Charsets.UTF_8)), 256 | MAN_SINGER("\uD83D\uDC68\u200D\uD83C\uDFA4".toByteArray(Charsets.UTF_8)), 257 | WOMAN_SINGER("\uD83D\uDC69\u200D\uD83C\uDFA4".toByteArray(Charsets.UTF_8)), 258 | ARTIST("\uD83E\uDDD1\u200D\uD83C\uDFA8".toByteArray(Charsets.UTF_8)), 259 | MAN_ARTIST("\uD83D\uDC68\u200D\uD83C\uDFA8".toByteArray(Charsets.UTF_8)), 260 | WOMAN_ARTIST("\uD83D\uDC69\u200D🎨".toByteArray(Charsets.UTF_8)), 261 | PILOT("\uD83E\uDDD1\u200D✈️".toByteArray(Charsets.UTF_8)), 262 | MAN_PILOT("\uD83D\uDC68\u200D✈️".toByteArray(Charsets.UTF_8)), 263 | WOMAN_PILOT("\uD83D\uDC69\u200D✈️".toByteArray(Charsets.UTF_8)), 264 | ASTRONAUT("\uD83E\uDDD1\u200D\uD83D\uDE80".toByteArray(Charsets.UTF_8)), 265 | MAN_ASTRONAUT("\uD83D\uDC68\u200D\uD83D\uDE80".toByteArray(Charsets.UTF_8)), 266 | WOMAN_ASTRONAUT("\uD83D\uDC69\u200D\uD83D\uDE80".toByteArray(Charsets.UTF_8)), 267 | FIREFIGHTER("\uD83E\uDDD1\u200D\uD83D\uDE92".toByteArray(Charsets.UTF_8)), 268 | MAN_FIREFIGHTER("👨‍🚒".toByteArray(Charsets.UTF_8)), 269 | WOMAN_FIREFIGHTER("👩‍🚒".toByteArray(Charsets.UTF_8)), 270 | POLICE_OFFICER("👮".toByteArray(Charsets.UTF_8)), 271 | MAN_POLICE_OFFICER("👮‍♂".toByteArray(Charsets.UTF_8)), 272 | WOMAN_POLICE_OFFICER("👮‍♀".toByteArray(Charsets.UTF_8)), 273 | DETECTIVE("🕵".toByteArray(Charsets.UTF_8)), 274 | MAN_DETECTIVE("🕵️‍♂".toByteArray(Charsets.UTF_8)), 275 | WOMAN_DETECTIVE("🕵️‍♀".toByteArray(Charsets.UTF_8)), 276 | GUARD("\uD83D\uDC82".toByteArray(Charsets.UTF_8)), 277 | MAN_GUARD("\uD83D\uDC82\u200D♂".toByteArray(Charsets.UTF_8)), 278 | WOMAN_GUARD("\uD83D\uDC82\u200D♀".toByteArray(Charsets.UTF_8)), 279 | CONSTRUCTION_WORKER("\uD83D\uDC77".toByteArray(Charsets.UTF_8)), 280 | MAN_CONSTRUCTION_WORKER("\uD83D\uDC77\u200D♂".toByteArray(Charsets.UTF_8)), 281 | WOMAN_CONSTRUCTION_WORKER("\uD83E\uDD34♀".toByteArray(Charsets.UTF_8)), 282 | PRINCE("\uD83E\uDD34".toByteArray(Charsets.UTF_8)), 283 | PRINCESS("\uD83D\uDC78".toByteArray(Charsets.UTF_8)), 284 | PERSON_WEARING_TURBAN("\uD83D\uDC73".toByteArray(Charsets.UTF_8)), 285 | MAN_WEARING_TURBAN("\uD83D\uDC73\u200D♂".toByteArray(Charsets.UTF_8)), 286 | WOMAN_WEARING_TURBAN("\uD83D\uDC73\u200D♀".toByteArray(Charsets.UTF_8)), 287 | PERSON_WITH_SKULLCAP("\uD83D\uDC72".toByteArray(Charsets.UTF_8)), 288 | WOMAN_WITH_HEADSCARF("\uD83E\uDDD5".toByteArray(Charsets.UTF_8)), 289 | PERSON_IN_TUXEDO("\uD83E\uDD35".toByteArray(Charsets.UTF_8)), 290 | PERSON_WITH_VEIL("\uD83D\uDC70".toByteArray(Charsets.UTF_8)), 291 | PREGNANT_WOMAN("\uD83E\uDD30".toByteArray(Charsets.UTF_8)), 292 | BREAST_FEEDING("\uD83E\uDD31".toByteArray(Charsets.UTF_8)), 293 | PERSON_FEEDING_BABY("\uD83E\uDDD1\u200D\uD83C\uDF7C".toByteArray(Charsets.UTF_8)), 294 | BABY_ANGEL("\uD83D\uDC7C".toByteArray(Charsets.UTF_8)), 295 | SANTA_CLAUS("\uD83C\uDF85".toByteArray(Charsets.UTF_8)), 296 | MRS_CLAUS("🤶".toByteArray(Charsets.UTF_8)), 297 | SUPERHERO("🦸".toByteArray(Charsets.UTF_8)), 298 | MAN_SUPERHERO("🦸‍♂".toByteArray(Charsets.UTF_8)), 299 | WOMAN_SUPERHERO("🦸‍♀".toByteArray(Charsets.UTF_8)), 300 | SUPERVILLAIN("🦹".toByteArray(Charsets.UTF_8)), 301 | MAN_SUPERVILLAIN("🦹‍♂".toByteArray(Charsets.UTF_8)), 302 | WOMAN_SUPERVILLAIN("🦹‍♀".toByteArray(Charsets.UTF_8)), 303 | MAGE("🧙".toByteArray(Charsets.UTF_8)), 304 | MAN_MAGE("🧙‍♂".toByteArray(Charsets.UTF_8)), 305 | WOMAN_MAGE("🧙‍♀".toByteArray(Charsets.UTF_8)), 306 | FAIRY("🧚".toByteArray(Charsets.UTF_8)), 307 | MAN_FAIRY("🧚‍♂".toByteArray(Charsets.UTF_8)), 308 | WOMAN_FAIRY("🧚‍♀".toByteArray(Charsets.UTF_8)), 309 | VAMPIRE("🧛".toByteArray(Charsets.UTF_8)), 310 | MAN_VAMPIRE("🧛‍♂".toByteArray(Charsets.UTF_8)), 311 | WOMAN_VAMPIRE("🧛‍♀".toByteArray(Charsets.UTF_8)), 312 | MERPERSON("🧜".toByteArray(Charsets.UTF_8)), 313 | MERMAN("🧜‍♂".toByteArray(Charsets.UTF_8)), 314 | MERMAID("🧜‍♀".toByteArray(Charsets.UTF_8)), 315 | ELF("🧝".toByteArray(Charsets.UTF_8)), 316 | MAN_ELF("🧝‍♂".toByteArray(Charsets.UTF_8)), 317 | WOMAN_ELF("🧝‍♀".toByteArray(Charsets.UTF_8)), 318 | GENIE("🧞".toByteArray(Charsets.UTF_8)), 319 | MAN_GENIE("🧞‍♂".toByteArray(Charsets.UTF_8)), 320 | WOMAN_GENIE("🧞‍♀".toByteArray(Charsets.UTF_8)), 321 | ZOMBIE("🧟".toByteArray(Charsets.UTF_8)), 322 | MAN_ZOMBIE("🧟‍♂".toByteArray(Charsets.UTF_8)), 323 | WOMAN_ZOMBIE("🧟‍♀".toByteArray(Charsets.UTF_8)), 324 | PERSON_GETTING_MASSAGE("\uD83D\uDC86".toByteArray(Charsets.UTF_8)), 325 | MAN_GETTING_MASSAGE("\uD83D\uDC86\u200D♂".toByteArray(Charsets.UTF_8)), 326 | WOMAN_GETTING_MASSAGE("\uD83D\uDC86\u200D♀".toByteArray(Charsets.UTF_8)), 327 | PERSON_GETTING_HAIRCUT("\uD83D\uDC87".toByteArray(Charsets.UTF_8)), 328 | MAN_GETTING_HAIRCUT("\uD83D\uDC87\u200D♂".toByteArray(Charsets.UTF_8)), 329 | WOMAN_GETTING_HAIRCUT(" \uD83D\uDC87\u200D♀".toByteArray(Charsets.UTF_8)), 330 | PERSON_WALKING("\uD83D\uDEB6".toByteArray(Charsets.UTF_8)), 331 | MAN_WALKING("\uD83D\uDEB6\u200D♂".toByteArray(Charsets.UTF_8)), 332 | WOMAN_WALKING("\uD83D\uDEB6\u200D♀️".toByteArray(Charsets.UTF_8)), 333 | PERSON_STANDING("\uD83E\uDDCD".toByteArray(Charsets.UTF_8)), 334 | MAN_STANDING("\uD83E\uDDCD\u200D♂".toByteArray(Charsets.UTF_8)), 335 | WOMAN_STANDING("\uD83E\uDDCD\u200D♀".toByteArray(Charsets.UTF_8)), 336 | PERSON_KNEELING("\uD83E\uDDCE".toByteArray(Charsets.UTF_8)), 337 | MAN_KNEELING("\uD83E\uDDCE\u200D♂".toByteArray(Charsets.UTF_8)), 338 | WOMAN_KNEELING("\uD83E\uDDCE\u200D♀".toByteArray(Charsets.UTF_8)), 339 | PERSON_WITH_WHITE_CANE("\uD83E\uDDD1\u200D\uD83E\uDDAF".toByteArray(Charsets.UTF_8)), 340 | MAN_WITH_WHITE_CANE("\uD83D\uDC68\u200D\uD83E\uDDAF".toByteArray(Charsets.UTF_8)), 341 | WOMAN_WITH_WHITE_CANE("\uD83D\uDC69\u200D\uD83E\uDDAF".toByteArray(Charsets.UTF_8)), 342 | PERSON_IN_MOTORIZED_WHEELCHAIR("\uD83E\uDDD1\u200D\uD83E\uDDBC".toByteArray(Charsets.UTF_8)), 343 | MAN_IN_MOTORIZED_WHEELCHAIR("\uD83D\uDC68\u200D\uD83E\uDDBC".toByteArray(Charsets.UTF_8)), 344 | WOMAN_IN_MOTORIZED_WHEELCHAIR("\uD83D\uDC69\u200D\uD83E\uDDBC".toByteArray(Charsets.UTF_8)), 345 | PERSON_IN_MANUAL_WHEELCHAIR("\uD83E\uDDD1\u200D\uD83E\uDDBD".toByteArray(Charsets.UTF_8)), 346 | MAN_IN_MANUAL_WHEELCHAIR("\uD83D\uDC68\u200D\uD83E\uDDBD".toByteArray(Charsets.UTF_8)), 347 | WOMAN_IN_MANUAL_WHEELCHAIR("\uD83D\uDC69\u200D\uD83E\uDDBD".toByteArray(Charsets.UTF_8)), 348 | PERSON_RUNNING("\uD83C\uDFC3".toByteArray(Charsets.UTF_8)), 349 | MAN_RUNNING("\uD83C\uDFC3\u200D♂".toByteArray(Charsets.UTF_8)), 350 | WOMAN_RUNNING("\uD83C\uDFC3\u200D♀".toByteArray(Charsets.UTF_8)), 351 | WOMAN_DANCING("\uD83D\uDC83".toByteArray(Charsets.UTF_8)), 352 | MAN_DANCING("\uD83D\uDD7A".toByteArray(Charsets.UTF_8)), 353 | PERSON_IN_SUIT_LEVITATING("\uD83D\uDD74".toByteArray(Charsets.UTF_8)), 354 | PEOPLE_WITH_BUNNY_EARS("\uD83D\uDC6F".toByteArray(Charsets.UTF_8)), 355 | MEN_WITH_BUNNY_EARS("\uD83D\uDC6F\u200D♂".toByteArray(Charsets.UTF_8)), 356 | WOMEN_WITH_BUNNY_EARS("\uD83D\uDC6F\u200D♀".toByteArray(Charsets.UTF_8)), 357 | PERSON_IN_STEAMY_ROOM("\uD83E\uDDD6".toByteArray(Charsets.UTF_8)), 358 | MAN_IN_STEAMY_ROOM("\uD83E\uDDD6\u200D♂".toByteArray(Charsets.UTF_8)), 359 | WOMAN_IN_STEAMY_ROOM("\uD83E\uDDD6\u200D♀".toByteArray(Charsets.UTF_8)), 360 | PERSON_IN_LOTUS_POSITION("\uD83E\uDDD8".toByteArray(Charsets.UTF_8)), 361 | PEOPLE_HOLDING_HANDS("\uD83E\uDDD1\u200D\uD83E\uDD1D\u200D🧑".toByteArray(Charsets.UTF_8)), 362 | WOMEN_HOLDING_HANDS("\uD83D\uDC6D".toByteArray(Charsets.UTF_8)), 363 | WOMAN_AND_MAN_HOLDING_HANDS("\uD83D\uDC6B".toByteArray(Charsets.UTF_8)), 364 | MEN_HOLDING_HANDS("\uD83D\uDC6C".toByteArray(Charsets.UTF_8)), 365 | KISS("\uD83D\uDC8F".toByteArray(Charsets.UTF_8)), 366 | KISS_MAN_MAN("\uD83D\uDC68\u200D❤️\u200D\uD83D\uDC8B\u200D\uD83D\uDC68".toByteArray(Charsets.UTF_8)), 367 | KISS_WOMAN_WOMAN("\uD83D\uDC69\u200D❤️\u200D\uD83D\uDC8B\u200D\uD83D\uDC69".toByteArray(Charsets.UTF_8)), 368 | COUPLE_WITH_HEART("\uD83D\uDC91".toByteArray(Charsets.UTF_8)), 369 | COUPLE_WITH_HEART_MAN_MAN("\uD83D\uDC68\u200D❤️\u200D\uD83D\uDC68".toByteArray(Charsets.UTF_8)), 370 | COUPLE_WITH_HEART_WOMAN_WOMAN("\uD83D\uDC69\u200D❤️\u200D\uD83D\uDC69".toByteArray(Charsets.UTF_8)), 371 | FAMILY("\uD83D\uDC6A".toByteArray(Charsets.UTF_8)), 372 | FAMILY_MAN_WOMAN_BOY("\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC66".toByteArray(Charsets.UTF_8)), 373 | FAMILY_MAN_WOMAN_GIRL("\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC67".toByteArray(Charsets.UTF_8)), 374 | FAMILY_MAN_WOMAN_GIRL_BOY("\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC66".toByteArray(Charsets.UTF_8)), 375 | FAMILY_MAN_WOMAN_BOY_BOY("\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66".toByteArray(Charsets.UTF_8)), 376 | FAMILY_MAN_WOMAN_GIRL_GIRL("\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC67".toByteArray(Charsets.UTF_8)), 377 | FAMILY_MAN_MAN_BOY("\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC66".toByteArray(Charsets.UTF_8)), 378 | FAMILY_MAN_MAN_GIRL("\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC67".toByteArray(Charsets.UTF_8)), 379 | FAMILY_MAN_MAN_GIRL_BOY("\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC67\u200D\uD83D\uDC66".toByteArray(Charsets.UTF_8)), 380 | FAMILY_MAN_MAN_BOY_BOY("\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC66\u200D\uD83D\uDC66".toByteArray(Charsets.UTF_8)), 381 | FAMILY_MAN_MAN_GIRL_GIRL("\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC67\u200D\uD83D\uDC67".toByteArray(Charsets.UTF_8)), 382 | FAMILY_WOMAN_WOMAN_BOY("\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC66".toByteArray(Charsets.UTF_8)), 383 | FAMILY_WOMAN_WOMAN_GIRL("\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC67".toByteArray(Charsets.UTF_8)), 384 | FAMILY_WOMAN_WOMAN_GIRL_BOY("\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC66".toByteArray(Charsets.UTF_8)), 385 | FAMILY_WOMAN_WOMAN_BOY_BOY("\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66".toByteArray(Charsets.UTF_8)), 386 | FAMILY_WOMAN_WOMAN_GIRL_GIRL("\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC67".toByteArray(Charsets.UTF_8)), 387 | FAMILY_MAN_BOY("\uD83D\uDC68\u200D\uD83D\uDC66".toByteArray(Charsets.UTF_8)), 388 | FAMILY_MAN_BOY_BOY("\uD83D\uDC68\u200D\uD83D\uDC66\u200D\uD83D\uDC66".toByteArray(Charsets.UTF_8)), 389 | FAMILY_MAN_GIRL("\uD83D\uDC68\u200D\uD83D\uDC67".toByteArray(Charsets.UTF_8)), 390 | FAMILY_MAN_GIRL_BOY("\uD83D\uDC68\u200D\uD83D\uDC67\u200D\uD83D\uDC66".toByteArray(Charsets.UTF_8)), 391 | FAMILY_MAN_GIRL_GIRL("\uD83D\uDC68\u200D\uD83D\uDC67\u200D\uD83D\uDC67".toByteArray(Charsets.UTF_8)), 392 | FAMILY_WOMAN_BOY("\uD83D\uDC69\u200D\uD83D\uDC66".toByteArray(Charsets.UTF_8)), 393 | FAMILY_WOMAN_BOY_BOY("\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66".toByteArray(Charsets.UTF_8)), 394 | FAMILY_WOMAN_GIRL("\uD83D\uDC69\u200D\uD83D\uDC67".toByteArray(Charsets.UTF_8)), 395 | FAMILY_WOMAN_GIRL_BOY("\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC66".toByteArray(Charsets.UTF_8)), 396 | FAMILY_WOMAN_GIRL_GIRL("\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC67".toByteArray(Charsets.UTF_8)), 397 | SPEAKING_HEAD("\uD83D\uDDE3️".toByteArray(Charsets.UTF_8)), 398 | BUST_IN_SILHOUETTE("\uD83D\uDC64".toByteArray(Charsets.UTF_8)), 399 | BUSTS_IN_SILHOUETTE("\uD83D\uDC65".toByteArray(Charsets.UTF_8)); 400 | } 401 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/java/com/withplum/emojibottomsheetdialog/emoji/categoryUnicodes/SymbolsCategoryUnicodes.kt: -------------------------------------------------------------------------------- 1 | package com.withplum.emojibottomsheetdialog.emoji.categoryUnicodes 2 | 3 | enum class SymbolsCategoryUnicodes(override val unicode: ByteArray) : CategoryUnicodes { 4 | HEART_WITH_ARROW("💘".toByteArray(Charsets.UTF_8)), 5 | HEART_WITH_RIBBON("💝".toByteArray(Charsets.UTF_8)), 6 | SPARKLING_HEART("💖".toByteArray(Charsets.UTF_8)), 7 | GROWING_HEART("💗".toByteArray(Charsets.UTF_8)), 8 | BEATING_HEART("💓".toByteArray(Charsets.UTF_8)), 9 | REVOLVING_HEARTS("💞".toByteArray(Charsets.UTF_8)), 10 | TWO_HEARTS("💕".toByteArray(Charsets.UTF_8)), 11 | HEART_DECORATION("💟".toByteArray(Charsets.UTF_8)), 12 | HEART_EXCLAMATION("❣".toByteArray(Charsets.UTF_8)), 13 | BROKEN_HEART("💔".toByteArray(Charsets.UTF_8)), 14 | RED_HEART("❤".toByteArray(Charsets.UTF_8)), 15 | ORANGE_HEART("🧡".toByteArray(Charsets.UTF_8)), 16 | YELLOW_HEART("💛".toByteArray(Charsets.UTF_8)), 17 | GREEN_HEART("💚".toByteArray(Charsets.UTF_8)), 18 | BLUE_HEART("💙".toByteArray(Charsets.UTF_8)), 19 | PURPLE_HEART("💜".toByteArray(Charsets.UTF_8)), 20 | BROWN_HEART("🤎".toByteArray(Charsets.UTF_8)), 21 | BLACK_HEART("🖤".toByteArray(Charsets.UTF_8)), 22 | WHITE_HEART("🤍".toByteArray(Charsets.UTF_8)), 23 | HUNDRED_POINTS("💯".toByteArray(Charsets.UTF_8)), 24 | ANGER_SYMBOL("💢".toByteArray(Charsets.UTF_8)), 25 | SPEECH_BALLOON("💬".toByteArray(Charsets.UTF_8)), 26 | EYE_IN_SPEECH_BUBBLE("👁‍".toByteArray(Charsets.UTF_8)), 27 | RIGHT_ANGER_BUBBLE("🗯".toByteArray(Charsets.UTF_8)), 28 | THOUGHT_BALLOON("💭".toByteArray(Charsets.UTF_8)), 29 | ZZZ("💤".toByteArray(Charsets.UTF_8)), 30 | WHITE_FLOWER("💮".toByteArray(Charsets.UTF_8)), 31 | HOT_SPRINGS("♨".toByteArray(Charsets.UTF_8)), 32 | BARBER_POLE("💈".toByteArray(Charsets.UTF_8)), 33 | STOP_SIGN("🛑".toByteArray(Charsets.UTF_8)), 34 | TWELVE_O_CLOCK("🕛".toByteArray(Charsets.UTF_8)), 35 | TWELVE_THIRTY("🕧".toByteArray(Charsets.UTF_8)), 36 | ONE_O_CLOCK("🕐".toByteArray(Charsets.UTF_8)), 37 | ONE_THIRTY("🕜".toByteArray(Charsets.UTF_8)), 38 | TWO_O_CLOCK("🕑".toByteArray(Charsets.UTF_8)), 39 | TWO_THIRTY("🕝".toByteArray(Charsets.UTF_8)), 40 | THREE_O_CLOCK("🕒".toByteArray(Charsets.UTF_8)), 41 | THREE_THIRTY("🕞".toByteArray(Charsets.UTF_8)), 42 | FOUR_O_CLOCK("🕓".toByteArray(Charsets.UTF_8)), 43 | FOUR_THIRTY("🕟".toByteArray(Charsets.UTF_8)), 44 | FIVE_O_CLOCK("🕔".toByteArray(Charsets.UTF_8)), 45 | FIVE_THIRTY("🕠".toByteArray(Charsets.UTF_8)), 46 | SIX_O_CLOCK("🕕".toByteArray(Charsets.UTF_8)), 47 | SIX_THIRTY("🕡".toByteArray(Charsets.UTF_8)), 48 | SEVEN_O_CLOCK("🕖".toByteArray(Charsets.UTF_8)), 49 | SEVEN_THIRTY("🕢".toByteArray(Charsets.UTF_8)), 50 | EIGHT_O_CLOCK("🕗".toByteArray(Charsets.UTF_8)), 51 | EIGHT_THIRTY("🕣".toByteArray(Charsets.UTF_8)), 52 | NINE_O_CLOCK("🕘".toByteArray(Charsets.UTF_8)), 53 | NINE_THIRTY("🕤".toByteArray(Charsets.UTF_8)), 54 | TEN_O_CLOCK("🕙".toByteArray(Charsets.UTF_8)), 55 | TEN_THIRTY("🕥".toByteArray(Charsets.UTF_8)), 56 | ELEVEN_O_CLOCK("🕚".toByteArray(Charsets.UTF_8)), 57 | ELEVEN_THIRTY("🕦".toByteArray(Charsets.UTF_8)), 58 | CYCLONE("🌀".toByteArray(Charsets.UTF_8)), 59 | SPADE_SUIT("♠".toByteArray(Charsets.UTF_8)), 60 | HEART_SUIT("♥".toByteArray(Charsets.UTF_8)), 61 | DIAMOND_SUIT("♦".toByteArray(Charsets.UTF_8)), 62 | CLUB_SUIT("♣".toByteArray(Charsets.UTF_8)), 63 | JOKER("🃏".toByteArray(Charsets.UTF_8)), 64 | MAHJONG_RED_DRAGON("🀄".toByteArray(Charsets.UTF_8)), 65 | FLOWER_PLAYING_CARDS("🎴".toByteArray(Charsets.UTF_8)), 66 | MUTED_SPEAKER("🔇".toByteArray(Charsets.UTF_8)), 67 | SPEAKER_LOW_VOLUME("🔈".toByteArray(Charsets.UTF_8)), 68 | SPEAKER_MEDIUM_VOLUME("🔉".toByteArray(Charsets.UTF_8)), 69 | SPEAKER_HIGH_VOLUME("🔊".toByteArray(Charsets.UTF_8)), 70 | RED_CIRCLE("🔴".toByteArray(Charsets.UTF_8)), 71 | ORANGE_CIRCLE("🟠".toByteArray(Charsets.UTF_8)), 72 | YELLOW_CIRCLE("🟡".toByteArray(Charsets.UTF_8)), 73 | GREEN_CIRCLE("🟢".toByteArray(Charsets.UTF_8)), 74 | BLUE_CIRCLE("🔵".toByteArray(Charsets.UTF_8)), 75 | PURPLE_CIRCLE("🟣".toByteArray(Charsets.UTF_8)), 76 | BROWN_CIRCLE("🟤".toByteArray(Charsets.UTF_8)), 77 | BLACK_CIRCLE("⚫".toByteArray(Charsets.UTF_8)), 78 | WHITE_CIRCLE("⚪".toByteArray(Charsets.UTF_8)), 79 | RED_SQUARE("_".toByteArray(Charsets.UTF_8)), 80 | ORANGE_SQUARE("🟧".toByteArray(Charsets.UTF_8)), 81 | YELLOW_SQUARE("🟨".toByteArray(Charsets.UTF_8)), 82 | GREEN_SQUARE("🟩".toByteArray(Charsets.UTF_8)), 83 | BLUE_SQUARE("🟦".toByteArray(Charsets.UTF_8)), 84 | PURPLE_SQUARE("🟪".toByteArray(Charsets.UTF_8)), 85 | BROWN_SQUARE("🟫".toByteArray(Charsets.UTF_8)), 86 | BLACK_LARGE_SQUARE("⬛".toByteArray(Charsets.UTF_8)), 87 | WHITE_LARGE_SQUARE("⬜".toByteArray(Charsets.UTF_8)), 88 | BLACK_MEDIUM_SQUARE("◼".toByteArray(Charsets.UTF_8)), 89 | WHITE_MEDIUM_SQUARE("◻".toByteArray(Charsets.UTF_8)), 90 | BLACK_MEDIUM_SMALL_SQUARE("◾".toByteArray(Charsets.UTF_8)), 91 | WHITE_MEDIUM_SMALL_SQUARE("◽".toByteArray(Charsets.UTF_8)), 92 | BLACK_SMALL_SQUARE("▪".toByteArray(Charsets.UTF_8)), 93 | WHITE_SMALL_SQUARE("▫".toByteArray(Charsets.UTF_8)), 94 | LARGE_ORANGE_DIAMOND("🔶".toByteArray(Charsets.UTF_8)), 95 | LARGE_BLUE_DIAMOND("🔷".toByteArray(Charsets.UTF_8)), 96 | SMALL_ORANGE_DIAMOND("🔸".toByteArray(Charsets.UTF_8)), 97 | SMALL_BLUE_DIAMOND("🔹".toByteArray(Charsets.UTF_8)), 98 | RED_TRIANGLE_POINTED_UP("🔺".toByteArray(Charsets.UTF_8)), 99 | RED_TRIANGLE_POINTED_DOWN("🔻".toByteArray(Charsets.UTF_8)), 100 | DIAMOND_WITH_A_DOT("💠".toByteArray(Charsets.UTF_8)), 101 | WHITE_SQUARE_BUTTON("🔳".toByteArray(Charsets.UTF_8)), 102 | BLACK_SQUARE_BUTTON("🔲".toByteArray(Charsets.UTF_8)), 103 | LOUDSPEAKER("📢".toByteArray(Charsets.UTF_8)), 104 | MEGAPHONE("📣".toByteArray(Charsets.UTF_8)), 105 | POSTAL_HORN("📯".toByteArray(Charsets.UTF_8)), 106 | BELL("🔔".toByteArray(Charsets.UTF_8)), 107 | BELL_WITH_SLASH("🔕".toByteArray(Charsets.UTF_8)), 108 | MUSICAL_NOTE("🎵".toByteArray(Charsets.UTF_8)), 109 | MUSICAL_NOTES("🎶".toByteArray(Charsets.UTF_8)), 110 | ATM_SIGN("🏧".toByteArray(Charsets.UTF_8)), 111 | LITTER_IN_BIN_SIGN("🚮".toByteArray(Charsets.UTF_8)), 112 | POTABLE_WATER("🚰".toByteArray(Charsets.UTF_8)), 113 | WHEELCHAIR_SYMBOL("♿".toByteArray(Charsets.UTF_8)), 114 | MEN_S_ROOM("🚹".toByteArray(Charsets.UTF_8)), 115 | WOMEN_S_ROOM("🚺".toByteArray(Charsets.UTF_8)), 116 | RESTROOM("🚻".toByteArray(Charsets.UTF_8)), 117 | KEYCAP_NUMBER_SIGN("".toByteArray(Charsets.UTF_8)), 118 | KEYCAP_DIGIT_ZERO("0_️⃣".toByteArray(Charsets.UTF_8)), 119 | KEYCAP_DIGIT_ONE("1_️⃣".toByteArray(Charsets.UTF_8)), 120 | KEYCAP_DIGIT_TWO("2_️⃣".toByteArray(Charsets.UTF_8)), 121 | KEYCAP_DIGIT_THREE("3_️⃣".toByteArray(Charsets.UTF_8)), 122 | KEYCAP_DIGIT_FOUR("4_️⃣".toByteArray(Charsets.UTF_8)), 123 | KEYCAP_DIGIT_FIVE("5_️⃣".toByteArray(Charsets.UTF_8)), 124 | KEYCAP_DIGIT_SIX("6_️⃣".toByteArray(Charsets.UTF_8)), 125 | KEYCAP_DIGIT_SEVEN("7_️⃣".toByteArray(Charsets.UTF_8)), 126 | KEYCAP_DIGIT_EIGHT("8_️⃣".toByteArray(Charsets.UTF_8)), 127 | KEYCAP_DIGIT_NINE("9_️⃣".toByteArray(Charsets.UTF_8)), 128 | KEYCAP_10("🔟".toByteArray(Charsets.UTF_8)), 129 | INPUT_LATIN_UPPERCASE("🔠".toByteArray(Charsets.UTF_8)), 130 | INPUT_LATIN_LOWERCASE("🔡".toByteArray(Charsets.UTF_8)), 131 | INPUT_NUMBERS("🔢".toByteArray(Charsets.UTF_8)), 132 | INPUT_SYMBOLS("🔣".toByteArray(Charsets.UTF_8)), 133 | INPUT_LATIN_LETTERS("🔤".toByteArray(Charsets.UTF_8)), 134 | A_BUTTON_BLOOD_TYPE("🅰".toByteArray(Charsets.UTF_8)), 135 | AB_BUTTON_BLOOD_TYPE("🆎".toByteArray(Charsets.UTF_8)), 136 | B_BUTTON_BLOOD_TYPE("🅱".toByteArray(Charsets.UTF_8)), 137 | CL_BUTTON("🆑".toByteArray(Charsets.UTF_8)), 138 | COOL_BUTTON("🆒".toByteArray(Charsets.UTF_8)), 139 | FREE_BUTTON("🆓".toByteArray(Charsets.UTF_8)), 140 | INFORMATION("ℹ".toByteArray(Charsets.UTF_8)), 141 | ID_BUTTON("🆔".toByteArray(Charsets.UTF_8)), 142 | CIRCLED_M("Ⓜ".toByteArray(Charsets.UTF_8)), 143 | NEW_BUTTON("🆕".toByteArray(Charsets.UTF_8)), 144 | NG_BUTTON("🆖".toByteArray(Charsets.UTF_8)), 145 | O_BUTTON_BLOOD_TYPE("🅾".toByteArray(Charsets.UTF_8)), 146 | OK_BUTTON("🆗".toByteArray(Charsets.UTF_8)), 147 | P_BUTTON("🅿".toByteArray(Charsets.UTF_8)), 148 | SOS_BUTTON("🆘".toByteArray(Charsets.UTF_8)), 149 | UP_BUTTON("🆙".toByteArray(Charsets.UTF_8)), 150 | VS_BUTTON("🆚".toByteArray(Charsets.UTF_8)), 151 | JAPANESE_HERE_BUTTON("🈁".toByteArray(Charsets.UTF_8)), 152 | JAPANESE_SERVICE_CHARGE_BUTTON("🈂".toByteArray(Charsets.UTF_8)), 153 | JAPANESE_MONTHLY_AMOUNT_BUTTON("🈷".toByteArray(Charsets.UTF_8)), 154 | JAPANESE_NOT_FREE_OF_CHARGE_BUTTON("🈶".toByteArray(Charsets.UTF_8)), 155 | JAPANESE_RESERVED_BUTTON("🈯".toByteArray(Charsets.UTF_8)), 156 | JAPANESE_BARGAIN_BUTTON("🉐".toByteArray(Charsets.UTF_8)), 157 | JAPANESE_DISCOUNT_BUTTON("🈹".toByteArray(Charsets.UTF_8)), 158 | JAPANESE_FREE_OF_CHARGE_BUTTON("🈚".toByteArray(Charsets.UTF_8)), 159 | JAPANESE_PROHIBITED_BUTTON("🈲".toByteArray(Charsets.UTF_8)), 160 | JAPANESE_ACCEPTABLE_BUTTON("🉑".toByteArray(Charsets.UTF_8)), 161 | JAPANESE_APPLICATION_BUTTON("🈸".toByteArray(Charsets.UTF_8)), 162 | JAPANESE_PASSING_GRADE_BUTTON("🈴".toByteArray(Charsets.UTF_8)), 163 | JAPANESE_VACANCY_BUTTON("🈳".toByteArray(Charsets.UTF_8)), 164 | JAPANESE_CONGRATULATIONS_BUTTON("㊗".toByteArray(Charsets.UTF_8)), 165 | JAPANESE_SECRET_BUTTON("㊙".toByteArray(Charsets.UTF_8)), 166 | JAPANESE_OPEN_FOR_BUSINESS_BUTTON("🈺".toByteArray(Charsets.UTF_8)), 167 | JAPANESE_NO_VACANCY_BUTTON("🈵".toByteArray(Charsets.UTF_8)), 168 | BABY_SYMBOL("🚼".toByteArray(Charsets.UTF_8)), 169 | WATER_CLOSET("🚾".toByteArray(Charsets.UTF_8)), 170 | WARNING("⚠".toByteArray(Charsets.UTF_8)), 171 | CHILDREN_CROSSING("🚸".toByteArray(Charsets.UTF_8)), 172 | NO_ENTRY("⛔".toByteArray(Charsets.UTF_8)), 173 | PROHIBITED("🚫".toByteArray(Charsets.UTF_8)), 174 | NO_BICYCLES("🚳".toByteArray(Charsets.UTF_8)), 175 | NO_SMOKING("🚭".toByteArray(Charsets.UTF_8)), 176 | NO_LITTERING("🚯".toByteArray(Charsets.UTF_8)), 177 | NON_POTABLE_WATER("🚱".toByteArray(Charsets.UTF_8)), 178 | NO_PEDESTRIANS("🚷".toByteArray(Charsets.UTF_8)), 179 | NO_ONE_UNDER_EIGHTEEN("🔞".toByteArray(Charsets.UTF_8)), 180 | RADIOACTIVE("☢".toByteArray(Charsets.UTF_8)), 181 | BIOHAZARD("☣".toByteArray(Charsets.UTF_8)), 182 | UP_ARROW("⬆".toByteArray(Charsets.UTF_8)), 183 | UP_RIGHT_ARROW("↗".toByteArray(Charsets.UTF_8)), 184 | RIGHT_ARROW("➡".toByteArray(Charsets.UTF_8)), 185 | DOWN_RIGHT_ARROW("↘".toByteArray(Charsets.UTF_8)), 186 | DOWN_ARROW("⬇".toByteArray(Charsets.UTF_8)), 187 | DOWN_LEFT_ARROW("↙".toByteArray(Charsets.UTF_8)), 188 | LEFT_ARROW("⬅".toByteArray(Charsets.UTF_8)), 189 | UP_LEFT_ARROW("↖".toByteArray(Charsets.UTF_8)), 190 | UP_DOWN_ARROW("↕".toByteArray(Charsets.UTF_8)), 191 | LEFT_RIGHT_ARROW("↔".toByteArray(Charsets.UTF_8)), 192 | RIGHT_ARROW_CURVING_LEFT("↩".toByteArray(Charsets.UTF_8)), 193 | LEFT_ARROW_CURVING_RIGHT("↪".toByteArray(Charsets.UTF_8)), 194 | RIGHT_ARROW_CURVING_UP("⤴".toByteArray(Charsets.UTF_8)), 195 | RIGHT_ARROW_CURVING_DOWN("⤵".toByteArray(Charsets.UTF_8)), 196 | CLOCKWISE_VERTICAL_ARROWS("🔃".toByteArray(Charsets.UTF_8)), 197 | COUNTERCLOCKWISE_ARROWS_BUTTON("🔄".toByteArray(Charsets.UTF_8)), 198 | BACK_ARROW("🔙".toByteArray(Charsets.UTF_8)), 199 | END_ARROW("🔚".toByteArray(Charsets.UTF_8)), 200 | ON_ARROW("🔛".toByteArray(Charsets.UTF_8)), 201 | SOON_ARROW("🔜".toByteArray(Charsets.UTF_8)), 202 | TOP_ARROW("🔝".toByteArray(Charsets.UTF_8)), 203 | PLACE_OF_WORSHIP("🛐".toByteArray(Charsets.UTF_8)), 204 | ATOM_SYMBOL("⚛".toByteArray(Charsets.UTF_8)), 205 | OM("🕉".toByteArray(Charsets.UTF_8)), 206 | STAR_OF_DAVID("✡".toByteArray(Charsets.UTF_8)), 207 | WHEEL_OF_DHARMA("☸".toByteArray(Charsets.UTF_8)), 208 | YIN_YANG("☯".toByteArray(Charsets.UTF_8)), 209 | LATIN_CROSS("✝".toByteArray(Charsets.UTF_8)), 210 | ORTHODOX_CROSS("☦".toByteArray(Charsets.UTF_8)), 211 | STAR_AND_CRESCENT("☪".toByteArray(Charsets.UTF_8)), 212 | PEACE_SYMBOL("☮".toByteArray(Charsets.UTF_8)), 213 | MENORAH("🕎".toByteArray(Charsets.UTF_8)), 214 | DOTTED_SIX_POINTED_STAR("🔯".toByteArray(Charsets.UTF_8)), 215 | ARIES("♈".toByteArray(Charsets.UTF_8)), 216 | TAURUS("♉".toByteArray(Charsets.UTF_8)), 217 | GEMINI("♊".toByteArray(Charsets.UTF_8)), 218 | CANCER("♋".toByteArray(Charsets.UTF_8)), 219 | LEO("♌".toByteArray(Charsets.UTF_8)), 220 | VIRGO("♍".toByteArray(Charsets.UTF_8)), 221 | LIBRA("♎".toByteArray(Charsets.UTF_8)), 222 | SCORPIO("♏".toByteArray(Charsets.UTF_8)), 223 | SAGITTARIUS("♐".toByteArray(Charsets.UTF_8)), 224 | CAPRICORN("♑".toByteArray(Charsets.UTF_8)), 225 | AQUARIUS("♒".toByteArray(Charsets.UTF_8)), 226 | PISCES("♓".toByteArray(Charsets.UTF_8)), 227 | OPHIUCHUS("⛎".toByteArray(Charsets.UTF_8)), 228 | SHUFFLE_TRACKS_BUTTON("🔀".toByteArray(Charsets.UTF_8)), 229 | REPEAT_BUTTON("🔁".toByteArray(Charsets.UTF_8)), 230 | REPEAT_SINGLE_BUTTON("🔂".toByteArray(Charsets.UTF_8)), 231 | PLAY_BUTTON("▶".toByteArray(Charsets.UTF_8)), 232 | FAST_FORWARD_BUTTON("⏩".toByteArray(Charsets.UTF_8)), 233 | REVERSE_BUTTON("◀".toByteArray(Charsets.UTF_8)), 234 | FAST_REVERSE_BUTTON("⏪".toByteArray(Charsets.UTF_8)), 235 | UPWARDS_BUTTON("🔼".toByteArray(Charsets.UTF_8)), 236 | FAST_UP_BUTTON("⏫".toByteArray(Charsets.UTF_8)), 237 | DOWNWARDS_BUTTON("🔽".toByteArray(Charsets.UTF_8)), 238 | FAST_DOWN_BUTTON("⏬".toByteArray(Charsets.UTF_8)), 239 | STOP_BUTTON("⏹".toByteArray(Charsets.UTF_8)), 240 | EJECT_BUTTON("⏏".toByteArray(Charsets.UTF_8)), 241 | CINEMA("🎦".toByteArray(Charsets.UTF_8)), 242 | DIM_BUTTON("🔅".toByteArray(Charsets.UTF_8)), 243 | BRIGHT_BUTTON("🔆".toByteArray(Charsets.UTF_8)), 244 | ANTENNA_BARS("📶".toByteArray(Charsets.UTF_8)), 245 | VIBRATION_MODE("📳".toByteArray(Charsets.UTF_8)), 246 | MOBILE_PHONE_OFF("📴".toByteArray(Charsets.UTF_8)), 247 | MULTIPLY("✖".toByteArray(Charsets.UTF_8)), 248 | PLUS("➕".toByteArray(Charsets.UTF_8)), 249 | MINUS("➖".toByteArray(Charsets.UTF_8)), 250 | DIVIDE("➗".toByteArray(Charsets.UTF_8)), 251 | INFINITY("♾".toByteArray(Charsets.UTF_8)), 252 | DOUBLE_EXCLAMATION_MARK("‼️".toByteArray(Charsets.UTF_8)), 253 | EXCLAMATION_QUESTION_MARK("⁉️".toByteArray(Charsets.UTF_8)), 254 | QUESTION_MARK("❓".toByteArray(Charsets.UTF_8)), 255 | WHITE_QUESTION_MARK("❔".toByteArray(Charsets.UTF_8)), 256 | WHITE_EXCLAMATION_MARK("❕".toByteArray(Charsets.UTF_8)), 257 | EXCLAMATION_MARK("❗".toByteArray(Charsets.UTF_8)), 258 | RECYCLING_SYMBOL("♻".toByteArray(Charsets.UTF_8)), 259 | TRIDENT_EMBLEM("🔱".toByteArray(Charsets.UTF_8)), 260 | NAME_BADGE("📛".toByteArray(Charsets.UTF_8)), 261 | JAPANESE_SYMBOL_FOR_BEGINNER("🔰".toByteArray(Charsets.UTF_8)), 262 | HOLLOW_RED_CIRCLE("⭕".toByteArray(Charsets.UTF_8)), 263 | CHECK_MARK_BUTTON("✅".toByteArray(Charsets.UTF_8)), 264 | CHECK_BOX_WITH_CHECK("☑".toByteArray(Charsets.UTF_8)), 265 | CHECK_MARK("✔".toByteArray(Charsets.UTF_8)), 266 | CROSS_MARK("❌".toByteArray(Charsets.UTF_8)), 267 | CROSS_MARK_BUTTON("❎".toByteArray(Charsets.UTF_8)), 268 | CURLY_LOOP("➰".toByteArray(Charsets.UTF_8)), 269 | DOUBLE_CURLY_LOOP("➿".toByteArray(Charsets.UTF_8)), 270 | PART_ALTERNATION_MARK("〽️".toByteArray(Charsets.UTF_8)), 271 | EIGHT_SPOKED_ASTERISK("✳️".toByteArray(Charsets.UTF_8)), 272 | EIGHT_POINTED_STAR("✴️".toByteArray(Charsets.UTF_8)), 273 | SPARKLE("❇️".toByteArray(Charsets.UTF_8)), 274 | COPYRIGHT("©️".toByteArray(Charsets.UTF_8)), 275 | REGISTERED("®️".toByteArray(Charsets.UTF_8)), 276 | TRADE_MARK("™️".toByteArray(Charsets.UTF_8)); 277 | } 278 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/java/com/withplum/emojibottomsheetdialog/emoji/categoryUnicodes/TravelPlacesCategoryUnicodes.kt: -------------------------------------------------------------------------------- 1 | package com.withplum.emojibottomsheetdialog.emoji.categoryUnicodes 2 | 3 | enum class TravelPlacesCategoryUnicodes(override val unicode: ByteArray) : CategoryUnicodes { 4 | GLOBE_SHOWING_EUROPE_AFRICA("\uD83C\uDF0D".toByteArray(Charsets.UTF_8)), 5 | GLOBE_SHOWING_AMERICAS("\uD83C\uDF0E".toByteArray(Charsets.UTF_8)), 6 | GLOBE_SHOWING_ASIA_AUSTRALIA("\uD83C\uDF0F".toByteArray(Charsets.UTF_8)), 7 | GLOBE_WITH_MERIDIANS("\uD83C\uDF10".toByteArray(Charsets.UTF_8)), 8 | WORLD_MAP("\uD83D\uDDFA".toByteArray(Charsets.UTF_8)), 9 | MAP_OF_JAPAN("\uD83D\uDDFE".toByteArray(Charsets.UTF_8)), 10 | COMPASS("\uD83E\uDDED".toByteArray(Charsets.UTF_8)), 11 | SNOW_CAPPED_MOUNTAIN("\uD83C\uDFD4".toByteArray(Charsets.UTF_8)), 12 | MOUNTAIN("⛰".toByteArray(Charsets.UTF_8)), 13 | VOLCANO("\uD83C\uDF0B".toByteArray(Charsets.UTF_8)), 14 | MOUNT_FUJI("\uD83D\uDDFB".toByteArray(Charsets.UTF_8)), 15 | CAMPING("\uD83C\uDFD5️".toByteArray(Charsets.UTF_8)), 16 | BEACH_WITH_UMBRELLA("\uD83C\uDFD6️".toByteArray(Charsets.UTF_8)), 17 | DESERT("\uD83C\uDFDC️".toByteArray(Charsets.UTF_8)), 18 | DESERT_ISLAND("\uD83C\uDFDD️".toByteArray(Charsets.UTF_8)), 19 | NATIONAL_PARK("\uD83C\uDFDE".toByteArray(Charsets.UTF_8)), 20 | STADIUM("\uD83C\uDFDF".toByteArray(Charsets.UTF_8)), 21 | CLASSICAL_BUILDING("\uD83C\uDFDB️".toByteArray(Charsets.UTF_8)), 22 | BUILDING_CONSTRUCTION("\uD83C\uDFD7️".toByteArray(Charsets.UTF_8)), 23 | BRICK("\uD83E\uDDF1".toByteArray(Charsets.UTF_8)), 24 | HOUSES("\uD83C\uDFD8️".toByteArray(Charsets.UTF_8)), 25 | DERELICT_HOUSE("\uD83C\uDFDA️".toByteArray(Charsets.UTF_8)), 26 | HOUSE("\uD83C\uDFE0".toByteArray(Charsets.UTF_8)), 27 | HOUSE_WITH_GARDEN("\uD83C\uDFE1".toByteArray(Charsets.UTF_8)), 28 | OFFICE_BUILDING("\uD83C\uDFE2".toByteArray(Charsets.UTF_8)), 29 | JAPANESE_POST_OFFICE("\uD83C\uDFE3".toByteArray(Charsets.UTF_8)), 30 | POST_OFFICE("\uD83C\uDFE4".toByteArray(Charsets.UTF_8)), 31 | HOSPITAL("\uD83C\uDFE5️".toByteArray(Charsets.UTF_8)), 32 | BANK("\uD83C\uDFE6️".toByteArray(Charsets.UTF_8)), 33 | HOTEL("\uD83C\uDFE8".toByteArray(Charsets.UTF_8)), 34 | LOVE_HOTEL("🏩".toByteArray(Charsets.UTF_8)), 35 | CONVENIENCE_STORE("🏪".toByteArray(Charsets.UTF_8)), 36 | SCHOOL("🏫".toByteArray(Charsets.UTF_8)), 37 | DEPARTMENT_STORE("🏬".toByteArray(Charsets.UTF_8)), 38 | FACTORY("🏭".toByteArray(Charsets.UTF_8)), 39 | JAPANESE_CASTLE("🏯".toByteArray(Charsets.UTF_8)), 40 | CASTLE("🏰".toByteArray(Charsets.UTF_8)), 41 | WEDDING("💒".toByteArray(Charsets.UTF_8)), 42 | TOKYO_TOWER("🗼".toByteArray(Charsets.UTF_8)), 43 | STATUE_OF_LIBERTY("🗽".toByteArray(Charsets.UTF_8)), 44 | CHURCH("⛪".toByteArray(Charsets.UTF_8)), 45 | MOSQUE("🕌".toByteArray(Charsets.UTF_8)), 46 | HINDU_TEMPLE("🛕".toByteArray(Charsets.UTF_8)), 47 | SYNAGOGUE("🕍".toByteArray(Charsets.UTF_8)), 48 | SHINTO_SHRINE("⛩️".toByteArray(Charsets.UTF_8)), 49 | KAABA("🕋".toByteArray(Charsets.UTF_8)), 50 | FOUNTAIN("⛲".toByteArray(Charsets.UTF_8)), 51 | TENT("⛺".toByteArray(Charsets.UTF_8)), 52 | FOGGY("🌁".toByteArray(Charsets.UTF_8)), 53 | NIGHT_WITH_STARS("🌃".toByteArray(Charsets.UTF_8)), 54 | CITYSCAPE("🏙️".toByteArray(Charsets.UTF_8)), 55 | SUNRISE_OVER_MOUNTAINS("🌄".toByteArray(Charsets.UTF_8)), 56 | SUNRISE("🌅".toByteArray(Charsets.UTF_8)), 57 | CITYSCAPE_AT_DUSK("🌆".toByteArray(Charsets.UTF_8)), 58 | SUNSET("🌇".toByteArray(Charsets.UTF_8)), 59 | BRIDGE_AT_NIGHT("🌉".toByteArray(Charsets.UTF_8)), 60 | HOT_SPRINGS("♨️".toByteArray(Charsets.UTF_8)), 61 | CAROUSEL_HORSE("🎠".toByteArray(Charsets.UTF_8)), 62 | FERRIS_WHEEL("🎡".toByteArray(Charsets.UTF_8)), 63 | ROLLER_COASTER("🎢".toByteArray(Charsets.UTF_8)), 64 | BARBER_POLE("💈".toByteArray(Charsets.UTF_8)), 65 | CIRCUS_TENT("🎪".toByteArray(Charsets.UTF_8)), 66 | LOCOMOTIVE("🚂".toByteArray(Charsets.UTF_8)), 67 | RAILWAY_CAR("🚃".toByteArray(Charsets.UTF_8)), 68 | HIGH_SPEED_TRAIN("🚄".toByteArray(Charsets.UTF_8)), 69 | BULLET_TRAIN("🚅".toByteArray(Charsets.UTF_8)), 70 | TRAIN("🚆".toByteArray(Charsets.UTF_8)), 71 | METRO("🚇".toByteArray(Charsets.UTF_8)), 72 | LIGHT_RAIL("🚈".toByteArray(Charsets.UTF_8)), 73 | STATION("🚉".toByteArray(Charsets.UTF_8)), 74 | TRAM("🚊".toByteArray(Charsets.UTF_8)), 75 | MONORAIL("🚝".toByteArray(Charsets.UTF_8)), 76 | MOUNTAIN_RAILWAY("🚞".toByteArray(Charsets.UTF_8)), 77 | TRAM_CAR("🚋".toByteArray(Charsets.UTF_8)), 78 | BUS("🚌".toByteArray(Charsets.UTF_8)), 79 | ONCOMING_BUS("🚍".toByteArray(Charsets.UTF_8)), 80 | TROLLEYBUS("🚎".toByteArray(Charsets.UTF_8)), 81 | MINIBUS("🚐".toByteArray(Charsets.UTF_8)), 82 | AMBULANCE("🚑".toByteArray(Charsets.UTF_8)), 83 | FIRE_ENGINE("🚒".toByteArray(Charsets.UTF_8)), 84 | POLICE_CAR("🚓".toByteArray(Charsets.UTF_8)), 85 | ONCOMING_POLICE_CAR("🚔".toByteArray(Charsets.UTF_8)), 86 | TAXI("🚕".toByteArray(Charsets.UTF_8)), 87 | ONCOMING_TAXI("🚖".toByteArray(Charsets.UTF_8)), 88 | AUTOMOBILE("🚗".toByteArray(Charsets.UTF_8)), 89 | ONCOMING_AUTOMOBILE("🚘".toByteArray(Charsets.UTF_8)), 90 | SPORT_UTILITY_VEHICLE("🚙".toByteArray(Charsets.UTF_8)), 91 | DELIVERY_TRUCK("🚚".toByteArray(Charsets.UTF_8)), 92 | ARTICULATED_LORRY("🚛".toByteArray(Charsets.UTF_8)), 93 | TRACTOR("🚜".toByteArray(Charsets.UTF_8)), 94 | RACING_CAR("🏎️".toByteArray(Charsets.UTF_8)), 95 | MOTORCYCLE("🏍️".toByteArray(Charsets.UTF_8)), 96 | MOTOR_SCOOTER("🛵".toByteArray(Charsets.UTF_8)), 97 | MANUAL_WHEELCHAIR("🦽".toByteArray(Charsets.UTF_8)), 98 | MOTORIZED_WHEELCHAIR("🦼".toByteArray(Charsets.UTF_8)), 99 | AUTO_RICKSHAW("🛺".toByteArray(Charsets.UTF_8)), 100 | BICYCLE(" 🚲".toByteArray(Charsets.UTF_8)), 101 | KICK_SCOOTER("🛴".toByteArray(Charsets.UTF_8)), 102 | SKATEBOARD("🛹".toByteArray(Charsets.UTF_8)), 103 | BUS_STOP("🚏".toByteArray(Charsets.UTF_8)), 104 | MOTORWAY("🛣️".toByteArray(Charsets.UTF_8)), 105 | RAILWAY_TRACK("🛤️".toByteArray(Charsets.UTF_8)), 106 | OIL_DRUM("🛢️".toByteArray(Charsets.UTF_8)), 107 | FUEL_PUMP("⛽".toByteArray(Charsets.UTF_8)), 108 | POLICE_CAR_LIGHT("🚨".toByteArray(Charsets.UTF_8)), 109 | HORIZONTAL_TRAFFIC_LIGHT("🚥".toByteArray(Charsets.UTF_8)), 110 | VERTICAL_TRAFFIC_LIGHT("🚦".toByteArray(Charsets.UTF_8)), 111 | STOP_SIGN("🛑".toByteArray(Charsets.UTF_8)), 112 | CONSTRUCTION("🚧".toByteArray(Charsets.UTF_8)), 113 | ANCHOR("⚓".toByteArray(Charsets.UTF_8)), 114 | SAILBOAT("⛵".toByteArray(Charsets.UTF_8)), 115 | CANOE("🛶".toByteArray(Charsets.UTF_8)), 116 | SPEEDBOAT("🚤".toByteArray(Charsets.UTF_8)), 117 | PASSENGER_SHIP("🛳️".toByteArray(Charsets.UTF_8)), 118 | FERRY("⛴️".toByteArray(Charsets.UTF_8)), 119 | MOTOR_BOAT("🛥️".toByteArray(Charsets.UTF_8)), 120 | SHIP("🚢".toByteArray(Charsets.UTF_8)), 121 | AIRPLANE("✈️".toByteArray(Charsets.UTF_8)), 122 | SMALL_AIRPLANE("🛩️".toByteArray(Charsets.UTF_8)), 123 | AIRPLANE_DEPARTURE("🛫".toByteArray(Charsets.UTF_8)), 124 | AIRPLANE_ARRIVAL("🛬".toByteArray(Charsets.UTF_8)), 125 | PARACHUTE("🪂".toByteArray(Charsets.UTF_8)), 126 | SEAT("💺".toByteArray(Charsets.UTF_8)), 127 | HELICOPTER("🚁".toByteArray(Charsets.UTF_8)), 128 | SUSPENSION_RAILWAY(" 🚟".toByteArray(Charsets.UTF_8)), 129 | MOUNTAIN_CABLEWAY("🚠".toByteArray(Charsets.UTF_8)), 130 | AERIAL_TRAMWAY("🚡".toByteArray(Charsets.UTF_8)), 131 | SATELLITE("🛰️".toByteArray(Charsets.UTF_8)), 132 | ROCKET("🚀".toByteArray(Charsets.UTF_8)), 133 | FLYING_SAUCER("🛸".toByteArray(Charsets.UTF_8)), 134 | BELLHOP_BELL("🛎️".toByteArray(Charsets.UTF_8)), 135 | LUGGAGE("🧳".toByteArray(Charsets.UTF_8)), 136 | HOURGLASS_DONE("⌛".toByteArray(Charsets.UTF_8)), 137 | HOURGLASS_NOT_DONE("⏳".toByteArray(Charsets.UTF_8)), 138 | WATCH("⌚".toByteArray(Charsets.UTF_8)), 139 | ALARM_CLOCK("⏰".toByteArray(Charsets.UTF_8)), 140 | STOPWATCH("⏱️".toByteArray(Charsets.UTF_8)), 141 | TIMER_CLOCK("⏲️".toByteArray(Charsets.UTF_8)), 142 | MANTELPIECE_CLOCK("🕰️".toByteArray(Charsets.UTF_8)), 143 | TWELVE_OCLOCK("🕛".toByteArray(Charsets.UTF_8)), 144 | TWELVE_THIRTY("🕧".toByteArray(Charsets.UTF_8)), 145 | ONE_OCLOCK("🕐".toByteArray(Charsets.UTF_8)), 146 | ONE_THIRTY("🕜".toByteArray(Charsets.UTF_8)), 147 | TWO_OCLOCK("🕑".toByteArray(Charsets.UTF_8)), 148 | TWO_THIRTY("🕝".toByteArray(Charsets.UTF_8)), 149 | THREE_OCLOCK("🕒".toByteArray(Charsets.UTF_8)), 150 | THREE_THIRTY("🕞".toByteArray(Charsets.UTF_8)), 151 | FOUR_OCLOCK("🕓".toByteArray(Charsets.UTF_8)), 152 | FOUR_THIRTY("🕟".toByteArray(Charsets.UTF_8)), 153 | FIVE_OCLOCK("🕔".toByteArray(Charsets.UTF_8)), 154 | FIVE_THIRTY("🕠".toByteArray(Charsets.UTF_8)), 155 | SIX_OCLOCK("🕕".toByteArray(Charsets.UTF_8)), 156 | SIX_THIRTY("🕡".toByteArray(Charsets.UTF_8)), 157 | SEVEN_OCLOCK("🕖".toByteArray(Charsets.UTF_8)), 158 | SEVEN_THIRTY("🕢".toByteArray(Charsets.UTF_8)), 159 | EIGHT_OCLOCK("🕗".toByteArray(Charsets.UTF_8)), 160 | EIGHT_THIRTY("🕣".toByteArray(Charsets.UTF_8)), 161 | NINE_OCLOCK("🕘".toByteArray(Charsets.UTF_8)), 162 | NINE_THIRTY("🕤".toByteArray(Charsets.UTF_8)), 163 | TEN_OCLOCK("🕙".toByteArray(Charsets.UTF_8)), 164 | TEN_THIRTY("🕥".toByteArray(Charsets.UTF_8)), 165 | ELEVEN_OCLOCK("🕚".toByteArray(Charsets.UTF_8)), 166 | ELEVEN_THIRTY("🕦".toByteArray(Charsets.UTF_8)), 167 | NEW_MOON("🌑".toByteArray(Charsets.UTF_8)), 168 | WAXING_CRESCENT_MOON("🌒".toByteArray(Charsets.UTF_8)), 169 | FIRST_QUARTER_MOON("🌓".toByteArray(Charsets.UTF_8)), 170 | WAXING_GIBBOUS_MOON("🌔".toByteArray(Charsets.UTF_8)), 171 | FULL_MOON("🌕".toByteArray(Charsets.UTF_8)), 172 | WANING_GIBBOUS_MOON("🌖".toByteArray(Charsets.UTF_8)), 173 | LAST_QUARTER_MOON("🌗".toByteArray(Charsets.UTF_8)), 174 | WANING_CRESCENT_MOON("🌘".toByteArray(Charsets.UTF_8)), 175 | CRESCENT_MOON("🌙".toByteArray(Charsets.UTF_8)), 176 | NEW_MOON_FACE("🌚".toByteArray(Charsets.UTF_8)), 177 | FIRST_QUARTER_MOON_FACE("🌛".toByteArray(Charsets.UTF_8)), 178 | LAST_QUARTER_MOON_FACE("🌜".toByteArray(Charsets.UTF_8)), 179 | THERMOMETER("🌡️".toByteArray(Charsets.UTF_8)), 180 | SUN("☀️".toByteArray(Charsets.UTF_8)), 181 | FULL_MOON_FACE("🌝".toByteArray(Charsets.UTF_8)), 182 | SUN_WITH_FACE("🌞".toByteArray(Charsets.UTF_8)), 183 | RINGED_PLANET("🪐".toByteArray(Charsets.UTF_8)), 184 | STAR("⭐".toByteArray(Charsets.UTF_8)), 185 | GLOWING_STAR("🌟".toByteArray(Charsets.UTF_8)), 186 | SHOOTING_STAR("🌠".toByteArray(Charsets.UTF_8)), 187 | MILKY_WAY("🌌".toByteArray(Charsets.UTF_8)), 188 | CLOUD("☁️".toByteArray(Charsets.UTF_8)), 189 | SUN_BEHIND_CLOUD("⛅".toByteArray(Charsets.UTF_8)), 190 | CLOUD_WITH_LIGHTNING_AND_RAIN("⛈️".toByteArray(Charsets.UTF_8)), 191 | SUN_BEHIND_SMALL_CLOUD("🌤️".toByteArray(Charsets.UTF_8)), 192 | SUN_BEHIND_LARGE_CLOUD("🌥".toByteArray(Charsets.UTF_8)), 193 | SUN_BEHIND_RAIN_CLOUD("🌦️".toByteArray(Charsets.UTF_8)), 194 | CLOUD_WITH_RAIN("🌧️".toByteArray(Charsets.UTF_8)), 195 | CLOUD_WITH_SNOW("🌨️".toByteArray(Charsets.UTF_8)), 196 | CLOUD_WITH_LIGHTNING("🌩️".toByteArray(Charsets.UTF_8)), 197 | TORNADO("🌪️".toByteArray(Charsets.UTF_8)), 198 | FOG("🌫️".toByteArray(Charsets.UTF_8)), 199 | WIND_FACE("🌬️".toByteArray(Charsets.UTF_8)), 200 | CYCLONE("🌀".toByteArray(Charsets.UTF_8)), 201 | RAINBOW("🌈".toByteArray(Charsets.UTF_8)), 202 | CLOSED_UMBRELLA("🌂".toByteArray(Charsets.UTF_8)), 203 | UMBRELLA("☂".toByteArray(Charsets.UTF_8)), 204 | UMBRELLA_WITH_RAIN_DROPS("☔".toByteArray(Charsets.UTF_8)), 205 | UMBRELLA_ON_GROUND("⛱️".toByteArray(Charsets.UTF_8)), 206 | HIGH_VOLTAGE("⚡".toByteArray(Charsets.UTF_8)), 207 | SNOWFLAKE("❄️".toByteArray(Charsets.UTF_8)), 208 | SNOWMAN("☃️".toByteArray(Charsets.UTF_8)), 209 | SNOWMAN_WITHOUT_SNOW("⛄".toByteArray(Charsets.UTF_8)), 210 | COMET("☄️".toByteArray(Charsets.UTF_8)), 211 | FIRE("🔥".toByteArray(Charsets.UTF_8)), 212 | DROPLET("💧".toByteArray(Charsets.UTF_8)), 213 | WATER_WAVE("🌊".toByteArray(Charsets.UTF_8)); 214 | } 215 | 216 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/java/com/withplum/emojibottomsheetdialog/view/EmojiPickerDialog.kt: -------------------------------------------------------------------------------- 1 | package com.withplum.emojibottomsheetdialog.view 2 | 3 | import android.annotation.SuppressLint 4 | import android.content.Context 5 | import android.content.res.Resources 6 | import android.util.TypedValue 7 | import android.view.View 8 | import android.widget.LinearLayout 9 | import android.widget.TextView 10 | import androidx.recyclerview.widget.GridLayoutManager 11 | import androidx.recyclerview.widget.RecyclerView 12 | import com.google.android.material.bottomsheet.BottomSheetDialog 13 | import com.withplum.emojibottomsheetdialog.R 14 | import com.withplum.emojibottomsheetdialog.view.recyclerview.EmojiItemView 15 | import com.withplum.emojibottomsheetdialog.view.recyclerview.EmojiRecyclerViewAdapter 16 | 17 | class EmojiPickerDialog( 18 | private val context: Context, 19 | private val title: String?, 20 | private val dismissWithAnim: Boolean, 21 | private val cancelable: Boolean, 22 | private val listener: EmojiClickListener? = null, 23 | private val emojiItemViewList: List 24 | ) { 25 | private val bottomSheetDialog = BottomSheetDialog(context) 26 | 27 | private lateinit var titleTextView: TextView 28 | private lateinit var emojiCategoryViewContainer: LinearLayout 29 | private lateinit var emojiListRecyclerView: RecyclerView 30 | private lateinit var gridLayoutManager: GridLayoutManager 31 | 32 | init { 33 | createBottomSheetDialog() 34 | } 35 | 36 | @SuppressLint("InflateParams") 37 | private fun createBottomSheetDialog() { 38 | bottomSheetDialog.apply { 39 | layoutInflater.inflate(R.layout.view_emoji_bottom_sheet, null).apply { 40 | setContentView(this) 41 | initializeViews(this) 42 | } 43 | title?.let { titleTextView.text = it } 44 | 45 | applyTitleTextAppearance(context.theme) 46 | dismissWithAnimation = dismissWithAnim 47 | setCanceledOnTouchOutside(cancelable) 48 | } 49 | } 50 | 51 | private fun applyTitleTextAppearance(theme: Resources.Theme) { 52 | val typedValue = TypedValue() 53 | if (theme.resolveAttribute(R.attr.emojiBottomSheetTitleTextAppearance, typedValue, true)) { 54 | titleTextView.setTextAppearance(typedValue.resourceId) 55 | } 56 | } 57 | 58 | private fun initializeViews(view: View) { 59 | emojiCategoryViewContainer = view.findViewById(R.id.ll_emoji_category_view_container) 60 | titleTextView = view.findViewById(R.id.tv_bottom_sheet_title) 61 | emojiListRecyclerView = view.findViewById(R.id.rv_emoji_category) 62 | attachLayoutManager() 63 | emojiListRecyclerView.adapter = EmojiRecyclerViewAdapter(emojiItemViewList).apply { 64 | emojiClickedListener = { unicode, _ -> 65 | selectEmoji(unicode) 66 | } 67 | } 68 | } 69 | 70 | private fun attachLayoutManager() { 71 | gridLayoutManager = GridLayoutManager(context, 10) 72 | gridLayoutManager.apply { 73 | emojiListRecyclerView.layoutManager = this 74 | isSmoothScrollbarEnabled = true 75 | orientation = RecyclerView.VERTICAL 76 | spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() { 77 | override fun getSpanSize(position: Int): Int { 78 | return if ((emojiListRecyclerView.adapter as EmojiRecyclerViewAdapter).isHeader(position)) gridLayoutManager.spanCount else 1 79 | } 80 | } 81 | } 82 | } 83 | 84 | fun show() { 85 | bottomSheetDialog.show() 86 | } 87 | 88 | private fun selectEmoji(itemView: EmojiItemView) { 89 | listener?.emojiClicked(itemView) 90 | bottomSheetDialog.dismiss() 91 | } 92 | 93 | class Builder( 94 | private val context: Context, 95 | private val emojiItemViewList: List, 96 | var title: String? = null, 97 | var dismissWithAnimation: Boolean = true, 98 | var cancelable: Boolean = true, 99 | var listener: EmojiClickListener? = null 100 | ) { 101 | 102 | fun title(text: String) = this.apply { 103 | title = text 104 | } 105 | 106 | fun dismissWithAnimation(dismiss: Boolean) = this.apply { 107 | dismissWithAnimation = dismiss 108 | } 109 | 110 | fun cancelable(boolean: Boolean) = this.apply { 111 | cancelable = boolean 112 | } 113 | 114 | fun listener(emojiClickListener: EmojiClickListener) = this.apply { 115 | listener = emojiClickListener 116 | } 117 | 118 | fun build() = EmojiPickerDialog( 119 | context, 120 | title, 121 | dismissWithAnimation, 122 | cancelable, 123 | listener, 124 | emojiItemViewList 125 | ) 126 | } 127 | } 128 | 129 | interface EmojiClickListener { 130 | fun emojiClicked(unicode: EmojiItemView) 131 | } 132 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/java/com/withplum/emojibottomsheetdialog/view/recyclerview/EmojiRecyclerView.kt: -------------------------------------------------------------------------------- 1 | package com.withplum.emojibottomsheetdialog.view.recyclerview 2 | 3 | import java.nio.charset.StandardCharsets 4 | 5 | data class EmojiItemView(val value: String, val type: EmojiItemType = EmojiItemType.EMOJI, val name: String? = null) { 6 | companion object { 7 | fun createEmojiViewItem(unicode: ByteArray, unicodeName: String): EmojiItemView { 8 | return EmojiItemView(unicode.toAscii(), EmojiItemType.EMOJI, unicodeName) 9 | } 10 | 11 | fun createTitleViewItem(categoryName: String): EmojiItemView { 12 | return EmojiItemView(categoryName, EmojiItemType.TITLE) 13 | } 14 | } 15 | } 16 | 17 | enum class EmojiItemType { 18 | TITLE, 19 | EMOJI 20 | } 21 | 22 | fun ByteArray.toAscii(): String { 23 | return String(this, StandardCharsets.UTF_8) 24 | } 25 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/java/com/withplum/emojibottomsheetdialog/view/recyclerview/EmojiRecyclerViewAdapter.kt: -------------------------------------------------------------------------------- 1 | package com.withplum.emojibottomsheetdialog.view.recyclerview 2 | 3 | import android.content.res.Resources 4 | import android.util.TypedValue 5 | import android.view.LayoutInflater 6 | import android.view.View 7 | import android.view.ViewGroup 8 | import android.widget.TextView 9 | import androidx.emoji2.widget.EmojiTextView 10 | import androidx.recyclerview.widget.RecyclerView 11 | import com.withplum.emojibottomsheetdialog.R 12 | 13 | internal class EmojiRecyclerViewAdapter( 14 | private val unicodeList: List 15 | ) : RecyclerView.Adapter() { 16 | 17 | class EmojiListHolder(inflatedView: View) : RecyclerView.ViewHolder(inflatedView) { 18 | val emojiTextView: EmojiTextView? by bind(R.id.etv_emoji) 19 | val textView: TextView? by bind(R.id.tv_title) 20 | } 21 | 22 | override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): EmojiListHolder { 23 | return EmojiListHolder( 24 | when (viewType) { 25 | EmojiItemType.TITLE.ordinal -> { 26 | val holder = LayoutInflater.from(parent.context).inflate(R.layout.row_title, parent, false) 27 | holder.findViewById(R.id.tv_title).applyHeaderTextAppearance(parent.context.theme) 28 | holder 29 | } 30 | else -> { 31 | LayoutInflater.from(parent.context).inflate(R.layout.row_emoji, parent, false) 32 | } 33 | } 34 | ) 35 | } 36 | 37 | private fun TextView.applyHeaderTextAppearance(theme: Resources.Theme) { 38 | val typedValue = TypedValue() 39 | if (theme.resolveAttribute(R.attr.emojiBottomSheetSectionHeaderTextAppearance, typedValue, true)) { 40 | setTextAppearance(typedValue.resourceId) 41 | } 42 | } 43 | 44 | override fun onBindViewHolder(holder: EmojiListHolder, position: Int) { 45 | when (isHeader(position)) { 46 | true -> createTitleItem(holder, position) 47 | false -> createEmojiItem(holder, position) 48 | } 49 | } 50 | 51 | private fun createTitleItem(holder: EmojiListHolder, position: Int) { 52 | holder.textView?.let { it.text = getEmojiItem(position).value } 53 | } 54 | 55 | private fun createEmojiItem(holder: EmojiListHolder, position: Int) { 56 | holder.emojiTextView?.let { item -> 57 | item.apply { 58 | text = getEmojiItem(position).value 59 | setOnClickListener { 60 | emojiClickedListener(getEmojiItem(position), it) 61 | } 62 | } 63 | } 64 | } 65 | 66 | private fun getEmojiItem(position: Int) = unicodeList[position] 67 | 68 | override fun getItemCount(): Int = unicodeList.size / 2 69 | 70 | override fun getItemViewType(position: Int) = getEmojiItem(position).type.ordinal 71 | 72 | fun isHeader(position: Int): Boolean = getEmojiItem(position).type.ordinal == EmojiItemType.TITLE.ordinal 73 | 74 | internal var emojiClickedListener: (EmojiItemView, View) -> Unit = { _, _ -> } 75 | 76 | } 77 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/java/com/withplum/emojibottomsheetdialog/view/recyclerview/RecyclerViewUtils.kt: -------------------------------------------------------------------------------- 1 | package com.withplum.emojibottomsheetdialog.view.recyclerview 2 | 3 | import android.view.View 4 | import androidx.annotation.IdRes 5 | import androidx.recyclerview.widget.RecyclerView 6 | 7 | internal fun unsafeLazy(initializer: () -> T) = lazy(LazyThreadSafetyMode.NONE, initializer) 8 | 9 | internal fun RecyclerView.ViewHolder.bind(@IdRes idRes: Int): Lazy { 10 | return unsafeLazy { itemView.findViewById(idRes)!! } 11 | } 12 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/res/layout/row_emoji.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/res/layout/row_title.xml: -------------------------------------------------------------------------------- 1 | 2 | 13 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/res/layout/view_emoji_bottom_sheet.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | 15 | 23 | 24 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #464646 4 | #143647 5 | 6 | -------------------------------------------------------------------------------- /emojiBottomSheetDialog/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8dp 4 | 16dp 5 | 20sp 6 | 7 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | # IDE (e.g. Android Studio) users: 3 | # Gradle settings configured through the IDE *will override* 4 | # any settings specified in this file. 5 | # For more details on how to configure your build environment visit 6 | # http://www.gradle.org/docs/current/userguide/build_environment.html 7 | # Specifies the JVM arguments used for the daemon process. 8 | # The setting is particularly useful for tweaking memory settings. 9 | org.gradle.jvmargs=-Xmx2048m 10 | # When configured, Gradle will run in incubating parallel mode. 11 | # This option should only be used with decoupled projects. More details, visit 12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 13 | # org.gradle.parallel=true 14 | # AndroidX package structure to make it clearer which packages are bundled with the 15 | # Android operating system, and which are packaged with your app"s APK 16 | # https://developer.android.com/topic/libraries/support-library/androidx-rn 17 | android.useAndroidX=true 18 | # Automatically convert third-party libraries to use AndroidX 19 | android.enableJetifier=false 20 | # Kotlin code style for this project: "official" or "obsolete": 21 | kotlin.code.style=official 22 | # Publishing properties 23 | # Used by https://github.com/vanniktech/gradle-maven-publish-plugin 24 | GROUP=com.withplum 25 | POM_ARTIFACT_ID=emojiBottomSheetDialog 26 | VERSION_NAME=3.0.0 27 | POM_NAME=Emoji Bottom Sheet Dialog 28 | POM_DESCRIPTION=A nice Android bottom sheet dialog populated with AndroidX EmojiCompat supported emojis. 29 | POM_INCEPTION_YEAR=2021 30 | POM_URL=https://github.com/withplum/EmojiBottomSheetDialog 31 | POM_SCM_URL=https://github.com/withplum/EmojiBottomSheetDialog 32 | POM_LICENCE_NAME=MIT License 33 | POM_LICENCE_URL=https://opensource.org/licenses/MIT 34 | POM_LICENCE_DIST=repo 35 | POM_DEVELOPER_URL=https://github.com/withplum 36 | SONATYPE_HOST=DEFAULT 37 | RELEASE_SIGNING_ENABLED=true 38 | SONATYPE_AUTOMATIC_RELEASE=true 39 | mavenCentralUsername=YOUR_USERNAME 40 | mavenCentralPassword=YOUR_PASSWORD 41 | signing.keyId=KEY_ID 42 | signing.password=KEY_PASSWORD 43 | signing.secretKeyRingFile=GPG_KEYRING_FILE 44 | -------------------------------------------------------------------------------- /gradle/libs.versions.toml: -------------------------------------------------------------------------------- 1 | [plugins] 2 | android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } 3 | android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" } 4 | kotlin-gradle-plugin = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } 5 | gradle-maven-publish = { id = "com.vanniktech.maven.publish", version.ref = "gradleMavenPublishPlugin" } 6 | dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" } 7 | 8 | [versions] 9 | androidGradlePlugin = "8.9.2" 10 | dokka = "2.0.0" 11 | kotlin = "2.1.20" 12 | gradleMavenPublishPlugin = "0.31.0" 13 | appcompat = "1.7.0" 14 | constraintlayout = "2.2.1" 15 | emoji2 = "1.5.0" 16 | material = "1.12.0" 17 | recyclerview = "1.4.0" 18 | 19 | [libraries] 20 | appcompat = { module = "androidx.appcompat:appcompat", version.ref = "appcompat" } 21 | constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "constraintlayout" } 22 | emoji2 = { module = "androidx.emoji2:emoji2", version.ref = "emoji2" } 23 | emoji2-views = { module = "androidx.emoji2:emoji2-views", version.ref = "emoji2" } 24 | kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" } 25 | material = { module = "com.google.android.material:material", version.ref = "material" } 26 | recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "recyclerview" } 27 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/withplum/EmojiBottomSheetDialog/1e42a452d87a886283347ea4cab87c126b858ab6/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # 4 | # Copyright © 2015-2021 the original authors. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # https://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | # SPDX-License-Identifier: Apache-2.0 19 | # 20 | 21 | ############################################################################## 22 | # 23 | # Gradle start up script for POSIX generated by Gradle. 24 | # 25 | # Important for running: 26 | # 27 | # (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is 28 | # noncompliant, but you have some other compliant shell such as ksh or 29 | # bash, then to run this script, type that shell name before the whole 30 | # command line, like: 31 | # 32 | # ksh Gradle 33 | # 34 | # Busybox and similar reduced shells will NOT work, because this script 35 | # requires all of these POSIX shell features: 36 | # * functions; 37 | # * expansions «$var», «${var}», «${var:-default}», «${var+SET}», 38 | # «${var#prefix}», «${var%suffix}», and «$( cmd )»; 39 | # * compound commands having a testable exit status, especially «case»; 40 | # * various built-in commands including «command», «set», and «ulimit». 41 | # 42 | # Important for patching: 43 | # 44 | # (2) This script targets any POSIX shell, so it avoids extensions provided 45 | # by Bash, Ksh, etc; in particular arrays are avoided. 46 | # 47 | # The "traditional" practice of packing multiple parameters into a 48 | # space-separated string is a well documented source of bugs and security 49 | # problems, so this is (mostly) avoided, by progressively accumulating 50 | # options in "$@", and eventually passing that to Java. 51 | # 52 | # Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, 53 | # and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; 54 | # see the in-line comments for details. 55 | # 56 | # There are tweaks for specific operating systems such as AIX, CygWin, 57 | # Darwin, MinGW, and NonStop. 58 | # 59 | # (3) This script is generated from the Groovy template 60 | # https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt 61 | # within the Gradle project. 62 | # 63 | # You can find Gradle at https://github.com/gradle/gradle/. 64 | # 65 | ############################################################################## 66 | 67 | # Attempt to set APP_HOME 68 | 69 | # Resolve links: $0 may be a link 70 | app_path=$0 71 | 72 | # Need this for daisy-chained symlinks. 73 | while 74 | APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path 75 | [ -h "$app_path" ] 76 | do 77 | ls=$( ls -ld "$app_path" ) 78 | link=${ls#*' -> '} 79 | case $link in #( 80 | /*) app_path=$link ;; #( 81 | *) app_path=$APP_HOME$link ;; 82 | esac 83 | done 84 | 85 | # This is normally unused 86 | # shellcheck disable=SC2034 87 | APP_BASE_NAME=${0##*/} 88 | # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) 89 | APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit 90 | 91 | # Use the maximum available, or set MAX_FD != -1 to use that value. 92 | MAX_FD=maximum 93 | 94 | warn () { 95 | echo "$*" 96 | } >&2 97 | 98 | die () { 99 | echo 100 | echo "$*" 101 | echo 102 | exit 1 103 | } >&2 104 | 105 | # OS specific support (must be 'true' or 'false'). 106 | cygwin=false 107 | msys=false 108 | darwin=false 109 | nonstop=false 110 | case "$( uname )" in #( 111 | CYGWIN* ) cygwin=true ;; #( 112 | Darwin* ) darwin=true ;; #( 113 | MSYS* | MINGW* ) msys=true ;; #( 114 | NONSTOP* ) nonstop=true ;; 115 | esac 116 | 117 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 118 | 119 | 120 | # Determine the Java command to use to start the JVM. 121 | if [ -n "$JAVA_HOME" ] ; then 122 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 123 | # IBM's JDK on AIX uses strange locations for the executables 124 | JAVACMD=$JAVA_HOME/jre/sh/java 125 | else 126 | JAVACMD=$JAVA_HOME/bin/java 127 | fi 128 | if [ ! -x "$JAVACMD" ] ; then 129 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 130 | 131 | Please set the JAVA_HOME variable in your environment to match the 132 | location of your Java installation." 133 | fi 134 | else 135 | JAVACMD=java 136 | if ! command -v java >/dev/null 2>&1 137 | then 138 | die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 139 | 140 | Please set the JAVA_HOME variable in your environment to match the 141 | location of your Java installation." 142 | fi 143 | fi 144 | 145 | # Increase the maximum file descriptors if we can. 146 | if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then 147 | case $MAX_FD in #( 148 | max*) 149 | # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. 150 | # shellcheck disable=SC2039,SC3045 151 | MAX_FD=$( ulimit -H -n ) || 152 | warn "Could not query maximum file descriptor limit" 153 | esac 154 | case $MAX_FD in #( 155 | '' | soft) :;; #( 156 | *) 157 | # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. 158 | # shellcheck disable=SC2039,SC3045 159 | ulimit -n "$MAX_FD" || 160 | warn "Could not set maximum file descriptor limit to $MAX_FD" 161 | esac 162 | fi 163 | 164 | # Collect all arguments for the java command, stacking in reverse order: 165 | # * args from the command line 166 | # * the main class name 167 | # * -classpath 168 | # * -D...appname settings 169 | # * --module-path (only if needed) 170 | # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. 171 | 172 | # For Cygwin or MSYS, switch paths to Windows format before running java 173 | if "$cygwin" || "$msys" ; then 174 | APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) 175 | CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) 176 | 177 | JAVACMD=$( cygpath --unix "$JAVACMD" ) 178 | 179 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 180 | for arg do 181 | if 182 | case $arg in #( 183 | -*) false ;; # don't mess with options #( 184 | /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath 185 | [ -e "$t" ] ;; #( 186 | *) false ;; 187 | esac 188 | then 189 | arg=$( cygpath --path --ignore --mixed "$arg" ) 190 | fi 191 | # Roll the args list around exactly as many times as the number of 192 | # args, so each arg winds up back in the position where it started, but 193 | # possibly modified. 194 | # 195 | # NB: a `for` loop captures its iteration list before it begins, so 196 | # changing the positional parameters here affects neither the number of 197 | # iterations, nor the values presented in `arg`. 198 | shift # remove old arg 199 | set -- "$@" "$arg" # push replacement arg 200 | done 201 | fi 202 | 203 | 204 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 205 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' 206 | 207 | # Collect all arguments for the java command: 208 | # * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, 209 | # and any embedded shellness will be escaped. 210 | # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be 211 | # treated as '${Hostname}' itself on the command line. 212 | 213 | set -- \ 214 | "-Dorg.gradle.appname=$APP_BASE_NAME" \ 215 | -classpath "$CLASSPATH" \ 216 | org.gradle.wrapper.GradleWrapperMain \ 217 | "$@" 218 | 219 | # Stop when "xargs" is not available. 220 | if ! command -v xargs >/dev/null 2>&1 221 | then 222 | die "xargs is not available" 223 | fi 224 | 225 | # Use "xargs" to parse quoted args. 226 | # 227 | # With -n1 it outputs one arg per line, with the quotes and backslashes removed. 228 | # 229 | # In Bash we could simply go: 230 | # 231 | # readarray ARGS < <( xargs -n1 <<<"$var" ) && 232 | # set -- "${ARGS[@]}" "$@" 233 | # 234 | # but POSIX shell has neither arrays nor command substitution, so instead we 235 | # post-process each arg (as a line of input to sed) to backslash-escape any 236 | # character that might be a shell metacharacter, then use eval to reverse 237 | # that process (while maintaining the separation between arguments), and wrap 238 | # the whole thing up as a single "set" statement. 239 | # 240 | # This will of course break if any of these variables contains a newline or 241 | # an unmatched quote. 242 | # 243 | 244 | eval "set -- $( 245 | printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | 246 | xargs -n1 | 247 | sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | 248 | tr '\n' ' ' 249 | )" '"$@"' 250 | 251 | exec "$JAVACMD" "$@" 252 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | @rem SPDX-License-Identifier: Apache-2.0 17 | @rem 18 | 19 | @if "%DEBUG%"=="" @echo off 20 | @rem ########################################################################## 21 | @rem 22 | @rem Gradle startup script for Windows 23 | @rem 24 | @rem ########################################################################## 25 | 26 | @rem Set local scope for the variables with windows NT shell 27 | if "%OS%"=="Windows_NT" setlocal 28 | 29 | set DIRNAME=%~dp0 30 | if "%DIRNAME%"=="" set DIRNAME=. 31 | @rem This is normally unused 32 | set APP_BASE_NAME=%~n0 33 | set APP_HOME=%DIRNAME% 34 | 35 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 36 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 37 | 38 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 39 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 40 | 41 | @rem Find java.exe 42 | if defined JAVA_HOME goto findJavaFromJavaHome 43 | 44 | set JAVA_EXE=java.exe 45 | %JAVA_EXE% -version >NUL 2>&1 46 | if %ERRORLEVEL% equ 0 goto execute 47 | 48 | echo. 1>&2 49 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 50 | echo. 1>&2 51 | echo Please set the JAVA_HOME variable in your environment to match the 1>&2 52 | echo location of your Java installation. 1>&2 53 | 54 | goto fail 55 | 56 | :findJavaFromJavaHome 57 | set JAVA_HOME=%JAVA_HOME:"=% 58 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 59 | 60 | if exist "%JAVA_EXE%" goto execute 61 | 62 | echo. 1>&2 63 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 64 | echo. 1>&2 65 | echo Please set the JAVA_HOME variable in your environment to match the 1>&2 66 | echo location of your Java installation. 1>&2 67 | 68 | goto fail 69 | 70 | :execute 71 | @rem Setup the command line 72 | 73 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 74 | 75 | 76 | @rem Execute Gradle 77 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 78 | 79 | :end 80 | @rem End local scope for the variables with windows NT shell 81 | if %ERRORLEVEL% equ 0 goto mainEnd 82 | 83 | :fail 84 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 85 | rem the _cmd.exe /c_ return code! 86 | set EXIT_CODE=%ERRORLEVEL% 87 | if %EXIT_CODE% equ 0 set EXIT_CODE=1 88 | if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% 89 | exit /b %EXIT_CODE% 90 | 91 | :mainEnd 92 | if "%OS%"=="Windows_NT" endlocal 93 | 94 | :omega 95 | -------------------------------------------------------------------------------- /lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "config:recommended" 5 | ], 6 | "timezone": "Europe/Athens", 7 | "schedule": [ 8 | "after 10pm every weekday", 9 | "before 5am every weekday", 10 | "every weekend" 11 | ], 12 | "prHourlyLimit": 3, 13 | "prConcurrentLimit": 5, 14 | "updateNotScheduled": false, 15 | "additionalReviewers": [ 16 | "team:android" 17 | ], 18 | "assignAutomerge": true, 19 | "addLabels": [ 20 | "Dependency Updates" 21 | ], 22 | "ignorePaths": [ 23 | ".github/**" 24 | ], 25 | "major": { 26 | "minimumReleaseAge": "30 days", 27 | "internalChecksFilter": "strict", 28 | "automerge": true 29 | }, 30 | "minor": { 31 | "minimumReleaseAge": "7 days", 32 | "internalChecksFilter": "strict", 33 | "automerge": true 34 | }, 35 | "patch": { 36 | "minimumReleaseAge": "1 days", 37 | "internalChecksFilter": "strict", 38 | "automerge": true 39 | }, 40 | "packageRules": [ 41 | { 42 | "groupName": "AGP and friends", 43 | "matchPackageNames": [ 44 | "/com.android.library/", 45 | "/com.android.application/", 46 | "/com.android.tools.build:gradle/" 47 | ] 48 | } 49 | ] 50 | } 51 | -------------------------------------------------------------------------------- /settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | google() 4 | mavenCentral() 5 | } 6 | } 7 | 8 | dependencyResolutionManagement { 9 | @Suppress("UnstableApiUsage") 10 | repositories { 11 | google() 12 | mavenCentral() 13 | } 14 | } 15 | 16 | include(":emojiBottomSheetDialog", ":app") 17 | rootProject.name = "EmojiBottomSheetDialog" 18 | --------------------------------------------------------------------------------