diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 851ef59fc..28c119017 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -129,6 +129,10 @@ jobs: - name: Build Debug run: ./gradlew app:assembleDebug + - name: Run Lint + if: github.event_name == 'pull_request' + run: ./gradlew apiCheck + - name: Run Lint if: github.event_name == 'pull_request' run: ./gradlew lintDebug @@ -156,7 +160,7 @@ jobs: - name: Build Release App if: startsWith(github.ref, 'refs/tags/') - run: ./gradlew app:assembleStaging app:assembleRelease app:bundleRelease -P"com.mikepenz.android.signing.enabled"="true" -P"com.mikepenz.android.signing.storeFile"="app/opensource.jks" -P"com.mikepenz.android.signing.storePassword"="${{ secrets.STORE_PASSWORD }}" -P"com.mikepenz.android.signing.keyAlias"="${{ secrets.KEY_ALIAS }}" -P"com.mikepenz.android.signing.keyPassword"="${{ secrets.KEY_PASSWORD }}" + run: ./gradlew app:assembleStaging app:assembleRelease app:bundleRelease -P"com.mikepenz.android.signing.enabled"="true" -P"com.mikepenz.android.signing.storeFile"="opensource.jks" -P"com.mikepenz.android.signing.storePassword"="${{ secrets.STORE_PASSWORD }}" -P"com.mikepenz.android.signing.keyAlias"="${{ secrets.KEY_ALIAS }}" -P"com.mikepenz.android.signing.keyPassword"="${{ secrets.KEY_PASSWORD }}" - name: Collect artifacts run: | diff --git a/README.md b/README.md index 0fec2f3ac..364c95796 100644 --- a/README.md +++ b/README.md @@ -37,8 +37,8 @@ ## Latest releases 🛠 -- Compile 35 | Gradle 7.0+ | [v11.3.0](https://github.com/mikepenz/AboutLibraries/tree/v11.3.0 -- Java 17 | [v11.5.0](https://github.com/mikepenz/AboutLibraries/tree/11.5.0 +- Compile 35 | Gradle 7.0+ | Java 17 | [v11.6.0](https://github.com/mikepenz/AboutLibraries/tree/11.6.0) +- [Legacy] Compile 35 | Gradle 7.0+ | [v11.3.0](https://github.com/mikepenz/AboutLibraries/tree/v11.3.0) ## Gradle Plugin @@ -274,6 +274,9 @@ Find a sample application as the `app-desktop` module. It showcases the usage to ## (Legacy) UI-module +> [!NOTE] +> The legacy view based UI will be deprecated in the future. Please consider moving to the compose based UI. + ```gradle implementation "com.mikepenz:aboutlibraries:${latestAboutLibsRelease}" ``` diff --git a/aboutlibraries-compose-m2/api/aboutlibraries-compose-m2.klib.api b/aboutlibraries-compose-m2/api/aboutlibraries-compose-m2.klib.api new file mode 100644 index 000000000..d86fdcba7 --- /dev/null +++ b/aboutlibraries-compose-m2/api/aboutlibraries-compose-m2.klib.api @@ -0,0 +1,58 @@ +// Klib ABI Dump +// Targets: [iosArm64, iosSimulatorArm64, iosX64, js, macosArm64, macosX64, wasmJs] +// Rendering settings: +// - Signature version: 2 +// - Show manifest properties: true +// - Show declarations: true + +// Library unique name: +abstract interface com.mikepenz.aboutlibraries.ui.compose/LibraryColors { // com.mikepenz.aboutlibraries.ui.compose/LibraryColors|null[0] + abstract val backgroundColor // com.mikepenz.aboutlibraries.ui.compose/LibraryColors.backgroundColor|{}backgroundColor[0] + abstract fun (): androidx.compose.ui.graphics/Color // com.mikepenz.aboutlibraries.ui.compose/LibraryColors.backgroundColor.|(){}[0] + abstract val badgeBackgroundColor // com.mikepenz.aboutlibraries.ui.compose/LibraryColors.badgeBackgroundColor|{}badgeBackgroundColor[0] + abstract fun (): androidx.compose.ui.graphics/Color // com.mikepenz.aboutlibraries.ui.compose/LibraryColors.badgeBackgroundColor.|(){}[0] + abstract val badgeContentColor // com.mikepenz.aboutlibraries.ui.compose/LibraryColors.badgeContentColor|{}badgeContentColor[0] + abstract fun (): androidx.compose.ui.graphics/Color // com.mikepenz.aboutlibraries.ui.compose/LibraryColors.badgeContentColor.|(){}[0] + abstract val contentColor // com.mikepenz.aboutlibraries.ui.compose/LibraryColors.contentColor|{}contentColor[0] + abstract fun (): androidx.compose.ui.graphics/Color // com.mikepenz.aboutlibraries.ui.compose/LibraryColors.contentColor.|(){}[0] + abstract val dialogConfirmButtonColor // com.mikepenz.aboutlibraries.ui.compose/LibraryColors.dialogConfirmButtonColor|{}dialogConfirmButtonColor[0] + abstract fun (): androidx.compose.ui.graphics/Color // com.mikepenz.aboutlibraries.ui.compose/LibraryColors.dialogConfirmButtonColor.|(){}[0] +} + +abstract interface com.mikepenz.aboutlibraries.ui.compose/LibraryPadding { // com.mikepenz.aboutlibraries.ui.compose/LibraryPadding|null[0] + abstract val badgeContentPadding // com.mikepenz.aboutlibraries.ui.compose/LibraryPadding.badgeContentPadding|{}badgeContentPadding[0] + abstract fun (): androidx.compose.foundation.layout/PaddingValues // com.mikepenz.aboutlibraries.ui.compose/LibraryPadding.badgeContentPadding.|(){}[0] + abstract val badgePadding // com.mikepenz.aboutlibraries.ui.compose/LibraryPadding.badgePadding|{}badgePadding[0] + abstract fun (): androidx.compose.foundation.layout/PaddingValues // com.mikepenz.aboutlibraries.ui.compose/LibraryPadding.badgePadding.|(){}[0] + abstract val namePadding // com.mikepenz.aboutlibraries.ui.compose/LibraryPadding.namePadding|{}namePadding[0] + abstract fun (): androidx.compose.foundation.layout/PaddingValues // com.mikepenz.aboutlibraries.ui.compose/LibraryPadding.namePadding.|(){}[0] + abstract val versionPadding // com.mikepenz.aboutlibraries.ui.compose/LibraryPadding.versionPadding|{}versionPadding[0] + abstract fun (): androidx.compose.foundation.layout/PaddingValues // com.mikepenz.aboutlibraries.ui.compose/LibraryPadding.versionPadding.|(){}[0] + abstract val verticalPadding // com.mikepenz.aboutlibraries.ui.compose/LibraryPadding.verticalPadding|{}verticalPadding[0] + abstract fun (): androidx.compose.ui.unit/Dp // com.mikepenz.aboutlibraries.ui.compose/LibraryPadding.verticalPadding.|(){}[0] +} + +final object com.mikepenz.aboutlibraries.ui.compose/LibraryDefaults { // com.mikepenz.aboutlibraries.ui.compose/LibraryDefaults|null[0] + final val ContentPadding // com.mikepenz.aboutlibraries.ui.compose/LibraryDefaults.ContentPadding|{}ContentPadding[0] + final fun (): androidx.compose.foundation.layout/PaddingValues // com.mikepenz.aboutlibraries.ui.compose/LibraryDefaults.ContentPadding.|(){}[0] + + final fun libraryColors(androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int): com.mikepenz.aboutlibraries.ui.compose/LibraryColors // com.mikepenz.aboutlibraries.ui.compose/LibraryDefaults.libraryColors|libraryColors(androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){}[0] + final fun libraryPadding(androidx.compose.foundation.layout/PaddingValues?, androidx.compose.foundation.layout/PaddingValues?, androidx.compose.foundation.layout/PaddingValues?, androidx.compose.foundation.layout/PaddingValues?, androidx.compose.ui.unit/Dp, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int): com.mikepenz.aboutlibraries.ui.compose/LibraryPadding // com.mikepenz.aboutlibraries.ui.compose/LibraryDefaults.libraryPadding|libraryPadding(androidx.compose.foundation.layout.PaddingValues?;androidx.compose.foundation.layout.PaddingValues?;androidx.compose.foundation.layout.PaddingValues?;androidx.compose.foundation.layout.PaddingValues?;androidx.compose.ui.unit.Dp;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){}[0] +} + +final val com.mikepenz.aboutlibraries.ui.compose.util/author // com.mikepenz.aboutlibraries.ui.compose.util/author|@com.mikepenz.aboutlibraries.entity.Library{}author[0] + final fun (com.mikepenz.aboutlibraries.entity/Library).(): kotlin/String // com.mikepenz.aboutlibraries.ui.compose.util/author.|@com.mikepenz.aboutlibraries.entity.Library(){}[0] +final val com.mikepenz.aboutlibraries.ui.compose.util/htmlReadyLicenseContent // com.mikepenz.aboutlibraries.ui.compose.util/htmlReadyLicenseContent|@com.mikepenz.aboutlibraries.entity.License{}htmlReadyLicenseContent[0] + final fun (com.mikepenz.aboutlibraries.entity/License).(): kotlin/String? // com.mikepenz.aboutlibraries.ui.compose.util/htmlReadyLicenseContent.|@com.mikepenz.aboutlibraries.entity.License(){}[0] +final val com.mikepenz.aboutlibraries.ui.compose.util/strippedLicenseContent // com.mikepenz.aboutlibraries.ui.compose.util/strippedLicenseContent|@com.mikepenz.aboutlibraries.entity.License{}strippedLicenseContent[0] + final fun (com.mikepenz.aboutlibraries.entity/License).(): kotlin/String? // com.mikepenz.aboutlibraries.ui.compose.util/strippedLicenseContent.|@com.mikepenz.aboutlibraries.entity.License(){}[0] +final val com.mikepenz.aboutlibraries.ui.compose/com_mikepenz_aboutlibraries_ui_compose_LibraryDefaults$stableprop // com.mikepenz.aboutlibraries.ui.compose/com_mikepenz_aboutlibraries_ui_compose_LibraryDefaults$stableprop|#static{}com_mikepenz_aboutlibraries_ui_compose_LibraryDefaults$stableprop[0] + +final fun com.mikepenz.aboutlibraries.ui.compose/Libraries(kotlinx.collections.immutable/ImmutableList, androidx.compose.ui/Modifier?, androidx.compose.foundation.lazy/LazyListState?, androidx.compose.foundation.layout/PaddingValues?, kotlin/Boolean, kotlin/Boolean, kotlin/Boolean, kotlin/Boolean, com.mikepenz.aboutlibraries.ui.compose/LibraryColors?, com.mikepenz.aboutlibraries.ui.compose/LibraryPadding?, androidx.compose.foundation.layout/PaddingValues?, androidx.compose.ui.unit/Dp, kotlin/Function1?, kotlin/Function1?, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int, kotlin/Int) // com.mikepenz.aboutlibraries.ui.compose/Libraries|Libraries(kotlinx.collections.immutable.ImmutableList;androidx.compose.ui.Modifier?;androidx.compose.foundation.lazy.LazyListState?;androidx.compose.foundation.layout.PaddingValues?;kotlin.Boolean;kotlin.Boolean;kotlin.Boolean;kotlin.Boolean;com.mikepenz.aboutlibraries.ui.compose.LibraryColors?;com.mikepenz.aboutlibraries.ui.compose.LibraryPadding?;androidx.compose.foundation.layout.PaddingValues?;androidx.compose.ui.unit.Dp;kotlin.Function1?;kotlin.Function1?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int;kotlin.Int){}[0] +final fun com.mikepenz.aboutlibraries.ui.compose/LibrariesContainer(com.mikepenz.aboutlibraries/Libs?, androidx.compose.ui/Modifier?, androidx.compose.foundation.lazy/LazyListState?, androidx.compose.foundation.layout/PaddingValues?, kotlin/Boolean, kotlin/Boolean, kotlin/Boolean, kotlin/Boolean, com.mikepenz.aboutlibraries.ui.compose/LibraryColors?, com.mikepenz.aboutlibraries.ui.compose/LibraryPadding?, androidx.compose.foundation.layout/PaddingValues?, androidx.compose.ui.unit/Dp, kotlin/Function1?, kotlin/Function1?, kotlin/Function3?, kotlin/String?, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int, kotlin/Int) // com.mikepenz.aboutlibraries.ui.compose/LibrariesContainer|LibrariesContainer(com.mikepenz.aboutlibraries.Libs?;androidx.compose.ui.Modifier?;androidx.compose.foundation.lazy.LazyListState?;androidx.compose.foundation.layout.PaddingValues?;kotlin.Boolean;kotlin.Boolean;kotlin.Boolean;kotlin.Boolean;com.mikepenz.aboutlibraries.ui.compose.LibraryColors?;com.mikepenz.aboutlibraries.ui.compose.LibraryPadding?;androidx.compose.foundation.layout.PaddingValues?;androidx.compose.ui.unit.Dp;kotlin.Function1?;kotlin.Function1?;kotlin.Function3?;kotlin.String?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int;kotlin.Int){}[0] +final fun com.mikepenz.aboutlibraries.ui.compose/LibrariesContainer(kotlin/Function0, androidx.compose.ui/Modifier?, androidx.compose.foundation.lazy/LazyListState?, androidx.compose.foundation.layout/PaddingValues?, kotlin/Boolean, kotlin/Boolean, kotlin/Boolean, kotlin/Boolean, com.mikepenz.aboutlibraries.ui.compose/LibraryColors?, com.mikepenz.aboutlibraries.ui.compose/LibraryPadding?, androidx.compose.foundation.layout/PaddingValues?, androidx.compose.ui.unit/Dp, kotlin/Function1?, kotlin/Function1?, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int, kotlin/Int) // com.mikepenz.aboutlibraries.ui.compose/LibrariesContainer|LibrariesContainer(kotlin.Function0;androidx.compose.ui.Modifier?;androidx.compose.foundation.lazy.LazyListState?;androidx.compose.foundation.layout.PaddingValues?;kotlin.Boolean;kotlin.Boolean;kotlin.Boolean;kotlin.Boolean;com.mikepenz.aboutlibraries.ui.compose.LibraryColors?;com.mikepenz.aboutlibraries.ui.compose.LibraryPadding?;androidx.compose.foundation.layout.PaddingValues?;androidx.compose.ui.unit.Dp;kotlin.Function1?;kotlin.Function1?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int;kotlin.Int){}[0] +final fun com.mikepenz.aboutlibraries.ui.compose/LibrariesContainer(kotlin/String, androidx.compose.ui/Modifier?, androidx.compose.foundation.lazy/LazyListState?, androidx.compose.foundation.layout/PaddingValues?, kotlin/Boolean, kotlin/Boolean, kotlin/Boolean, kotlin/Boolean, com.mikepenz.aboutlibraries.ui.compose/LibraryColors?, com.mikepenz.aboutlibraries.ui.compose/LibraryPadding?, androidx.compose.foundation.layout/PaddingValues?, androidx.compose.ui.unit/Dp, kotlin/Function1?, kotlin/Function1?, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int, kotlin/Int) // com.mikepenz.aboutlibraries.ui.compose/LibrariesContainer|LibrariesContainer(kotlin.String;androidx.compose.ui.Modifier?;androidx.compose.foundation.lazy.LazyListState?;androidx.compose.foundation.layout.PaddingValues?;kotlin.Boolean;kotlin.Boolean;kotlin.Boolean;kotlin.Boolean;com.mikepenz.aboutlibraries.ui.compose.LibraryColors?;com.mikepenz.aboutlibraries.ui.compose.LibraryPadding?;androidx.compose.foundation.layout.PaddingValues?;androidx.compose.ui.unit.Dp;kotlin.Function1?;kotlin.Function1?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int;kotlin.Int){}[0] +final fun com.mikepenz.aboutlibraries.ui.compose/LicenseDialog(com.mikepenz.aboutlibraries.entity/Library, com.mikepenz.aboutlibraries.ui.compose/LibraryColors?, kotlin/String?, kotlin/Function3, kotlin/Function0, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int) // com.mikepenz.aboutlibraries.ui.compose/LicenseDialog|LicenseDialog(com.mikepenz.aboutlibraries.entity.Library;com.mikepenz.aboutlibraries.ui.compose.LibraryColors?;kotlin.String?;kotlin.Function3;kotlin.Function0;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){}[0] +final fun com.mikepenz.aboutlibraries.ui.compose/com_mikepenz_aboutlibraries_ui_compose_LibraryDefaults$stableprop_getter(): kotlin/Int // com.mikepenz.aboutlibraries.ui.compose/com_mikepenz_aboutlibraries_ui_compose_LibraryDefaults$stableprop_getter|com_mikepenz_aboutlibraries_ui_compose_LibraryDefaults$stableprop_getter(){}[0] +final fun com.mikepenz.aboutlibraries.ui.compose/rememberLibraries(kotlin.coroutines/SuspendFunction0, androidx.compose.runtime/Composer?, kotlin/Int): androidx.compose.runtime/State // com.mikepenz.aboutlibraries.ui.compose/rememberLibraries|rememberLibraries(kotlin.coroutines.SuspendFunction0;androidx.compose.runtime.Composer?;kotlin.Int){}[0] +final fun com.mikepenz.aboutlibraries.ui.compose/rememberLibraries(kotlin/ByteArray, androidx.compose.runtime/Composer?, kotlin/Int): androidx.compose.runtime/State // com.mikepenz.aboutlibraries.ui.compose/rememberLibraries|rememberLibraries(kotlin.ByteArray;androidx.compose.runtime.Composer?;kotlin.Int){}[0] diff --git a/aboutlibraries-compose-m2/api/android/aboutlibraries-compose-m2.api b/aboutlibraries-compose-m2/api/android/aboutlibraries-compose-m2.api new file mode 100644 index 000000000..f1ddd4a5c --- /dev/null +++ b/aboutlibraries-compose-m2/api/android/aboutlibraries-compose-m2.api @@ -0,0 +1,68 @@ +public final class com/mikepenz/aboutlibraries/ui/compose/AndroidLibrariesKt { + public static final fun LibrariesContainer-Qi0uq5o (Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/layout/PaddingValues;ZZZZLcom/mikepenz/aboutlibraries/ui/compose/LibraryColors;Lcom/mikepenz/aboutlibraries/ui/compose/LibraryPadding;Landroidx/compose/foundation/layout/PaddingValues;FLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;III)V + public static final fun PreviewLibraries (Landroidx/compose/runtime/Composer;I)V + public static final fun PreviewLibrariesOff (Landroidx/compose/runtime/Composer;I)V + public static final fun PreviewLibrary (Landroidx/compose/runtime/Composer;I)V +} + +public final class com/mikepenz/aboutlibraries/ui/compose/ComposableSingletons$AndroidLibrariesKt { + public static final field INSTANCE Lcom/mikepenz/aboutlibraries/ui/compose/ComposableSingletons$AndroidLibrariesKt; + public fun ()V + public final fun getLambda-1$aboutlibraries_compose_m2_release ()Lkotlin/jvm/functions/Function2; + public final fun getLambda-2$aboutlibraries_compose_m2_release ()Lkotlin/jvm/functions/Function2; + public final fun getLambda-3$aboutlibraries_compose_m2_release ()Lkotlin/jvm/functions/Function2; + public final fun getLambda-4$aboutlibraries_compose_m2_release ()Lkotlin/jvm/functions/Function2; + public final fun getLambda-5$aboutlibraries_compose_m2_release ()Lkotlin/jvm/functions/Function2; + public final fun getLambda-6$aboutlibraries_compose_m2_release ()Lkotlin/jvm/functions/Function2; +} + +public final class com/mikepenz/aboutlibraries/ui/compose/ComposableSingletons$LibrariesKt { + public static final field INSTANCE Lcom/mikepenz/aboutlibraries/ui/compose/ComposableSingletons$LibrariesKt; + public fun ()V + public final fun getLambda-1$aboutlibraries_compose_m2_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda-2$aboutlibraries_compose_m2_release ()Lkotlin/jvm/functions/Function3; +} + +public final class com/mikepenz/aboutlibraries/ui/compose/LibrariesKt { + public static final fun LibrariesContainer-Qi0uq5o (Ljava/lang/String;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/layout/PaddingValues;ZZZZLcom/mikepenz/aboutlibraries/ui/compose/LibraryColors;Lcom/mikepenz/aboutlibraries/ui/compose/LibraryPadding;Landroidx/compose/foundation/layout/PaddingValues;FLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;III)V + public static final fun LibrariesContainer-Qi0uq5o (Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/layout/PaddingValues;ZZZZLcom/mikepenz/aboutlibraries/ui/compose/LibraryColors;Lcom/mikepenz/aboutlibraries/ui/compose/LibraryPadding;Landroidx/compose/foundation/layout/PaddingValues;FLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;III)V + public static final fun rememberLibraries (Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; + public static final fun rememberLibraries ([BLandroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +} + +public abstract interface class com/mikepenz/aboutlibraries/ui/compose/LibraryColors { + public abstract fun getBackgroundColor-0d7_KjU ()J + public abstract fun getBadgeBackgroundColor-0d7_KjU ()J + public abstract fun getBadgeContentColor-0d7_KjU ()J + public abstract fun getContentColor-0d7_KjU ()J + public abstract fun getDialogConfirmButtonColor-0d7_KjU ()J +} + +public final class com/mikepenz/aboutlibraries/ui/compose/LibraryDefaults { + public static final field $stable I + public static final field INSTANCE Lcom/mikepenz/aboutlibraries/ui/compose/LibraryDefaults; + public final fun getContentPadding ()Landroidx/compose/foundation/layout/PaddingValues; + public final fun libraryColors-zjMxDiM (JJJJJLandroidx/compose/runtime/Composer;II)Lcom/mikepenz/aboutlibraries/ui/compose/LibraryColors; + public final fun libraryPadding-FJfuzF0 (Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;FLandroidx/compose/runtime/Composer;II)Lcom/mikepenz/aboutlibraries/ui/compose/LibraryPadding; +} + +public abstract interface class com/mikepenz/aboutlibraries/ui/compose/LibraryPadding { + public abstract fun getBadgeContentPadding ()Landroidx/compose/foundation/layout/PaddingValues; + public abstract fun getBadgePadding ()Landroidx/compose/foundation/layout/PaddingValues; + public abstract fun getNamePadding ()Landroidx/compose/foundation/layout/PaddingValues; + public abstract fun getVersionPadding ()Landroidx/compose/foundation/layout/PaddingValues; + public abstract fun getVerticalPadding-D9Ej5fM ()F +} + +public final class com/mikepenz/aboutlibraries/ui/compose/SharedLibrariesKt { + public static final fun Libraries-Qi0uq5o (Lkotlinx/collections/immutable/ImmutableList;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/layout/PaddingValues;ZZZZLcom/mikepenz/aboutlibraries/ui/compose/LibraryColors;Lcom/mikepenz/aboutlibraries/ui/compose/LibraryPadding;Landroidx/compose/foundation/layout/PaddingValues;FLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;III)V + public static final fun LibrariesContainer-0essu7Y (Lcom/mikepenz/aboutlibraries/Libs;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/layout/PaddingValues;ZZZZLcom/mikepenz/aboutlibraries/ui/compose/LibraryColors;Lcom/mikepenz/aboutlibraries/ui/compose/LibraryPadding;Landroidx/compose/foundation/layout/PaddingValues;FLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;Ljava/lang/String;Landroidx/compose/runtime/Composer;III)V + public static final fun LicenseDialog (Lcom/mikepenz/aboutlibraries/entity/Library;Lcom/mikepenz/aboutlibraries/ui/compose/LibraryColors;Ljava/lang/String;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;II)V +} + +public final class com/mikepenz/aboutlibraries/ui/compose/util/ExtensionsKt { + public static final fun getAuthor (Lcom/mikepenz/aboutlibraries/entity/Library;)Ljava/lang/String; + public static final fun getHtmlReadyLicenseContent (Lcom/mikepenz/aboutlibraries/entity/License;)Ljava/lang/String; + public static final fun getStrippedLicenseContent (Lcom/mikepenz/aboutlibraries/entity/License;)Ljava/lang/String; +} + diff --git a/aboutlibraries-compose-m2/api/jvm/aboutlibraries-compose-m2.api b/aboutlibraries-compose-m2/api/jvm/aboutlibraries-compose-m2.api new file mode 100644 index 000000000..a001cc3b6 --- /dev/null +++ b/aboutlibraries-compose-m2/api/jvm/aboutlibraries-compose-m2.api @@ -0,0 +1,50 @@ +public final class com/mikepenz/aboutlibraries/ui/compose/ComposableSingletons$LibrariesKt { + public static final field INSTANCE Lcom/mikepenz/aboutlibraries/ui/compose/ComposableSingletons$LibrariesKt; + public fun ()V + public final fun getLambda-1$aboutlibraries_compose_m2 ()Lkotlin/jvm/functions/Function3; + public final fun getLambda-2$aboutlibraries_compose_m2 ()Lkotlin/jvm/functions/Function3; +} + +public final class com/mikepenz/aboutlibraries/ui/compose/LibrariesKt { + public static final fun LibrariesContainer-Qi0uq5o (Ljava/lang/String;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/layout/PaddingValues;ZZZZLcom/mikepenz/aboutlibraries/ui/compose/LibraryColors;Lcom/mikepenz/aboutlibraries/ui/compose/LibraryPadding;Landroidx/compose/foundation/layout/PaddingValues;FLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;III)V + public static final fun LibrariesContainer-Qi0uq5o (Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/layout/PaddingValues;ZZZZLcom/mikepenz/aboutlibraries/ui/compose/LibraryColors;Lcom/mikepenz/aboutlibraries/ui/compose/LibraryPadding;Landroidx/compose/foundation/layout/PaddingValues;FLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;III)V + public static final fun rememberLibraries (Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; + public static final fun rememberLibraries ([BLandroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +} + +public abstract interface class com/mikepenz/aboutlibraries/ui/compose/LibraryColors { + public abstract fun getBackgroundColor-0d7_KjU ()J + public abstract fun getBadgeBackgroundColor-0d7_KjU ()J + public abstract fun getBadgeContentColor-0d7_KjU ()J + public abstract fun getContentColor-0d7_KjU ()J + public abstract fun getDialogConfirmButtonColor-0d7_KjU ()J +} + +public final class com/mikepenz/aboutlibraries/ui/compose/LibraryDefaults { + public static final field $stable I + public static final field INSTANCE Lcom/mikepenz/aboutlibraries/ui/compose/LibraryDefaults; + public final fun getContentPadding ()Landroidx/compose/foundation/layout/PaddingValues; + public final fun libraryColors-zjMxDiM (JJJJJLandroidx/compose/runtime/Composer;II)Lcom/mikepenz/aboutlibraries/ui/compose/LibraryColors; + public final fun libraryPadding-FJfuzF0 (Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;FLandroidx/compose/runtime/Composer;II)Lcom/mikepenz/aboutlibraries/ui/compose/LibraryPadding; +} + +public abstract interface class com/mikepenz/aboutlibraries/ui/compose/LibraryPadding { + public abstract fun getBadgeContentPadding ()Landroidx/compose/foundation/layout/PaddingValues; + public abstract fun getBadgePadding ()Landroidx/compose/foundation/layout/PaddingValues; + public abstract fun getNamePadding ()Landroidx/compose/foundation/layout/PaddingValues; + public abstract fun getVersionPadding ()Landroidx/compose/foundation/layout/PaddingValues; + public abstract fun getVerticalPadding-D9Ej5fM ()F +} + +public final class com/mikepenz/aboutlibraries/ui/compose/SharedLibrariesKt { + public static final fun Libraries-Qi0uq5o (Lkotlinx/collections/immutable/ImmutableList;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/layout/PaddingValues;ZZZZLcom/mikepenz/aboutlibraries/ui/compose/LibraryColors;Lcom/mikepenz/aboutlibraries/ui/compose/LibraryPadding;Landroidx/compose/foundation/layout/PaddingValues;FLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;III)V + public static final fun LibrariesContainer-0essu7Y (Lcom/mikepenz/aboutlibraries/Libs;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/layout/PaddingValues;ZZZZLcom/mikepenz/aboutlibraries/ui/compose/LibraryColors;Lcom/mikepenz/aboutlibraries/ui/compose/LibraryPadding;Landroidx/compose/foundation/layout/PaddingValues;FLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;Ljava/lang/String;Landroidx/compose/runtime/Composer;III)V + public static final fun LicenseDialog (Lcom/mikepenz/aboutlibraries/entity/Library;Lcom/mikepenz/aboutlibraries/ui/compose/LibraryColors;Ljava/lang/String;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;II)V +} + +public final class com/mikepenz/aboutlibraries/ui/compose/util/ExtensionsKt { + public static final fun getAuthor (Lcom/mikepenz/aboutlibraries/entity/Library;)Ljava/lang/String; + public static final fun getHtmlReadyLicenseContent (Lcom/mikepenz/aboutlibraries/entity/License;)Ljava/lang/String; + public static final fun getStrippedLicenseContent (Lcom/mikepenz/aboutlibraries/entity/License;)Ljava/lang/String; +} + diff --git a/aboutlibraries-compose-m2/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/AndroidLibraries.kt b/aboutlibraries-compose-m2/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/AndroidLibraries.kt index 8fd86d163..38ffa1d46 100644 --- a/aboutlibraries-compose-m2/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/AndroidLibraries.kt +++ b/aboutlibraries-compose-m2/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/AndroidLibraries.kt @@ -1,24 +1,22 @@ package com.mikepenz.aboutlibraries.ui.compose import android.content.Context -import android.widget.TextView import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material.MaterialTheme import androidx.compose.material.Surface +import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.produceState import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.fromHtml import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import androidx.compose.ui.viewinterop.AndroidView -import androidx.core.text.HtmlCompat import com.mikepenz.aboutlibraries.Libs import com.mikepenz.aboutlibraries.entity.Library import com.mikepenz.aboutlibraries.ui.compose.data.fakeData @@ -39,6 +37,7 @@ fun LibrariesContainer( lazyListState: LazyListState = rememberLazyListState(), contentPadding: PaddingValues = PaddingValues(0.dp), showAuthor: Boolean = true, + showDescription: Boolean = false, showVersion: Boolean = true, showLicenseBadges: Boolean = true, colors: LibraryColors = LibraryDefaults.libraryColors(), @@ -56,41 +55,29 @@ fun LibrariesContainer( } } LibrariesContainer( - libraries.value, - modifier, - lazyListState, - contentPadding, - showAuthor, - showVersion, - showLicenseBadges, - colors, - padding, - itemContentPadding, - itemSpacing, - header, - onLibraryClick, + libraries = libraries.value, + modifier = modifier, + lazyListState = lazyListState, + contentPadding = contentPadding, + showAuthor = showAuthor, + showDescription = showDescription, + showVersion = showVersion, + showLicenseBadges = showLicenseBadges, + colors = colors, + padding = padding, + itemContentPadding = itemContentPadding, + itemSpacing = itemSpacing, + header = header, + onLibraryClick = onLibraryClick, licenseDialogBody = { library -> - HtmlText( - html = library.licenses.firstOrNull()?.htmlReadyLicenseContent.orEmpty(), - color = colors.contentColor, + Text( + text = AnnotatedString.fromHtml(library.licenses.firstOrNull()?.htmlReadyLicenseContent.orEmpty()), + color = colors.contentColor ) } ) } -@Composable -fun HtmlText( - html: String, - modifier: Modifier = Modifier, - color: Color = LibraryDefaults.libraryColors().contentColor, -) { - AndroidView(modifier = modifier, factory = { context -> - TextView(context).apply { - setTextColor(color.toArgb()) - } - }, update = { it.text = HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_COMPACT) }) -} - @Preview("Library items (Default)") @Composable fun PreviewLibraries() { diff --git a/aboutlibraries-compose-m2/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/Libraries.kt b/aboutlibraries-compose-m2/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/Libraries.kt index 110a7b34d..b56f482e3 100644 --- a/aboutlibraries-compose-m2/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/Libraries.kt +++ b/aboutlibraries-compose-m2/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/Libraries.kt @@ -26,6 +26,7 @@ fun LibrariesContainer( lazyListState: LazyListState = rememberLazyListState(), contentPadding: PaddingValues = PaddingValues(0.dp), showAuthor: Boolean = true, + showDescription: Boolean = false, showVersion: Boolean = true, showLicenseBadges: Boolean = true, colors: LibraryColors = LibraryDefaults.libraryColors(), @@ -36,11 +37,13 @@ fun LibrariesContainer( onLibraryClick: ((Library) -> Unit)? = null, ) { val libs = Libs.Builder().withJson(aboutLibsJson).build() - LibrariesContainer(libs, + LibrariesContainer( + libs, modifier = modifier, lazyListState = lazyListState, contentPadding = contentPadding, showAuthor = showAuthor, + showDescription = showDescription, showVersion = showVersion, showLicenseBadges = showLicenseBadges, colors = colors, @@ -64,6 +67,7 @@ fun LibrariesContainer( lazyListState: LazyListState = rememberLazyListState(), contentPadding: PaddingValues = PaddingValues(0.dp), showAuthor: Boolean = true, + showDescription: Boolean = false, showVersion: Boolean = true, showLicenseBadges: Boolean = true, colors: LibraryColors = LibraryDefaults.libraryColors(), @@ -75,22 +79,25 @@ fun LibrariesContainer( ) { val libs = librariesBlock() - LibrariesContainer(libs, - modifier, - lazyListState, - contentPadding, - showAuthor, - showVersion, - showLicenseBadges, - colors, - padding, - itemContentPadding, - itemSpacing, - header, - onLibraryClick, + LibrariesContainer( + libraries = libs, + modifier = modifier, + lazyListState = lazyListState, + contentPadding = contentPadding, + showAuthor = showAuthor, + showDescription = showDescription, + showVersion = showVersion, + showLicenseBadges = showLicenseBadges, + colors = colors, + padding = padding, + itemContentPadding = itemContentPadding, + itemSpacing = itemSpacing, + header = header, + onLibraryClick = onLibraryClick, licenseDialogBody = { library -> Text(library.licenses.firstOrNull()?.licenseContent ?: "") - }) + } + ) } /** diff --git a/aboutlibraries-compose-m2/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/SharedLibraries.kt b/aboutlibraries-compose-m2/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/SharedLibraries.kt index 61155ae1f..ba8de618a 100644 --- a/aboutlibraries-compose-m2/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/SharedLibraries.kt +++ b/aboutlibraries-compose-m2/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/SharedLibraries.kt @@ -58,6 +58,7 @@ fun LibrariesContainer( lazyListState: LazyListState = rememberLazyListState(), contentPadding: PaddingValues = PaddingValues(0.dp), showAuthor: Boolean = true, + showDescription: Boolean = false, showVersion: Boolean = true, showLicenseBadges: Boolean = true, colors: LibraryColors = LibraryDefaults.libraryColors(), @@ -80,6 +81,7 @@ fun LibrariesContainer( lazyListState = lazyListState, contentPadding = contentPadding, showAuthor = showAuthor, + showDescription = showDescription, showVersion = showVersion, showLicenseBadges = showLicenseBadges, colors = colors, @@ -94,7 +96,7 @@ fun LibrariesContainer( } else if (!license?.htmlReadyLicenseContent.isNullOrBlank()) { openDialog.value = library } else if (!license?.url.isNullOrBlank()) { - license?.url?.also { + license.url?.also { try { uriHandler.openUri(it) } catch (t: Throwable) { @@ -129,9 +131,7 @@ fun LicenseDialog( properties = DialogProperties(), content = { Surface( - shape = MaterialTheme.shapes.medium, - color = colors.backgroundColor, - contentColor = colors.contentColor + shape = MaterialTheme.shapes.medium, color = colors.backgroundColor, contentColor = colors.contentColor ) { Column { FlowRow( @@ -140,13 +140,10 @@ fun LicenseDialog( body(library) } FlowRow( - modifier = Modifier - .align(Alignment.End) - .padding(horizontal = 8.dp, vertical = 2.dp) + modifier = Modifier.align(Alignment.End).padding(horizontal = 8.dp, vertical = 2.dp) ) { TextButton( - onClick = onDismiss, - colors = ButtonDefaults.textButtonColors( + onClick = onDismiss, colors = ButtonDefaults.textButtonColors( contentColor = colors.dialogConfirmButtonColor, ) ) { @@ -169,6 +166,7 @@ fun Libraries( lazyListState: LazyListState = rememberLazyListState(), contentPadding: PaddingValues = PaddingValues(0.dp), showAuthor: Boolean = true, + showDescription: Boolean = false, showVersion: Boolean = true, showLicenseBadges: Boolean = true, colors: LibraryColors = LibraryDefaults.libraryColors(), @@ -181,26 +179,24 @@ fun Libraries( val uriHandler = LocalUriHandler.current LazyColumn( - modifier, - verticalArrangement = Arrangement.spacedBy(itemSpacing), - state = lazyListState, - contentPadding = contentPadding + modifier, verticalArrangement = Arrangement.spacedBy(itemSpacing), state = lazyListState, contentPadding = contentPadding ) { header?.invoke(this) libraryItems( - libraries, - showAuthor, - showVersion, - showLicenseBadges, - colors, - padding, - itemContentPadding + libraries = libraries, + showAuthor = showAuthor, + showDescription = showDescription, + showVersion = showVersion, + showLicenseBadges = showLicenseBadges, + colors = colors, + padding = padding, + itemContentPadding = itemContentPadding ) { library -> val license = library.licenses.firstOrNull() if (onLibraryClick != null) { onLibraryClick.invoke(library) } else if (!license?.url.isNullOrBlank()) { - license?.url?.also { + license.url?.also { try { uriHandler.openUri(it) } catch (t: Throwable) { @@ -215,6 +211,7 @@ fun Libraries( internal inline fun LazyListScope.libraryItems( libraries: ImmutableList, showAuthor: Boolean = true, + showDescription: Boolean = false, showVersion: Boolean = true, showLicenseBadges: Boolean = true, colors: LibraryColors, @@ -224,13 +221,14 @@ internal inline fun LazyListScope.libraryItems( ) { items(libraries) { library -> Library( - library, - showAuthor, - showVersion, - showLicenseBadges, - colors, - padding, - itemContentPadding + library = library, + showAuthor = showAuthor, + showDescription = showDescription, + showVersion = showVersion, + showLicenseBadges = showLicenseBadges, + colors = colors, + padding = padding, + contentPadding = itemContentPadding ) { onLibraryClick.invoke(library) } @@ -242,6 +240,7 @@ internal inline fun LazyListScope.libraryItems( internal fun Library( library: Library, showAuthor: Boolean = true, + showDescription: Boolean = false, showVersion: Boolean = true, showLicenseBadges: Boolean = true, colors: LibraryColors = LibraryDefaults.libraryColors(), @@ -250,22 +249,14 @@ internal fun Library( typography: Typography = MaterialTheme.typography, onClick: () -> Unit, ) { - Column( - modifier = Modifier - .fillMaxWidth() - .background(colors.backgroundColor) - .clickable { onClick.invoke() } - .padding(contentPadding) - ) { + Column(modifier = Modifier.fillMaxWidth().background(colors.backgroundColor).clickable { onClick.invoke() }.padding(contentPadding), + verticalArrangement = Arrangement.spacedBy(padding.verticalPadding)) { Row( - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.SpaceBetween + verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.SpaceBetween ) { Text( text = library.name, - modifier = Modifier - .padding(padding.namePadding) - .weight(1f), + modifier = Modifier.padding(padding.namePadding).weight(1f), style = typography.h6, color = colors.contentColor, maxLines = 1, @@ -274,33 +265,30 @@ internal fun Library( val version = library.artifactVersion if (version != null && showVersion) { Text( - version, - modifier = Modifier.padding(padding.versionPadding), - style = typography.body2, - color = colors.contentColor, - textAlign = TextAlign.Center + version, modifier = Modifier.padding(padding.versionPadding), style = typography.body2, color = colors.contentColor, textAlign = TextAlign.Center ) } } val author = library.author if (showAuthor && author.isNotBlank()) { Text( - text = author, - style = typography.body2, - color = colors.contentColor + text = author, style = typography.body2, color = colors.contentColor + ) + } + val description = library.description + if (showDescription && !description.isNullOrBlank()) { + Text( + text = description, style = typography.body2, color = colors.contentColor ) } if (showLicenseBadges && library.licenses.isNotEmpty()) { FlowRow { library.licenses.forEach { Badge( - modifier = Modifier.padding(padding.badgePadding), - contentColor = colors.badgeContentColor, - backgroundColor = colors.badgeBackgroundColor + modifier = Modifier.padding(padding.badgePadding), contentColor = colors.badgeContentColor, backgroundColor = colors.badgeBackgroundColor ) { Text( - modifier = Modifier.padding(padding.badgeContentPadding), - text = it.name + modifier = Modifier.padding(padding.badgeContentPadding), text = it.name ) } } @@ -358,21 +346,23 @@ object LibraryDefaults { * @param versionPadding the padding around the version shown as part of a [Library] * @param badgePadding the padding around a badge element shown as part of a [Library] * @param badgeContentPadding the padding around the content of a badge element shown as part of a [Library] + * @param verticalPadding the vertical padding between the individual items in the library element */ @Composable fun libraryPadding( namePadding: PaddingValues = PaddingValues(top = LibraryNamePaddingTop), versionPadding: PaddingValues = PaddingValues(start = LibraryVersionPaddingStart), badgePadding: PaddingValues = PaddingValues( - top = LibraryBadgePaddingTop, - end = LibraryBadgePaddingEnd + top = LibraryBadgePaddingTop, end = LibraryBadgePaddingEnd ), badgeContentPadding: PaddingValues = PaddingValues(0.dp), + verticalPadding: Dp = 2.dp, ): LibraryPadding = DefaultLibraryPadding( namePadding = namePadding, versionPadding = versionPadding, badgePadding = badgePadding, badgeContentPadding = badgeContentPadding, + verticalPadding = verticalPadding, ) } @@ -426,6 +416,9 @@ interface LibraryPadding { /** Represents the padding around the content of a badge element shown as part of a [Library] */ val badgeContentPadding: PaddingValues + + /** Represents the vertical padding between the individual items in the library element */ + val verticalPadding: Dp } /** @@ -437,4 +430,5 @@ private class DefaultLibraryPadding( override val versionPadding: PaddingValues, override val badgePadding: PaddingValues, override val badgeContentPadding: PaddingValues, + override val verticalPadding: Dp, ) : LibraryPadding diff --git a/aboutlibraries-compose-m3/api/aboutlibraries-compose-m3.klib.api b/aboutlibraries-compose-m3/api/aboutlibraries-compose-m3.klib.api new file mode 100644 index 000000000..30be95b49 --- /dev/null +++ b/aboutlibraries-compose-m3/api/aboutlibraries-compose-m3.klib.api @@ -0,0 +1,58 @@ +// Klib ABI Dump +// Targets: [iosArm64, iosSimulatorArm64, iosX64, js, macosArm64, macosX64, wasmJs] +// Rendering settings: +// - Signature version: 2 +// - Show manifest properties: true +// - Show declarations: true + +// Library unique name: +abstract interface com.mikepenz.aboutlibraries.ui.compose.m3/LibraryColors { // com.mikepenz.aboutlibraries.ui.compose.m3/LibraryColors|null[0] + abstract val backgroundColor // com.mikepenz.aboutlibraries.ui.compose.m3/LibraryColors.backgroundColor|{}backgroundColor[0] + abstract fun (): androidx.compose.ui.graphics/Color // com.mikepenz.aboutlibraries.ui.compose.m3/LibraryColors.backgroundColor.|(){}[0] + abstract val badgeBackgroundColor // com.mikepenz.aboutlibraries.ui.compose.m3/LibraryColors.badgeBackgroundColor|{}badgeBackgroundColor[0] + abstract fun (): androidx.compose.ui.graphics/Color // com.mikepenz.aboutlibraries.ui.compose.m3/LibraryColors.badgeBackgroundColor.|(){}[0] + abstract val badgeContentColor // com.mikepenz.aboutlibraries.ui.compose.m3/LibraryColors.badgeContentColor|{}badgeContentColor[0] + abstract fun (): androidx.compose.ui.graphics/Color // com.mikepenz.aboutlibraries.ui.compose.m3/LibraryColors.badgeContentColor.|(){}[0] + abstract val contentColor // com.mikepenz.aboutlibraries.ui.compose.m3/LibraryColors.contentColor|{}contentColor[0] + abstract fun (): androidx.compose.ui.graphics/Color // com.mikepenz.aboutlibraries.ui.compose.m3/LibraryColors.contentColor.|(){}[0] + abstract val dialogConfirmButtonColor // com.mikepenz.aboutlibraries.ui.compose.m3/LibraryColors.dialogConfirmButtonColor|{}dialogConfirmButtonColor[0] + abstract fun (): androidx.compose.ui.graphics/Color // com.mikepenz.aboutlibraries.ui.compose.m3/LibraryColors.dialogConfirmButtonColor.|(){}[0] +} + +abstract interface com.mikepenz.aboutlibraries.ui.compose.m3/LibraryPadding { // com.mikepenz.aboutlibraries.ui.compose.m3/LibraryPadding|null[0] + abstract val badgeContentPadding // com.mikepenz.aboutlibraries.ui.compose.m3/LibraryPadding.badgeContentPadding|{}badgeContentPadding[0] + abstract fun (): androidx.compose.foundation.layout/PaddingValues // com.mikepenz.aboutlibraries.ui.compose.m3/LibraryPadding.badgeContentPadding.|(){}[0] + abstract val badgePadding // com.mikepenz.aboutlibraries.ui.compose.m3/LibraryPadding.badgePadding|{}badgePadding[0] + abstract fun (): androidx.compose.foundation.layout/PaddingValues // com.mikepenz.aboutlibraries.ui.compose.m3/LibraryPadding.badgePadding.|(){}[0] + abstract val namePadding // com.mikepenz.aboutlibraries.ui.compose.m3/LibraryPadding.namePadding|{}namePadding[0] + abstract fun (): androidx.compose.foundation.layout/PaddingValues // com.mikepenz.aboutlibraries.ui.compose.m3/LibraryPadding.namePadding.|(){}[0] + abstract val versionPadding // com.mikepenz.aboutlibraries.ui.compose.m3/LibraryPadding.versionPadding|{}versionPadding[0] + abstract fun (): androidx.compose.foundation.layout/PaddingValues // com.mikepenz.aboutlibraries.ui.compose.m3/LibraryPadding.versionPadding.|(){}[0] + abstract val verticalPadding // com.mikepenz.aboutlibraries.ui.compose.m3/LibraryPadding.verticalPadding|{}verticalPadding[0] + abstract fun (): androidx.compose.ui.unit/Dp // com.mikepenz.aboutlibraries.ui.compose.m3/LibraryPadding.verticalPadding.|(){}[0] +} + +final object com.mikepenz.aboutlibraries.ui.compose.m3/LibraryDefaults { // com.mikepenz.aboutlibraries.ui.compose.m3/LibraryDefaults|null[0] + final val ContentPadding // com.mikepenz.aboutlibraries.ui.compose.m3/LibraryDefaults.ContentPadding|{}ContentPadding[0] + final fun (): androidx.compose.foundation.layout/PaddingValues // com.mikepenz.aboutlibraries.ui.compose.m3/LibraryDefaults.ContentPadding.|(){}[0] + + final fun libraryColors(androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int): com.mikepenz.aboutlibraries.ui.compose.m3/LibraryColors // com.mikepenz.aboutlibraries.ui.compose.m3/LibraryDefaults.libraryColors|libraryColors(androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){}[0] + final fun libraryPadding(androidx.compose.foundation.layout/PaddingValues?, androidx.compose.foundation.layout/PaddingValues?, androidx.compose.foundation.layout/PaddingValues?, androidx.compose.foundation.layout/PaddingValues?, androidx.compose.ui.unit/Dp, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int): com.mikepenz.aboutlibraries.ui.compose.m3/LibraryPadding // com.mikepenz.aboutlibraries.ui.compose.m3/LibraryDefaults.libraryPadding|libraryPadding(androidx.compose.foundation.layout.PaddingValues?;androidx.compose.foundation.layout.PaddingValues?;androidx.compose.foundation.layout.PaddingValues?;androidx.compose.foundation.layout.PaddingValues?;androidx.compose.ui.unit.Dp;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){}[0] +} + +final val com.mikepenz.aboutlibraries.ui.compose.m3.util/author // com.mikepenz.aboutlibraries.ui.compose.m3.util/author|@com.mikepenz.aboutlibraries.entity.Library{}author[0] + final fun (com.mikepenz.aboutlibraries.entity/Library).(): kotlin/String // com.mikepenz.aboutlibraries.ui.compose.m3.util/author.|@com.mikepenz.aboutlibraries.entity.Library(){}[0] +final val com.mikepenz.aboutlibraries.ui.compose.m3.util/htmlReadyLicenseContent // com.mikepenz.aboutlibraries.ui.compose.m3.util/htmlReadyLicenseContent|@com.mikepenz.aboutlibraries.entity.License{}htmlReadyLicenseContent[0] + final fun (com.mikepenz.aboutlibraries.entity/License).(): kotlin/String? // com.mikepenz.aboutlibraries.ui.compose.m3.util/htmlReadyLicenseContent.|@com.mikepenz.aboutlibraries.entity.License(){}[0] +final val com.mikepenz.aboutlibraries.ui.compose.m3.util/strippedLicenseContent // com.mikepenz.aboutlibraries.ui.compose.m3.util/strippedLicenseContent|@com.mikepenz.aboutlibraries.entity.License{}strippedLicenseContent[0] + final fun (com.mikepenz.aboutlibraries.entity/License).(): kotlin/String? // com.mikepenz.aboutlibraries.ui.compose.m3.util/strippedLicenseContent.|@com.mikepenz.aboutlibraries.entity.License(){}[0] +final val com.mikepenz.aboutlibraries.ui.compose.m3/com_mikepenz_aboutlibraries_ui_compose_m3_LibraryDefaults$stableprop // com.mikepenz.aboutlibraries.ui.compose.m3/com_mikepenz_aboutlibraries_ui_compose_m3_LibraryDefaults$stableprop|#static{}com_mikepenz_aboutlibraries_ui_compose_m3_LibraryDefaults$stableprop[0] + +final fun com.mikepenz.aboutlibraries.ui.compose.m3/Libraries(kotlinx.collections.immutable/ImmutableList, androidx.compose.ui/Modifier?, androidx.compose.foundation.lazy/LazyListState?, androidx.compose.foundation.layout/PaddingValues?, kotlin/Boolean, kotlin/Boolean, kotlin/Boolean, kotlin/Boolean, com.mikepenz.aboutlibraries.ui.compose.m3/LibraryColors?, com.mikepenz.aboutlibraries.ui.compose.m3/LibraryPadding?, androidx.compose.foundation.layout/PaddingValues?, androidx.compose.ui.unit/Dp, kotlin/Function1?, kotlin/Function1?, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int, kotlin/Int) // com.mikepenz.aboutlibraries.ui.compose.m3/Libraries|Libraries(kotlinx.collections.immutable.ImmutableList;androidx.compose.ui.Modifier?;androidx.compose.foundation.lazy.LazyListState?;androidx.compose.foundation.layout.PaddingValues?;kotlin.Boolean;kotlin.Boolean;kotlin.Boolean;kotlin.Boolean;com.mikepenz.aboutlibraries.ui.compose.m3.LibraryColors?;com.mikepenz.aboutlibraries.ui.compose.m3.LibraryPadding?;androidx.compose.foundation.layout.PaddingValues?;androidx.compose.ui.unit.Dp;kotlin.Function1?;kotlin.Function1?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int;kotlin.Int){}[0] +final fun com.mikepenz.aboutlibraries.ui.compose.m3/LibrariesContainer(com.mikepenz.aboutlibraries/Libs?, androidx.compose.ui/Modifier?, androidx.compose.foundation.lazy/LazyListState?, androidx.compose.foundation.layout/PaddingValues?, kotlin/Boolean, kotlin/Boolean, kotlin/Boolean, kotlin/Boolean, com.mikepenz.aboutlibraries.ui.compose.m3/LibraryColors?, com.mikepenz.aboutlibraries.ui.compose.m3/LibraryPadding?, androidx.compose.foundation.layout/PaddingValues?, androidx.compose.ui.unit/Dp, kotlin/Function1?, kotlin/Function1?, kotlin/Function3?, kotlin/String?, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int, kotlin/Int) // com.mikepenz.aboutlibraries.ui.compose.m3/LibrariesContainer|LibrariesContainer(com.mikepenz.aboutlibraries.Libs?;androidx.compose.ui.Modifier?;androidx.compose.foundation.lazy.LazyListState?;androidx.compose.foundation.layout.PaddingValues?;kotlin.Boolean;kotlin.Boolean;kotlin.Boolean;kotlin.Boolean;com.mikepenz.aboutlibraries.ui.compose.m3.LibraryColors?;com.mikepenz.aboutlibraries.ui.compose.m3.LibraryPadding?;androidx.compose.foundation.layout.PaddingValues?;androidx.compose.ui.unit.Dp;kotlin.Function1?;kotlin.Function1?;kotlin.Function3?;kotlin.String?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int;kotlin.Int){}[0] +final fun com.mikepenz.aboutlibraries.ui.compose.m3/LibrariesContainer(kotlin/Function0, androidx.compose.ui/Modifier?, androidx.compose.foundation.lazy/LazyListState?, androidx.compose.foundation.layout/PaddingValues?, kotlin/Boolean, kotlin/Boolean, kotlin/Boolean, kotlin/Boolean, com.mikepenz.aboutlibraries.ui.compose.m3/LibraryColors?, com.mikepenz.aboutlibraries.ui.compose.m3/LibraryPadding?, androidx.compose.foundation.layout/PaddingValues?, androidx.compose.ui.unit/Dp, kotlin/Function1?, kotlin/Function1?, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int, kotlin/Int) // com.mikepenz.aboutlibraries.ui.compose.m3/LibrariesContainer|LibrariesContainer(kotlin.Function0;androidx.compose.ui.Modifier?;androidx.compose.foundation.lazy.LazyListState?;androidx.compose.foundation.layout.PaddingValues?;kotlin.Boolean;kotlin.Boolean;kotlin.Boolean;kotlin.Boolean;com.mikepenz.aboutlibraries.ui.compose.m3.LibraryColors?;com.mikepenz.aboutlibraries.ui.compose.m3.LibraryPadding?;androidx.compose.foundation.layout.PaddingValues?;androidx.compose.ui.unit.Dp;kotlin.Function1?;kotlin.Function1?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int;kotlin.Int){}[0] +final fun com.mikepenz.aboutlibraries.ui.compose.m3/LibrariesContainer(kotlin/String, androidx.compose.ui/Modifier?, androidx.compose.foundation.lazy/LazyListState?, androidx.compose.foundation.layout/PaddingValues?, kotlin/Boolean, kotlin/Boolean, kotlin/Boolean, kotlin/Boolean, com.mikepenz.aboutlibraries.ui.compose.m3/LibraryColors?, com.mikepenz.aboutlibraries.ui.compose.m3/LibraryPadding?, androidx.compose.foundation.layout/PaddingValues?, androidx.compose.ui.unit/Dp, kotlin/Function1?, kotlin/Function1?, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int, kotlin/Int) // com.mikepenz.aboutlibraries.ui.compose.m3/LibrariesContainer|LibrariesContainer(kotlin.String;androidx.compose.ui.Modifier?;androidx.compose.foundation.lazy.LazyListState?;androidx.compose.foundation.layout.PaddingValues?;kotlin.Boolean;kotlin.Boolean;kotlin.Boolean;kotlin.Boolean;com.mikepenz.aboutlibraries.ui.compose.m3.LibraryColors?;com.mikepenz.aboutlibraries.ui.compose.m3.LibraryPadding?;androidx.compose.foundation.layout.PaddingValues?;androidx.compose.ui.unit.Dp;kotlin.Function1?;kotlin.Function1?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int;kotlin.Int){}[0] +final fun com.mikepenz.aboutlibraries.ui.compose.m3/LicenseDialog(com.mikepenz.aboutlibraries.entity/Library, com.mikepenz.aboutlibraries.ui.compose.m3/LibraryColors?, kotlin/String?, kotlin/Function3, kotlin/Function0, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int) // com.mikepenz.aboutlibraries.ui.compose.m3/LicenseDialog|LicenseDialog(com.mikepenz.aboutlibraries.entity.Library;com.mikepenz.aboutlibraries.ui.compose.m3.LibraryColors?;kotlin.String?;kotlin.Function3;kotlin.Function0;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){}[0] +final fun com.mikepenz.aboutlibraries.ui.compose.m3/com_mikepenz_aboutlibraries_ui_compose_m3_LibraryDefaults$stableprop_getter(): kotlin/Int // com.mikepenz.aboutlibraries.ui.compose.m3/com_mikepenz_aboutlibraries_ui_compose_m3_LibraryDefaults$stableprop_getter|com_mikepenz_aboutlibraries_ui_compose_m3_LibraryDefaults$stableprop_getter(){}[0] +final fun com.mikepenz.aboutlibraries.ui.compose.m3/rememberLibraries(kotlin.coroutines/SuspendFunction0, androidx.compose.runtime/Composer?, kotlin/Int): androidx.compose.runtime/State // com.mikepenz.aboutlibraries.ui.compose.m3/rememberLibraries|rememberLibraries(kotlin.coroutines.SuspendFunction0;androidx.compose.runtime.Composer?;kotlin.Int){}[0] +final fun com.mikepenz.aboutlibraries.ui.compose.m3/rememberLibraries(kotlin/ByteArray, androidx.compose.runtime/Composer?, kotlin/Int): androidx.compose.runtime/State // com.mikepenz.aboutlibraries.ui.compose.m3/rememberLibraries|rememberLibraries(kotlin.ByteArray;androidx.compose.runtime.Composer?;kotlin.Int){}[0] diff --git a/aboutlibraries-compose-m3/api/android/aboutlibraries-compose-m3.api b/aboutlibraries-compose-m3/api/android/aboutlibraries-compose-m3.api new file mode 100644 index 000000000..72b9b3a39 --- /dev/null +++ b/aboutlibraries-compose-m3/api/android/aboutlibraries-compose-m3.api @@ -0,0 +1,68 @@ +public final class com/mikepenz/aboutlibraries/ui/compose/m3/AndroidLibrariesKt { + public static final fun LibrariesContainer-Qi0uq5o (Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/layout/PaddingValues;ZZZZLcom/mikepenz/aboutlibraries/ui/compose/m3/LibraryColors;Lcom/mikepenz/aboutlibraries/ui/compose/m3/LibraryPadding;Landroidx/compose/foundation/layout/PaddingValues;FLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;III)V + public static final fun PreviewLibraries (Landroidx/compose/runtime/Composer;I)V + public static final fun PreviewLibrariesOff (Landroidx/compose/runtime/Composer;I)V + public static final fun PreviewLibrary (Landroidx/compose/runtime/Composer;I)V +} + +public final class com/mikepenz/aboutlibraries/ui/compose/m3/ComposableSingletons$AndroidLibrariesKt { + public static final field INSTANCE Lcom/mikepenz/aboutlibraries/ui/compose/m3/ComposableSingletons$AndroidLibrariesKt; + public fun ()V + public final fun getLambda-1$aboutlibraries_compose_m3_release ()Lkotlin/jvm/functions/Function2; + public final fun getLambda-2$aboutlibraries_compose_m3_release ()Lkotlin/jvm/functions/Function2; + public final fun getLambda-3$aboutlibraries_compose_m3_release ()Lkotlin/jvm/functions/Function2; + public final fun getLambda-4$aboutlibraries_compose_m3_release ()Lkotlin/jvm/functions/Function2; + public final fun getLambda-5$aboutlibraries_compose_m3_release ()Lkotlin/jvm/functions/Function2; + public final fun getLambda-6$aboutlibraries_compose_m3_release ()Lkotlin/jvm/functions/Function2; +} + +public final class com/mikepenz/aboutlibraries/ui/compose/m3/ComposableSingletons$LibrariesKt { + public static final field INSTANCE Lcom/mikepenz/aboutlibraries/ui/compose/m3/ComposableSingletons$LibrariesKt; + public fun ()V + public final fun getLambda-1$aboutlibraries_compose_m3_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda-2$aboutlibraries_compose_m3_release ()Lkotlin/jvm/functions/Function3; +} + +public final class com/mikepenz/aboutlibraries/ui/compose/m3/LibrariesKt { + public static final fun LibrariesContainer-Qi0uq5o (Ljava/lang/String;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/layout/PaddingValues;ZZZZLcom/mikepenz/aboutlibraries/ui/compose/m3/LibraryColors;Lcom/mikepenz/aboutlibraries/ui/compose/m3/LibraryPadding;Landroidx/compose/foundation/layout/PaddingValues;FLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;III)V + public static final fun LibrariesContainer-Qi0uq5o (Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/layout/PaddingValues;ZZZZLcom/mikepenz/aboutlibraries/ui/compose/m3/LibraryColors;Lcom/mikepenz/aboutlibraries/ui/compose/m3/LibraryPadding;Landroidx/compose/foundation/layout/PaddingValues;FLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;III)V + public static final fun rememberLibraries (Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; + public static final fun rememberLibraries ([BLandroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +} + +public abstract interface class com/mikepenz/aboutlibraries/ui/compose/m3/LibraryColors { + public abstract fun getBackgroundColor-0d7_KjU ()J + public abstract fun getBadgeBackgroundColor-0d7_KjU ()J + public abstract fun getBadgeContentColor-0d7_KjU ()J + public abstract fun getContentColor-0d7_KjU ()J + public abstract fun getDialogConfirmButtonColor-0d7_KjU ()J +} + +public final class com/mikepenz/aboutlibraries/ui/compose/m3/LibraryDefaults { + public static final field $stable I + public static final field INSTANCE Lcom/mikepenz/aboutlibraries/ui/compose/m3/LibraryDefaults; + public final fun getContentPadding ()Landroidx/compose/foundation/layout/PaddingValues; + public final fun libraryColors-zjMxDiM (JJJJJLandroidx/compose/runtime/Composer;II)Lcom/mikepenz/aboutlibraries/ui/compose/m3/LibraryColors; + public final fun libraryPadding-FJfuzF0 (Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;FLandroidx/compose/runtime/Composer;II)Lcom/mikepenz/aboutlibraries/ui/compose/m3/LibraryPadding; +} + +public abstract interface class com/mikepenz/aboutlibraries/ui/compose/m3/LibraryPadding { + public abstract fun getBadgeContentPadding ()Landroidx/compose/foundation/layout/PaddingValues; + public abstract fun getBadgePadding ()Landroidx/compose/foundation/layout/PaddingValues; + public abstract fun getNamePadding ()Landroidx/compose/foundation/layout/PaddingValues; + public abstract fun getVersionPadding ()Landroidx/compose/foundation/layout/PaddingValues; + public abstract fun getVerticalPadding-D9Ej5fM ()F +} + +public final class com/mikepenz/aboutlibraries/ui/compose/m3/SharedLibrariesKt { + public static final fun Libraries-Qi0uq5o (Lkotlinx/collections/immutable/ImmutableList;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/layout/PaddingValues;ZZZZLcom/mikepenz/aboutlibraries/ui/compose/m3/LibraryColors;Lcom/mikepenz/aboutlibraries/ui/compose/m3/LibraryPadding;Landroidx/compose/foundation/layout/PaddingValues;FLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;III)V + public static final fun LibrariesContainer-0essu7Y (Lcom/mikepenz/aboutlibraries/Libs;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/layout/PaddingValues;ZZZZLcom/mikepenz/aboutlibraries/ui/compose/m3/LibraryColors;Lcom/mikepenz/aboutlibraries/ui/compose/m3/LibraryPadding;Landroidx/compose/foundation/layout/PaddingValues;FLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;Ljava/lang/String;Landroidx/compose/runtime/Composer;III)V + public static final fun LicenseDialog (Lcom/mikepenz/aboutlibraries/entity/Library;Lcom/mikepenz/aboutlibraries/ui/compose/m3/LibraryColors;Ljava/lang/String;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;II)V +} + +public final class com/mikepenz/aboutlibraries/ui/compose/m3/util/ExtensionsKt { + public static final fun getAuthor (Lcom/mikepenz/aboutlibraries/entity/Library;)Ljava/lang/String; + public static final fun getHtmlReadyLicenseContent (Lcom/mikepenz/aboutlibraries/entity/License;)Ljava/lang/String; + public static final fun getStrippedLicenseContent (Lcom/mikepenz/aboutlibraries/entity/License;)Ljava/lang/String; +} + diff --git a/aboutlibraries-compose-m3/api/jvm/aboutlibraries-compose-m3.api b/aboutlibraries-compose-m3/api/jvm/aboutlibraries-compose-m3.api new file mode 100644 index 000000000..ecd73a54d --- /dev/null +++ b/aboutlibraries-compose-m3/api/jvm/aboutlibraries-compose-m3.api @@ -0,0 +1,50 @@ +public final class com/mikepenz/aboutlibraries/ui/compose/m3/ComposableSingletons$LibrariesKt { + public static final field INSTANCE Lcom/mikepenz/aboutlibraries/ui/compose/m3/ComposableSingletons$LibrariesKt; + public fun ()V + public final fun getLambda-1$aboutlibraries_compose_m3 ()Lkotlin/jvm/functions/Function3; + public final fun getLambda-2$aboutlibraries_compose_m3 ()Lkotlin/jvm/functions/Function3; +} + +public final class com/mikepenz/aboutlibraries/ui/compose/m3/LibrariesKt { + public static final fun LibrariesContainer-Qi0uq5o (Ljava/lang/String;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/layout/PaddingValues;ZZZZLcom/mikepenz/aboutlibraries/ui/compose/m3/LibraryColors;Lcom/mikepenz/aboutlibraries/ui/compose/m3/LibraryPadding;Landroidx/compose/foundation/layout/PaddingValues;FLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;III)V + public static final fun LibrariesContainer-Qi0uq5o (Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/layout/PaddingValues;ZZZZLcom/mikepenz/aboutlibraries/ui/compose/m3/LibraryColors;Lcom/mikepenz/aboutlibraries/ui/compose/m3/LibraryPadding;Landroidx/compose/foundation/layout/PaddingValues;FLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;III)V + public static final fun rememberLibraries (Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; + public static final fun rememberLibraries ([BLandroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +} + +public abstract interface class com/mikepenz/aboutlibraries/ui/compose/m3/LibraryColors { + public abstract fun getBackgroundColor-0d7_KjU ()J + public abstract fun getBadgeBackgroundColor-0d7_KjU ()J + public abstract fun getBadgeContentColor-0d7_KjU ()J + public abstract fun getContentColor-0d7_KjU ()J + public abstract fun getDialogConfirmButtonColor-0d7_KjU ()J +} + +public final class com/mikepenz/aboutlibraries/ui/compose/m3/LibraryDefaults { + public static final field $stable I + public static final field INSTANCE Lcom/mikepenz/aboutlibraries/ui/compose/m3/LibraryDefaults; + public final fun getContentPadding ()Landroidx/compose/foundation/layout/PaddingValues; + public final fun libraryColors-zjMxDiM (JJJJJLandroidx/compose/runtime/Composer;II)Lcom/mikepenz/aboutlibraries/ui/compose/m3/LibraryColors; + public final fun libraryPadding-FJfuzF0 (Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;FLandroidx/compose/runtime/Composer;II)Lcom/mikepenz/aboutlibraries/ui/compose/m3/LibraryPadding; +} + +public abstract interface class com/mikepenz/aboutlibraries/ui/compose/m3/LibraryPadding { + public abstract fun getBadgeContentPadding ()Landroidx/compose/foundation/layout/PaddingValues; + public abstract fun getBadgePadding ()Landroidx/compose/foundation/layout/PaddingValues; + public abstract fun getNamePadding ()Landroidx/compose/foundation/layout/PaddingValues; + public abstract fun getVersionPadding ()Landroidx/compose/foundation/layout/PaddingValues; + public abstract fun getVerticalPadding-D9Ej5fM ()F +} + +public final class com/mikepenz/aboutlibraries/ui/compose/m3/SharedLibrariesKt { + public static final fun Libraries-Qi0uq5o (Lkotlinx/collections/immutable/ImmutableList;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/layout/PaddingValues;ZZZZLcom/mikepenz/aboutlibraries/ui/compose/m3/LibraryColors;Lcom/mikepenz/aboutlibraries/ui/compose/m3/LibraryPadding;Landroidx/compose/foundation/layout/PaddingValues;FLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;III)V + public static final fun LibrariesContainer-0essu7Y (Lcom/mikepenz/aboutlibraries/Libs;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/layout/PaddingValues;ZZZZLcom/mikepenz/aboutlibraries/ui/compose/m3/LibraryColors;Lcom/mikepenz/aboutlibraries/ui/compose/m3/LibraryPadding;Landroidx/compose/foundation/layout/PaddingValues;FLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;Ljava/lang/String;Landroidx/compose/runtime/Composer;III)V + public static final fun LicenseDialog (Lcom/mikepenz/aboutlibraries/entity/Library;Lcom/mikepenz/aboutlibraries/ui/compose/m3/LibraryColors;Ljava/lang/String;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;II)V +} + +public final class com/mikepenz/aboutlibraries/ui/compose/m3/util/ExtensionsKt { + public static final fun getAuthor (Lcom/mikepenz/aboutlibraries/entity/Library;)Ljava/lang/String; + public static final fun getHtmlReadyLicenseContent (Lcom/mikepenz/aboutlibraries/entity/License;)Ljava/lang/String; + public static final fun getStrippedLicenseContent (Lcom/mikepenz/aboutlibraries/entity/License;)Ljava/lang/String; +} + diff --git a/aboutlibraries-compose-m3/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/m3/AndroidLibraries.kt b/aboutlibraries-compose-m3/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/m3/AndroidLibraries.kt index f23e6b27b..efd9f2108 100644 --- a/aboutlibraries-compose-m3/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/m3/AndroidLibraries.kt +++ b/aboutlibraries-compose-m3/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/m3/AndroidLibraries.kt @@ -1,24 +1,22 @@ package com.mikepenz.aboutlibraries.ui.compose.m3 import android.content.Context -import android.widget.TextView import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.produceState import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.fromHtml import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import androidx.compose.ui.viewinterop.AndroidView -import androidx.core.text.HtmlCompat import com.mikepenz.aboutlibraries.Libs import com.mikepenz.aboutlibraries.entity.Library import com.mikepenz.aboutlibraries.ui.compose.m3.data.fakeData @@ -39,6 +37,7 @@ fun LibrariesContainer( lazyListState: LazyListState = rememberLazyListState(), contentPadding: PaddingValues = PaddingValues(0.dp), showAuthor: Boolean = true, + showDescription: Boolean = false, showVersion: Boolean = true, showLicenseBadges: Boolean = true, colors: LibraryColors = LibraryDefaults.libraryColors(), @@ -56,47 +55,38 @@ fun LibrariesContainer( } } LibrariesContainer( - libraries.value, - modifier, - lazyListState, - contentPadding, - showAuthor, - showVersion, - showLicenseBadges, - colors, - padding, - itemContentPadding, - itemSpacing, - header, - onLibraryClick, + libraries = libraries.value, + modifier = modifier, + lazyListState = lazyListState, + contentPadding = contentPadding, + showAuthor = showAuthor, + showDescription = showDescription, + showVersion = showVersion, + showLicenseBadges = showLicenseBadges, + colors = colors, + padding = padding, + itemContentPadding = itemContentPadding, + itemSpacing = itemSpacing, + header = header, + onLibraryClick = onLibraryClick, licenseDialogBody = { library -> - HtmlText( - html = library.licenses.firstOrNull()?.htmlReadyLicenseContent.orEmpty(), - color = colors.contentColor, + Text( + text = AnnotatedString.fromHtml(library.licenses.firstOrNull()?.htmlReadyLicenseContent.orEmpty()), + color = colors.contentColor ) } ) } -@Composable -fun HtmlText( - html: String, - modifier: Modifier = Modifier, - color: Color = LibraryDefaults.libraryColors().contentColor, -) { - AndroidView(modifier = modifier, factory = { context -> - TextView(context).apply { - setTextColor(color.toArgb()) - } - }, update = { it.text = HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_COMPACT) }) -} - @Preview("Library items (Default)") @Composable fun PreviewLibraries() { MaterialTheme { Surface { - Libraries(fakeData.libraries) + Libraries( + fakeData.libraries, + showDescription = true + ) } } } diff --git a/aboutlibraries-compose-m3/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/m3/Libraries.kt b/aboutlibraries-compose-m3/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/m3/Libraries.kt index cad749bdc..8f243bf72 100644 --- a/aboutlibraries-compose-m3/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/m3/Libraries.kt +++ b/aboutlibraries-compose-m3/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/m3/Libraries.kt @@ -26,6 +26,7 @@ fun LibrariesContainer( lazyListState: LazyListState = rememberLazyListState(), contentPadding: PaddingValues = PaddingValues(0.dp), showAuthor: Boolean = true, + showDescription: Boolean = false, showVersion: Boolean = true, showLicenseBadges: Boolean = true, colors: LibraryColors = LibraryDefaults.libraryColors(), @@ -42,6 +43,7 @@ fun LibrariesContainer( lazyListState = lazyListState, contentPadding = contentPadding, showAuthor = showAuthor, + showDescription = showDescription, showVersion = showVersion, showLicenseBadges = showLicenseBadges, colors = colors, @@ -66,6 +68,7 @@ fun LibrariesContainer( lazyListState: LazyListState = rememberLazyListState(), contentPadding: PaddingValues = PaddingValues(0.dp), showAuthor: Boolean = true, + showDescription: Boolean = false, showVersion: Boolean = true, showLicenseBadges: Boolean = true, colors: LibraryColors = LibraryDefaults.libraryColors(), @@ -78,19 +81,20 @@ fun LibrariesContainer( val libs = librariesBlock() LibrariesContainer( - libs, - modifier, - lazyListState, - contentPadding, - showAuthor, - showVersion, - showLicenseBadges, - colors, - padding, - itemContentPadding, - itemSpacing, - header, - onLibraryClick, + libraries = libs, + modifier = modifier, + lazyListState = lazyListState, + contentPadding = contentPadding, + showAuthor = showAuthor, + showDescription = showDescription, + showVersion = showVersion, + showLicenseBadges = showLicenseBadges, + colors = colors, + padding = padding, + itemContentPadding = itemContentPadding, + itemSpacing = itemSpacing, + header = header, + onLibraryClick = onLibraryClick, licenseDialogBody = { library -> Text(library.licenses.firstOrNull()?.licenseContent ?: "") } diff --git a/aboutlibraries-compose-m3/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/m3/SharedLibraries.kt b/aboutlibraries-compose-m3/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/m3/SharedLibraries.kt index 4de05c46e..1034f86ce 100644 --- a/aboutlibraries-compose-m3/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/m3/SharedLibraries.kt +++ b/aboutlibraries-compose-m3/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/m3/SharedLibraries.kt @@ -59,6 +59,7 @@ fun LibrariesContainer( lazyListState: LazyListState = rememberLazyListState(), contentPadding: PaddingValues = PaddingValues(0.dp), showAuthor: Boolean = true, + showDescription: Boolean = false, showVersion: Boolean = true, showLicenseBadges: Boolean = true, colors: LibraryColors = LibraryDefaults.libraryColors(), @@ -81,6 +82,7 @@ fun LibrariesContainer( lazyListState = lazyListState, contentPadding = contentPadding, showAuthor = showAuthor, + showDescription = showDescription, showVersion = showVersion, showLicenseBadges = showLicenseBadges, colors = colors, @@ -170,6 +172,7 @@ fun Libraries( lazyListState: LazyListState = rememberLazyListState(), contentPadding: PaddingValues = PaddingValues(0.dp), showAuthor: Boolean = true, + showDescription: Boolean = false, showVersion: Boolean = true, showLicenseBadges: Boolean = true, colors: LibraryColors = LibraryDefaults.libraryColors(), @@ -189,19 +192,20 @@ fun Libraries( ) { header?.invoke(this) libraryItems( - libraries, - showAuthor, - showVersion, - showLicenseBadges, - colors, - padding, - itemContentPadding + libraries = libraries, + showAuthor = showAuthor, + showDescription = showDescription, + showVersion = showVersion, + showLicenseBadges = showLicenseBadges, + colors = colors, + padding = padding, + itemContentPadding = itemContentPadding ) { library -> val license = library.licenses.firstOrNull() if (onLibraryClick != null) { onLibraryClick.invoke(library) } else if (!license?.url.isNullOrBlank()) { - license?.url?.also { + license.url?.also { try { uriHandler.openUri(it) } catch (t: Throwable) { @@ -216,6 +220,7 @@ fun Libraries( internal inline fun LazyListScope.libraryItems( libraries: ImmutableList, showAuthor: Boolean = true, + showDescription: Boolean = false, showVersion: Boolean = true, showLicenseBadges: Boolean = true, colors: LibraryColors, @@ -225,13 +230,14 @@ internal inline fun LazyListScope.libraryItems( ) { items(libraries) { library -> Library( - library, - showAuthor, - showVersion, - showLicenseBadges, - colors, - padding, - itemContentPadding + library = library, + showAuthor = showAuthor, + showDescription = showDescription, + showVersion = showVersion, + showLicenseBadges = showLicenseBadges, + colors = colors, + padding = padding, + contentPadding = itemContentPadding ) { onLibraryClick.invoke(library) } @@ -243,6 +249,7 @@ internal inline fun LazyListScope.libraryItems( internal fun Library( library: Library, showAuthor: Boolean = true, + showDescription: Boolean = false, showVersion: Boolean = true, showLicenseBadges: Boolean = true, colors: LibraryColors = LibraryDefaults.libraryColors(), @@ -256,7 +263,8 @@ internal fun Library( .fillMaxWidth() .background(colors.backgroundColor) .clickable { onClick.invoke() } - .padding(contentPadding) + .padding(contentPadding), + verticalArrangement = Arrangement.spacedBy(padding.verticalPadding) ) { Row( verticalAlignment = Alignment.CenterVertically, @@ -291,6 +299,14 @@ internal fun Library( color = colors.contentColor ) } + val description = library.description + if (showDescription && !description.isNullOrBlank()) { + Text( + text = description, + style = typography.bodySmall, + color = colors.contentColor + ) + } if (showLicenseBadges && library.licenses.isNotEmpty()) { FlowRow { library.licenses.forEach { @@ -359,6 +375,7 @@ object LibraryDefaults { * @param versionPadding the padding around the version shown as part of a [Library] * @param badgePadding the padding around a badge element shown as part of a [Library] * @param badgeContentPadding the padding around the content of a badge element shown as part of a [Library] + * @param verticalPadding the vertical padding between the individual items in the library element */ @Composable fun libraryPadding( @@ -369,11 +386,13 @@ object LibraryDefaults { end = LibraryBadgePaddingEnd ), badgeContentPadding: PaddingValues = PaddingValues(0.dp), + verticalPadding: Dp = 2.dp, ): LibraryPadding = DefaultLibraryPadding( namePadding = namePadding, versionPadding = versionPadding, badgePadding = badgePadding, badgeContentPadding = badgeContentPadding, + verticalPadding = verticalPadding, ) } @@ -427,6 +446,9 @@ interface LibraryPadding { /** Represents the padding around the content of a badge element shown as part of a [Library] */ val badgeContentPadding: PaddingValues + + /** Represents the vertical padding between the individual items in the library element */ + val verticalPadding: Dp } /** @@ -438,4 +460,5 @@ private class DefaultLibraryPadding( override val versionPadding: PaddingValues, override val badgePadding: PaddingValues, override val badgeContentPadding: PaddingValues, + override val verticalPadding: Dp, ) : LibraryPadding diff --git a/aboutlibraries-core/api/aboutlibraries-core.klib.api b/aboutlibraries-core/api/aboutlibraries-core.klib.api new file mode 100644 index 000000000..5a48bc6bb --- /dev/null +++ b/aboutlibraries-core/api/aboutlibraries-core.klib.api @@ -0,0 +1,281 @@ +// Klib ABI Dump +// Targets: [iosArm64, iosSimulatorArm64, iosX64, js, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, wasmJs, watchosArm32, watchosArm64, watchosDeviceArm64, watchosSimulatorArm64, watchosX64] +// Rendering settings: +// - Signature version: 2 +// - Show manifest properties: true +// - Show declarations: true + +// Library unique name: +final class com.mikepenz.aboutlibraries.entity/Developer { // com.mikepenz.aboutlibraries.entity/Developer|null[0] + constructor (kotlin/String?, kotlin/String?) // com.mikepenz.aboutlibraries.entity/Developer.|(kotlin.String?;kotlin.String?){}[0] + + final val name // com.mikepenz.aboutlibraries.entity/Developer.name|{}name[0] + final fun (): kotlin/String? // com.mikepenz.aboutlibraries.entity/Developer.name.|(){}[0] + final val organisationUrl // com.mikepenz.aboutlibraries.entity/Developer.organisationUrl|{}organisationUrl[0] + final fun (): kotlin/String? // com.mikepenz.aboutlibraries.entity/Developer.organisationUrl.|(){}[0] + + final fun component1(): kotlin/String? // com.mikepenz.aboutlibraries.entity/Developer.component1|component1(){}[0] + final fun component2(): kotlin/String? // com.mikepenz.aboutlibraries.entity/Developer.component2|component2(){}[0] + final fun copy(kotlin/String? = ..., kotlin/String? = ...): com.mikepenz.aboutlibraries.entity/Developer // com.mikepenz.aboutlibraries.entity/Developer.copy|copy(kotlin.String?;kotlin.String?){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // com.mikepenz.aboutlibraries.entity/Developer.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // com.mikepenz.aboutlibraries.entity/Developer.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // com.mikepenz.aboutlibraries.entity/Developer.toString|toString(){}[0] + + final object $serializer : kotlinx.serialization.internal/GeneratedSerializer { // com.mikepenz.aboutlibraries.entity/Developer.$serializer|null[0] + final val descriptor // com.mikepenz.aboutlibraries.entity/Developer.$serializer.descriptor|{}descriptor[0] + final fun (): kotlinx.serialization.descriptors/SerialDescriptor // com.mikepenz.aboutlibraries.entity/Developer.$serializer.descriptor.|(){}[0] + + final fun childSerializers(): kotlin/Array> // com.mikepenz.aboutlibraries.entity/Developer.$serializer.childSerializers|childSerializers(){}[0] + final fun deserialize(kotlinx.serialization.encoding/Decoder): com.mikepenz.aboutlibraries.entity/Developer // com.mikepenz.aboutlibraries.entity/Developer.$serializer.deserialize|deserialize(kotlinx.serialization.encoding.Decoder){}[0] + final fun serialize(kotlinx.serialization.encoding/Encoder, com.mikepenz.aboutlibraries.entity/Developer) // com.mikepenz.aboutlibraries.entity/Developer.$serializer.serialize|serialize(kotlinx.serialization.encoding.Encoder;com.mikepenz.aboutlibraries.entity.Developer){}[0] + } + + final object Companion { // com.mikepenz.aboutlibraries.entity/Developer.Companion|null[0] + final fun serializer(): kotlinx.serialization/KSerializer // com.mikepenz.aboutlibraries.entity/Developer.Companion.serializer|serializer(){}[0] + } +} + +final class com.mikepenz.aboutlibraries.entity/Funding { // com.mikepenz.aboutlibraries.entity/Funding|null[0] + constructor (kotlin/String, kotlin/String) // com.mikepenz.aboutlibraries.entity/Funding.|(kotlin.String;kotlin.String){}[0] + + final val platform // com.mikepenz.aboutlibraries.entity/Funding.platform|{}platform[0] + final fun (): kotlin/String // com.mikepenz.aboutlibraries.entity/Funding.platform.|(){}[0] + final val url // com.mikepenz.aboutlibraries.entity/Funding.url|{}url[0] + final fun (): kotlin/String // com.mikepenz.aboutlibraries.entity/Funding.url.|(){}[0] + + final fun component1(): kotlin/String // com.mikepenz.aboutlibraries.entity/Funding.component1|component1(){}[0] + final fun component2(): kotlin/String // com.mikepenz.aboutlibraries.entity/Funding.component2|component2(){}[0] + final fun copy(kotlin/String = ..., kotlin/String = ...): com.mikepenz.aboutlibraries.entity/Funding // com.mikepenz.aboutlibraries.entity/Funding.copy|copy(kotlin.String;kotlin.String){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // com.mikepenz.aboutlibraries.entity/Funding.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // com.mikepenz.aboutlibraries.entity/Funding.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // com.mikepenz.aboutlibraries.entity/Funding.toString|toString(){}[0] + + final object $serializer : kotlinx.serialization.internal/GeneratedSerializer { // com.mikepenz.aboutlibraries.entity/Funding.$serializer|null[0] + final val descriptor // com.mikepenz.aboutlibraries.entity/Funding.$serializer.descriptor|{}descriptor[0] + final fun (): kotlinx.serialization.descriptors/SerialDescriptor // com.mikepenz.aboutlibraries.entity/Funding.$serializer.descriptor.|(){}[0] + + final fun childSerializers(): kotlin/Array> // com.mikepenz.aboutlibraries.entity/Funding.$serializer.childSerializers|childSerializers(){}[0] + final fun deserialize(kotlinx.serialization.encoding/Decoder): com.mikepenz.aboutlibraries.entity/Funding // com.mikepenz.aboutlibraries.entity/Funding.$serializer.deserialize|deserialize(kotlinx.serialization.encoding.Decoder){}[0] + final fun serialize(kotlinx.serialization.encoding/Encoder, com.mikepenz.aboutlibraries.entity/Funding) // com.mikepenz.aboutlibraries.entity/Funding.$serializer.serialize|serialize(kotlinx.serialization.encoding.Encoder;com.mikepenz.aboutlibraries.entity.Funding){}[0] + } + + final object Companion { // com.mikepenz.aboutlibraries.entity/Funding.Companion|null[0] + final fun serializer(): kotlinx.serialization/KSerializer // com.mikepenz.aboutlibraries.entity/Funding.Companion.serializer|serializer(){}[0] + } +} + +final class com.mikepenz.aboutlibraries.entity/Library { // com.mikepenz.aboutlibraries.entity/Library|null[0] + constructor (kotlin/String, kotlin/String?, kotlin/String, kotlin/String?, kotlin/String?, kotlinx.collections.immutable/ImmutableList, com.mikepenz.aboutlibraries.entity/Organization?, com.mikepenz.aboutlibraries.entity/Scm?, kotlinx.collections.immutable/ImmutableSet = ..., kotlinx.collections.immutable/ImmutableSet = ..., kotlin/String? = ...) // com.mikepenz.aboutlibraries.entity/Library.|(kotlin.String;kotlin.String?;kotlin.String;kotlin.String?;kotlin.String?;kotlinx.collections.immutable.ImmutableList;com.mikepenz.aboutlibraries.entity.Organization?;com.mikepenz.aboutlibraries.entity.Scm?;kotlinx.collections.immutable.ImmutableSet;kotlinx.collections.immutable.ImmutableSet;kotlin.String?){}[0] + + final val artifactId // com.mikepenz.aboutlibraries.entity/Library.artifactId|{}artifactId[0] + final fun (): kotlin/String // com.mikepenz.aboutlibraries.entity/Library.artifactId.|(){}[0] + final val artifactVersion // com.mikepenz.aboutlibraries.entity/Library.artifactVersion|{}artifactVersion[0] + final fun (): kotlin/String? // com.mikepenz.aboutlibraries.entity/Library.artifactVersion.|(){}[0] + final val description // com.mikepenz.aboutlibraries.entity/Library.description|{}description[0] + final fun (): kotlin/String? // com.mikepenz.aboutlibraries.entity/Library.description.|(){}[0] + final val developers // com.mikepenz.aboutlibraries.entity/Library.developers|{}developers[0] + final fun (): kotlinx.collections.immutable/ImmutableList // com.mikepenz.aboutlibraries.entity/Library.developers.|(){}[0] + final val funding // com.mikepenz.aboutlibraries.entity/Library.funding|{}funding[0] + final fun (): kotlinx.collections.immutable/ImmutableSet // com.mikepenz.aboutlibraries.entity/Library.funding.|(){}[0] + final val licenses // com.mikepenz.aboutlibraries.entity/Library.licenses|{}licenses[0] + final fun (): kotlinx.collections.immutable/ImmutableSet // com.mikepenz.aboutlibraries.entity/Library.licenses.|(){}[0] + final val name // com.mikepenz.aboutlibraries.entity/Library.name|{}name[0] + final fun (): kotlin/String // com.mikepenz.aboutlibraries.entity/Library.name.|(){}[0] + final val openSource // com.mikepenz.aboutlibraries.entity/Library.openSource|{}openSource[0] + final fun (): kotlin/Boolean // com.mikepenz.aboutlibraries.entity/Library.openSource.|(){}[0] + final val organization // com.mikepenz.aboutlibraries.entity/Library.organization|{}organization[0] + final fun (): com.mikepenz.aboutlibraries.entity/Organization? // com.mikepenz.aboutlibraries.entity/Library.organization.|(){}[0] + final val scm // com.mikepenz.aboutlibraries.entity/Library.scm|{}scm[0] + final fun (): com.mikepenz.aboutlibraries.entity/Scm? // com.mikepenz.aboutlibraries.entity/Library.scm.|(){}[0] + final val tag // com.mikepenz.aboutlibraries.entity/Library.tag|{}tag[0] + final fun (): kotlin/String? // com.mikepenz.aboutlibraries.entity/Library.tag.|(){}[0] + final val uniqueId // com.mikepenz.aboutlibraries.entity/Library.uniqueId|{}uniqueId[0] + final fun (): kotlin/String // com.mikepenz.aboutlibraries.entity/Library.uniqueId.|(){}[0] + final val website // com.mikepenz.aboutlibraries.entity/Library.website|{}website[0] + final fun (): kotlin/String? // com.mikepenz.aboutlibraries.entity/Library.website.|(){}[0] + + final fun component1(): kotlin/String // com.mikepenz.aboutlibraries.entity/Library.component1|component1(){}[0] + final fun component10(): kotlinx.collections.immutable/ImmutableSet // com.mikepenz.aboutlibraries.entity/Library.component10|component10(){}[0] + final fun component11(): kotlin/String? // com.mikepenz.aboutlibraries.entity/Library.component11|component11(){}[0] + final fun component2(): kotlin/String? // com.mikepenz.aboutlibraries.entity/Library.component2|component2(){}[0] + final fun component3(): kotlin/String // com.mikepenz.aboutlibraries.entity/Library.component3|component3(){}[0] + final fun component4(): kotlin/String? // com.mikepenz.aboutlibraries.entity/Library.component4|component4(){}[0] + final fun component5(): kotlin/String? // com.mikepenz.aboutlibraries.entity/Library.component5|component5(){}[0] + final fun component6(): kotlinx.collections.immutable/ImmutableList // com.mikepenz.aboutlibraries.entity/Library.component6|component6(){}[0] + final fun component7(): com.mikepenz.aboutlibraries.entity/Organization? // com.mikepenz.aboutlibraries.entity/Library.component7|component7(){}[0] + final fun component8(): com.mikepenz.aboutlibraries.entity/Scm? // com.mikepenz.aboutlibraries.entity/Library.component8|component8(){}[0] + final fun component9(): kotlinx.collections.immutable/ImmutableSet // com.mikepenz.aboutlibraries.entity/Library.component9|component9(){}[0] + final fun copy(kotlin/String = ..., kotlin/String? = ..., kotlin/String = ..., kotlin/String? = ..., kotlin/String? = ..., kotlinx.collections.immutable/ImmutableList = ..., com.mikepenz.aboutlibraries.entity/Organization? = ..., com.mikepenz.aboutlibraries.entity/Scm? = ..., kotlinx.collections.immutable/ImmutableSet = ..., kotlinx.collections.immutable/ImmutableSet = ..., kotlin/String? = ...): com.mikepenz.aboutlibraries.entity/Library // com.mikepenz.aboutlibraries.entity/Library.copy|copy(kotlin.String;kotlin.String?;kotlin.String;kotlin.String?;kotlin.String?;kotlinx.collections.immutable.ImmutableList;com.mikepenz.aboutlibraries.entity.Organization?;com.mikepenz.aboutlibraries.entity.Scm?;kotlinx.collections.immutable.ImmutableSet;kotlinx.collections.immutable.ImmutableSet;kotlin.String?){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // com.mikepenz.aboutlibraries.entity/Library.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // com.mikepenz.aboutlibraries.entity/Library.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // com.mikepenz.aboutlibraries.entity/Library.toString|toString(){}[0] + + final object $serializer : kotlinx.serialization.internal/GeneratedSerializer { // com.mikepenz.aboutlibraries.entity/Library.$serializer|null[0] + final val descriptor // com.mikepenz.aboutlibraries.entity/Library.$serializer.descriptor|{}descriptor[0] + final fun (): kotlinx.serialization.descriptors/SerialDescriptor // com.mikepenz.aboutlibraries.entity/Library.$serializer.descriptor.|(){}[0] + + final fun childSerializers(): kotlin/Array> // com.mikepenz.aboutlibraries.entity/Library.$serializer.childSerializers|childSerializers(){}[0] + final fun deserialize(kotlinx.serialization.encoding/Decoder): com.mikepenz.aboutlibraries.entity/Library // com.mikepenz.aboutlibraries.entity/Library.$serializer.deserialize|deserialize(kotlinx.serialization.encoding.Decoder){}[0] + final fun serialize(kotlinx.serialization.encoding/Encoder, com.mikepenz.aboutlibraries.entity/Library) // com.mikepenz.aboutlibraries.entity/Library.$serializer.serialize|serialize(kotlinx.serialization.encoding.Encoder;com.mikepenz.aboutlibraries.entity.Library){}[0] + } + + final object Companion { // com.mikepenz.aboutlibraries.entity/Library.Companion|null[0] + final val $childSerializers // com.mikepenz.aboutlibraries.entity/Library.Companion.$childSerializers|{}$childSerializers[0] + + final fun serializer(): kotlinx.serialization/KSerializer // com.mikepenz.aboutlibraries.entity/Library.Companion.serializer|serializer(){}[0] + } +} + +final class com.mikepenz.aboutlibraries.entity/License { // com.mikepenz.aboutlibraries.entity/License|null[0] + constructor (kotlin/String, kotlin/String?, kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String) // com.mikepenz.aboutlibraries.entity/License.|(kotlin.String;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String){}[0] + + final val hash // com.mikepenz.aboutlibraries.entity/License.hash|{}hash[0] + final fun (): kotlin/String // com.mikepenz.aboutlibraries.entity/License.hash.|(){}[0] + final val licenseContent // com.mikepenz.aboutlibraries.entity/License.licenseContent|{}licenseContent[0] + final fun (): kotlin/String? // com.mikepenz.aboutlibraries.entity/License.licenseContent.|(){}[0] + final val name // com.mikepenz.aboutlibraries.entity/License.name|{}name[0] + final fun (): kotlin/String // com.mikepenz.aboutlibraries.entity/License.name.|(){}[0] + final val spdxId // com.mikepenz.aboutlibraries.entity/License.spdxId|{}spdxId[0] + final fun (): kotlin/String? // com.mikepenz.aboutlibraries.entity/License.spdxId.|(){}[0] + final val url // com.mikepenz.aboutlibraries.entity/License.url|{}url[0] + final fun (): kotlin/String? // com.mikepenz.aboutlibraries.entity/License.url.|(){}[0] + final val year // com.mikepenz.aboutlibraries.entity/License.year|{}year[0] + final fun (): kotlin/String? // com.mikepenz.aboutlibraries.entity/License.year.|(){}[0] + + final fun component1(): kotlin/String // com.mikepenz.aboutlibraries.entity/License.component1|component1(){}[0] + final fun component2(): kotlin/String? // com.mikepenz.aboutlibraries.entity/License.component2|component2(){}[0] + final fun component3(): kotlin/String? // com.mikepenz.aboutlibraries.entity/License.component3|component3(){}[0] + final fun component4(): kotlin/String? // com.mikepenz.aboutlibraries.entity/License.component4|component4(){}[0] + final fun component5(): kotlin/String? // com.mikepenz.aboutlibraries.entity/License.component5|component5(){}[0] + final fun component6(): kotlin/String // com.mikepenz.aboutlibraries.entity/License.component6|component6(){}[0] + final fun copy(kotlin/String = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String = ...): com.mikepenz.aboutlibraries.entity/License // com.mikepenz.aboutlibraries.entity/License.copy|copy(kotlin.String;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // com.mikepenz.aboutlibraries.entity/License.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // com.mikepenz.aboutlibraries.entity/License.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // com.mikepenz.aboutlibraries.entity/License.toString|toString(){}[0] + + final object $serializer : kotlinx.serialization.internal/GeneratedSerializer { // com.mikepenz.aboutlibraries.entity/License.$serializer|null[0] + final val descriptor // com.mikepenz.aboutlibraries.entity/License.$serializer.descriptor|{}descriptor[0] + final fun (): kotlinx.serialization.descriptors/SerialDescriptor // com.mikepenz.aboutlibraries.entity/License.$serializer.descriptor.|(){}[0] + + final fun childSerializers(): kotlin/Array> // com.mikepenz.aboutlibraries.entity/License.$serializer.childSerializers|childSerializers(){}[0] + final fun deserialize(kotlinx.serialization.encoding/Decoder): com.mikepenz.aboutlibraries.entity/License // com.mikepenz.aboutlibraries.entity/License.$serializer.deserialize|deserialize(kotlinx.serialization.encoding.Decoder){}[0] + final fun serialize(kotlinx.serialization.encoding/Encoder, com.mikepenz.aboutlibraries.entity/License) // com.mikepenz.aboutlibraries.entity/License.$serializer.serialize|serialize(kotlinx.serialization.encoding.Encoder;com.mikepenz.aboutlibraries.entity.License){}[0] + } + + final object Companion { // com.mikepenz.aboutlibraries.entity/License.Companion|null[0] + final fun serializer(): kotlinx.serialization/KSerializer // com.mikepenz.aboutlibraries.entity/License.Companion.serializer|serializer(){}[0] + } +} + +final class com.mikepenz.aboutlibraries.entity/Organization { // com.mikepenz.aboutlibraries.entity/Organization|null[0] + constructor (kotlin/String, kotlin/String?) // com.mikepenz.aboutlibraries.entity/Organization.|(kotlin.String;kotlin.String?){}[0] + + final val name // com.mikepenz.aboutlibraries.entity/Organization.name|{}name[0] + final fun (): kotlin/String // com.mikepenz.aboutlibraries.entity/Organization.name.|(){}[0] + final val url // com.mikepenz.aboutlibraries.entity/Organization.url|{}url[0] + final fun (): kotlin/String? // com.mikepenz.aboutlibraries.entity/Organization.url.|(){}[0] + + final fun component1(): kotlin/String // com.mikepenz.aboutlibraries.entity/Organization.component1|component1(){}[0] + final fun component2(): kotlin/String? // com.mikepenz.aboutlibraries.entity/Organization.component2|component2(){}[0] + final fun copy(kotlin/String = ..., kotlin/String? = ...): com.mikepenz.aboutlibraries.entity/Organization // com.mikepenz.aboutlibraries.entity/Organization.copy|copy(kotlin.String;kotlin.String?){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // com.mikepenz.aboutlibraries.entity/Organization.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // com.mikepenz.aboutlibraries.entity/Organization.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // com.mikepenz.aboutlibraries.entity/Organization.toString|toString(){}[0] + + final object $serializer : kotlinx.serialization.internal/GeneratedSerializer { // com.mikepenz.aboutlibraries.entity/Organization.$serializer|null[0] + final val descriptor // com.mikepenz.aboutlibraries.entity/Organization.$serializer.descriptor|{}descriptor[0] + final fun (): kotlinx.serialization.descriptors/SerialDescriptor // com.mikepenz.aboutlibraries.entity/Organization.$serializer.descriptor.|(){}[0] + + final fun childSerializers(): kotlin/Array> // com.mikepenz.aboutlibraries.entity/Organization.$serializer.childSerializers|childSerializers(){}[0] + final fun deserialize(kotlinx.serialization.encoding/Decoder): com.mikepenz.aboutlibraries.entity/Organization // com.mikepenz.aboutlibraries.entity/Organization.$serializer.deserialize|deserialize(kotlinx.serialization.encoding.Decoder){}[0] + final fun serialize(kotlinx.serialization.encoding/Encoder, com.mikepenz.aboutlibraries.entity/Organization) // com.mikepenz.aboutlibraries.entity/Organization.$serializer.serialize|serialize(kotlinx.serialization.encoding.Encoder;com.mikepenz.aboutlibraries.entity.Organization){}[0] + } + + final object Companion { // com.mikepenz.aboutlibraries.entity/Organization.Companion|null[0] + final fun serializer(): kotlinx.serialization/KSerializer // com.mikepenz.aboutlibraries.entity/Organization.Companion.serializer|serializer(){}[0] + } +} + +final class com.mikepenz.aboutlibraries.entity/Scm { // com.mikepenz.aboutlibraries.entity/Scm|null[0] + constructor (kotlin/String?, kotlin/String?, kotlin/String?) // com.mikepenz.aboutlibraries.entity/Scm.|(kotlin.String?;kotlin.String?;kotlin.String?){}[0] + + final val connection // com.mikepenz.aboutlibraries.entity/Scm.connection|{}connection[0] + final fun (): kotlin/String? // com.mikepenz.aboutlibraries.entity/Scm.connection.|(){}[0] + final val developerConnection // com.mikepenz.aboutlibraries.entity/Scm.developerConnection|{}developerConnection[0] + final fun (): kotlin/String? // com.mikepenz.aboutlibraries.entity/Scm.developerConnection.|(){}[0] + final val url // com.mikepenz.aboutlibraries.entity/Scm.url|{}url[0] + final fun (): kotlin/String? // com.mikepenz.aboutlibraries.entity/Scm.url.|(){}[0] + + final fun component1(): kotlin/String? // com.mikepenz.aboutlibraries.entity/Scm.component1|component1(){}[0] + final fun component2(): kotlin/String? // com.mikepenz.aboutlibraries.entity/Scm.component2|component2(){}[0] + final fun component3(): kotlin/String? // com.mikepenz.aboutlibraries.entity/Scm.component3|component3(){}[0] + final fun copy(kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ...): com.mikepenz.aboutlibraries.entity/Scm // com.mikepenz.aboutlibraries.entity/Scm.copy|copy(kotlin.String?;kotlin.String?;kotlin.String?){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // com.mikepenz.aboutlibraries.entity/Scm.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // com.mikepenz.aboutlibraries.entity/Scm.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // com.mikepenz.aboutlibraries.entity/Scm.toString|toString(){}[0] + + final object $serializer : kotlinx.serialization.internal/GeneratedSerializer { // com.mikepenz.aboutlibraries.entity/Scm.$serializer|null[0] + final val descriptor // com.mikepenz.aboutlibraries.entity/Scm.$serializer.descriptor|{}descriptor[0] + final fun (): kotlinx.serialization.descriptors/SerialDescriptor // com.mikepenz.aboutlibraries.entity/Scm.$serializer.descriptor.|(){}[0] + + final fun childSerializers(): kotlin/Array> // com.mikepenz.aboutlibraries.entity/Scm.$serializer.childSerializers|childSerializers(){}[0] + final fun deserialize(kotlinx.serialization.encoding/Decoder): com.mikepenz.aboutlibraries.entity/Scm // com.mikepenz.aboutlibraries.entity/Scm.$serializer.deserialize|deserialize(kotlinx.serialization.encoding.Decoder){}[0] + final fun serialize(kotlinx.serialization.encoding/Encoder, com.mikepenz.aboutlibraries.entity/Scm) // com.mikepenz.aboutlibraries.entity/Scm.$serializer.serialize|serialize(kotlinx.serialization.encoding.Encoder;com.mikepenz.aboutlibraries.entity.Scm){}[0] + } + + final object Companion { // com.mikepenz.aboutlibraries.entity/Scm.Companion|null[0] + final fun serializer(): kotlinx.serialization/KSerializer // com.mikepenz.aboutlibraries.entity/Scm.Companion.serializer|serializer(){}[0] + } +} + +final class com.mikepenz.aboutlibraries.util/Result { // com.mikepenz.aboutlibraries.util/Result|null[0] + constructor (kotlin.collections/List, kotlin.collections/List) // com.mikepenz.aboutlibraries.util/Result.|(kotlin.collections.List;kotlin.collections.List){}[0] + + final val libraries // com.mikepenz.aboutlibraries.util/Result.libraries|{}libraries[0] + final fun (): kotlin.collections/List // com.mikepenz.aboutlibraries.util/Result.libraries.|(){}[0] + final val licenses // com.mikepenz.aboutlibraries.util/Result.licenses|{}licenses[0] + final fun (): kotlin.collections/List // com.mikepenz.aboutlibraries.util/Result.licenses.|(){}[0] + + final fun component1(): kotlin.collections/List // com.mikepenz.aboutlibraries.util/Result.component1|component1(){}[0] + final fun component2(): kotlin.collections/List // com.mikepenz.aboutlibraries.util/Result.component2|component2(){}[0] +} + +final class com.mikepenz.aboutlibraries/Libs { // com.mikepenz.aboutlibraries/Libs|null[0] + constructor (kotlinx.collections.immutable/ImmutableList, kotlinx.collections.immutable/ImmutableSet) // com.mikepenz.aboutlibraries/Libs.|(kotlinx.collections.immutable.ImmutableList;kotlinx.collections.immutable.ImmutableSet){}[0] + + final val libraries // com.mikepenz.aboutlibraries/Libs.libraries|{}libraries[0] + final fun (): kotlinx.collections.immutable/ImmutableList // com.mikepenz.aboutlibraries/Libs.libraries.|(){}[0] + final val licenses // com.mikepenz.aboutlibraries/Libs.licenses|{}licenses[0] + final fun (): kotlinx.collections.immutable/ImmutableSet // com.mikepenz.aboutlibraries/Libs.licenses.|(){}[0] + + final fun component1(): kotlinx.collections.immutable/ImmutableList // com.mikepenz.aboutlibraries/Libs.component1|component1(){}[0] + final fun component2(): kotlinx.collections.immutable/ImmutableSet // com.mikepenz.aboutlibraries/Libs.component2|component2(){}[0] + final fun copy(kotlinx.collections.immutable/ImmutableList = ..., kotlinx.collections.immutable/ImmutableSet = ...): com.mikepenz.aboutlibraries/Libs // com.mikepenz.aboutlibraries/Libs.copy|copy(kotlinx.collections.immutable.ImmutableList;kotlinx.collections.immutable.ImmutableSet){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // com.mikepenz.aboutlibraries/Libs.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // com.mikepenz.aboutlibraries/Libs.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // com.mikepenz.aboutlibraries/Libs.toString|toString(){}[0] + + final class Builder { // com.mikepenz.aboutlibraries/Libs.Builder|null[0] + constructor () // com.mikepenz.aboutlibraries/Libs.Builder.|(){}[0] + + final fun build(): com.mikepenz.aboutlibraries/Libs // com.mikepenz.aboutlibraries/Libs.Builder.build|build(){}[0] + final fun withJson(kotlin/String): com.mikepenz.aboutlibraries/Libs.Builder // com.mikepenz.aboutlibraries/Libs.Builder.withJson|withJson(kotlin.String){}[0] + } + + final object $serializer : kotlinx.serialization.internal/GeneratedSerializer { // com.mikepenz.aboutlibraries/Libs.$serializer|null[0] + final val descriptor // com.mikepenz.aboutlibraries/Libs.$serializer.descriptor|{}descriptor[0] + final fun (): kotlinx.serialization.descriptors/SerialDescriptor // com.mikepenz.aboutlibraries/Libs.$serializer.descriptor.|(){}[0] + + final fun childSerializers(): kotlin/Array> // com.mikepenz.aboutlibraries/Libs.$serializer.childSerializers|childSerializers(){}[0] + final fun deserialize(kotlinx.serialization.encoding/Decoder): com.mikepenz.aboutlibraries/Libs // com.mikepenz.aboutlibraries/Libs.$serializer.deserialize|deserialize(kotlinx.serialization.encoding.Decoder){}[0] + final fun serialize(kotlinx.serialization.encoding/Encoder, com.mikepenz.aboutlibraries/Libs) // com.mikepenz.aboutlibraries/Libs.$serializer.serialize|serialize(kotlinx.serialization.encoding.Encoder;com.mikepenz.aboutlibraries.Libs){}[0] + } + + final object Companion { // com.mikepenz.aboutlibraries/Libs.Companion|null[0] + final val $childSerializers // com.mikepenz.aboutlibraries/Libs.Companion.$childSerializers|{}$childSerializers[0] + + final fun serializer(): kotlinx.serialization/KSerializer // com.mikepenz.aboutlibraries/Libs.Companion.serializer|serializer(){}[0] + } +} + +final fun com.mikepenz.aboutlibraries.util/parseData(kotlin/String): com.mikepenz.aboutlibraries.util/Result // com.mikepenz.aboutlibraries.util/parseData|parseData(kotlin.String){}[0] diff --git a/aboutlibraries-core/api/android/aboutlibraries-core.api b/aboutlibraries-core/api/android/aboutlibraries-core.api new file mode 100644 index 000000000..634684b25 --- /dev/null +++ b/aboutlibraries-core/api/android/aboutlibraries-core.api @@ -0,0 +1,252 @@ +public final class com/mikepenz/aboutlibraries/Libs { + public static final field Companion Lcom/mikepenz/aboutlibraries/Libs$Companion; + public fun (Lkotlinx/collections/immutable/ImmutableList;Lkotlinx/collections/immutable/ImmutableSet;)V + public final fun component1 ()Lkotlinx/collections/immutable/ImmutableList; + public final fun component2 ()Lkotlinx/collections/immutable/ImmutableSet; + public final fun copy (Lkotlinx/collections/immutable/ImmutableList;Lkotlinx/collections/immutable/ImmutableSet;)Lcom/mikepenz/aboutlibraries/Libs; + public static synthetic fun copy$default (Lcom/mikepenz/aboutlibraries/Libs;Lkotlinx/collections/immutable/ImmutableList;Lkotlinx/collections/immutable/ImmutableSet;ILjava/lang/Object;)Lcom/mikepenz/aboutlibraries/Libs; + public fun equals (Ljava/lang/Object;)Z + public final fun getLibraries ()Lkotlinx/collections/immutable/ImmutableList; + public final fun getLicenses ()Lkotlinx/collections/immutable/ImmutableSet; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public synthetic class com/mikepenz/aboutlibraries/Libs$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/mikepenz/aboutlibraries/Libs$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/mikepenz/aboutlibraries/Libs; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/mikepenz/aboutlibraries/Libs;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +} + +public final class com/mikepenz/aboutlibraries/Libs$Builder { + public fun ()V + public final fun build ()Lcom/mikepenz/aboutlibraries/Libs; + public final fun withJson (Ljava/lang/String;)Lcom/mikepenz/aboutlibraries/Libs$Builder; +} + +public final class com/mikepenz/aboutlibraries/Libs$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/mikepenz/aboutlibraries/entity/Developer { + public static final field Companion Lcom/mikepenz/aboutlibraries/entity/Developer$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;)Lcom/mikepenz/aboutlibraries/entity/Developer; + public static synthetic fun copy$default (Lcom/mikepenz/aboutlibraries/entity/Developer;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/mikepenz/aboutlibraries/entity/Developer; + public fun equals (Ljava/lang/Object;)Z + public final fun getName ()Ljava/lang/String; + public final fun getOrganisationUrl ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public synthetic class com/mikepenz/aboutlibraries/entity/Developer$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/mikepenz/aboutlibraries/entity/Developer$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/mikepenz/aboutlibraries/entity/Developer; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/mikepenz/aboutlibraries/entity/Developer;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +} + +public final class com/mikepenz/aboutlibraries/entity/Developer$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/mikepenz/aboutlibraries/entity/Funding { + public static final field Companion Lcom/mikepenz/aboutlibraries/entity/Funding$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;)Lcom/mikepenz/aboutlibraries/entity/Funding; + public static synthetic fun copy$default (Lcom/mikepenz/aboutlibraries/entity/Funding;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/mikepenz/aboutlibraries/entity/Funding; + public fun equals (Ljava/lang/Object;)Z + public final fun getPlatform ()Ljava/lang/String; + public final fun getUrl ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public synthetic class com/mikepenz/aboutlibraries/entity/Funding$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/mikepenz/aboutlibraries/entity/Funding$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/mikepenz/aboutlibraries/entity/Funding; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/mikepenz/aboutlibraries/entity/Funding;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +} + +public final class com/mikepenz/aboutlibraries/entity/Funding$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/mikepenz/aboutlibraries/entity/Library { + public static final field Companion Lcom/mikepenz/aboutlibraries/entity/Library$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlinx/collections/immutable/ImmutableList;Lcom/mikepenz/aboutlibraries/entity/Organization;Lcom/mikepenz/aboutlibraries/entity/Scm;Lkotlinx/collections/immutable/ImmutableSet;Lkotlinx/collections/immutable/ImmutableSet;Ljava/lang/String;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlinx/collections/immutable/ImmutableList;Lcom/mikepenz/aboutlibraries/entity/Organization;Lcom/mikepenz/aboutlibraries/entity/Scm;Lkotlinx/collections/immutable/ImmutableSet;Lkotlinx/collections/immutable/ImmutableSet;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component10 ()Lkotlinx/collections/immutable/ImmutableSet; + public final fun component11 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Lkotlinx/collections/immutable/ImmutableList; + public final fun component7 ()Lcom/mikepenz/aboutlibraries/entity/Organization; + public final fun component8 ()Lcom/mikepenz/aboutlibraries/entity/Scm; + public final fun component9 ()Lkotlinx/collections/immutable/ImmutableSet; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlinx/collections/immutable/ImmutableList;Lcom/mikepenz/aboutlibraries/entity/Organization;Lcom/mikepenz/aboutlibraries/entity/Scm;Lkotlinx/collections/immutable/ImmutableSet;Lkotlinx/collections/immutable/ImmutableSet;Ljava/lang/String;)Lcom/mikepenz/aboutlibraries/entity/Library; + public static synthetic fun copy$default (Lcom/mikepenz/aboutlibraries/entity/Library;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlinx/collections/immutable/ImmutableList;Lcom/mikepenz/aboutlibraries/entity/Organization;Lcom/mikepenz/aboutlibraries/entity/Scm;Lkotlinx/collections/immutable/ImmutableSet;Lkotlinx/collections/immutable/ImmutableSet;Ljava/lang/String;ILjava/lang/Object;)Lcom/mikepenz/aboutlibraries/entity/Library; + public fun equals (Ljava/lang/Object;)Z + public final fun getArtifactId ()Ljava/lang/String; + public final fun getArtifactVersion ()Ljava/lang/String; + public final fun getDescription ()Ljava/lang/String; + public final fun getDevelopers ()Lkotlinx/collections/immutable/ImmutableList; + public final fun getFunding ()Lkotlinx/collections/immutable/ImmutableSet; + public final fun getLicenses ()Lkotlinx/collections/immutable/ImmutableSet; + public final fun getName ()Ljava/lang/String; + public final fun getOpenSource ()Z + public final fun getOrganization ()Lcom/mikepenz/aboutlibraries/entity/Organization; + public final fun getScm ()Lcom/mikepenz/aboutlibraries/entity/Scm; + public final fun getTag ()Ljava/lang/String; + public final fun getUniqueId ()Ljava/lang/String; + public final fun getWebsite ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public synthetic class com/mikepenz/aboutlibraries/entity/Library$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/mikepenz/aboutlibraries/entity/Library$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/mikepenz/aboutlibraries/entity/Library; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/mikepenz/aboutlibraries/entity/Library;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +} + +public final class com/mikepenz/aboutlibraries/entity/Library$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/mikepenz/aboutlibraries/entity/License { + public static final field Companion Lcom/mikepenz/aboutlibraries/entity/License$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/mikepenz/aboutlibraries/entity/License; + public static synthetic fun copy$default (Lcom/mikepenz/aboutlibraries/entity/License;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/mikepenz/aboutlibraries/entity/License; + public fun equals (Ljava/lang/Object;)Z + public final fun getHash ()Ljava/lang/String; + public final fun getLicenseContent ()Ljava/lang/String; + public final fun getName ()Ljava/lang/String; + public final fun getSpdxId ()Ljava/lang/String; + public final fun getUrl ()Ljava/lang/String; + public final fun getYear ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public synthetic class com/mikepenz/aboutlibraries/entity/License$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/mikepenz/aboutlibraries/entity/License$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/mikepenz/aboutlibraries/entity/License; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/mikepenz/aboutlibraries/entity/License;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +} + +public final class com/mikepenz/aboutlibraries/entity/License$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/mikepenz/aboutlibraries/entity/Organization { + public static final field Companion Lcom/mikepenz/aboutlibraries/entity/Organization$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;)Lcom/mikepenz/aboutlibraries/entity/Organization; + public static synthetic fun copy$default (Lcom/mikepenz/aboutlibraries/entity/Organization;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/mikepenz/aboutlibraries/entity/Organization; + public fun equals (Ljava/lang/Object;)Z + public final fun getName ()Ljava/lang/String; + public final fun getUrl ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public synthetic class com/mikepenz/aboutlibraries/entity/Organization$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/mikepenz/aboutlibraries/entity/Organization$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/mikepenz/aboutlibraries/entity/Organization; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/mikepenz/aboutlibraries/entity/Organization;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +} + +public final class com/mikepenz/aboutlibraries/entity/Organization$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/mikepenz/aboutlibraries/entity/Scm { + public static final field Companion Lcom/mikepenz/aboutlibraries/entity/Scm$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/mikepenz/aboutlibraries/entity/Scm; + public static synthetic fun copy$default (Lcom/mikepenz/aboutlibraries/entity/Scm;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/mikepenz/aboutlibraries/entity/Scm; + public fun equals (Ljava/lang/Object;)Z + public final fun getConnection ()Ljava/lang/String; + public final fun getDeveloperConnection ()Ljava/lang/String; + public final fun getUrl ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public synthetic class com/mikepenz/aboutlibraries/entity/Scm$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/mikepenz/aboutlibraries/entity/Scm$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/mikepenz/aboutlibraries/entity/Scm; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/mikepenz/aboutlibraries/entity/Scm;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +} + +public final class com/mikepenz/aboutlibraries/entity/Scm$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/mikepenz/aboutlibraries/util/AndroidExtensionsKt { + public static final fun withContext (Lcom/mikepenz/aboutlibraries/Libs$Builder;Landroid/content/Context;)Lcom/mikepenz/aboutlibraries/Libs$Builder; + public static final fun withJson (Lcom/mikepenz/aboutlibraries/Libs$Builder;Landroid/content/Context;I)Lcom/mikepenz/aboutlibraries/Libs$Builder; + public static final fun withJson (Lcom/mikepenz/aboutlibraries/Libs$Builder;[B)Lcom/mikepenz/aboutlibraries/Libs$Builder; +} + +public final class com/mikepenz/aboutlibraries/util/AndroidParserKt { + public static final fun parseData (Ljava/lang/String;)Lcom/mikepenz/aboutlibraries/util/Result; +} + +public final class com/mikepenz/aboutlibraries/util/Result { + public fun (Ljava/util/List;Ljava/util/List;)V + public final fun component1 ()Ljava/util/List; + public final fun component2 ()Ljava/util/List; + public final fun getLibraries ()Ljava/util/List; + public final fun getLicenses ()Ljava/util/List; +} + diff --git a/aboutlibraries-core/api/jvm/aboutlibraries-core.api b/aboutlibraries-core/api/jvm/aboutlibraries-core.api new file mode 100644 index 000000000..bc8a2630e --- /dev/null +++ b/aboutlibraries-core/api/jvm/aboutlibraries-core.api @@ -0,0 +1,250 @@ +public final class com/mikepenz/aboutlibraries/Libs { + public static final field Companion Lcom/mikepenz/aboutlibraries/Libs$Companion; + public fun (Lkotlinx/collections/immutable/ImmutableList;Lkotlinx/collections/immutable/ImmutableSet;)V + public final fun component1 ()Lkotlinx/collections/immutable/ImmutableList; + public final fun component2 ()Lkotlinx/collections/immutable/ImmutableSet; + public final fun copy (Lkotlinx/collections/immutable/ImmutableList;Lkotlinx/collections/immutable/ImmutableSet;)Lcom/mikepenz/aboutlibraries/Libs; + public static synthetic fun copy$default (Lcom/mikepenz/aboutlibraries/Libs;Lkotlinx/collections/immutable/ImmutableList;Lkotlinx/collections/immutable/ImmutableSet;ILjava/lang/Object;)Lcom/mikepenz/aboutlibraries/Libs; + public fun equals (Ljava/lang/Object;)Z + public final fun getLibraries ()Lkotlinx/collections/immutable/ImmutableList; + public final fun getLicenses ()Lkotlinx/collections/immutable/ImmutableSet; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public synthetic class com/mikepenz/aboutlibraries/Libs$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/mikepenz/aboutlibraries/Libs$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/mikepenz/aboutlibraries/Libs; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/mikepenz/aboutlibraries/Libs;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +} + +public final class com/mikepenz/aboutlibraries/Libs$Builder { + public fun ()V + public final fun build ()Lcom/mikepenz/aboutlibraries/Libs; + public final fun withJson (Ljava/lang/String;)Lcom/mikepenz/aboutlibraries/Libs$Builder; +} + +public final class com/mikepenz/aboutlibraries/Libs$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/mikepenz/aboutlibraries/entity/Developer { + public static final field Companion Lcom/mikepenz/aboutlibraries/entity/Developer$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;)Lcom/mikepenz/aboutlibraries/entity/Developer; + public static synthetic fun copy$default (Lcom/mikepenz/aboutlibraries/entity/Developer;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/mikepenz/aboutlibraries/entity/Developer; + public fun equals (Ljava/lang/Object;)Z + public final fun getName ()Ljava/lang/String; + public final fun getOrganisationUrl ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public synthetic class com/mikepenz/aboutlibraries/entity/Developer$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/mikepenz/aboutlibraries/entity/Developer$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/mikepenz/aboutlibraries/entity/Developer; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/mikepenz/aboutlibraries/entity/Developer;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +} + +public final class com/mikepenz/aboutlibraries/entity/Developer$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/mikepenz/aboutlibraries/entity/Funding { + public static final field Companion Lcom/mikepenz/aboutlibraries/entity/Funding$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;)Lcom/mikepenz/aboutlibraries/entity/Funding; + public static synthetic fun copy$default (Lcom/mikepenz/aboutlibraries/entity/Funding;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/mikepenz/aboutlibraries/entity/Funding; + public fun equals (Ljava/lang/Object;)Z + public final fun getPlatform ()Ljava/lang/String; + public final fun getUrl ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public synthetic class com/mikepenz/aboutlibraries/entity/Funding$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/mikepenz/aboutlibraries/entity/Funding$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/mikepenz/aboutlibraries/entity/Funding; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/mikepenz/aboutlibraries/entity/Funding;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +} + +public final class com/mikepenz/aboutlibraries/entity/Funding$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/mikepenz/aboutlibraries/entity/Library { + public static final field Companion Lcom/mikepenz/aboutlibraries/entity/Library$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlinx/collections/immutable/ImmutableList;Lcom/mikepenz/aboutlibraries/entity/Organization;Lcom/mikepenz/aboutlibraries/entity/Scm;Lkotlinx/collections/immutable/ImmutableSet;Lkotlinx/collections/immutable/ImmutableSet;Ljava/lang/String;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlinx/collections/immutable/ImmutableList;Lcom/mikepenz/aboutlibraries/entity/Organization;Lcom/mikepenz/aboutlibraries/entity/Scm;Lkotlinx/collections/immutable/ImmutableSet;Lkotlinx/collections/immutable/ImmutableSet;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component10 ()Lkotlinx/collections/immutable/ImmutableSet; + public final fun component11 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Lkotlinx/collections/immutable/ImmutableList; + public final fun component7 ()Lcom/mikepenz/aboutlibraries/entity/Organization; + public final fun component8 ()Lcom/mikepenz/aboutlibraries/entity/Scm; + public final fun component9 ()Lkotlinx/collections/immutable/ImmutableSet; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlinx/collections/immutable/ImmutableList;Lcom/mikepenz/aboutlibraries/entity/Organization;Lcom/mikepenz/aboutlibraries/entity/Scm;Lkotlinx/collections/immutable/ImmutableSet;Lkotlinx/collections/immutable/ImmutableSet;Ljava/lang/String;)Lcom/mikepenz/aboutlibraries/entity/Library; + public static synthetic fun copy$default (Lcom/mikepenz/aboutlibraries/entity/Library;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlinx/collections/immutable/ImmutableList;Lcom/mikepenz/aboutlibraries/entity/Organization;Lcom/mikepenz/aboutlibraries/entity/Scm;Lkotlinx/collections/immutable/ImmutableSet;Lkotlinx/collections/immutable/ImmutableSet;Ljava/lang/String;ILjava/lang/Object;)Lcom/mikepenz/aboutlibraries/entity/Library; + public fun equals (Ljava/lang/Object;)Z + public final fun getArtifactId ()Ljava/lang/String; + public final fun getArtifactVersion ()Ljava/lang/String; + public final fun getDescription ()Ljava/lang/String; + public final fun getDevelopers ()Lkotlinx/collections/immutable/ImmutableList; + public final fun getFunding ()Lkotlinx/collections/immutable/ImmutableSet; + public final fun getLicenses ()Lkotlinx/collections/immutable/ImmutableSet; + public final fun getName ()Ljava/lang/String; + public final fun getOpenSource ()Z + public final fun getOrganization ()Lcom/mikepenz/aboutlibraries/entity/Organization; + public final fun getScm ()Lcom/mikepenz/aboutlibraries/entity/Scm; + public final fun getTag ()Ljava/lang/String; + public final fun getUniqueId ()Ljava/lang/String; + public final fun getWebsite ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public synthetic class com/mikepenz/aboutlibraries/entity/Library$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/mikepenz/aboutlibraries/entity/Library$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/mikepenz/aboutlibraries/entity/Library; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/mikepenz/aboutlibraries/entity/Library;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +} + +public final class com/mikepenz/aboutlibraries/entity/Library$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/mikepenz/aboutlibraries/entity/License { + public static final field Companion Lcom/mikepenz/aboutlibraries/entity/License$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/mikepenz/aboutlibraries/entity/License; + public static synthetic fun copy$default (Lcom/mikepenz/aboutlibraries/entity/License;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/mikepenz/aboutlibraries/entity/License; + public fun equals (Ljava/lang/Object;)Z + public final fun getHash ()Ljava/lang/String; + public final fun getLicenseContent ()Ljava/lang/String; + public final fun getName ()Ljava/lang/String; + public final fun getSpdxId ()Ljava/lang/String; + public final fun getUrl ()Ljava/lang/String; + public final fun getYear ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public synthetic class com/mikepenz/aboutlibraries/entity/License$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/mikepenz/aboutlibraries/entity/License$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/mikepenz/aboutlibraries/entity/License; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/mikepenz/aboutlibraries/entity/License;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +} + +public final class com/mikepenz/aboutlibraries/entity/License$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/mikepenz/aboutlibraries/entity/Organization { + public static final field Companion Lcom/mikepenz/aboutlibraries/entity/Organization$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;)Lcom/mikepenz/aboutlibraries/entity/Organization; + public static synthetic fun copy$default (Lcom/mikepenz/aboutlibraries/entity/Organization;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/mikepenz/aboutlibraries/entity/Organization; + public fun equals (Ljava/lang/Object;)Z + public final fun getName ()Ljava/lang/String; + public final fun getUrl ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public synthetic class com/mikepenz/aboutlibraries/entity/Organization$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/mikepenz/aboutlibraries/entity/Organization$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/mikepenz/aboutlibraries/entity/Organization; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/mikepenz/aboutlibraries/entity/Organization;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +} + +public final class com/mikepenz/aboutlibraries/entity/Organization$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/mikepenz/aboutlibraries/entity/Scm { + public static final field Companion Lcom/mikepenz/aboutlibraries/entity/Scm$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/mikepenz/aboutlibraries/entity/Scm; + public static synthetic fun copy$default (Lcom/mikepenz/aboutlibraries/entity/Scm;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/mikepenz/aboutlibraries/entity/Scm; + public fun equals (Ljava/lang/Object;)Z + public final fun getConnection ()Ljava/lang/String; + public final fun getDeveloperConnection ()Ljava/lang/String; + public final fun getUrl ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public synthetic class com/mikepenz/aboutlibraries/entity/Scm$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/mikepenz/aboutlibraries/entity/Scm$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/mikepenz/aboutlibraries/entity/Scm; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/mikepenz/aboutlibraries/entity/Scm;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +} + +public final class com/mikepenz/aboutlibraries/entity/Scm$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/mikepenz/aboutlibraries/util/JvmExtensionsKt { + public static final fun withJson (Lcom/mikepenz/aboutlibraries/Libs$Builder;[B)Lcom/mikepenz/aboutlibraries/Libs$Builder; +} + +public final class com/mikepenz/aboutlibraries/util/MultiplatformParserKt { + public static final fun parseData (Ljava/lang/String;)Lcom/mikepenz/aboutlibraries/util/Result; +} + +public final class com/mikepenz/aboutlibraries/util/Result { + public fun (Ljava/util/List;Ljava/util/List;)V + public final fun component1 ()Ljava/util/List; + public final fun component2 ()Ljava/util/List; + public final fun getLibraries ()Ljava/util/List; + public final fun getLicenses ()Ljava/util/List; +} + diff --git a/aboutlibraries/api/aboutlibraries.api b/aboutlibraries/api/aboutlibraries.api new file mode 100644 index 000000000..242175325 --- /dev/null +++ b/aboutlibraries/api/aboutlibraries.api @@ -0,0 +1,324 @@ +public final class com/mikepenz/aboutlibraries/LibsBuilder : java/io/Serializable { + public static final field BUNDLE_EDGE_TO_EDGE Ljava/lang/String; + public static final field BUNDLE_SEARCH_ENABLED Ljava/lang/String; + public static final field BUNDLE_TITLE Ljava/lang/String; + public static final field Companion Lcom/mikepenz/aboutlibraries/LibsBuilder$Companion; + public fun ()V + public final fun activity (Landroid/content/Context;)V + public final fun getAboutAppName ()Ljava/lang/String; + public final fun getAboutAppSpecial1 ()Ljava/lang/String; + public final fun getAboutAppSpecial1Description ()Ljava/lang/String; + public final fun getAboutAppSpecial2 ()Ljava/lang/String; + public final fun getAboutAppSpecial2Description ()Ljava/lang/String; + public final fun getAboutAppSpecial3 ()Ljava/lang/String; + public final fun getAboutAppSpecial3Description ()Ljava/lang/String; + public final fun getAboutDescription ()Ljava/lang/String; + public final fun getAboutMinimalDesign ()Z + public final fun getAboutShowIcon ()Z + public final fun getAboutShowVersion ()Z + public final fun getAboutShowVersionCode ()Z + public final fun getAboutShowVersionName ()Z + public final fun getAboutVersionString ()Ljava/lang/String; + public final fun getActivityTitle ()Ljava/lang/String; + public final fun getEdgeToEdge ()Z + public final fun getLibraryComparator ()Ljava/util/Comparator; + public final fun getLibs ()Lcom/mikepenz/aboutlibraries/Libs; + public final fun getSearchEnabled ()Z + public final fun getShowLicense ()Z + public final fun getShowLicenseDialog ()Z + public final fun getShowLoadingProgress ()Z + public final fun getShowVersion ()Z + public final fun getSort ()Z + public final fun intent (Landroid/content/Context;)Landroid/content/Intent; + public final fun setAboutAppName (Ljava/lang/String;)V + public final fun setAboutAppSpecial1 (Ljava/lang/String;)V + public final fun setAboutAppSpecial1Description (Ljava/lang/String;)V + public final fun setAboutAppSpecial2 (Ljava/lang/String;)V + public final fun setAboutAppSpecial2Description (Ljava/lang/String;)V + public final fun setAboutAppSpecial3 (Ljava/lang/String;)V + public final fun setAboutAppSpecial3Description (Ljava/lang/String;)V + public final fun setAboutDescription (Ljava/lang/String;)V + public final fun setAboutMinimalDesign (Z)V + public final fun setAboutShowIcon (Z)V + public final fun setAboutShowVersion (Z)V + public final fun setAboutShowVersionCode (Z)V + public final fun setAboutShowVersionName (Z)V + public final fun setAboutVersionString (Ljava/lang/String;)V + public final fun setActivityTitle (Ljava/lang/String;)V + public final fun setEdgeToEdge (Z)V + public final fun setLibraryComparator (Ljava/util/Comparator;)V + public final fun setLibs (Lcom/mikepenz/aboutlibraries/Libs;)V + public final fun setSearchEnabled (Z)V + public final fun setShowLicense (Z)V + public final fun setShowLicenseDialog (Z)V + public final fun setShowLoadingProgress (Z)V + public final fun setShowVersion (Z)V + public final fun setSort (Z)V + public final fun start (Landroid/content/Context;)V + public final fun supportFragment ()Lcom/mikepenz/aboutlibraries/ui/LibsSupportFragment; + public final fun withAboutAppName (Ljava/lang/String;)Lcom/mikepenz/aboutlibraries/LibsBuilder; + public final fun withAboutDescription (Ljava/lang/String;)Lcom/mikepenz/aboutlibraries/LibsBuilder; + public final fun withAboutIconShown (Z)Lcom/mikepenz/aboutlibraries/LibsBuilder; + public final fun withAboutMinimalDesign (Z)Lcom/mikepenz/aboutlibraries/LibsBuilder; + public final fun withAboutSpecial1 (Ljava/lang/String;)Lcom/mikepenz/aboutlibraries/LibsBuilder; + public final fun withAboutSpecial1Description (Ljava/lang/String;)Lcom/mikepenz/aboutlibraries/LibsBuilder; + public final fun withAboutSpecial2 (Ljava/lang/String;)Lcom/mikepenz/aboutlibraries/LibsBuilder; + public final fun withAboutSpecial2Description (Ljava/lang/String;)Lcom/mikepenz/aboutlibraries/LibsBuilder; + public final fun withAboutSpecial3 (Ljava/lang/String;)Lcom/mikepenz/aboutlibraries/LibsBuilder; + public final fun withAboutSpecial3Description (Ljava/lang/String;)Lcom/mikepenz/aboutlibraries/LibsBuilder; + public final fun withAboutVersionShown (Z)Lcom/mikepenz/aboutlibraries/LibsBuilder; + public final fun withAboutVersionShownCode (Z)Lcom/mikepenz/aboutlibraries/LibsBuilder; + public final fun withAboutVersionShownName (Z)Lcom/mikepenz/aboutlibraries/LibsBuilder; + public final fun withAboutVersionString (Ljava/lang/String;)Lcom/mikepenz/aboutlibraries/LibsBuilder; + public final fun withActivityTitle (Ljava/lang/String;)Lcom/mikepenz/aboutlibraries/LibsBuilder; + public final fun withEdgeToEdge (Z)Lcom/mikepenz/aboutlibraries/LibsBuilder; + public final fun withLibraryComparator (Ljava/util/Comparator;)Lcom/mikepenz/aboutlibraries/LibsBuilder; + public final fun withLibs (Lcom/mikepenz/aboutlibraries/Libs;)Lcom/mikepenz/aboutlibraries/LibsBuilder; + public final fun withLicenseDialog (Z)Lcom/mikepenz/aboutlibraries/LibsBuilder; + public final fun withLicenseShown (Z)Lcom/mikepenz/aboutlibraries/LibsBuilder; + public final fun withListener (Lcom/mikepenz/aboutlibraries/LibsConfiguration$LibsListener;)Lcom/mikepenz/aboutlibraries/LibsBuilder; + public final fun withSearchEnabled (Z)Lcom/mikepenz/aboutlibraries/LibsBuilder; + public final fun withShowLoadingProgress (Z)Lcom/mikepenz/aboutlibraries/LibsBuilder; + public final fun withSortEnabled (Z)Lcom/mikepenz/aboutlibraries/LibsBuilder; + public final fun withUiListener (Lcom/mikepenz/aboutlibraries/LibsConfiguration$LibsUIListener;)Lcom/mikepenz/aboutlibraries/LibsBuilder; + public final fun withVersionShown (Z)Lcom/mikepenz/aboutlibraries/LibsBuilder; +} + +public final class com/mikepenz/aboutlibraries/LibsBuilder$Companion { +} + +public final class com/mikepenz/aboutlibraries/LibsConfiguration { + public static final field INSTANCE Lcom/mikepenz/aboutlibraries/LibsConfiguration; + public final fun getItemAnimator ()Landroidx/recyclerview/widget/RecyclerView$ItemAnimator; + public final fun getListener ()Lcom/mikepenz/aboutlibraries/LibsConfiguration$LibsListener; + public final fun getUiListener ()Lcom/mikepenz/aboutlibraries/LibsConfiguration$LibsUIListener; + public final fun setItemAnimator (Landroidx/recyclerview/widget/RecyclerView$ItemAnimator;)V + public final fun setListener (Lcom/mikepenz/aboutlibraries/LibsConfiguration$LibsListener;)V + public final fun setUiListener (Lcom/mikepenz/aboutlibraries/LibsConfiguration$LibsUIListener;)V +} + +public abstract interface class com/mikepenz/aboutlibraries/LibsConfiguration$LibsListener { + public abstract fun onExtraClicked (Landroid/view/View;Lcom/mikepenz/aboutlibraries/util/SpecialButton;)Z + public abstract fun onIconClicked (Landroid/view/View;)V + public abstract fun onIconLongClicked (Landroid/view/View;)Z + public abstract fun onLibraryAuthorClicked (Landroid/view/View;Lcom/mikepenz/aboutlibraries/entity/Library;)Z + public abstract fun onLibraryAuthorLongClicked (Landroid/view/View;Lcom/mikepenz/aboutlibraries/entity/Library;)Z + public abstract fun onLibraryBottomClicked (Landroid/view/View;Lcom/mikepenz/aboutlibraries/entity/Library;)Z + public abstract fun onLibraryBottomLongClicked (Landroid/view/View;Lcom/mikepenz/aboutlibraries/entity/Library;)Z + public abstract fun onLibraryContentClicked (Landroid/view/View;Lcom/mikepenz/aboutlibraries/entity/Library;)Z + public abstract fun onLibraryContentLongClicked (Landroid/view/View;Lcom/mikepenz/aboutlibraries/entity/Library;)Z +} + +public abstract interface class com/mikepenz/aboutlibraries/LibsConfiguration$LibsUIListener { + public abstract fun postOnCreateView (Landroid/view/View;)Landroid/view/View; + public abstract fun preOnCreateView (Landroid/view/View;)Landroid/view/View; +} + +public final class com/mikepenz/aboutlibraries/databinding/ActivityOpensourceBinding : androidx/viewbinding/ViewBinding { + public final field frameContainer Landroidx/fragment/app/FragmentContainerView; + public final field toolbar Landroidx/appcompat/widget/Toolbar; + public static fun bind (Landroid/view/View;)Lcom/mikepenz/aboutlibraries/databinding/ActivityOpensourceBinding; + public synthetic fun getRoot ()Landroid/view/View; + public fun getRoot ()Landroidx/constraintlayout/widget/ConstraintLayout; + public static fun inflate (Landroid/view/LayoutInflater;)Lcom/mikepenz/aboutlibraries/databinding/ActivityOpensourceBinding; + public static fun inflate (Landroid/view/LayoutInflater;Landroid/view/ViewGroup;Z)Lcom/mikepenz/aboutlibraries/databinding/ActivityOpensourceBinding; +} + +public final class com/mikepenz/aboutlibraries/databinding/FragmentOpensourceBinding : androidx/viewbinding/ViewBinding { + public final field cardListView Landroidx/recyclerview/widget/RecyclerView; + public static fun bind (Landroid/view/View;)Lcom/mikepenz/aboutlibraries/databinding/FragmentOpensourceBinding; + public synthetic fun getRoot ()Landroid/view/View; + public fun getRoot ()Landroidx/recyclerview/widget/RecyclerView; + public static fun inflate (Landroid/view/LayoutInflater;)Lcom/mikepenz/aboutlibraries/databinding/FragmentOpensourceBinding; + public static fun inflate (Landroid/view/LayoutInflater;Landroid/view/ViewGroup;Z)Lcom/mikepenz/aboutlibraries/databinding/FragmentOpensourceBinding; +} + +public final class com/mikepenz/aboutlibraries/databinding/ListheaderOpensourceBinding : androidx/viewbinding/ViewBinding { + public final field aboutDescription Landroid/widget/TextView; + public final field aboutDivider Landroid/view/View; + public final field aboutIcon Landroid/widget/ImageView; + public final field aboutName Landroid/widget/TextView; + public final field aboutSpecial1 Lcom/google/android/material/button/MaterialButton; + public final field aboutSpecial2 Lcom/google/android/material/button/MaterialButton; + public final field aboutSpecial3 Lcom/google/android/material/button/MaterialButton; + public final field aboutSpecialContainer Landroid/widget/LinearLayout; + public final field aboutVersion Landroid/widget/TextView; + public static fun bind (Landroid/view/View;)Lcom/mikepenz/aboutlibraries/databinding/ListheaderOpensourceBinding; + public synthetic fun getRoot ()Landroid/view/View; + public fun getRoot ()Landroid/widget/LinearLayout; + public static fun inflate (Landroid/view/LayoutInflater;)Lcom/mikepenz/aboutlibraries/databinding/ListheaderOpensourceBinding; + public static fun inflate (Landroid/view/LayoutInflater;Landroid/view/ViewGroup;Z)Lcom/mikepenz/aboutlibraries/databinding/ListheaderOpensourceBinding; +} + +public final class com/mikepenz/aboutlibraries/databinding/ListitemMinimalOpensourceBinding : androidx/viewbinding/ViewBinding { + public final field libraryName Landroid/widget/TextView; + public static fun bind (Landroid/view/View;)Lcom/mikepenz/aboutlibraries/databinding/ListitemMinimalOpensourceBinding; + public synthetic fun getRoot ()Landroid/view/View; + public fun getRoot ()Landroid/widget/TextView; + public static fun inflate (Landroid/view/LayoutInflater;)Lcom/mikepenz/aboutlibraries/databinding/ListitemMinimalOpensourceBinding; + public static fun inflate (Landroid/view/LayoutInflater;Landroid/view/ViewGroup;Z)Lcom/mikepenz/aboutlibraries/databinding/ListitemMinimalOpensourceBinding; +} + +public final class com/mikepenz/aboutlibraries/databinding/ListitemOpensourceBinding : androidx/viewbinding/ViewBinding { + public final field content Landroidx/constraintlayout/widget/ConstraintLayout; + public final field libraryBottomDivider Landroid/view/View; + public final field libraryCreator Landroid/widget/TextView; + public final field libraryDescription Landroid/widget/TextView; + public final field libraryDescriptionDivider Landroid/view/View; + public final field libraryLicense Landroid/widget/TextView; + public final field libraryName Landroid/widget/TextView; + public final field libraryVersion Landroid/widget/TextView; + public static fun bind (Landroid/view/View;)Lcom/mikepenz/aboutlibraries/databinding/ListitemOpensourceBinding; + public synthetic fun getRoot ()Landroid/view/View; + public fun getRoot ()Lcom/google/android/material/card/MaterialCardView; + public static fun inflate (Landroid/view/LayoutInflater;)Lcom/mikepenz/aboutlibraries/databinding/ListitemOpensourceBinding; + public static fun inflate (Landroid/view/LayoutInflater;Landroid/view/ViewGroup;Z)Lcom/mikepenz/aboutlibraries/databinding/ListitemOpensourceBinding; +} + +public final class com/mikepenz/aboutlibraries/databinding/ListloaderOpensourceBinding : androidx/viewbinding/ViewBinding { + public final field progressBar Landroid/widget/ProgressBar; + public static fun bind (Landroid/view/View;)Lcom/mikepenz/aboutlibraries/databinding/ListloaderOpensourceBinding; + public synthetic fun getRoot ()Landroid/view/View; + public fun getRoot ()Landroid/widget/RelativeLayout; + public static fun inflate (Landroid/view/LayoutInflater;)Lcom/mikepenz/aboutlibraries/databinding/ListloaderOpensourceBinding; + public static fun inflate (Landroid/view/LayoutInflater;Landroid/view/ViewGroup;Z)Lcom/mikepenz/aboutlibraries/databinding/ListloaderOpensourceBinding; +} + +public class com/mikepenz/aboutlibraries/ui/LibsActivity : androidx/appcompat/app/AppCompatActivity, androidx/appcompat/widget/SearchView$OnQueryTextListener { + public fun ()V + public fun onCreate (Landroid/os/Bundle;)V + public fun onCreateOptionsMenu (Landroid/view/Menu;)Z + public fun onOptionsItemSelected (Landroid/view/MenuItem;)Z + public fun onQueryTextChange (Ljava/lang/String;)Z + public fun onQueryTextSubmit (Ljava/lang/String;)Z +} + +public class com/mikepenz/aboutlibraries/ui/LibsSupportFragment : androidx/fragment/app/Fragment, android/widget/Filterable { + public fun ()V + public fun getFilter ()Landroid/widget/Filter; + public fun onCreateView (Landroid/view/LayoutInflater;Landroid/view/ViewGroup;Landroid/os/Bundle;)Landroid/view/View; +} + +public final class com/mikepenz/aboutlibraries/ui/LibsSupportFragmentArgs : androidx/navigation/NavArgs { + public static final field Companion Lcom/mikepenz/aboutlibraries/ui/LibsSupportFragmentArgs$Companion; + public fun (Ljava/io/Serializable;)V + public final fun component1 ()Ljava/io/Serializable; + public final fun copy (Ljava/io/Serializable;)Lcom/mikepenz/aboutlibraries/ui/LibsSupportFragmentArgs; + public static synthetic fun copy$default (Lcom/mikepenz/aboutlibraries/ui/LibsSupportFragmentArgs;Ljava/io/Serializable;ILjava/lang/Object;)Lcom/mikepenz/aboutlibraries/ui/LibsSupportFragmentArgs; + public fun equals (Ljava/lang/Object;)Z + public static final fun fromBundle (Landroid/os/Bundle;)Lcom/mikepenz/aboutlibraries/ui/LibsSupportFragmentArgs; + public static final fun fromSavedStateHandle (Landroidx/lifecycle/SavedStateHandle;)Lcom/mikepenz/aboutlibraries/ui/LibsSupportFragmentArgs; + public final fun getData ()Ljava/io/Serializable; + public fun hashCode ()I + public final fun toBundle ()Landroid/os/Bundle; + public final fun toSavedStateHandle ()Landroidx/lifecycle/SavedStateHandle; + public fun toString ()Ljava/lang/String; +} + +public final class com/mikepenz/aboutlibraries/ui/LibsSupportFragmentArgs$Companion { + public final fun fromBundle (Landroid/os/Bundle;)Lcom/mikepenz/aboutlibraries/ui/LibsSupportFragmentArgs; + public final fun fromSavedStateHandle (Landroidx/lifecycle/SavedStateHandle;)Lcom/mikepenz/aboutlibraries/ui/LibsSupportFragmentArgs; +} + +public final class com/mikepenz/aboutlibraries/ui/item/HeaderItem : com/mikepenz/fastadapter/items/AbstractItem { + public fun (Lcom/mikepenz/aboutlibraries/LibsBuilder;)V + public synthetic fun bindView (Landroidx/recyclerview/widget/RecyclerView$ViewHolder;Ljava/util/List;)V + public fun bindView (Lcom/mikepenz/aboutlibraries/ui/item/HeaderItem$ViewHolder;Ljava/util/List;)V + public fun getLayoutRes ()I + public final fun getLibsBuilder ()Lcom/mikepenz/aboutlibraries/LibsBuilder; + public fun getType ()I + public synthetic fun getViewHolder (Landroid/view/View;)Landroidx/recyclerview/widget/RecyclerView$ViewHolder; + public fun getViewHolder (Landroid/view/View;)Lcom/mikepenz/aboutlibraries/ui/item/HeaderItem$ViewHolder; + public fun isSelectable ()Z + public final fun setLibsBuilder (Lcom/mikepenz/aboutlibraries/LibsBuilder;)V + public fun setSelectable (Z)V + public final fun withAboutIcon (Landroid/graphics/drawable/Drawable;)Lcom/mikepenz/aboutlibraries/ui/item/HeaderItem; + public final fun withAboutVersionCode (Ljava/lang/Integer;)Lcom/mikepenz/aboutlibraries/ui/item/HeaderItem; + public final fun withAboutVersionCode (Ljava/lang/Long;)Lcom/mikepenz/aboutlibraries/ui/item/HeaderItem; + public final fun withAboutVersionName (Ljava/lang/String;)Lcom/mikepenz/aboutlibraries/ui/item/HeaderItem; + public final fun withLibsBuilder (Lcom/mikepenz/aboutlibraries/LibsBuilder;)Lcom/mikepenz/aboutlibraries/ui/item/HeaderItem; +} + +public final class com/mikepenz/aboutlibraries/ui/item/HeaderItem$ViewHolder : androidx/recyclerview/widget/RecyclerView$ViewHolder { + public fun (Landroid/view/View;)V +} + +public final class com/mikepenz/aboutlibraries/ui/item/LibraryItem : com/mikepenz/fastadapter/items/AbstractItem { + public fun (Lcom/mikepenz/aboutlibraries/entity/Library;Lcom/mikepenz/aboutlibraries/LibsBuilder;)V + public synthetic fun bindView (Landroidx/recyclerview/widget/RecyclerView$ViewHolder;Ljava/util/List;)V + public fun bindView (Lcom/mikepenz/aboutlibraries/ui/item/LibraryItem$ViewHolder;Ljava/util/List;)V + public fun getLayoutRes ()I + public fun getType ()I + public synthetic fun getViewHolder (Landroid/view/View;)Landroidx/recyclerview/widget/RecyclerView$ViewHolder; + public fun getViewHolder (Landroid/view/View;)Lcom/mikepenz/aboutlibraries/ui/item/LibraryItem$ViewHolder; + public fun isSelectable ()Z + public fun setSelectable (Z)V +} + +public final class com/mikepenz/aboutlibraries/ui/item/LibraryItem$ViewHolder : androidx/recyclerview/widget/RecyclerView$ViewHolder { + public fun (Landroid/view/View;)V +} + +public final class com/mikepenz/aboutlibraries/ui/item/LoaderItem : com/mikepenz/fastadapter/items/AbstractItem { + public fun ()V + public fun getLayoutRes ()I + public fun getType ()I + public synthetic fun getViewHolder (Landroid/view/View;)Landroidx/recyclerview/widget/RecyclerView$ViewHolder; + public fun getViewHolder (Landroid/view/View;)Lcom/mikepenz/aboutlibraries/ui/item/LoaderItem$ViewHolder; + public fun isSelectable ()Z + public fun setSelectable (Z)V +} + +public final class com/mikepenz/aboutlibraries/ui/item/LoaderItem$ViewHolder : androidx/recyclerview/widget/RecyclerView$ViewHolder { + public fun (Landroid/view/View;)V +} + +public final class com/mikepenz/aboutlibraries/ui/item/SimpleLibraryItem : com/mikepenz/fastadapter/items/AbstractItem { + public fun (Lcom/mikepenz/aboutlibraries/entity/Library;Lcom/mikepenz/aboutlibraries/LibsBuilder;)V + public synthetic fun bindView (Landroidx/recyclerview/widget/RecyclerView$ViewHolder;Ljava/util/List;)V + public fun bindView (Lcom/mikepenz/aboutlibraries/ui/item/SimpleLibraryItem$ViewHolder;Ljava/util/List;)V + public fun getLayoutRes ()I + public fun getType ()I + public synthetic fun getViewHolder (Landroid/view/View;)Landroidx/recyclerview/widget/RecyclerView$ViewHolder; + public fun getViewHolder (Landroid/view/View;)Lcom/mikepenz/aboutlibraries/ui/item/SimpleLibraryItem$ViewHolder; + public fun isSelectable ()Z + public fun setSelectable (Z)V +} + +public final class com/mikepenz/aboutlibraries/ui/item/SimpleLibraryItem$ViewHolder : androidx/recyclerview/widget/RecyclerView$ViewHolder { + public fun (Landroid/view/View;)V +} + +public final class com/mikepenz/aboutlibraries/util/LibraryExtensionsKt { + public static final fun getAuthor (Lcom/mikepenz/aboutlibraries/entity/Library;)Ljava/lang/String; +} + +public final class com/mikepenz/aboutlibraries/util/MovementCheck : android/text/method/LinkMovementMethod { + public static final field Companion Lcom/mikepenz/aboutlibraries/util/MovementCheck$Companion; + public fun ()V + public fun onTouchEvent (Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/MotionEvent;)Z +} + +public final class com/mikepenz/aboutlibraries/util/MovementCheck$Companion { + public final fun getInstance ()Lcom/mikepenz/aboutlibraries/util/MovementCheck; +} + +public final class com/mikepenz/aboutlibraries/util/SpecialButton : java/lang/Enum { + public static final field SPECIAL1 Lcom/mikepenz/aboutlibraries/util/SpecialButton; + public static final field SPECIAL2 Lcom/mikepenz/aboutlibraries/util/SpecialButton; + public static final field SPECIAL3 Lcom/mikepenz/aboutlibraries/util/SpecialButton; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public static fun valueOf (Ljava/lang/String;)Lcom/mikepenz/aboutlibraries/util/SpecialButton; + public static fun values ()[Lcom/mikepenz/aboutlibraries/util/SpecialButton; +} + +public final class com/mikepenz/aboutlibraries/viewmodel/LibsViewModel : androidx/lifecycle/ViewModel { + public fun (Landroid/content/Context;Lcom/mikepenz/aboutlibraries/LibsBuilder;Lcom/mikepenz/aboutlibraries/Libs$Builder;)V + public final fun getListItems ()Lkotlinx/coroutines/flow/Flow; +} + +public final class com/mikepenz/aboutlibraries/viewmodel/LibsViewModelFactory : androidx/lifecycle/ViewModelProvider$Factory { + public fun (Landroid/content/Context;Lcom/mikepenz/aboutlibraries/LibsBuilder;Lcom/mikepenz/aboutlibraries/Libs$Builder;)V + public fun create (Ljava/lang/Class;)Landroidx/lifecycle/ViewModel; +} + diff --git a/aboutlibraries/api/aboutlibraries.klib.api b/aboutlibraries/api/aboutlibraries.klib.api new file mode 100644 index 000000000..e69de29bb diff --git a/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/LibsBuilder.kt b/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/LibsBuilder.kt index 713c573ea..3c625f568 100644 --- a/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/LibsBuilder.kt +++ b/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/LibsBuilder.kt @@ -1,4 +1,5 @@ @file:JvmName("LibsBuilder") +@file:Suppress("DEPRECATION") package com.mikepenz.aboutlibraries @@ -13,6 +14,7 @@ import com.mikepenz.aboutlibraries.util.toLibs import com.mikepenz.aboutlibraries.util.toSerializable import java.io.Serializable +@Deprecated("The legacy view based UI will be deprecated in the future. Please consider moving to the compose based UI.") class LibsBuilder : Serializable { var sort: Boolean = true var libraryComparator: Comparator? = null diff --git a/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/LibsConfiguration.kt b/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/LibsConfiguration.kt index c143e6a6f..fbe5f0928 100644 --- a/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/LibsConfiguration.kt +++ b/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/LibsConfiguration.kt @@ -10,6 +10,7 @@ import com.mikepenz.aboutlibraries.util.SpecialButton /** * Util class to modify behavior of the */ +@Deprecated("The legacy view based UI will be deprecated in the future. Please consider moving to the compose based UI.") object LibsConfiguration { /** LOGIC FOR THE LISTENER*/ var listener: LibsListener? = null diff --git a/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/LibsActivity.kt b/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/LibsActivity.kt index 723d24994..8d64db618 100644 --- a/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/LibsActivity.kt +++ b/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/LibsActivity.kt @@ -1,3 +1,5 @@ +@file:Suppress("DEPRECATION") + package com.mikepenz.aboutlibraries.ui import android.os.Bundle @@ -20,6 +22,7 @@ import com.mikepenz.aboutlibraries.util.getThemeColor /** * Container [AppCompatActivity] to host the [LibsSupportFragment] */ +@Deprecated("The legacy view based UI will be deprecated in the future. Please consider moving to the compose based UI.") open class LibsActivity : AppCompatActivity(), SearchView.OnQueryTextListener { private lateinit var fragment: LibsSupportFragment diff --git a/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/LibsSupportFragment.kt b/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/LibsSupportFragment.kt index 416ca1bbc..f94827e98 100644 --- a/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/LibsSupportFragment.kt +++ b/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/LibsSupportFragment.kt @@ -1,3 +1,5 @@ +@file:Suppress("DEPRECATION") + package com.mikepenz.aboutlibraries.ui import android.os.Bundle @@ -39,6 +41,7 @@ import kotlinx.coroutines.withContext * * Retrieves the [LibsBuilder] via the 'data' passed as argument. */ +@Deprecated("The legacy view based UI will be deprecated in the future. Please consider moving to the compose based UI.") open class LibsSupportFragment : Fragment(), Filterable { private val itemAdapter: ItemAdapter = ItemAdapter() diff --git a/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/item/HeaderItem.kt b/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/item/HeaderItem.kt index 8ec3164cc..44dff59d8 100644 --- a/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/item/HeaderItem.kt +++ b/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/item/HeaderItem.kt @@ -1,3 +1,5 @@ +@file:Suppress("DEPRECATION") + package com.mikepenz.aboutlibraries.ui.item import android.graphics.drawable.Drawable @@ -13,7 +15,11 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.mikepenz.aboutlibraries.LibsBuilder import com.mikepenz.aboutlibraries.LibsConfiguration import com.mikepenz.aboutlibraries.R -import com.mikepenz.aboutlibraries.util.* +import com.mikepenz.aboutlibraries.util.MovementCheck +import com.mikepenz.aboutlibraries.util.SpecialButton +import com.mikepenz.aboutlibraries.util.getSupportColor +import com.mikepenz.aboutlibraries.util.getThemeColor +import com.mikepenz.aboutlibraries.util.resolveStyledValue import com.mikepenz.fastadapter.items.AbstractItem /** diff --git a/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/item/LibraryItem.kt b/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/item/LibraryItem.kt index 7ca4c8ca0..2796fe3ee 100644 --- a/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/item/LibraryItem.kt +++ b/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/item/LibraryItem.kt @@ -1,3 +1,5 @@ +@file:Suppress("DEPRECATION") + package com.mikepenz.aboutlibraries.ui.item import android.content.Context @@ -18,7 +20,11 @@ import com.mikepenz.aboutlibraries.LibsBuilder import com.mikepenz.aboutlibraries.LibsConfiguration import com.mikepenz.aboutlibraries.R import com.mikepenz.aboutlibraries.entity.Library -import com.mikepenz.aboutlibraries.util.* +import com.mikepenz.aboutlibraries.util.getSupportColor +import com.mikepenz.aboutlibraries.util.getThemeColor +import com.mikepenz.aboutlibraries.util.htmlReadyLicenseContent +import com.mikepenz.aboutlibraries.util.license +import com.mikepenz.aboutlibraries.util.resolveStyledValue import com.mikepenz.fastadapter.items.AbstractItem diff --git a/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/item/SimpleLibraryItem.kt b/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/item/SimpleLibraryItem.kt index 7df397bd2..64ce6f0c9 100644 --- a/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/item/SimpleLibraryItem.kt +++ b/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/item/SimpleLibraryItem.kt @@ -1,3 +1,5 @@ +@file:Suppress("DEPRECATION") + package com.mikepenz.aboutlibraries.ui.item import android.content.Context diff --git a/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/viewmodel/LibsViewModel.kt b/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/viewmodel/LibsViewModel.kt index af89cefbf..3a3550f1f 100644 --- a/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/viewmodel/LibsViewModel.kt +++ b/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/viewmodel/LibsViewModel.kt @@ -1,3 +1,5 @@ +@file:Suppress("DEPRECATION") + package com.mikepenz.aboutlibraries.viewmodel import android.annotation.SuppressLint diff --git a/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/viewmodel/LibsViewModelFactory.kt b/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/viewmodel/LibsViewModelFactory.kt index 5e7f0266b..ff96806cd 100644 --- a/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/viewmodel/LibsViewModelFactory.kt +++ b/aboutlibraries/src/androidMain/kotlin/com/mikepenz/aboutlibraries/viewmodel/LibsViewModelFactory.kt @@ -1,3 +1,5 @@ +@file:Suppress("DEPRECATION") + package com.mikepenz.aboutlibraries.viewmodel import android.content.Context diff --git a/app-desktop/src/jvmMain/kotlin/m2/main.kt b/app-desktop/src/jvmMain/kotlin/m2/main.kt index 9dc39c6c9..1969d9cdd 100644 --- a/app-desktop/src/jvmMain/kotlin/m2/main.kt +++ b/app-desktop/src/jvmMain/kotlin/m2/main.kt @@ -1,5 +1,6 @@ package m2 +import aboutlibraries.app_desktop.generated.resources.Res import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material.Scaffold import androidx.compose.material.Text @@ -10,7 +11,6 @@ import androidx.compose.ui.window.Window import androidx.compose.ui.window.application import com.mikepenz.aboutlibraries.ui.compose.LibrariesContainer import com.mikepenz.aboutlibraries.ui.compose.rememberLibraries -import com.mikepenz.app_desktop.generated.resources.Res import org.jetbrains.compose.resources.ExperimentalResourceApi @OptIn(ExperimentalResourceApi::class) diff --git a/app-desktop/src/jvmMain/kotlin/m3/main.kt b/app-desktop/src/jvmMain/kotlin/m3/main.kt index 9e700436a..88b6687c1 100644 --- a/app-desktop/src/jvmMain/kotlin/m3/main.kt +++ b/app-desktop/src/jvmMain/kotlin/m3/main.kt @@ -1,5 +1,6 @@ package m3 +import aboutlibraries.app_desktop.generated.resources.Res import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.material3.ExperimentalMaterial3Api @@ -12,7 +13,6 @@ import androidx.compose.ui.window.Window import androidx.compose.ui.window.application import com.mikepenz.aboutlibraries.ui.compose.m3.LibrariesContainer import com.mikepenz.aboutlibraries.ui.compose.m3.rememberLibraries -import com.mikepenz.app_desktop.generated.resources.Res import org.jetbrains.compose.resources.ExperimentalResourceApi @OptIn(ExperimentalMaterial3Api::class, ExperimentalResourceApi::class) diff --git a/app-wasm/src/wasmJsMain/kotlin/Main.kt b/app-wasm/src/wasmJsMain/kotlin/Main.kt index 880eb75cf..f54079a50 100644 --- a/app-wasm/src/wasmJsMain/kotlin/Main.kt +++ b/app-wasm/src/wasmJsMain/kotlin/Main.kt @@ -1,3 +1,4 @@ +import aboutlibraries.app_wasm.generated.resources.Res import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material.Scaffold import androidx.compose.material.Text @@ -14,7 +15,6 @@ import com.mikepenz.aboutlibraries.ui.compose.LibrariesContainer import com.mikepenz.aboutlibraries.ui.compose.LicenseDialog import com.mikepenz.aboutlibraries.ui.compose.rememberLibraries import com.mikepenz.aboutlibraries.ui.compose.util.htmlReadyLicenseContent -import com.mikepenz.app_wasm.generated.resources.Res import org.jetbrains.compose.resources.ExperimentalResourceApi @OptIn(ExperimentalComposeUiApi::class, ExperimentalResourceApi::class) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index aaaf808d4..09ed504ef 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -3,10 +3,11 @@ import com.mikepenz.aboutlibraries.plugin.DuplicateRule import com.mikepenz.aboutlibraries.plugin.StrictMode plugins { - id("com.mikepenz.convention.kotlin-multiplatform") + id("com.mikepenz.convention.kotlin") id("com.mikepenz.convention.android-application") id("com.mikepenz.convention.compose") id("com.mikepenz.aboutlibraries.plugin") + alias(baseLibs.plugins.screenshot) } android { @@ -17,6 +18,9 @@ android { setProperty("archivesBaseName", "AboutLibraries-v$versionName-c$versionCode") } + @Suppress("UnstableApiUsage") + experimentalProperties["android.experimental.enableScreenshotTest"] = true + buildTypes { create("staging") { signingConfig = signingConfigs.findByName("release") @@ -25,9 +29,6 @@ android { } } - productFlavors { - } - buildFeatures { viewBinding = true } diff --git a/app/src/debug/screenshotTest/reference/com/mikepenz/aboutlibraries/test/SnapshotScreenshots/PreviewLibrariesOff_Library items (Off)_06549f67_0.png b/app/src/debug/screenshotTest/reference/com/mikepenz/aboutlibraries/test/SnapshotScreenshots/PreviewLibrariesOff_Library items (Off)_06549f67_0.png new file mode 100644 index 000000000..d05001c85 Binary files /dev/null and b/app/src/debug/screenshotTest/reference/com/mikepenz/aboutlibraries/test/SnapshotScreenshots/PreviewLibrariesOff_Library items (Off)_06549f67_0.png differ diff --git a/app/src/debug/screenshotTest/reference/com/mikepenz/aboutlibraries/test/SnapshotScreenshots/PreviewLibraries_Library items (Default)_28f9900b_0.png b/app/src/debug/screenshotTest/reference/com/mikepenz/aboutlibraries/test/SnapshotScreenshots/PreviewLibraries_Library items (Default)_28f9900b_0.png new file mode 100644 index 000000000..a67182080 Binary files /dev/null and b/app/src/debug/screenshotTest/reference/com/mikepenz/aboutlibraries/test/SnapshotScreenshots/PreviewLibraries_Library items (Default)_28f9900b_0.png differ diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 78e07be83..d43b91f05 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,18 +2,18 @@ - - + + @@ -21,20 +21,20 @@ + android:name="com.mikepenz.aboutlibraries.sample.FragmentActivity" + android:exported="false" + android:label="@string/app_name" + android:theme="@style/SampleApp.DayNight" /> + android:name="com.mikepenz.aboutlibraries.sample.ExtendActivity" + android:exported="false" + android:label="@string/app_name" + android:theme="@style/SampleApp.DayNight" /> + android:name="com.mikepenz.aboutlibraries.sample.CustomSortActivity" + android:exported="false" + android:label="@string/app_name" + android:theme="@style/SampleApp.DayNight" /> diff --git a/app/src/main/java/com/mikepenz/aboutlibraries/sample/ComposeActivity.kt b/app/src/main/java/com/mikepenz/aboutlibraries/sample/ComposeActivity.kt deleted file mode 100644 index fad12fc7d..000000000 --- a/app/src/main/java/com/mikepenz/aboutlibraries/sample/ComposeActivity.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.mikepenz.aboutlibraries.sample - -import android.os.Bundle -import androidx.activity.ComponentActivity -import androidx.activity.compose.setContent -import androidx.activity.enableEdgeToEdge -import androidx.compose.foundation.ExperimentalFoundationApi -import androidx.compose.foundation.background -import androidx.compose.foundation.isSystemInDarkTheme -import androidx.compose.foundation.layout.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.List -import androidx.compose.material.icons.filled.Build -import androidx.compose.material.icons.filled.Info -import androidx.compose.material.icons.filled.Person -import androidx.compose.material3.* -import androidx.compose.runtime.* -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.dp -import com.mikepenz.aboutlibraries.ui.compose.m3.LibrariesContainer - -class ComposeActivity : ComponentActivity() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - enableEdgeToEdge() - - setContent { - MainLayout() - } - } -} - -@OptIn(ExperimentalFoundationApi::class, ExperimentalMaterial3Api::class) -@Composable -fun MainLayout() { - MaterialTheme( - colorScheme = if (isSystemInDarkTheme()) darkColorScheme() else lightColorScheme() - ) { - var showAuthor by remember { mutableStateOf(true) } - var showVersion by remember { mutableStateOf(true) } - var showLicenseBadges by remember { mutableStateOf(true) } - var showHeader by remember { mutableStateOf(false) } - - Scaffold( - topBar = { - // We use TopAppBar from accompanist-insets-ui which allows us to provide - // content padding matching the system bars insets. - TopAppBar( - title = { Text("Compose Sample") }, - colors = TopAppBarDefaults.topAppBarColors( - containerColor = MaterialTheme.colorScheme.surface.copy(alpha = 0.9f) - ), - actions = { - IconButton(onClick = { - showAuthor = !showAuthor - }) { Icon(Icons.Default.Person, "Author") } - IconButton(onClick = { - showVersion = !showVersion - }) { Icon(Icons.Default.Build, "Version") } - IconButton(onClick = { showLicenseBadges = !showLicenseBadges }) { - Icon( - Icons.AutoMirrored.Filled.List, - "Licenses" - ) - } - IconButton(onClick = { - showHeader = !showHeader - }) { Icon(Icons.Default.Info, "Header") } - } - ) - }, - ) { contentPadding -> - LibrariesContainer( - modifier = Modifier - .fillMaxSize() - .padding(top = contentPadding.calculateTopPadding()), - contentPadding = WindowInsets.navigationBars.asPaddingValues(), - showAuthor = showAuthor, - showVersion = showVersion, - showLicenseBadges = showLicenseBadges, - header = { - if (showHeader) { - stickyHeader { - Column( - modifier = Modifier - .fillMaxWidth() - .background(MaterialTheme.colorScheme.surface) - .padding(vertical = 25.dp), - horizontalAlignment = Alignment.CenterHorizontally, - ) { - Text("ExampleHeader") - } - } - } - } - ) - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/mikepenz/aboutlibraries/sample/FragmentActivity.kt b/app/src/main/java/com/mikepenz/aboutlibraries/sample/FragmentActivity.kt deleted file mode 100644 index 9e6ba047d..000000000 --- a/app/src/main/java/com/mikepenz/aboutlibraries/sample/FragmentActivity.kt +++ /dev/null @@ -1,192 +0,0 @@ -package com.mikepenz.aboutlibraries.sample - -import android.content.Intent -import android.content.res.Configuration -import android.net.Uri -import android.os.Bundle -import android.util.Log -import android.view.MenuItem -import android.view.View -import android.widget.Toast -import androidx.appcompat.app.ActionBarDrawerToggle -import androidx.appcompat.app.AppCompatActivity -import androidx.appcompat.widget.Toolbar -import com.mikepenz.aboutlibraries.Libs -import com.mikepenz.aboutlibraries.LibsBuilder -import com.mikepenz.aboutlibraries.LibsConfiguration -import com.mikepenz.aboutlibraries.entity.Library -import com.mikepenz.aboutlibraries.sample.databinding.ActivityFragmentBinding -import com.mikepenz.aboutlibraries.util.SpecialButton -import com.mikepenz.aboutlibraries.util.withContext -import com.mikepenz.materialdrawer.model.PrimaryDrawerItem -import com.mikepenz.materialdrawer.model.interfaces.nameRes -import com.mikepenz.materialdrawer.model.interfaces.nameText -import com.mikepenz.materialdrawer.util.addStickyDrawerItems - -/** - * Created by mikepenz on 04.06.14. - */ -class FragmentActivity : AppCompatActivity() { - private lateinit var binding: ActivityFragmentBinding - - private lateinit var actionBarDrawerToggle: ActionBarDrawerToggle - - private var libsUIListener: LibsConfiguration.LibsUIListener = object : LibsConfiguration.LibsUIListener { - override fun preOnCreateView(view: View): View { - return view - } - - override fun postOnCreateView(view: View): View { - return view - } - } - - private var libsListener: LibsConfiguration.LibsListener = object : LibsConfiguration.LibsListener { - override fun onIconClicked(v: View) { - Toast.makeText(v.context, "We are able to track this now ;)", Toast.LENGTH_LONG).show() - } - - override fun onLibraryAuthorClicked(v: View, library: Library): Boolean { - return false - } - - override fun onLibraryContentClicked(v: View, library: Library): Boolean { - return false - } - - override fun onLibraryBottomClicked(v: View, library: Library): Boolean { - return false - } - - override fun onExtraClicked(v: View, specialButton: SpecialButton): Boolean { - return false - } - - override fun onIconLongClicked(v: View): Boolean { - return false - } - - override fun onLibraryAuthorLongClicked(v: View, library: Library): Boolean { - return false - } - - override fun onLibraryContentLongClicked(v: View, library: Library): Boolean { - return false - } - - override fun onLibraryBottomLongClicked(v: View, library: Library): Boolean { - return false - } - } - - public override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = ActivityFragmentBinding.inflate(layoutInflater).also { - setContentView(it.root) - } - - // Remove line to test RTL support - // window.decorView.layoutDirection = View.LAYOUT_DIRECTION_RTL - - // Handle Toolbar - val toolbar = findViewById(R.id.toolbar) as Toolbar - setSupportActionBar(toolbar) - supportActionBar?.setDisplayHomeAsUpEnabled(true) - supportActionBar?.setHomeButtonEnabled(true) - - actionBarDrawerToggle = ActionBarDrawerToggle(this, binding.root, toolbar, com.mikepenz.materialdrawer.R.string.material_drawer_open, com.mikepenz.materialdrawer.R.string.material_drawer_close) - - binding.slider.apply { - itemAdapter.add( - PrimaryDrawerItem().apply { nameText = "Home" }, - PrimaryDrawerItem().apply { - nameRes = R.string.action_composeactivity; isSelectable = false - onDrawerItemClickListener = { _, _, _ -> - startActivity(Intent(applicationContext, ComposeActivity::class.java)) - false - } - }, - PrimaryDrawerItem().apply { - nameRes = R.string.action_manifestactivity; identifier = R.id.action_manifestactivity.toLong(); isSelectable = false - }, - PrimaryDrawerItem().apply { - nameRes = R.string.action_minimalactivity; identifier = R.id.action_minimalactivity.toLong(); isSelectable = false - }, - PrimaryDrawerItem().apply { - nameRes = R.string.action_extendactivity; identifier = R.id.action_extendedactivity.toLong(); isSelectable = false - }, - PrimaryDrawerItem().apply { - nameRes = R.string.action_customsortactivity; identifier = R.id.action_customsortactivity.toLong(); isSelectable = false - } - ) - addStickyDrawerItems( - PrimaryDrawerItem().apply { - nameRes = R.string.action_opensource; identifier = R.id.action_opensource.toLong(); isSelectable = false - } - ) - onDrawerItemClickListener = { _, drawerItem, _ -> - // Handle action bar item clicks here. The action bar will - // automatically handle clicks on the Home/Up button, so long - // as you specify a parent activity in AndroidManifest.xml. - when (drawerItem.identifier.toInt()) { - R.id.action_opensource -> startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/mikepenz/AboutLibraries"))) - R.id.action_extendedactivity -> startActivity(Intent(applicationContext, ExtendActivity::class.java)) - R.id.action_customsortactivity -> startActivity(Intent(applicationContext, CustomSortActivity::class.java)) - R.id.action_minimalactivity -> { - // create and launch an activity in minimal design without any additional modifications - LibsBuilder() - .withAboutMinimalDesign(true) - .withEdgeToEdge(true) - .withActivityTitle("Open Source") - .withAboutIconShown(false) - .withSearchEnabled(true) - .start(this@FragmentActivity) - } - R.id.action_manifestactivity -> { - // create and launch an activity in full design, with various configurations and adjustments - LibsBuilder() - .withLicenseShown(true) - .withVersionShown(true) - .withActivityTitle("Open Source") - .withEdgeToEdge(true) - .withListener(libsListener) - .withUiListener(libsUIListener) - .withSearchEnabled(true) - .start(this@FragmentActivity) - } - } - false - } - selectedItemPosition = 0 - } - - val fragment = LibsBuilder() - .withVersionShown(true) - .withLicenseShown(true) - .withLicenseDialog(true) - .supportFragment() - - val fragmentManager = supportFragmentManager - fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit() - - // Showcase to use the library meta information without the UI module - Libs.Builder().withContext(this).build().libraries - .forEach { - Log.d("AboutLibraries", it.name) - } - } - - override fun onConfigurationChanged(newConfig: Configuration) { - super.onConfigurationChanged(newConfig) - actionBarDrawerToggle.onConfigurationChanged(newConfig) - } - - override fun onPostCreate(savedInstanceState: Bundle?) { - super.onPostCreate(savedInstanceState) - actionBarDrawerToggle.syncState() - } - - override fun onOptionsItemSelected(item: MenuItem): Boolean { - return actionBarDrawerToggle.onOptionsItemSelected(item) - } -} diff --git a/app/src/main/kotlin/com/mikepenz/aboutlibraries/sample/ComposeActivity.kt b/app/src/main/kotlin/com/mikepenz/aboutlibraries/sample/ComposeActivity.kt new file mode 100644 index 000000000..2389e2d26 --- /dev/null +++ b/app/src/main/kotlin/com/mikepenz/aboutlibraries/sample/ComposeActivity.kt @@ -0,0 +1,340 @@ +@file:Suppress("DEPRECATION") + +package com.mikepenz.aboutlibraries.sample + +import android.content.Intent +import android.os.Bundle +import android.view.View +import android.widget.Toast +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.enableEdgeToEdge +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.WindowInsetsSides +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.only +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.systemBars +import androidx.compose.foundation.layout.windowInsetsPadding +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll +import androidx.compose.material.BottomDrawer +import androidx.compose.material.BottomDrawerValue +import androidx.compose.material.Switch +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.filled.List +import androidx.compose.material.icons.filled.Build +import androidx.compose.material.icons.filled.Description +import androidx.compose.material.icons.filled.Info +import androidx.compose.material.icons.filled.Menu +import androidx.compose.material.icons.filled.Person +import androidx.compose.material.icons.filled.Settings +import androidx.compose.material.rememberBottomDrawerState +import androidx.compose.material.ripple +import androidx.compose.material3.Badge +import androidx.compose.material3.DismissibleDrawerSheet +import androidx.compose.material3.DrawerValue +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.ModalNavigationDrawer +import androidx.compose.material3.NavigationDrawerItem +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.material3.rememberDrawerState +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import androidx.core.net.toUri +import com.mikepenz.aboutlibraries.LibsBuilder +import com.mikepenz.aboutlibraries.LibsConfiguration +import com.mikepenz.aboutlibraries.entity.Library +import com.mikepenz.aboutlibraries.sample.icons.Github +import com.mikepenz.aboutlibraries.ui.compose.m3.LibrariesContainer +import com.mikepenz.aboutlibraries.util.SpecialButton +import kotlinx.coroutines.launch + +class ComposeActivity : ComponentActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + enableEdgeToEdge() + + setContent { + MainLayout() + } + } +} + + +@OptIn(ExperimentalFoundationApi::class, ExperimentalMaterial3Api::class) +@Composable +fun MainLayout() { + MaterialTheme( + colorScheme = if (isSystemInDarkTheme()) darkColorScheme() else lightColorScheme() + ) { + var showAuthor by remember { mutableStateOf(true) } + var showDescription by remember { mutableStateOf(false) } + var showVersion by remember { mutableStateOf(true) } + var showLicenseBadges by remember { mutableStateOf(true) } + var showHeader by remember { mutableStateOf(false) } + + val drawerState = rememberDrawerState(DrawerValue.Closed) + val bottomDrawerState = rememberBottomDrawerState(BottomDrawerValue.Closed) + + val scope = rememberCoroutineScope() + val context = LocalContext.current + + ModalNavigationDrawer(scrimColor = Color.Transparent, drawerState = drawerState, drawerContent = { + DismissibleDrawerSheet( + drawerState = drawerState, + ) { + Column( + modifier = Modifier.fillMaxHeight() + ) { + Column( + modifier = Modifier + .verticalScroll(rememberScrollState()) + .fillMaxHeight() + .weight(1f) + ) { + DrawerItems() + } + NavigationDrawerItem( + label = { Text(stringResource(R.string.action_opensource)) }, + selected = false, + icon = { Icon(Github, "Open Source") }, + onClick = { context.startActivity(Intent(Intent.ACTION_VIEW, "https://github.com/mikepenz/AboutLibraries".toUri())) }, + modifier = Modifier.padding(horizontal = 12.dp) + ) + } + } + }, content = { + BottomDrawer(gesturesEnabled = bottomDrawerState.isOpen, drawerState = bottomDrawerState, drawerContent = { + Column( + modifier = Modifier.windowInsetsPadding(WindowInsets.systemBars.only(WindowInsetsSides.Horizontal + WindowInsetsSides.Bottom)) + ) { + ToggleableSetting( + title = "Show Author", + icon = Icons.Default.Person, + enabled = showAuthor, + onToggled = { showAuthor = it }, + ) + ToggleableSetting( + title = "Show Description", + icon = Icons.Default.Description, + enabled = showDescription, + onToggled = { showDescription = it }, + ) + ToggleableSetting( + title = "Show Version", + icon = Icons.Default.Build, + enabled = showVersion, + onToggled = { showVersion = it }, + ) + ToggleableSetting( + title = "Show License Badges", + icon = Icons.AutoMirrored.Filled.List, + enabled = showLicenseBadges, + onToggled = { showLicenseBadges = it }, + ) + ToggleableSetting( + title = "Show Header", + icon = Icons.Default.Info, + enabled = showHeader, + onToggled = { showHeader = it }, + ) + } + }, content = { + Scaffold( + topBar = { + // We use TopAppBar from accompanist-insets-ui which allows us to provide + // content padding matching the system bars insets. + TopAppBar( + title = { Text("AboutLibs") }, navigationIcon = { + IconButton(onClick = { + scope.launch { + if (drawerState.isOpen) { + drawerState.close() + } else { + drawerState.open() + } + } + }) { + Icon( + imageVector = Icons.Filled.Menu, contentDescription = "Open Menu" + ) + } + }, colors = TopAppBarDefaults.topAppBarColors( + containerColor = MaterialTheme.colorScheme.surface.copy(alpha = 0.9f) + ), actions = { + IconButton(onClick = { scope.launch { bottomDrawerState.open() } }) { + Icon(Icons.Default.Settings, "Settings") + } + }) + }, + ) { contentPadding -> + LibrariesContainer( + modifier = Modifier.fillMaxSize(), + contentPadding = contentPadding, + showAuthor = showAuthor, + showDescription = showDescription, + showVersion = showVersion, + showLicenseBadges = showLicenseBadges, + header = { + if (showHeader) { + stickyHeader { + Column( + modifier = Modifier + .fillMaxWidth() + .background(MaterialTheme.colorScheme.surface) + .padding(vertical = 25.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Text("ExampleHeader") + } + } + } + }) + } + }) + }) + } +} + +@Composable +fun ToggleableSetting(title: String, icon: ImageVector, enabled: Boolean, onToggled: (Boolean) -> Unit) { + val interactionSource = remember { MutableInteractionSource() } + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier + .clickable(interactionSource = interactionSource, onClick = { onToggled(!enabled) }, indication = ripple()) + .fillMaxWidth() + .padding(horizontal = 16.dp, vertical = 12.dp), + horizontalArrangement = Arrangement.spacedBy(30.dp) + ) { + Icon(icon, contentDescription = title) + Text(text = title, style = MaterialTheme.typography.bodyLarge, modifier = Modifier.weight(1f)) + Switch(interactionSource = interactionSource, checked = enabled, onCheckedChange = { + onToggled(!enabled) + }) + } +} + +@Composable +private fun ColumnScope.DrawerItems() { + val context = LocalContext.current + Spacer(Modifier.height(12.dp)) + NavigationDrawerItem( + label = { Text(stringResource(R.string.action_fargmentactivity)) }, + badge = { Badge { Text("Deprecated") } }, + selected = false, + onClick = { context.startActivity(Intent(context, FragmentActivity::class.java)) }, + modifier = Modifier.padding(horizontal = 12.dp) + ) + Spacer(Modifier.height(12.dp)) + NavigationDrawerItem( + label = { Text(stringResource(R.string.action_manifestactivity)) }, badge = { Badge { Text("Deprecated") } }, selected = false, onClick = { + val libsUIListener: LibsConfiguration.LibsUIListener = object : LibsConfiguration.LibsUIListener { + override fun preOnCreateView(view: View): View { + return view + } + + override fun postOnCreateView(view: View): View { + return view + } + } + val libsListener: LibsConfiguration.LibsListener = object : LibsConfiguration.LibsListener { + override fun onIconClicked(v: View) { + Toast.makeText(v.context, "We are able to track this now ;)", Toast.LENGTH_LONG).show() + } + + override fun onLibraryAuthorClicked(v: View, library: Library): Boolean { + return false + } + + override fun onLibraryContentClicked(v: View, library: Library): Boolean { + return false + } + + override fun onLibraryBottomClicked(v: View, library: Library): Boolean { + return false + } + + override fun onExtraClicked(v: View, specialButton: SpecialButton): Boolean { + return false + } + + override fun onIconLongClicked(v: View): Boolean { + return false + } + + override fun onLibraryAuthorLongClicked(v: View, library: Library): Boolean { + return false + } + + override fun onLibraryContentLongClicked(v: View, library: Library): Boolean { + return false + } + + override fun onLibraryBottomLongClicked(v: View, library: Library): Boolean { + return false + } + } + + LibsBuilder().withLicenseShown(true).withVersionShown(true).withActivityTitle("Open Source").withEdgeToEdge(true).withListener(libsListener) + .withUiListener(libsUIListener) + .withSearchEnabled(true).start(context) + }, modifier = Modifier.padding(horizontal = 12.dp) + ) + Spacer(Modifier.height(12.dp)) + NavigationDrawerItem( + label = { Text(stringResource(R.string.action_minimalactivity)) }, badge = { Badge { Text("Deprecated") } }, selected = false, onClick = { + LibsBuilder().withAboutMinimalDesign(true).withEdgeToEdge(true).withActivityTitle("Open Source").withAboutIconShown(false).withSearchEnabled(true).start(context) + }, modifier = Modifier.padding(horizontal = 12.dp) + ) + Spacer(Modifier.height(12.dp)) + NavigationDrawerItem( + label = { Text(stringResource(R.string.action_extendactivity)) }, + badge = { Badge { Text("Deprecated") } }, + selected = false, + onClick = { context.startActivity(Intent(context, ExtendActivity::class.java)) }, + modifier = Modifier.padding(horizontal = 12.dp) + ) + Spacer(Modifier.height(12.dp)) + NavigationDrawerItem( + label = { Text(stringResource(R.string.action_customsortactivity)) }, + badge = { Badge { Text("Deprecated") } }, + selected = false, + onClick = { context.startActivity(Intent(context, CustomSortActivity::class.java)) }, + modifier = Modifier.padding(horizontal = 12.dp) + ) +} \ No newline at end of file diff --git a/app/src/main/java/com/mikepenz/aboutlibraries/sample/CustomApplication.kt b/app/src/main/kotlin/com/mikepenz/aboutlibraries/sample/CustomApplication.kt similarity index 96% rename from app/src/main/java/com/mikepenz/aboutlibraries/sample/CustomApplication.kt rename to app/src/main/kotlin/com/mikepenz/aboutlibraries/sample/CustomApplication.kt index c4cbfbdb7..7b5eca5ea 100644 --- a/app/src/main/java/com/mikepenz/aboutlibraries/sample/CustomApplication.kt +++ b/app/src/main/kotlin/com/mikepenz/aboutlibraries/sample/CustomApplication.kt @@ -1,3 +1,5 @@ +@file:Suppress("DEPRECATION") + package com.mikepenz.aboutlibraries.sample import android.app.Application diff --git a/app/src/main/java/com/mikepenz/aboutlibraries/sample/CustomSortActivity.kt b/app/src/main/kotlin/com/mikepenz/aboutlibraries/sample/CustomSortActivity.kt similarity index 97% rename from app/src/main/java/com/mikepenz/aboutlibraries/sample/CustomSortActivity.kt rename to app/src/main/kotlin/com/mikepenz/aboutlibraries/sample/CustomSortActivity.kt index 0bbf622ac..5889eb7d0 100644 --- a/app/src/main/java/com/mikepenz/aboutlibraries/sample/CustomSortActivity.kt +++ b/app/src/main/kotlin/com/mikepenz/aboutlibraries/sample/CustomSortActivity.kt @@ -1,3 +1,5 @@ +@file:Suppress("DEPRECATION") + package com.mikepenz.aboutlibraries.sample import android.os.Bundle diff --git a/app/src/main/java/com/mikepenz/aboutlibraries/sample/ExtendActivity.kt b/app/src/main/kotlin/com/mikepenz/aboutlibraries/sample/ExtendActivity.kt similarity index 95% rename from app/src/main/java/com/mikepenz/aboutlibraries/sample/ExtendActivity.kt rename to app/src/main/kotlin/com/mikepenz/aboutlibraries/sample/ExtendActivity.kt index 25864494e..0e29294ec 100644 --- a/app/src/main/java/com/mikepenz/aboutlibraries/sample/ExtendActivity.kt +++ b/app/src/main/kotlin/com/mikepenz/aboutlibraries/sample/ExtendActivity.kt @@ -1,3 +1,5 @@ +@file:Suppress("DEPRECATION") + package com.mikepenz.aboutlibraries.sample import android.os.Bundle diff --git a/app/src/main/kotlin/com/mikepenz/aboutlibraries/sample/FragmentActivity.kt b/app/src/main/kotlin/com/mikepenz/aboutlibraries/sample/FragmentActivity.kt new file mode 100644 index 000000000..681287a9f --- /dev/null +++ b/app/src/main/kotlin/com/mikepenz/aboutlibraries/sample/FragmentActivity.kt @@ -0,0 +1,64 @@ +@file:Suppress("DEPRECATION") + +package com.mikepenz.aboutlibraries.sample + +import android.os.Bundle +import android.util.Log +import android.view.MenuItem +import android.view.View +import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.widget.Toolbar +import com.mikepenz.aboutlibraries.Libs +import com.mikepenz.aboutlibraries.LibsBuilder +import com.mikepenz.aboutlibraries.sample.databinding.ActivityFragmentBinding +import com.mikepenz.aboutlibraries.util.withContext + +/** + * Created by mikepenz on 04.06.14. + */ +class FragmentActivity : AppCompatActivity() { + private lateinit var binding: ActivityFragmentBinding + + public override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityFragmentBinding.inflate(layoutInflater).also { + setContentView(it.root) + } + + // Remove line to test RTL support + // window.decorView.layoutDirection = View.LAYOUT_DIRECTION_RTL + + // Handle Toolbar + val toolbar = findViewById(R.id.toolbar) as Toolbar + setSupportActionBar(toolbar) + supportActionBar?.setDisplayHomeAsUpEnabled(true) + supportActionBar?.setHomeButtonEnabled(true) + + val fragment = LibsBuilder() + .withVersionShown(true) + .withLicenseShown(true) + .withLicenseDialog(true) + .supportFragment() + + val fragmentManager = supportFragmentManager + fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit() + + // Showcase to use the library meta information without the UI module + Libs.Builder().withContext(this).build().libraries + .forEach { + Log.d("AboutLibraries", it.name) + } + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + return when (item.itemId) { + android.R.id.home -> { + // Handle the back button press + onBackPressed() + true + } + + else -> super.onOptionsItemSelected(item) + } + } +} diff --git a/app/src/main/kotlin/com/mikepenz/aboutlibraries/sample/icons/Github.kt b/app/src/main/kotlin/com/mikepenz/aboutlibraries/sample/icons/Github.kt new file mode 100644 index 000000000..de5ff0f79 --- /dev/null +++ b/app/src/main/kotlin/com/mikepenz/aboutlibraries/sample/icons/Github.kt @@ -0,0 +1,66 @@ +package com.mikepenz.aboutlibraries.sample.icons + +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.PathFillType +import androidx.compose.ui.graphics.SolidColor +import androidx.compose.ui.graphics.StrokeCap +import androidx.compose.ui.graphics.StrokeJoin +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.vector.path +import androidx.compose.ui.unit.dp + +val Github: ImageVector + get() { + if (_Github != null) { + return _Github!! + } + _Github = ImageVector.Builder( + name = "Github", + defaultWidth = 16.dp, + defaultHeight = 16.dp, + viewportWidth = 16f, + viewportHeight = 16f + ).apply { + path( + fill = SolidColor(Color(0xFF000000)), + fillAlpha = 1.0f, + stroke = null, + strokeAlpha = 1.0f, + strokeLineWidth = 1.0f, + strokeLineCap = StrokeCap.Butt, + strokeLineJoin = StrokeJoin.Miter, + strokeLineMiter = 1.0f, + pathFillType = PathFillType.NonZero + ) { + moveTo(8f, 0f) + curveTo(3.58f, 0f, 0f, 3.58f, 0f, 8f) + curveToRelative(0f, 3.54f, 2.29f, 6.53f, 5.47f, 7.59f) + curveToRelative(0.4f, 0.07f, 0.55f, -0.17f, 0.55f, -0.38f) + curveToRelative(0f, -0.19f, -0.01f, -0.82f, -0.01f, -1.49f) + curveToRelative(-2.01f, 0.37f, -2.53f, -0.49f, -2.69f, -0.94f) + curveToRelative(-0.09f, -0.23f, -0.48f, -0.94f, -0.82f, -1.13f) + curveToRelative(-0.28f, -0.15f, -0.68f, -0.52f, -0.01f, -0.53f) + curveToRelative(0.63f, -0.01f, 1.08f, 0.58f, 1.23f, 0.82f) + curveToRelative(0.72f, 1.21f, 1.87f, 0.87f, 2.33f, 0.66f) + curveToRelative(0.07f, -0.52f, 0.28f, -0.87f, 0.51f, -1.07f) + curveToRelative(-1.78f, -0.2f, -3.64f, -0.89f, -3.64f, -3.95f) + curveToRelative(0f, -0.87f, 0.31f, -1.59f, 0.82f, -2.15f) + curveToRelative(-0.08f, -0.2f, -0.36f, -1.02f, 0.08f, -2.12f) + curveToRelative(0f, 0f, 0.67f, -0.21f, 2.2f, 0.82f) + curveToRelative(0.64f, -0.18f, 1.32f, -0.27f, 2f, -0.27f) + reflectiveCurveToRelative(1.36f, 0.09f, 2f, 0.27f) + curveToRelative(1.53f, -1.04f, 2.2f, -0.82f, 2.2f, -0.82f) + curveToRelative(0.44f, 1.1f, 0.16f, 1.92f, 0.08f, 2.12f) + curveToRelative(0.51f, 0.56f, 0.82f, 1.27f, 0.82f, 2.15f) + curveToRelative(0f, 3.07f, -1.87f, 3.75f, -3.65f, 3.95f) + curveToRelative(0.29f, 0.25f, 0.54f, 0.73f, 0.54f, 1.48f) + curveToRelative(0f, 1.07f, -0.01f, 1.93f, -0.01f, 2.2f) + curveToRelative(0f, 0.21f, 0.15f, 0.46f, 0.55f, 0.38f) + arcTo(8.01f, 8.01f, 0f, isMoreThanHalf = false, isPositiveArc = false, 16f, 8f) + curveToRelative(0f, -4.42f, -3.58f, -8f, -8f, -8f) + } + }.build() + return _Github!! + } + +private var _Github: ImageVector? = null diff --git a/app/src/main/res/layout/activity_fragment.xml b/app/src/main/res/layout/activity_fragment.xml index 0d3ab94ac..28e48b9ca 100644 --- a/app/src/main/res/layout/activity_fragment.xml +++ b/app/src/main/res/layout/activity_fragment.xml @@ -1,16 +1,12 @@ - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d9cb4887d..5e48aa78f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -3,6 +3,7 @@ AboutLibraries Sample Compose Activity + Fragment Activity Manifest Activity Minimal Activity Extended Activity diff --git a/app/src/screenshotTest/kotlin/com/mikepenz/aboutlibraries/test/SnapshotTest.kt b/app/src/screenshotTest/kotlin/com/mikepenz/aboutlibraries/test/SnapshotTest.kt new file mode 100644 index 000000000..b4fbcf41f --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/mikepenz/aboutlibraries/test/SnapshotTest.kt @@ -0,0 +1,35 @@ +package com.mikepenz.aboutlibraries.test + +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.mikepenz.aboutlibraries.test.data.fakeData +import com.mikepenz.aboutlibraries.ui.compose.m3.Libraries + +class SnapshotScreenshots { + + @Preview("Library items (Default)") + @Composable + fun PreviewLibraries() { + MaterialTheme { + Surface { + Libraries( + fakeData.libraries, + showDescription = true + ) + } + } + } + + + @Preview("Library items (Off)") + @Composable + fun PreviewLibrariesOff() { + MaterialTheme { + Surface { + Libraries(fakeData.libraries, showAuthor = false, showLicenseBadges = false) + } + } + } +} \ No newline at end of file diff --git a/app/src/screenshotTest/kotlin/com/mikepenz/aboutlibraries/test/data/FakeData.kt b/app/src/screenshotTest/kotlin/com/mikepenz/aboutlibraries/test/data/FakeData.kt new file mode 100644 index 000000000..2fd5ea78b --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/mikepenz/aboutlibraries/test/data/FakeData.kt @@ -0,0 +1,211 @@ +package com.mikepenz.aboutlibraries.test.data + +import com.mikepenz.aboutlibraries.Libs + +internal val fakeData: Libs + get() = Libs.Builder().withJson( + """ + { + "libraries": [ + { + "uniqueId": "com.mikepenz:materialdrawer", + "developers": [ + { + "organisationUrl": "https://mikepenz.dev", + "name": "Mike Penz" + } + ], + "artifactVersion": "9.0.0-a01", + "description": "(Merged) The flexible, easy to use, all in one drawer library for your Android project.", + "scm": { + "connection": "scm:git@github.com:mikepenz/MaterialDrawer.git", + "url": "https://github.com/mikepenz/MaterialDrawer", + "developerConnection": "scm:git@github.com:mikepenz/MaterialDrawer.git" + }, + "name": "ABC MaterialDrawer Library", + "website": "https://github.com/mikepenz/MaterialDrawer", + "licenses": [ + "133a737bef925d338a857868bf2a1db5", + "686f4183d3c0e1d6f495fd0ae3d74771", + "Apache-2.0" + ] + }, + { + "uniqueId": "com.mikepenz:fastadapter-extensions-expandable", + "developers": [ + { + "name": "Mike Penz" + } + ], + "artifactVersion": "5.5.1", + "description": "Commons extension for the FastAdapter library. The bullet proof, fast and easy to use adapter library.", + "scm": { + "connection": "scm:git@github.com:mikepenz/FastAdapter.git", + "url": "https://github.com/mikepenz/FastAdapter", + "developerConnection": "scm:git@github.com:mikepenz/FastAdapter.git" + }, + "name": "FastAdapter Library-Extensions-Expandable", + "website": "https://github.com/mikepenz/FastAdapter", + "licenses": [ + "29162c4a2ae4d7ec6b3925cbde680772" + ] + }, + { + "uniqueId": "org.jetbrains.kotlin:kotlin-stdlib-jdk8", + "developers": [ + { + "organisationUrl": "https://www.jetbrains.com", + "name": "Kotlin Team" + } + ], + "artifactVersion": "1.5.31", + "description": "Kotlin Standard Library JDK 8 extension", + "scm": { + "connection": "scm:git:https://github.com/JetBrains/kotlin.git", + "url": "https://github.com/JetBrains/kotlin", + "developerConnection": "scm:git:https://github.com/JetBrains/kotlin.git" + }, + "name": "Kotlin Stdlib Jdk8", + "website": "https://kotlinlang.org/", + "licenses": [ + "Apache-2.0" + ] + }, + { + "uniqueId": "org.jetbrains.kotlin:kotlin-stdlib-jdk7", + "developers": [ + { + "organisationUrl": "https://www.jetbrains.com", + "name": "Kotlin Team" + } + ], + "artifactVersion": "1.5.31", + "description": "Kotlin Standard Library JDK 7 extension", + "scm": { + "connection": "scm:git:https://github.com/JetBrains/kotlin.git", + "url": "https://github.com/JetBrains/kotlin", + "developerConnection": "scm:git:https://github.com/JetBrains/kotlin.git" + }, + "name": "Kotlin Stdlib Jdk7", + "website": "https://kotlinlang.org/", + "licenses": [ + "Apache-2.0" + ] + }, + { + "uniqueId": "org.jetbrains.kotlin:kotlin-stdlib", + "developers": [ + { + "organisationUrl": "https://www.jetbrains.com", + "name": "Kotlin Team" + } + ], + "artifactVersion": "1.5.31", + "description": "Kotlin Standard Library for JVM", + "scm": { + "connection": "scm:git:https://github.com/JetBrains/kotlin.git", + "url": "https://github.com/JetBrains/kotlin", + "developerConnection": "scm:git:https://github.com/JetBrains/kotlin.git" + }, + "name": "Kotlin Stdlib", + "website": "https://kotlinlang.org/", + "licenses": [ + "Apache-2.0" + ] + }, + { + "uniqueId": "org.jetbrains:annotations", + "developers": [ + { + "organisationUrl": "http://www.jetbrains.com", + "name": "JetBrains Team" + } + ], + "artifactVersion": "13.0", + "description": "A set of annotations used for code inspection support and code documentation.", + "scm": { + "connection": "scm:git:https://github.com/JetBrains/intellij-community.git", + "url": "https://github.com/JetBrains/intellij-community" + }, + "name": "IntelliJ IDEA Annotations", + "website": "http://www.jetbrains.org", + "licenses": [ + "686f4183d3c0e1d6f495fd0ae3d74771" + ] + }, + { + "uniqueId": "org.jetbrains.kotlin:kotlin-stdlib-common", + "developers": [ + { + "organisationUrl": "https://www.jetbrains.com", + "name": "Kotlin Team" + } + ], + "artifactVersion": "1.5.31", + "description": "Kotlin Common Standard Library", + "scm": { + "connection": "scm:git:https://github.com/JetBrains/kotlin.git", + "url": "https://github.com/JetBrains/kotlin", + "developerConnection": "scm:git:https://github.com/JetBrains/kotlin.git" + }, + "name": "Kotlin Stdlib Common", + "website": "https://kotlinlang.org/", + "licenses": [ + "Apache-2.0" + ] + }, + { + "uniqueId": "com.mikepenz:fastadapter", + "developers": [ + { + "name": "Mike Penz" + } + ], + "artifactVersion": "5.5.1", + "description": "The bullet proof, fast and easy to use adapter library, which minimizes developing time to a fraction...", + "scm": { + "connection": "scm:git@github.com:mikepenz/FastAdapter.git", + "url": "https://github.com/mikepenz/FastAdapter", + "developerConnection": "scm:git@github.com:mikepenz/FastAdapter.git" + }, + "name": "FastAdapter Library", + "website": "https://github.com/mikepenz/FastAdapter", + "licenses": [ + "29162c4a2ae4d7ec6b3925cbde680772" + ] + } + ], + "licenses": { + "29162c4a2ae4d7ec6b3925cbde680772": { + "content": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"{}\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright 2021 Mike Penz\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n", + "hash": "29162c4a2ae4d7ec6b3925cbde680772", + "url": "https://raw.githubusercontent.com/mikepenz/FastAdapter/develop/LICENSE", + "spdxId": "Apache-2.0", + "name": "Apache License 2.0" + }, + "Apache-2.0": { + "content": "Apache License\nVersion 2.0, January 2004\nhttp://www.apache.org/licenses/\n\nTERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n1. Definitions.\n\n\"License\" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.\n\n\"Licensor\" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.\n\n\"Legal Entity\" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, \"control\" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.\n\n\"You\" (or \"Your\") shall mean an individual or Legal Entity exercising permissions granted by this License.\n\n\"Source\" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.\n\n\"Object\" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.\n\n\"Work\" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).\n\n\"Derivative Works\" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.\n\n\"Contribution\" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, \"submitted\" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as \"Not a Contribution.\"\n\n\"Contributor\" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.\n\n2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.\n\n3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.\n\n4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:\n\n (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.\n\n You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.\n\n5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.\n\n6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.\n\n7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.\n\n8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.\n\n9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.\n\nEND OF TERMS AND CONDITIONS\n\nAPPENDIX: How to apply the Apache License to your work.\n\nTo apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets \"[]\" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same \"printed page\" as the copyright notice for easier identification within third-party archives.\n\nCopyright [yyyy] [name of copyright owner]\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.", + "hash": "Apache-2.0", + "internalHash": "Apache-2.0", + "url": "https://spdx.org/licenses/Apache-2.0.html", + "spdxId": "Apache-2.0", + "name": "Apache License 2.0" + }, + "133a737bef925d338a857868bf2a1db5": { + "content": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright 2021 Mike Penz\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", + "hash": "133a737bef925d338a857868bf2a1db5", + "url": "https://raw.githubusercontent.com/mikepenz/MaterialDrawer/develop/LICENSE", + "spdxId": "Apache-2.0", + "name": "Apache License 2.0" + }, + "686f4183d3c0e1d6f495fd0ae3d74771": { + "content": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright 2000-2021 JetBrains s.r.o.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n", + "hash": "686f4183d3c0e1d6f495fd0ae3d74771", + "url": "https://raw.githubusercontent.com/JetBrains/intellij-community/master/LICENSE.txt", + "spdxId": "Apache-2.0", + "name": "Apache License 2.0" + } + } + } + """.trimIndent() + ).build() \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 2d1e465f4..63bd0491f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,8 +5,7 @@ buildscript { } plugins { - alias(libs.plugins.conventionPlugin) - + alias(baseLibs.plugins.conventionPlugin) alias(baseLibs.plugins.androidApplication) apply false alias(baseLibs.plugins.androidLibrary) apply false alias(baseLibs.plugins.composeMultiplatform) apply false @@ -16,6 +15,7 @@ plugins { alias(baseLibs.plugins.dokka) alias(baseLibs.plugins.aboutLibraries) apply false alias(baseLibs.plugins.mavenPublish) apply false + alias(baseLibs.plugins.binaryCompatiblityValidator) apply false alias(libs.plugins.navSafeArgs) apply false } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index ff2daa310..2716f8ddc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ GROUP=com.mikepenz -VERSION_NAME=11.5.0 -VERSION_CODE=110500 +VERSION_NAME=11.6.0 +VERSION_CODE=110600 POM_URL=https://github.com/mikepenz/AboutLibraries POM_SCM_URL=https://github.com/mikepenz/AboutLibraries @@ -17,12 +17,13 @@ POM_DEVELOPER_ID=mikepenz POM_DEVELOPER_NAME=Mike Penz # Project-wide Gradle settings. org.gradle.jvmargs=-Xmx1536m -android.useAndroidX=true kotlin.mpp.stability.nowarn=true kotlin.mpp.androidSourceSetLayoutVersion=2 +android.useAndroidX=true android.enableJetifier=false +android.experimental.enableScreenshotTest=true org.gradle.caching=true org.gradle.configuration-cache=false @@ -36,4 +37,7 @@ android.suppressUnsupportedCompileSdk=34 # Dokka org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled -org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true \ No newline at end of file +org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true + +# convention plugin +com.mikepenz.binary-compatibility-validator.enabled=true \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e872f7a48..ec687a671 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,7 +1,6 @@ [versions] -conventionPlugin = "0.1.5" # kotlin -kotlinxSerialization = "1.7.3" +kotlinxSerialization = "1.8.0" kotlinxCollections = "0.3.8" # androidx activity = "1.10.0" @@ -9,7 +8,7 @@ cardview = "1.0.0" constraintLayout = "2.2.0" core = "1.15.0" lifecycle = { require = "2.8.7" } -navigation = "2.8.5" +navigation = "2.8.6" recyclerView = "1.4.0" # google material = "1.12.0" @@ -24,7 +23,6 @@ materialDrawer = "9.0.2" okhttp = "4.12.0" [plugins] -conventionPlugin = { id = "com.mikepenz.convention.root", version.ref = "conventionPlugin" } navSafeArgs = { id = "androidx.navigation.safeargs", version.ref = "navigation" } [libraries] diff --git a/plugin-build/build.gradle.kts b/plugin-build/build.gradle.kts index 695a790a7..eca035975 100644 --- a/plugin-build/build.gradle.kts +++ b/plugin-build/build.gradle.kts @@ -3,10 +3,10 @@ import java.util.* plugins { alias(baseLibs.plugins.kotlinJvm) apply false - alias(libs.plugins.conventionPlugin) + alias(baseLibs.plugins.conventionPlugin) alias(baseLibs.plugins.dokka) alias(baseLibs.plugins.mavenPublish) - id("com.gradle.plugin-publish") version "1.3.0" apply false + id("com.gradle.plugin-publish") version "1.3.1" apply false } buildscript { diff --git a/plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/AboutLibrariesExtension.kt b/plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/AboutLibrariesExtension.kt index 8814f0464..5032080de 100644 --- a/plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/AboutLibrariesExtension.kt +++ b/plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/AboutLibrariesExtension.kt @@ -111,6 +111,18 @@ abstract class AboutLibrariesExtension { */ var strictMode = StrictMode.IGNORE + /** + * Defines if licenses are mapped to SPDX identifiers. + * This lowers the meta data file size, however in case of modified license content, might loose the original license information - and instead use standard SPDX information, based on SPDX license id defined. + * + * ``` + * aboutLibraries { + * mapLicensesToSpdx = false + * } + * ``` + */ + var mapLicensesToSpdx: Boolean = true + /** * Defines the allowed licenses which will not result in warnings or failures depending on the [strictMode] configuration. * diff --git a/plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/BaseAboutLibrariesTask.kt b/plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/BaseAboutLibrariesTask.kt index 267922da6..7087e4a56 100644 --- a/plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/BaseAboutLibrariesTask.kt +++ b/plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/BaseAboutLibrariesTask.kt @@ -7,7 +7,13 @@ import org.gradle.api.DefaultTask import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.file.RegularFile import org.gradle.api.provider.Provider -import org.gradle.api.tasks.* +import org.gradle.api.tasks.Input +import org.gradle.api.tasks.InputDirectory +import org.gradle.api.tasks.InputFile +import org.gradle.api.tasks.Internal +import org.gradle.api.tasks.Optional +import org.gradle.api.tasks.PathSensitive +import org.gradle.api.tasks.PathSensitivity import org.slf4j.LoggerFactory import java.io.File import javax.inject.Inject @@ -31,7 +37,7 @@ abstract class BaseAboutLibrariesTask : DefaultTask() { @PathSensitive(value = PathSensitivity.RELATIVE) val dependencyCache: Provider = project.layout.buildDirectory.file("generated/aboutLibraries/dependency_cache.json") - @org.gradle.api.tasks.Optional + @Optional @PathSensitive(value = PathSensitivity.RELATIVE) @InputDirectory fun getConfigPath(): File? { @@ -62,6 +68,9 @@ abstract class BaseAboutLibrariesTask : DefaultTask() { @Input val duplicationRule = extension.duplicationRule + @Input + val mapLicensesToSpdx = extension.mapLicensesToSpdx + @Input val allowedLicenses = extension.allowedLicenses @@ -81,7 +90,7 @@ abstract class BaseAboutLibrariesTask : DefaultTask() { val additionalLicenses = extension.additionalLicenses.toHashSet() @Input - @org.gradle.api.tasks.Optional + @Optional val gitHubApiToken = extension.gitHubApiToken @Input @@ -104,18 +113,19 @@ abstract class BaseAboutLibrariesTask : DefaultTask() { protected fun createLibraryProcessor(collectedContainer: CollectedContainer = readInCollectedDependencies()): LibrariesProcessor { return LibrariesProcessor( - getDependencyHandler(), - collectedContainer, - getConfigPath(), - exclusionPatterns, - offlineMode, - fetchRemoteLicense, - fetchRemoteFunding, - additionalLicenses, - duplicationMode, - duplicationRule, - variant.orNull, - gitHubApiToken + dependencyHandler = getDependencyHandler(), + collectedDependencies = collectedContainer, + configFolder = getConfigPath(), + exclusionPatterns = exclusionPatterns, + offlineMode = offlineMode, + fetchRemoteLicense = fetchRemoteLicense, + fetchRemoteFunding = fetchRemoteFunding, + additionalLicenses = additionalLicenses, + duplicationMode = duplicationMode, + duplicationRule = duplicationRule, + variant = variant.orNull, + mapLicensesToSpdx = mapLicensesToSpdx, + gitHubToken = gitHubApiToken ) } } diff --git a/plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/api/Api.kt b/plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/api/Api.kt index ac13b7e7f..88615f0bf 100644 --- a/plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/api/Api.kt +++ b/plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/api/Api.kt @@ -28,8 +28,8 @@ class Api private constructor( /** * Fetches the remote license for the given repository, and attaches them to the existing set. */ - override fun fetchRemoteLicense(uniqueId: String, repositoryLink: Scm?, licenses: HashSet) { - resolveApi(repositoryLink?.url)?.fetchRemoteLicense(uniqueId, repositoryLink, licenses) + override fun fetchRemoteLicense(uniqueId: String, repositoryLink: Scm?, licenses: HashSet, mapLicensesToSpdx: Boolean) { + resolveApi(repositoryLink?.url)?.fetchRemoteLicense(uniqueId, repositoryLink, licenses, mapLicensesToSpdx) } /** @@ -70,7 +70,7 @@ internal interface IApi { /** * Fetches the remote license as stored in the repository and updates the already covered licenses. */ - fun fetchRemoteLicense(uniqueId: String, repositoryLink: Scm?, licenses: HashSet) {} + fun fetchRemoteLicense(uniqueId: String, repositoryLink: Scm?, licenses: HashSet, mapLicensesToSpdx: Boolean = true) {} /** * Fetches the funding for the given repository. diff --git a/plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/api/GitHubApi.kt b/plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/api/GitHubApi.kt index fd07627b7..310be5ac1 100644 --- a/plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/api/GitHubApi.kt +++ b/plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/api/GitHubApi.kt @@ -45,7 +45,7 @@ internal class GitHubApi( * Fetch licenses from either the repository, or from spdx as txt format */ @Suppress("UNCHECKED_CAST") - override fun fetchRemoteLicense(uniqueId: String, repositoryLink: Scm?, licenses: HashSet) { + override fun fetchRemoteLicense(uniqueId: String, repositoryLink: Scm?, licenses: HashSet, mapLicensesToSpdx: Boolean) { val url = repositoryLink?.url if (rateLimit > 0 && url?.contains("github") == true) { LOGGER.debug("Remaining GitHub rate limit: $rateLimit") @@ -54,7 +54,7 @@ internal class GitHubApi( if (licenses.isNotEmpty()) { licenses.forEach { if (it.spdxId != null && it.content == null) { - it.loadSpdxLicense() + it.loadSpdxLicense(mapLicensesToSpdx) } } } else { diff --git a/plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/util/LibrariesProcessor.kt b/plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/util/LibrariesProcessor.kt index 605845ab4..67b3c15af 100644 --- a/plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/util/LibrariesProcessor.kt +++ b/plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/util/LibrariesProcessor.kt @@ -33,6 +33,7 @@ class LibrariesProcessor( private val duplicationMode: DuplicateMode, private val duplicationRule: DuplicateRule, private var variant: String? = null, + private val mapLicensesToSpdx: Boolean = true, gitHubToken: String? = null, ) { private val handledLibraries = HashSet() @@ -128,7 +129,7 @@ class LibrariesProcessor( licensesMap.values.forEach { if (it.content.isNullOrBlank()) { if (!offlineMode) { - it.loadSpdxLicense() + it.loadSpdxLicense(mapLicensesToSpdx) } else { LOGGER.warn("--> `${it.name}` does not contain the license text and configuration is in OFFLINE MODE. Please provide manually with `name`: `${it.name}` and `hash`: `${it.hash}`") } @@ -205,13 +206,16 @@ class LibrariesProcessor( pomReader.licenses ) { parentPomReaders first { licenses.takeIf { it.isNotEmpty() } } })?.map { License(it.name, it.url).also { lic -> - lic.internalHash = lic.spdxId // in case this can be tracked back to a spdx id use according hash + if (mapLicensesToSpdx) { + // in case this can be tracked back to a spdx id use according hash, doing so will lower the size of the output + lic.internalHash = lic.spdxId + } } }?.toHashSet() ?: hashSetOf() val scm = chooseValue(uniqueId, "scm", pomReader.scm) { parentPomReaders first { scm } } if (fetchRemoteLicense) { - api.fetchRemoteLicense(uniqueId, scm, licenses) + api.fetchRemoteLicense(uniqueId, scm, licenses, mapLicensesToSpdx) } val funding = mutableSetOf() diff --git a/plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/util/LicenseUtil.kt b/plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/util/LicenseUtil.kt index 050d58320..f877ed79e 100644 --- a/plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/util/LicenseUtil.kt +++ b/plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/util/LicenseUtil.kt @@ -28,15 +28,19 @@ object LicenseUtil { } } - fun License.loadSpdxLicense() { + fun License.loadSpdxLicense(mapToSpdx: Boolean = true) { val spdxId = spdxId ?: return try { val enumLicense = SpdxLicense.find(spdxId) if (enumLicense != null) { val singleLicense: String? = loadLicenseCached(enumLicense.getTxtUrl()) ?: loadLicenseCached(enumLicense.getFallbackTxtUrl()) if (singleLicense?.isNotBlank() == true) { - name = enumLicense.fullName - url = enumLicense.getUrl() + if (mapToSpdx || name.isBlank()) { + name = enumLicense.fullName + } + if (mapToSpdx || url.isNullOrBlank()) { + url = enumLicense.getUrl() + } content = singleLicense } } else { diff --git a/plugin-build/settings.gradle.kts b/plugin-build/settings.gradle.kts index 96d6e6974..3d3283b3a 100644 --- a/plugin-build/settings.gradle.kts +++ b/plugin-build/settings.gradle.kts @@ -22,7 +22,7 @@ dependencyResolutionManagement { from(files("../gradle/libs.versions.toml")) } create("baseLibs") { - from("com.mikepenz:version-catalog:0.1.1") + from("com.mikepenz:version-catalog:0.1.5") } } } \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 34c774a52..3a567d896 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -20,7 +20,7 @@ dependencyResolutionManagement { versionCatalogs { create("baseLibs") { - from("com.mikepenz:version-catalog:0.1.2") + from("com.mikepenz:version-catalog:0.1.5") } } }