/**
 * 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.LibraryType

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

dependencies {
    api("androidx.annotation:annotation:1.1.0")
    implementation("androidx.core:core-ktx:1.1.0")
    api("androidx.customview:customview:1.1.0")
    implementation("androidx.window:window:1.2.0")
    implementation("androidx.transition:transition:1.4.1")

    androidTestImplementation(libs.testExtJunit)
    androidTestImplementation(libs.testRunner)
    androidTestImplementation(libs.espressoCore, excludes.espresso)
    androidTestImplementation(libs.kotlinStdlib)
    androidTestImplementation(libs.truth)
    androidTestImplementation(project(':internal-testutils-runtime'))
    androidTestImplementation("androidx.window:window-testing:1.2.0")
}

androidx {
    name = "Sliding Pane Layout"
    type = LibraryType.PUBLISHED_LIBRARY
    inceptionYear = "2018"
    description = "SlidingPaneLayout offers a responsive, two pane layout that automatically switches between overlapping panes on smaller devices to a side by side view on larger devices."
    metalavaK2UastEnabled = true
}

android {
    namespace "androidx.slidingpanelayout"
}
