diff --git a/components/ui-tooling-preview/library/build.gradle.kts b/components/ui-tooling-preview/library/build.gradle.kts index 55a138ca72f..964f3ddec85 100644 --- a/components/ui-tooling-preview/library/build.gradle.kts +++ b/components/ui-tooling-preview/library/build.gradle.kts @@ -1,4 +1,3 @@ -import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl plugins { @@ -31,6 +30,32 @@ kotlin { } macosX64() macosArm64() + + applyDefaultHierarchyTemplate() + + sourceSets { + val commonMain by getting + + androidMain.dependencies { + api(libs.androidx.ui.tooling.preview) + } + + val nonAndroidMain by creating { + dependsOn(commonMain) + } + + val appleMain by getting + appleMain.dependsOn(nonAndroidMain) + + val desktopMain by getting + desktopMain.dependsOn(nonAndroidMain) + + val jsMain by getting + jsMain.dependsOn(nonAndroidMain) + + val wasmJsMain by getting + wasmJsMain.dependsOn(nonAndroidMain) + } } android { diff --git a/components/ui-tooling-preview/library/src/androidMain/kotlin/org/jetbrains/compose/ui/tooling/preview/PreviewParameter.android.kt b/components/ui-tooling-preview/library/src/androidMain/kotlin/org/jetbrains/compose/ui/tooling/preview/PreviewParameter.android.kt new file mode 100644 index 00000000000..1130a54c7b7 --- /dev/null +++ b/components/ui-tooling-preview/library/src/androidMain/kotlin/org/jetbrains/compose/ui/tooling/preview/PreviewParameter.android.kt @@ -0,0 +1,23 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.compose.ui.tooling.preview + +/** + * Interface to be implemented by any provider of values that you want to be injected as @[Preview] + * parameters. This allows providing sample information for previews. + */ +actual typealias PreviewParameterProvider = androidx.compose.ui.tooling.preview.PreviewParameterProvider diff --git a/components/ui-tooling-preview/library/src/commonMain/kotlin/org/jetbrains/compose/ui/tooling/preview/PreviewParameter.kt b/components/ui-tooling-preview/library/src/commonMain/kotlin/org/jetbrains/compose/ui/tooling/preview/PreviewParameter.kt index ff1cf5753fc..c22ade1f2ab 100644 --- a/components/ui-tooling-preview/library/src/commonMain/kotlin/org/jetbrains/compose/ui/tooling/preview/PreviewParameter.kt +++ b/components/ui-tooling-preview/library/src/commonMain/kotlin/org/jetbrains/compose/ui/tooling/preview/PreviewParameter.kt @@ -22,7 +22,7 @@ import kotlin.reflect.KClass * Interface to be implemented by any provider of values that you want to be injected as @[Preview] * parameters. This allows providing sample information for previews. */ -interface PreviewParameterProvider { +expect interface PreviewParameterProvider { /** * [Sequence] of values of type [T] to be passed as @[Preview] parameter. */ @@ -31,7 +31,7 @@ interface PreviewParameterProvider { /** * Returns the number of elements in the [values] [Sequence]. */ - val count get() = values.count() + open val count: Int } /** diff --git a/components/ui-tooling-preview/library/src/nonAndroidMain/kotlin/org/jetbrains/compose/ui/tooling/preview/PreviewParameter.nonAndroid.kt b/components/ui-tooling-preview/library/src/nonAndroidMain/kotlin/org/jetbrains/compose/ui/tooling/preview/PreviewParameter.nonAndroid.kt new file mode 100644 index 00000000000..c3d652ed8c0 --- /dev/null +++ b/components/ui-tooling-preview/library/src/nonAndroidMain/kotlin/org/jetbrains/compose/ui/tooling/preview/PreviewParameter.nonAndroid.kt @@ -0,0 +1,34 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.compose.ui.tooling.preview + +/** + * Interface to be implemented by any provider of values that you want to be injected as @[Preview] + * parameters. This allows providing sample information for previews. + */ +actual interface PreviewParameterProvider { + /** + * [Sequence] of values of type [T] to be passed as @[Preview] parameter. + */ + actual val values: Sequence + + /** + * Returns the number of elements in the [values] [Sequence]. + */ + actual val count: Int + get() = values.count() +}