/**
 * This file was created using the `create_project.py` script located in the
 * `<AndroidX root>/development/project-creator` directory.
 *
 * Please use that script when creating a new project, rather than copying an existing project and
 * modifying its settings.
 */
import androidx.build.BundleInsideHelper
import androidx.build.LibraryType

plugins {
    id("AndroidXPlugin")
    id("com.android.library")
}

ext {
    fontDir = project(":noto-emoji-compat-font").projectDir
}

BundleInsideHelper.forInsideAar(
    project,
    /* from = */ "com.google.flatbuffers",
    /* to =   */ "androidx.text.emoji.flatbuffer",
    /* dropResourcesWithSuffix = */ null
)

dependencies {
    bundleInside(project(":noto-emoji-compat-flatbuffers"))

    api("androidx.core:core:1.3.0")
    implementation("androidx.collection:collection:1.4.2")

    androidTestImplementation(libs.testExtJunit)
    androidTestImplementation(libs.testCore)
    androidTestImplementation(libs.testRunner)
    androidTestImplementation(libs.testRules)
    androidTestImplementation(libs.espressoCore, excludes.espresso)
    androidTestImplementation(libs.mockitoCore)
    androidTestImplementation(libs.dexmakerMockito)
    androidTestImplementation(project(":internal-testutils-runtime"))
}

android {
    sourceSets {
        main {
            res.srcDirs += "src/main/res-public"
            resources {
                srcDirs += [fontDir.getAbsolutePath()]
                includes += ["LICENSE_UNICODE", "LICENSE_OFL"]
            }
        }

        androidTest {
            assets {
                srcDirs = [new File(fontDir, "font").getAbsolutePath(),
                           new File(fontDir, "supported-emojis").getAbsolutePath()]
            }
        }
    }
    namespace "androidx.emoji"
}

androidx {
    name = "Emoji"
    type = LibraryType.PUBLISHED_LIBRARY
    mavenVersion = LibraryVersions.EMOJI
    inceptionYear = "2017"
    description = "Core library to enable emoji compatibility in Kitkat and newer devices to avoid the empty emoji characters."

    extraLicense {
        name = "SIL Open Font License, Version 1.1"
        url = "https://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web"
    }

    extraLicense {
        name = "Unicode, Inc. License"
        url = "https://www.unicode.org/license.html"
    }
}
