/*
 * Copyright 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


import androidx.build.KotlinTarget
import androidx.build.LibraryType

plugins {
    id("AndroidXPlugin")
    id("com.android.library")
    id("AndroidXComposePlugin")
    id("org.jetbrains.kotlin.android")
    alias(libs.plugins.kotlinSerialization)
}

dependencies {

    implementation(libs.kotlinStdlib)
    api("androidx.activity:activity-compose:1.8.0")
    api("androidx.compose.animation:animation:1.7.0-rc01")
    implementation("androidx.compose.foundation:foundation-layout:1.7.0-rc01")
    api("androidx.compose.runtime:runtime:1.7.0-rc01")
    api("androidx.compose.runtime:runtime-saveable:1.7.0-rc01")
    api("androidx.compose.ui:ui:1.7.0-rc01")
    api("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.2")
    api(projectOrArtifact(":navigation:navigation-runtime-ktx"))
    implementation(libs.kotlinSerializationCore)

    androidTestImplementation(projectOrArtifact(":compose:material:material"))
    androidTestImplementation project(":compose:test-utils")
    androidTestImplementation projectOrArtifact(":compose:ui:ui-tooling")
    androidTestImplementation(projectOrArtifact(":navigation:navigation-testing"))
    androidTestImplementation(projectOrArtifact(":internal-testutils-navigation"), {
        exclude group: "androidx.navigation", module: "navigation-common"
    })
    androidTestImplementation(projectOrArtifact(":compose:ui:ui-test-junit4"))
    androidTestImplementation(projectOrArtifact(":lifecycle:lifecycle-common"))
    androidTestImplementation(projectOrArtifact(":lifecycle:lifecycle-common-java8"))
    androidTestImplementation(projectOrArtifact(":lifecycle:lifecycle-livedata-core"))
    androidTestImplementation(projectOrArtifact(":lifecycle:lifecycle-viewmodel"))
    androidTestImplementation(projectOrArtifact(":lifecycle:lifecycle-viewmodel-savedstate"))
    androidTestImplementation(projectOrArtifact(":activity:activity-ktx"))
    androidTestImplementation("androidx.collection:collection-ktx:1.4.2")
    androidTestImplementation(libs.testRunner)
    androidTestImplementation(libs.junit)
    androidTestImplementation(libs.truth)

    lintChecks(projectOrArtifact(":navigation:navigation-compose-lint"))
    lintPublish(projectOrArtifact(":navigation:navigation-compose-lint"))
}

androidx {
    name = "Compose Navigation"
    type = LibraryType.PUBLISHED_LIBRARY_ONLY_USED_BY_KOTLIN_CONSUMERS
    inceptionYear = "2020"
    description = "Compose integration with Navigation"
    legacyDisableKotlinStrictApiMode = true
    samples(projectOrArtifact(":navigation:navigation-compose:navigation-compose-samples"))
    legacyDisableKotlinStrictApiMode = true
    kotlinTarget = KotlinTarget.KOTLIN_1_9
}

android {
    compileSdk 35
    sourceSets.androidTest.assets.srcDirs +=
            project.rootDir.absolutePath + "/../../golden/navigation/navigation-compose"

    namespace "androidx.navigation.compose"
}
