Update package to com.google.ai.edge.gallery

This commit is contained in:
Jing Jin 2025-05-19 16:59:37 -07:00
parent 7d567c3499
commit 96f838b550
105 changed files with 658 additions and 708 deletions

View file

@ -22,10 +22,11 @@ plugins {
}
android {
namespace = "com.google.aiedge.gallery"
namespace = "com.google.ai.edge.gallery"
compileSdk = 35
defaultConfig {
// Don't change to com.google.ai.edge.gallery yet.
applicationId = "com.google.aiedge.gallery"
minSdk = 26
targetSdk = 35
@ -33,7 +34,7 @@ android {
versionName = "0.9.4"
// Needed for HuggingFace auth workflows.
manifestPlaceholders["appAuthRedirectScheme"] = "com.google.aiedge.gallery.oauth"
manifestPlaceholders["appAuthRedirectScheme"] = "com.google.ai.edge.gallery.oauth"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}

View file

@ -1,40 +0,0 @@
/*
* Copyright 2025 Google LLC
*
* 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 com.google.aiedge.gallery
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.Assert.*
/**
* Instrumented test, which will execute on an Android device.
*
* See [testing documentation](http://d.android.com/tools/testing).
*/
@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {
@Test
fun useAppContext() {
// Context of the app under test.
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
assertEquals("com.google.aiedge.gallery", appContext.packageName)
}
}

View file

@ -27,7 +27,7 @@
android:required="false" />
<application
android:name=".GalleryApplication"
android:name="com.google.ai.edge.gallery.GalleryApplication"
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
@ -38,7 +38,7 @@
android:theme="@style/Theme.Gallery"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:name="com.google.ai.edge.gallery.MainActivity"
android:exported="true"
android:theme="@style/Theme.Gallery.SplashScreen"
android:screenOrientation="portrait"
@ -57,7 +57,7 @@
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="com.google.aiedge.gallery" />
<data android:scheme="com.google.ai.edge.gallery" />
</intent-filter>
</activity>

View file

@ -16,7 +16,7 @@
@file:OptIn(ExperimentalMaterial3Api::class)
package com.google.aiedge.gallery
package com.google.ai.edge.gallery
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
@ -49,9 +49,10 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.navigation.NavHostController
import androidx.navigation.compose.rememberNavController
import com.google.aiedge.gallery.data.AppBarAction
import com.google.aiedge.gallery.data.AppBarActionType
import com.google.aiedge.gallery.ui.navigation.GalleryNavHost
import com.google.ai.edge.gallery.R
import com.google.ai.edge.gallery.data.AppBarAction
import com.google.ai.edge.gallery.data.AppBarActionType
import com.google.ai.edge.gallery.ui.navigation.GalleryNavHost
/**
* Top level composable representing the main screen of the application.

View file

@ -14,16 +14,16 @@
* limitations under the License.
*/
package com.google.aiedge.gallery
package com.google.ai.edge.gallery
import android.app.Application
import android.content.Context
import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.Preferences
import androidx.datastore.preferences.preferencesDataStore
import com.google.aiedge.gallery.data.AppContainer
import com.google.aiedge.gallery.data.DefaultAppContainer
import com.google.aiedge.gallery.ui.theme.ThemeSettings
import com.google.ai.edge.gallery.data.AppContainer
import com.google.ai.edge.gallery.data.DefaultAppContainer
import com.google.ai.edge.gallery.ui.theme.ThemeSettings
private val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "app_gallery_preferences")

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery
package com.google.ai.edge.gallery
import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery
package com.google.ai.edge.gallery
import android.os.Bundle
import androidx.activity.ComponentActivity
@ -24,7 +24,7 @@ import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.Surface
import androidx.compose.ui.Modifier
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.data
package com.google.ai.edge.gallery.data
/** Possible action for app bar. */
enum class AppBarActionType {

View file

@ -14,13 +14,13 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.data
package com.google.ai.edge.gallery.data
import android.content.Context
import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.Preferences
import com.google.aiedge.gallery.GalleryLifecycleProvider
import com.google.aiedge.gallery.AppLifecycleProvider
import com.google.ai.edge.gallery.GalleryLifecycleProvider
import com.google.ai.edge.gallery.AppLifecycleProvider
/**
* App container for Dependency injection.

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.data
package com.google.ai.edge.gallery.data
/**
* The types of configuration editors available.

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.data
package com.google.ai.edge.gallery.data
import kotlinx.serialization.KSerializer
import kotlinx.serialization.Serializable

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.data
package com.google.ai.edge.gallery.data
// Keys used to send/receive data to Work.
const val KEY_MODEL_URL = "KEY_MODEL_URL"

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.data
package com.google.ai.edge.gallery.data
import android.security.keystore.KeyGenParameterSpec
import android.security.keystore.KeyProperties
@ -26,7 +26,7 @@ import androidx.datastore.preferences.core.longPreferencesKey
import androidx.datastore.preferences.core.stringPreferencesKey
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.google.aiedge.gallery.ui.theme.THEME_AUTO
import com.google.ai.edge.gallery.ui.theme.THEME_AUTO
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.runBlocking
import java.security.KeyStore

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.data
package com.google.ai.edge.gallery.data
import android.Manifest
import android.app.NotificationChannel
@ -37,9 +37,9 @@ import androidx.work.OutOfQuotaPolicy
import androidx.work.WorkInfo
import androidx.work.WorkManager
import androidx.work.WorkQuery
import com.google.aiedge.gallery.AppLifecycleProvider
import com.google.aiedge.gallery.R
import com.google.aiedge.gallery.worker.DownloadWorker
import com.google.ai.edge.gallery.AppLifecycleProvider
import com.google.ai.edge.gallery.R
import com.google.ai.edge.gallery.worker.DownloadWorker
import com.google.common.util.concurrent.FutureCallback
import com.google.common.util.concurrent.Futures
import com.google.common.util.concurrent.ListenableFuture
@ -112,7 +112,7 @@ class DefaultDownloadRepository(
// Create worker request.
val downloadWorkRequest =
OneTimeWorkRequestBuilder<DownloadWorker>().setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST)
.setInputData(inputData).addTag("${MODEL_NAME_TAG}:${model.name}").build()
.setInputData(inputData).addTag("$MODEL_NAME_TAG:${model.name}").build()
val workerId = downloadWorkRequest.id
@ -128,7 +128,7 @@ class DefaultDownloadRepository(
}
override fun cancelDownloadModel(model: Model) {
workManager.cancelAllWorkByTag("${MODEL_NAME_TAG}:${model.name}")
workManager.cancelAllWorkByTag("$MODEL_NAME_TAG:${model.name}")
}
override fun cancelAll(models: List<Model>, onComplete: () -> Unit) {
@ -138,7 +138,7 @@ class DefaultDownloadRepository(
}
val futures = mutableListOf<ListenableFuture<Operation.State.SUCCESS>>()
for (tag in models.map { "${MODEL_NAME_TAG}:${it.name}" }) {
for (tag in models.map { "$MODEL_NAME_TAG:${it.name}" }) {
futures.add(workManager.cancelAllWorkByTag(tag).result)
}
val combinedFuture: ListenableFuture<List<Operation.State.SUCCESS>> = Futures.allAsList(futures)
@ -248,7 +248,7 @@ class DefaultDownloadRepository(
var modelName = ""
Log.d(TAG, "work: ${info.id}, tags: $tags")
for (tag in tags) {
if (tag.startsWith("${MODEL_NAME_TAG}:")) {
if (tag.startsWith("$MODEL_NAME_TAG:")) {
val index = tag.indexOf(':')
if (index >= 0) {
modelName = tag.substring(index + 1)
@ -282,7 +282,7 @@ class DefaultDownloadRepository(
// Create an Intent to open your app with a deep link.
val intent = Intent(
Intent.ACTION_VIEW,
Uri.parse("com.google.aiedge.gallery://model/${modelName}")
Uri.parse("com.google.ai.edge.gallery://model/${modelName}")
).apply {
flags = Intent.FLAG_ACTIVITY_NEW_TASK
}

View file

@ -14,11 +14,11 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.data
package com.google.ai.edge.gallery.data
import android.content.Context
import com.google.aiedge.gallery.ui.common.chat.PromptTemplate
import com.google.aiedge.gallery.ui.common.convertValueToTargetType
import com.google.ai.edge.gallery.ui.common.chat.PromptTemplate
import com.google.ai.edge.gallery.ui.common.convertValueToTargetType
import java.io.File
data class ModelDataFile(

View file

@ -14,13 +14,13 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.data
package com.google.ai.edge.gallery.data
import com.google.aiedge.gallery.ui.llmchat.DEFAULT_ACCELERATORS
import com.google.aiedge.gallery.ui.llmchat.DEFAULT_TEMPERATURE
import com.google.aiedge.gallery.ui.llmchat.DEFAULT_TOPK
import com.google.aiedge.gallery.ui.llmchat.DEFAULT_TOPP
import com.google.aiedge.gallery.ui.llmchat.createLlmChatConfigs
import com.google.ai.edge.gallery.ui.llmchat.DEFAULT_ACCELERATORS
import com.google.ai.edge.gallery.ui.llmchat.DEFAULT_TEMPERATURE
import com.google.ai.edge.gallery.ui.llmchat.DEFAULT_TOPK
import com.google.ai.edge.gallery.ui.llmchat.DEFAULT_TOPP
import com.google.ai.edge.gallery.ui.llmchat.createLlmChatConfigs
import kotlinx.serialization.Serializable
/** A model in the model allowlist. */

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.data
package com.google.ai.edge.gallery.data
import androidx.annotation.StringRes
import androidx.compose.material.icons.Icons
@ -25,7 +25,7 @@ import androidx.compose.material.icons.rounded.ImageSearch
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.mutableLongStateOf
import androidx.compose.ui.graphics.vector.ImageVector
import com.google.aiedge.gallery.R
import com.google.ai.edge.gallery.R
/** Type of task. */
enum class TaskType(val label: String, val id: String) {
@ -96,7 +96,7 @@ val TASK_LLM_CHAT = Task(
models = mutableListOf(),
description = "Chat with on-device large language models",
docUrl = "https://ai.google.dev/edge/mediapipe/solutions/genai/llm_inference/android",
sourceCodeUrl = "https://github.com/google-ai-edge/gallery/blob/main/Android/src/app/src/main/java/com/google/aiedge/gallery/ui/llmchat/LlmChatModelHelper.kt",
sourceCodeUrl = "https://github.com/google-ai-edge/gallery/blob/main/Android/src/app/src/main/java/com/google/ai/edge/gallery/ui/llmchat/LlmChatModelHelper.kt",
textInputPlaceHolderRes = R.string.text_input_placeholder_llm_chat
)
@ -106,7 +106,7 @@ val TASK_LLM_PROMPT_LAB = Task(
models = mutableListOf(),
description = "Single turn use cases with on-device large language model",
docUrl = "https://ai.google.dev/edge/mediapipe/solutions/genai/llm_inference/android",
sourceCodeUrl = "https://github.com/google-ai-edge/gallery/blob/main/Android/src/app/src/main/java/com/google/aiedge/gallery/ui/llmchat/LlmChatModelHelper.kt",
sourceCodeUrl = "https://github.com/google-ai-edge/gallery/blob/main/Android/src/app/src/main/java/com/google/ai/edge/gallery/ui/llmchat/LlmChatModelHelper.kt",
textInputPlaceHolderRes = R.string.text_input_placeholder_llm_chat
)
@ -116,7 +116,7 @@ val TASK_LLM_ASK_IMAGE = Task(
models = mutableListOf(),
description = "Ask questions about images with on-device large language models",
docUrl = "https://ai.google.dev/edge/mediapipe/solutions/genai/llm_inference/android",
sourceCodeUrl = "https://github.com/google-ai-edge/gallery/blob/main/Android/src/app/src/main/java/com/google/aiedge/gallery/ui/llmchat/LlmChatModelHelper.kt",
sourceCodeUrl = "https://github.com/google-ai-edge/gallery/blob/main/Android/src/app/src/main/java/com/google/ai/edge/gallery/ui/llmchat/LlmChatModelHelper.kt",
textInputPlaceHolderRes = R.string.text_input_placeholder_llm_chat
)
@ -126,7 +126,7 @@ val TASK_IMAGE_GENERATION = Task(
models = MODELS_IMAGE_GENERATION,
description = "Generate images from text",
docUrl = "https://ai.google.dev/edge/mediapipe/solutions/vision/image_generator/android",
sourceCodeUrl = "https://github.com/google-ai-edge/gallery/blob/main/Android/src/app/src/main/java/com/google/aiedge/gallery/ui/imagegeneration/ImageGenerationModelHelper.kt",
sourceCodeUrl = "https://github.com/google-ai-edge/gallery/blob/main/Android/src/app/src/main/java/com/google/ai/edge/gallery/ui/imagegeneration/ImageGenerationModelHelper.kt",
textInputPlaceHolderRes = R.string.text_image_generation_text_field_placeholder
)

View file

@ -14,21 +14,21 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui
package com.google.ai.edge.gallery.ui
import android.app.Application
import androidx.lifecycle.ViewModelProvider.AndroidViewModelFactory
import androidx.lifecycle.viewmodel.CreationExtras
import androidx.lifecycle.viewmodel.initializer
import androidx.lifecycle.viewmodel.viewModelFactory
import com.google.aiedge.gallery.GalleryApplication
import com.google.aiedge.gallery.ui.imageclassification.ImageClassificationViewModel
import com.google.aiedge.gallery.ui.imagegeneration.ImageGenerationViewModel
import com.google.aiedge.gallery.ui.llmchat.LlmChatViewModel
import com.google.aiedge.gallery.ui.llmchat.LlmAskImageViewModel
import com.google.aiedge.gallery.ui.llmsingleturn.LlmSingleTurnViewModel
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.aiedge.gallery.ui.textclassification.TextClassificationViewModel
import com.google.ai.edge.gallery.GalleryApplication
import com.google.ai.edge.gallery.ui.imageclassification.ImageClassificationViewModel
import com.google.ai.edge.gallery.ui.imagegeneration.ImageGenerationViewModel
import com.google.ai.edge.gallery.ui.llmchat.LlmChatViewModel
import com.google.ai.edge.gallery.ui.llmchat.LlmAskImageViewModel
import com.google.ai.edge.gallery.ui.llmsingleturn.LlmSingleTurnViewModel
import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.ai.edge.gallery.ui.textclassification.TextClassificationViewModel
object ViewModelProvider {
val Factory = viewModelFactory {

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common
package com.google.ai.edge.gallery.ui.common
import android.net.Uri
import net.openid.appauth.AuthorizationServiceConfiguration
@ -27,7 +27,7 @@ object AuthConfig {
// The scheme needs to match the
// "android.defaultConfig.manifestPlaceholders["appAuthRedirectScheme"]" field in
// "build.gradle.kts".
const val redirectUri = "com.google.aiedge.gallery.oauth://oauthredirect"
const val redirectUri = "com.google.ai.edge.gallery.oauth://oauthredirect"
// OAuth 2.0 Endpoints (Authorization + Token Exchange)
private const val authEndpoint = "https://huggingface.co/oauth/authorize"

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common
package com.google.ai.edge.gallery.ui.common
import android.content.Intent
import android.net.Uri
@ -51,11 +51,11 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.data.Task
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.aiedge.gallery.ui.modelmanager.TokenRequestResultType
import com.google.aiedge.gallery.ui.modelmanager.TokenStatus
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.data.Task
import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.ai.edge.gallery.ui.modelmanager.TokenRequestResultType
import com.google.ai.edge.gallery.ui.modelmanager.TokenStatus
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common
package com.google.ai.edge.gallery.ui.common
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common
package com.google.ai.edge.gallery.ui.common
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
@ -48,12 +48,12 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.data.ModelDownloadStatusType
import com.google.aiedge.gallery.data.Task
import com.google.aiedge.gallery.ui.common.chat.ConfigDialog
import com.google.aiedge.gallery.ui.modelmanager.ModelInitializationStatusType
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.data.ModelDownloadStatusType
import com.google.ai.edge.gallery.data.Task
import com.google.ai.edge.gallery.ui.common.chat.ConfigDialog
import com.google.ai.edge.gallery.ui.modelmanager.ModelInitializationStatusType
import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
@OptIn(ExperimentalMaterial3Api::class)
@Composable

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common
package com.google.ai.edge.gallery.ui.common
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
@ -41,14 +41,14 @@ import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.data.Task
import com.google.aiedge.gallery.ui.common.modelitem.StatusIcon
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.aiedge.gallery.ui.preview.PreviewModelManagerViewModel
import com.google.aiedge.gallery.ui.preview.TASK_TEST1
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.aiedge.gallery.ui.theme.labelSmallNarrow
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.data.Task
import com.google.ai.edge.gallery.ui.common.modelitem.StatusIcon
import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.ai.edge.gallery.ui.preview.PreviewModelManagerViewModel
import com.google.ai.edge.gallery.ui.preview.TASK_TEST1
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.ui.theme.labelSmallNarrow
@Composable
fun ModelPicker(

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common
package com.google.ai.edge.gallery.ui.common
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.fadeIn
@ -59,11 +59,11 @@ import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.platform.LocalWindowInfo
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.data.Task
import com.google.aiedge.gallery.ui.common.modelitem.StatusIcon
import com.google.aiedge.gallery.ui.modelmanager.ModelInitializationStatusType
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.data.Task
import com.google.ai.edge.gallery.ui.common.modelitem.StatusIcon
import com.google.ai.edge.gallery.ui.modelmanager.ModelInitializationStatusType
import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlin.math.absoluteValue

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common
package com.google.ai.edge.gallery.ui.common
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
@ -41,12 +41,12 @@ import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.R
import com.google.aiedge.gallery.data.TASKS
import com.google.aiedge.gallery.data.TASK_LLM_CHAT
import com.google.aiedge.gallery.data.Task
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.aiedge.gallery.ui.theme.customColors
import com.google.ai.edge.gallery.R
import com.google.ai.edge.gallery.data.TASKS
import com.google.ai.edge.gallery.data.TASK_LLM_CHAT
import com.google.ai.edge.gallery.data.Task
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.ui.theme.customColors
private val SHAPES: List<Int> =
listOf(R.drawable.pantegon, R.drawable.double_circle, R.drawable.circle, R.drawable.four_circle)

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common
package com.google.ai.edge.gallery.ui.common
import android.Manifest
import android.content.Context
@ -28,18 +28,18 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.Color
import androidx.core.content.ContextCompat
import androidx.core.content.FileProvider
import com.google.aiedge.gallery.data.Config
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.data.TASKS
import com.google.aiedge.gallery.data.Task
import com.google.aiedge.gallery.data.ValueType
import com.google.aiedge.gallery.ui.common.chat.ChatMessageBenchmarkResult
import com.google.aiedge.gallery.ui.common.chat.ChatMessageType
import com.google.aiedge.gallery.ui.common.chat.ChatViewModel
import com.google.aiedge.gallery.ui.common.chat.Histogram
import com.google.aiedge.gallery.ui.common.chat.Stat
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.aiedge.gallery.ui.theme.customColors
import com.google.ai.edge.gallery.data.Config
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.data.TASKS
import com.google.ai.edge.gallery.data.Task
import com.google.ai.edge.gallery.data.ValueType
import com.google.ai.edge.gallery.ui.common.chat.ChatMessageBenchmarkResult
import com.google.ai.edge.gallery.ui.common.chat.ChatMessageType
import com.google.ai.edge.gallery.ui.common.chat.ChatViewModel
import com.google.ai.edge.gallery.ui.common.chat.Histogram
import com.google.ai.edge.gallery.ui.common.chat.Stat
import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.ai.edge.gallery.ui.theme.customColors
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.json.Json
import java.io.File
@ -207,7 +207,9 @@ fun Context.createTempPictureUri(
}
return FileProvider.getUriForFile(
applicationContext, "com.google.aiedge.gallery.provider", tempFile
applicationContext,
"com.google.aiedge.gallery.provider" /* {applicationId}.provider */,
tempFile
)
}

View file

@ -14,16 +14,16 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
import com.google.aiedge.gallery.data.Config
import com.google.aiedge.gallery.data.ConfigKey
import com.google.aiedge.gallery.data.NumberSliderConfig
import com.google.aiedge.gallery.data.ValueType
import com.google.aiedge.gallery.ui.common.convertValueToTargetType
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.data.Config
import com.google.ai.edge.gallery.data.ConfigKey
import com.google.ai.edge.gallery.data.NumberSliderConfig
import com.google.ai.edge.gallery.data.ValueType
import com.google.ai.edge.gallery.ui.common.convertValueToTargetType
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
private const val DEFAULT_BENCHMARK_WARM_UP_ITERATIONS = 50f
private const val DEFAULT_BENCHMARK_ITERATIONS = 200f

View file

@ -14,13 +14,13 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import android.graphics.Bitmap
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.ImageBitmap
import androidx.compose.ui.unit.Dp
import com.google.aiedge.gallery.data.Model
import com.google.ai.edge.gallery.data.Model
enum class ChatMessageType {
INFO,

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.ExperimentalSharedTransitionApi
@ -94,18 +94,18 @@ import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.IntSize
import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.R
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.data.Task
import com.google.aiedge.gallery.data.TaskType
import com.google.aiedge.gallery.ui.common.ErrorDialog
import com.google.aiedge.gallery.ui.modelmanager.ModelInitializationStatusType
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.aiedge.gallery.ui.preview.PreviewChatModel
import com.google.aiedge.gallery.ui.preview.PreviewModelManagerViewModel
import com.google.aiedge.gallery.ui.preview.TASK_TEST1
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.aiedge.gallery.ui.theme.customColors
import com.google.ai.edge.gallery.R
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.data.Task
import com.google.ai.edge.gallery.data.TaskType
import com.google.ai.edge.gallery.ui.common.ErrorDialog
import com.google.ai.edge.gallery.ui.modelmanager.ModelInitializationStatusType
import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.ai.edge.gallery.ui.preview.PreviewChatModel
import com.google.ai.edge.gallery.ui.preview.PreviewModelManagerViewModel
import com.google.ai.edge.gallery.ui.preview.TASK_TEST1
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.ui.theme.customColors
import kotlinx.coroutines.launch
enum class ChatInputType {
@ -301,8 +301,7 @@ fun ChatPanel(
is ChatMessageConfigValuesChange -> MessageBodyConfigUpdate(message = message)
// Prompt templates.
is ChatMessagePromptTemplates -> MessageBodyPromptTemplates(
message = message,
is ChatMessagePromptTemplates -> MessageBodyPromptTemplates(message = message,
task = task,
onPromptClicked = { template ->
onSendMessage(

View file

@ -14,12 +14,11 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import android.util.Log
import androidx.activity.compose.BackHandler
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
@ -28,7 +27,6 @@ import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
@ -38,23 +36,20 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.runtime.snapshotFlow
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.graphicsLayer
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.data.ModelDownloadStatusType
import com.google.aiedge.gallery.data.Task
import com.google.aiedge.gallery.ui.common.ModelPageAppBar
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.aiedge.gallery.ui.modelmanager.PagerScrollState
import com.google.aiedge.gallery.ui.preview.PreviewChatModel
import com.google.aiedge.gallery.ui.preview.PreviewModelManagerViewModel
import com.google.aiedge.gallery.ui.preview.TASK_TEST1
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.data.ModelDownloadStatusType
import com.google.ai.edge.gallery.data.Task
import com.google.ai.edge.gallery.ui.common.ModelPageAppBar
import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.ai.edge.gallery.ui.modelmanager.PagerScrollState
import com.google.ai.edge.gallery.ui.preview.PreviewChatModel
import com.google.ai.edge.gallery.ui.preview.PreviewModelManagerViewModel
import com.google.ai.edge.gallery.ui.preview.TASK_TEST1
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlin.math.absoluteValue

View file

@ -14,13 +14,13 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import android.util.Log
import androidx.lifecycle.ViewModel
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.data.Task
import com.google.aiedge.gallery.ui.common.processLlmResponse
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.data.Task
import com.google.ai.edge.gallery.ui.common.processLlmResponse
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.update

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import android.util.Log
import androidx.compose.foundation.border
@ -64,15 +64,15 @@ import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
import com.google.aiedge.gallery.data.BooleanSwitchConfig
import com.google.aiedge.gallery.data.Config
import com.google.aiedge.gallery.data.LabelConfig
import com.google.aiedge.gallery.data.NumberSliderConfig
import com.google.aiedge.gallery.data.SegmentedButtonConfig
import com.google.aiedge.gallery.data.ValueType
import com.google.aiedge.gallery.ui.preview.MODEL_TEST1
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.aiedge.gallery.ui.theme.labelSmallNarrow
import com.google.ai.edge.gallery.data.BooleanSwitchConfig
import com.google.ai.edge.gallery.data.Config
import com.google.ai.edge.gallery.data.LabelConfig
import com.google.ai.edge.gallery.data.NumberSliderConfig
import com.google.ai.edge.gallery.data.SegmentedButtonConfig
import com.google.ai.edge.gallery.data.ValueType
import com.google.ai.edge.gallery.ui.preview.MODEL_TEST1
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.ui.theme.labelSmallNarrow
import kotlin.Double.Companion.NaN
private const val TAG = "AGConfigDialog"

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
@ -28,11 +28,11 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.aiedge.gallery.ui.theme.bodySmallMediumNarrow
import com.google.aiedge.gallery.ui.theme.bodySmallMediumNarrowBold
import com.google.aiedge.gallery.ui.theme.labelSmallNarrow
import com.google.aiedge.gallery.ui.theme.labelSmallNarrowMedium
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.ui.theme.bodySmallMediumNarrow
import com.google.ai.edge.gallery.ui.theme.bodySmallMediumNarrowBold
import com.google.ai.edge.gallery.ui.theme.labelSmallNarrow
import com.google.ai.edge.gallery.ui.theme.labelSmallNarrowMedium
/**
* Composable function to display a data card with a label and a numeric value.

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import android.graphics.Bitmap
import android.graphics.Matrix

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ProvideTextStyle
@ -26,8 +26,8 @@ import androidx.compose.ui.text.TextLinkStyles
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.tooling.preview.Preview
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.aiedge.gallery.ui.theme.customColors
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.ui.theme.customColors
import com.halilibo.richtext.commonmark.Markdown
import com.halilibo.richtext.ui.CodeBlockStyle
import com.halilibo.richtext.ui.RichTextStyle

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
@ -37,8 +37,8 @@ import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.aiedge.gallery.ui.theme.bodySmallNarrow
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.ui.theme.bodySmallNarrow
/**
* Composable function to display an action button below a chat message.

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
@ -33,7 +33,7 @@ import androidx.compose.ui.draw.alpha
import androidx.compose.ui.draw.clip
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import kotlin.math.max
private const val DEFAULT_HISTOGRAM_BAR_HEIGHT = 50f

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
@ -25,7 +25,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
/**
* Composable function to display benchmark LLM results within a chat message.

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
@ -36,7 +36,7 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
val CLASSIFICATION_BAR_HEIGHT = 8.dp
val CLASSIFICATION_BAR_MAX_WIDTH = 200.dp

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
@ -37,13 +37,13 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.google.aiedge.gallery.data.ConfigKey
import com.google.aiedge.gallery.ui.common.convertValueToTargetType
import com.google.aiedge.gallery.ui.common.getConfigValueString
import com.google.aiedge.gallery.ui.preview.MODEL_TEST1
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.aiedge.gallery.ui.theme.bodySmallNarrow
import com.google.aiedge.gallery.ui.theme.titleSmaller
import com.google.ai.edge.gallery.data.ConfigKey
import com.google.ai.edge.gallery.ui.common.convertValueToTargetType
import com.google.ai.edge.gallery.ui.common.getConfigValueString
import com.google.ai.edge.gallery.ui.preview.MODEL_TEST1
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.ui.theme.bodySmallNarrow
import com.google.ai.edge.gallery.ui.theme.titleSmaller
/**
* Composable function to display a message indicating configuration value changes.

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.height

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import androidx.compose.foundation.Image
import androidx.compose.foundation.gestures.detectHorizontalDragGestures

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
@ -29,8 +29,8 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.aiedge.gallery.ui.theme.customColors
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.ui.theme.customColors
/**
* Composable function to display informational message content within a chat.

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import androidx.compose.animation.core.Animatable
import androidx.compose.animation.core.tween
@ -35,9 +35,9 @@ import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.R
import com.google.aiedge.gallery.ui.common.getTaskIconColor
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.R
import com.google.ai.edge.gallery.ui.common.getTaskIconColor
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import androidx.compose.foundation.background
import androidx.compose.foundation.border
@ -43,11 +43,11 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.data.Task
import com.google.aiedge.gallery.ui.common.getTaskIconColor
import com.google.aiedge.gallery.ui.preview.ALL_PREVIEW_TASKS
import com.google.aiedge.gallery.ui.preview.TASK_TEST1
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.data.Task
import com.google.ai.edge.gallery.ui.common.getTaskIconColor
import com.google.ai.edge.gallery.ui.preview.ALL_PREVIEW_TASKS
import com.google.ai.edge.gallery.ui.preview.TASK_TEST1
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
private const val CARD_HEIGHT = 100

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Column
@ -28,7 +28,7 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
/**
* Composable function to display the text content of a ChatMessageText.

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
@ -29,7 +29,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
/**
* Composable function to display warning message content within a chat.

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import androidx.compose.ui.geometry.CornerRadius
import androidx.compose.ui.geometry.RoundRect

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import android.Manifest
import android.content.Context
@ -52,8 +52,8 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.core.content.ContextCompat
import com.google.aiedge.gallery.ui.common.createTempPictureUri
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.ui.common.createTempPictureUri
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
private const val TAG = "AGMessageInputImage"

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import android.Manifest
import android.content.Context
@ -80,11 +80,11 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.core.content.ContextCompat
import com.google.aiedge.gallery.R
import com.google.aiedge.gallery.ui.common.createTempPictureUri
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.aiedge.gallery.ui.preview.PreviewModelManagerViewModel
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.R
import com.google.ai.edge.gallery.ui.common.createTempPictureUri
import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.ai.edge.gallery.ui.preview.PreviewModelManagerViewModel
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
/**
* Composable function to display a text input field for composing chat messages.

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
@ -26,8 +26,8 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.ui.common.humanReadableDuration
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.ui.common.humanReadableDuration
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
/**
* Composable function to display the latency of a chat message, if available.

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import android.graphics.Bitmap
import androidx.annotation.StringRes
@ -35,10 +35,10 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.R
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.aiedge.gallery.ui.theme.bodySmallNarrow
import com.google.aiedge.gallery.ui.theme.bodySmallSemiBold
import com.google.ai.edge.gallery.R
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.ui.theme.bodySmallNarrow
import com.google.ai.edge.gallery.ui.theme.bodySmallSemiBold
data class MessageLayoutConfig(
val horizontalArrangement: Arrangement.Horizontal,

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.fadeIn
@ -34,11 +34,11 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.data.ModelDownloadStatusType
import com.google.aiedge.gallery.data.Task
import com.google.aiedge.gallery.ui.common.DownloadAndTryButton
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.data.ModelDownloadStatusType
import com.google.ai.edge.gallery.data.Task
import com.google.ai.edge.gallery.ui.common.DownloadAndTryButton
import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import kotlinx.coroutines.delay
@Composable

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import androidx.compose.animation.core.Animatable
import androidx.compose.animation.core.Easing
@ -54,19 +54,19 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.google.aiedge.gallery.R
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.data.ModelDownloadStatusType
import com.google.aiedge.gallery.data.Task
import com.google.aiedge.gallery.ui.common.formatToHourMinSecond
import com.google.aiedge.gallery.ui.common.getTaskIconColor
import com.google.aiedge.gallery.ui.common.humanReadableSize
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.aiedge.gallery.ui.preview.MODEL_TEST1
import com.google.aiedge.gallery.ui.preview.PreviewModelManagerViewModel
import com.google.aiedge.gallery.ui.preview.TASK_TEST1
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.aiedge.gallery.ui.theme.labelSmallNarrow
import com.google.ai.edge.gallery.R
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.data.ModelDownloadStatusType
import com.google.ai.edge.gallery.data.Task
import com.google.ai.edge.gallery.ui.common.formatToHourMinSecond
import com.google.ai.edge.gallery.ui.common.getTaskIconColor
import com.google.ai.edge.gallery.ui.common.humanReadableSize
import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.ai.edge.gallery.ui.preview.MODEL_TEST1
import com.google.ai.edge.gallery.ui.preview.PreviewModelManagerViewModel
import com.google.ai.edge.gallery.ui.preview.TASK_TEST1
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.ui.theme.labelSmallNarrow
import kotlinx.coroutines.delay
import kotlin.math.cos
import kotlin.math.pow

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
@ -36,8 +36,8 @@ import androidx.compose.ui.draw.clip
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.R
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.R
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
/**
* Composable function to display a visual indicator for model initialization status.

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
@ -25,7 +25,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
/**
* Composable function to display a button to download model if the model has not been downloaded.

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
@ -33,15 +33,15 @@ import androidx.compose.ui.graphics.graphicsLayer
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.data.Task
import com.google.aiedge.gallery.ui.common.convertValueToTargetType
import com.google.aiedge.gallery.ui.common.modelitem.ModelItem
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.aiedge.gallery.ui.preview.PreviewModelManagerViewModel
import com.google.aiedge.gallery.ui.preview.TASK_TEST1
import com.google.aiedge.gallery.ui.preview.TASK_TEST2
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.data.Task
import com.google.ai.edge.gallery.ui.common.convertValueToTargetType
import com.google.ai.edge.gallery.ui.common.modelitem.ModelItem
import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.ai.edge.gallery.ui.preview.PreviewModelManagerViewModel
import com.google.ai.edge.gallery.ui.preview.TASK_TEST1
import com.google.ai.edge.gallery.ui.preview.TASK_TEST2
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
/**
* Composable function to display a selectable model item with an option to configure its settings.

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.chat
package com.google.ai.edge.gallery.ui.common.chat
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
@ -55,9 +55,9 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.R
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.aiedge.gallery.ui.theme.customColors
import com.google.ai.edge.gallery.R
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.ui.theme.customColors
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.modelitem
package com.google.ai.edge.gallery.ui.common.modelitem
import androidx.compose.animation.core.DeferredTargetAnimation
import androidx.compose.animation.core.ExperimentalAnimatableApi

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.modelitem
package com.google.ai.edge.gallery.ui.common.modelitem
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Button
@ -22,8 +22,8 @@ import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.ui.res.stringResource
import com.google.aiedge.gallery.R
import com.google.aiedge.gallery.data.Model
import com.google.ai.edge.gallery.R
import com.google.ai.edge.gallery.data.Model
/**
* Composable function to display a confirmation dialog for deleting a model.

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.modelitem
package com.google.ai.edge.gallery.ui.common.modelitem
import android.content.Intent
import android.net.Uri
@ -55,24 +55,24 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.data.ModelDownloadStatusType
import com.google.aiedge.gallery.data.Task
import com.google.aiedge.gallery.ui.common.DownloadAndTryButton
import com.google.aiedge.gallery.ui.common.TaskIcon
import com.google.aiedge.gallery.ui.common.chat.MarkdownText
import com.google.aiedge.gallery.ui.common.checkNotificationPermissionAndStartDownload
import com.google.aiedge.gallery.ui.common.getTaskBgColor
import com.google.aiedge.gallery.ui.common.getTaskIconColor
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.aiedge.gallery.ui.preview.MODEL_TEST1
import com.google.aiedge.gallery.ui.preview.MODEL_TEST2
import com.google.aiedge.gallery.ui.preview.MODEL_TEST3
import com.google.aiedge.gallery.ui.preview.MODEL_TEST4
import com.google.aiedge.gallery.ui.preview.PreviewModelManagerViewModel
import com.google.aiedge.gallery.ui.preview.TASK_TEST1
import com.google.aiedge.gallery.ui.preview.TASK_TEST2
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.data.ModelDownloadStatusType
import com.google.ai.edge.gallery.data.Task
import com.google.ai.edge.gallery.ui.common.DownloadAndTryButton
import com.google.ai.edge.gallery.ui.common.TaskIcon
import com.google.ai.edge.gallery.ui.common.chat.MarkdownText
import com.google.ai.edge.gallery.ui.common.checkNotificationPermissionAndStartDownload
import com.google.ai.edge.gallery.ui.common.getTaskBgColor
import com.google.ai.edge.gallery.ui.common.getTaskIconColor
import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.ai.edge.gallery.ui.preview.MODEL_TEST1
import com.google.ai.edge.gallery.ui.preview.MODEL_TEST2
import com.google.ai.edge.gallery.ui.preview.MODEL_TEST3
import com.google.ai.edge.gallery.ui.preview.MODEL_TEST4
import com.google.ai.edge.gallery.ui.preview.PreviewModelManagerViewModel
import com.google.ai.edge.gallery.ui.preview.TASK_TEST1
import com.google.ai.edge.gallery.ui.preview.TASK_TEST2
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
private val DEFAULT_VERTICAL_PADDING = 16.dp

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.modelitem
package com.google.ai.edge.gallery.ui.common.modelitem
import android.content.Context
import androidx.compose.foundation.layout.Row
@ -35,12 +35,12 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.data.ModelDownloadStatus
import com.google.aiedge.gallery.data.ModelDownloadStatusType
import com.google.aiedge.gallery.data.Task
import com.google.aiedge.gallery.ui.common.getTaskIconColor
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.data.ModelDownloadStatus
import com.google.ai.edge.gallery.data.ModelDownloadStatusType
import com.google.ai.edge.gallery.data.Task
import com.google.ai.edge.gallery.ui.common.getTaskIconColor
import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
/**
* Composable function to display action buttons for a model item, based on its download status.

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.modelitem
package com.google.ai.edge.gallery.ui.common.modelitem
import androidx.compose.animation.AnimatedVisibilityScope
import androidx.compose.animation.ExperimentalSharedTransitionApi
@ -33,19 +33,18 @@ import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.focusModifier
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.data.ModelDownloadStatus
import com.google.aiedge.gallery.data.ModelDownloadStatusType
import com.google.aiedge.gallery.data.Task
import com.google.aiedge.gallery.ui.common.formatToHourMinSecond
import com.google.aiedge.gallery.ui.common.getTaskIconColor
import com.google.aiedge.gallery.ui.common.humanReadableSize
import com.google.aiedge.gallery.ui.theme.labelSmallNarrow
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.data.ModelDownloadStatus
import com.google.ai.edge.gallery.data.ModelDownloadStatusType
import com.google.ai.edge.gallery.data.Task
import com.google.ai.edge.gallery.ui.common.formatToHourMinSecond
import com.google.ai.edge.gallery.ui.common.getTaskIconColor
import com.google.ai.edge.gallery.ui.common.humanReadableSize
import com.google.ai.edge.gallery.ui.theme.labelSmallNarrow
/**
* Composable function to display the model name and its download status information.

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.common.modelitem
package com.google.ai.edge.gallery.ui.common.modelitem
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
@ -33,10 +33,10 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.data.ModelDownloadStatus
import com.google.aiedge.gallery.data.ModelDownloadStatusType
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.aiedge.gallery.ui.theme.customColors
import com.google.ai.edge.gallery.data.ModelDownloadStatus
import com.google.ai.edge.gallery.data.ModelDownloadStatusType
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.ui.theme.customColors
/**
* Composable function to display an icon representing the download status of a model.

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.home
package com.google.ai.edge.gallery.ui.home
import android.content.Context
import android.content.Intent
@ -98,19 +98,19 @@ import androidx.compose.ui.text.withLink
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.google.aiedge.gallery.GalleryTopAppBar
import com.google.aiedge.gallery.R
import com.google.aiedge.gallery.data.AppBarAction
import com.google.aiedge.gallery.data.AppBarActionType
import com.google.aiedge.gallery.data.ImportedModelInfo
import com.google.aiedge.gallery.data.Task
import com.google.aiedge.gallery.ui.common.TaskIcon
import com.google.aiedge.gallery.ui.common.getTaskBgColor
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.aiedge.gallery.ui.preview.PreviewModelManagerViewModel
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.aiedge.gallery.ui.theme.customColors
import com.google.aiedge.gallery.ui.theme.titleMediumNarrow
import com.google.ai.edge.gallery.GalleryTopAppBar
import com.google.ai.edge.gallery.R
import com.google.ai.edge.gallery.data.AppBarAction
import com.google.ai.edge.gallery.data.AppBarActionType
import com.google.ai.edge.gallery.data.ImportedModelInfo
import com.google.ai.edge.gallery.data.Task
import com.google.ai.edge.gallery.ui.common.TaskIcon
import com.google.ai.edge.gallery.ui.common.getTaskBgColor
import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.ai.edge.gallery.ui.preview.PreviewModelManagerViewModel
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.ui.theme.customColors
import com.google.ai.edge.gallery.ui.theme.titleMediumNarrow
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.home
package com.google.ai.edge.gallery.ui.home
import android.content.Context
import android.net.Uri
@ -59,23 +59,23 @@ import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
import androidx.compose.ui.window.DialogProperties
import com.google.aiedge.gallery.data.Accelerator
import com.google.aiedge.gallery.data.BooleanSwitchConfig
import com.google.aiedge.gallery.data.Config
import com.google.aiedge.gallery.data.ConfigKey
import com.google.aiedge.gallery.data.IMPORTS_DIR
import com.google.aiedge.gallery.data.LabelConfig
import com.google.aiedge.gallery.data.ImportedModelInfo
import com.google.aiedge.gallery.data.NumberSliderConfig
import com.google.aiedge.gallery.data.SegmentedButtonConfig
import com.google.aiedge.gallery.data.ValueType
import com.google.aiedge.gallery.ui.common.chat.ConfigEditorsPanel
import com.google.aiedge.gallery.ui.common.ensureValidFileName
import com.google.aiedge.gallery.ui.common.humanReadableSize
import com.google.aiedge.gallery.ui.llmchat.DEFAULT_MAX_TOKEN
import com.google.aiedge.gallery.ui.llmchat.DEFAULT_TEMPERATURE
import com.google.aiedge.gallery.ui.llmchat.DEFAULT_TOPK
import com.google.aiedge.gallery.ui.llmchat.DEFAULT_TOPP
import com.google.ai.edge.gallery.data.Accelerator
import com.google.ai.edge.gallery.data.BooleanSwitchConfig
import com.google.ai.edge.gallery.data.Config
import com.google.ai.edge.gallery.data.ConfigKey
import com.google.ai.edge.gallery.data.IMPORTS_DIR
import com.google.ai.edge.gallery.data.LabelConfig
import com.google.ai.edge.gallery.data.ImportedModelInfo
import com.google.ai.edge.gallery.data.NumberSliderConfig
import com.google.ai.edge.gallery.data.SegmentedButtonConfig
import com.google.ai.edge.gallery.data.ValueType
import com.google.ai.edge.gallery.ui.common.chat.ConfigEditorsPanel
import com.google.ai.edge.gallery.ui.common.ensureValidFileName
import com.google.ai.edge.gallery.ui.common.humanReadableSize
import com.google.ai.edge.gallery.ui.llmchat.DEFAULT_MAX_TOKEN
import com.google.ai.edge.gallery.ui.llmchat.DEFAULT_TEMPERATURE
import com.google.ai.edge.gallery.ui.llmchat.DEFAULT_TOPK
import com.google.ai.edge.gallery.ui.llmchat.DEFAULT_TOPP
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch

View file

@ -1,4 +1,4 @@
package com.google.aiedge.gallery.ui.home
package com.google.ai.edge.gallery.ui.home
import android.util.Log
import androidx.compose.animation.AnimatedVisibility
@ -14,19 +14,25 @@ import androidx.compose.material.icons.automirrored.rounded.OpenInNew
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.DisposableEffect
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.draw.clip
import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.BuildConfig
import com.google.aiedge.gallery.ui.common.getJsonResponse
import com.google.aiedge.gallery.ui.modelmanager.ClickableLink
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleEventObserver
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.compose.LocalLifecycleOwner
import com.google.ai.edge.gallery.BuildConfig
import com.google.ai.edge.gallery.ui.common.getJsonResponse
import com.google.ai.edge.gallery.ui.modelmanager.ClickableLink
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import kotlinx.serialization.Serializable
import kotlin.math.max
@ -44,22 +50,43 @@ data class ReleaseInfo(
fun NewReleaseNotification() {
var newReleaseVersion by remember { mutableStateOf("") }
var newReleaseUrl by remember { mutableStateOf("") }
val lifecycleOwner: LifecycleOwner = LocalLifecycleOwner.current
val coroutineScope = rememberCoroutineScope()
LaunchedEffect(Unit) {
withContext(Dispatchers.IO) {
Log.d("AGNewReleaseNotification", "Checking for new release...")
val info = getJsonResponse<ReleaseInfo>("https://api.github.com/repos/$REPO/releases/latest")
if (info != null) {
val curRelease = BuildConfig.VERSION_NAME
val newRelease = info.jsonObj.tag_name
val isNewer = isNewerRelease(currentRelease = curRelease, newRelease = newRelease)
Log.d(TAG, "curRelease: $curRelease, newRelease: $newRelease, isNewer: $isNewer")
if (isNewer) {
newReleaseVersion = newRelease
newReleaseUrl = info.jsonObj.html_url
DisposableEffect(lifecycleOwner) {
// Create a LifecycleEventObserver to listen for specific lifecycle events.
val observer = LifecycleEventObserver { _, event ->
// Log or perform actions based on the lifecycle event.
when (event) {
Lifecycle.Event.ON_RESUME -> {
coroutineScope.launch {
withContext(Dispatchers.IO) {
Log.d(TAG, "Checking for new release...")
val info =
getJsonResponse<ReleaseInfo>("https://api.github.com/repos/$REPO/releases/latest")
if (info != null) {
val curRelease = BuildConfig.VERSION_NAME
val newRelease = info.jsonObj.tag_name
val isNewer = isNewerRelease(currentRelease = curRelease, newRelease = newRelease)
Log.d(TAG, "curRelease: $curRelease, newRelease: $newRelease, isNewer: $isNewer")
if (isNewer) {
newReleaseVersion = newRelease
newReleaseUrl = info.jsonObj.html_url
}
}
}
}
}
else -> {}
}
}
lifecycleOwner.lifecycle.addObserver(observer)
onDispose {
lifecycleOwner.lifecycle.removeObserver(observer)
}
}
AnimatedVisibility(
@ -97,7 +124,7 @@ fun NewReleaseNotification() {
}
}
fun isNewerRelease(currentRelease: String, newRelease: String): Boolean {
private fun isNewerRelease(currentRelease: String, newRelease: String): Boolean {
// Split the version strings into their individual components (e.g., "0.9.0" -> ["0", "9", "0"])
val currentComponents = currentRelease.split('.').map { it.toIntOrNull() ?: 0 }
val newComponents = newRelease.split('.').map { it.toIntOrNull() ?: 0 }

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.home
package com.google.ai.edge.gallery.ui.home
import androidx.compose.foundation.border
import androidx.compose.foundation.clickable
@ -27,7 +27,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.offset
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
@ -61,13 +60,13 @@ import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
import com.google.aiedge.gallery.BuildConfig
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.aiedge.gallery.ui.theme.THEME_AUTO
import com.google.aiedge.gallery.ui.theme.THEME_DARK
import com.google.aiedge.gallery.ui.theme.THEME_LIGHT
import com.google.aiedge.gallery.ui.theme.ThemeSettings
import com.google.aiedge.gallery.ui.theme.labelSmallNarrow
import com.google.ai.edge.gallery.BuildConfig
import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.ai.edge.gallery.ui.theme.THEME_AUTO
import com.google.ai.edge.gallery.ui.theme.THEME_DARK
import com.google.ai.edge.gallery.ui.theme.THEME_LIGHT
import com.google.ai.edge.gallery.ui.theme.ThemeSettings
import com.google.ai.edge.gallery.ui.theme.labelSmallNarrow
import java.time.Instant
import java.time.ZoneId
import java.time.format.DateTimeFormatter

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.icon
package com.google.ai.edge.gallery.ui.icon
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.PathFillType

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.imageclassification
package com.google.ai.edge.gallery.ui.imageclassification
import android.content.Context
import android.graphics.Bitmap
@ -23,10 +23,10 @@ import androidx.compose.ui.graphics.Color
import com.google.android.gms.tflite.client.TfLiteInitializationOptions
import com.google.android.gms.tflite.gpu.support.TfLiteGpu
import com.google.android.gms.tflite.java.TfLite
import com.google.aiedge.gallery.ui.common.chat.Classification
import com.google.aiedge.gallery.data.ConfigKey
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.ui.common.LatencyProvider
import com.google.ai.edge.gallery.ui.common.chat.Classification
import com.google.ai.edge.gallery.data.ConfigKey
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.ui.common.LatencyProvider
import org.tensorflow.lite.DataType
import org.tensorflow.lite.InterpreterApi
import org.tensorflow.lite.gpu.GpuDelegateFactory

View file

@ -14,18 +14,18 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.imageclassification
package com.google.ai.edge.gallery.ui.imageclassification
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.lifecycle.viewmodel.compose.viewModel
import com.google.aiedge.gallery.ui.ViewModelProvider
import com.google.aiedge.gallery.ui.common.chat.ChatInputType
import com.google.aiedge.gallery.ui.common.chat.ChatMessageImage
import com.google.aiedge.gallery.ui.common.chat.ChatView
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.ai.edge.gallery.ui.ViewModelProvider
import com.google.ai.edge.gallery.ui.common.chat.ChatInputType
import com.google.ai.edge.gallery.ui.common.chat.ChatMessageImage
import com.google.ai.edge.gallery.ui.common.chat.ChatView
import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import kotlinx.serialization.Serializable
/** Navigation destination data */

View file

@ -14,21 +14,21 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.imageclassification
package com.google.ai.edge.gallery.ui.imageclassification
import android.content.Context
import android.graphics.Bitmap
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import androidx.lifecycle.viewModelScope
import com.google.aiedge.gallery.ui.common.chat.ChatMessage
import com.google.aiedge.gallery.ui.common.chat.ChatMessageClassification
import com.google.aiedge.gallery.ui.common.chat.ChatMessageImage
import com.google.aiedge.gallery.ui.common.chat.ChatMessageType
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.data.TASK_IMAGE_CLASSIFICATION
import com.google.aiedge.gallery.ui.common.chat.ChatViewModel
import com.google.aiedge.gallery.ui.common.runBasicBenchmark
import com.google.ai.edge.gallery.ui.common.chat.ChatMessage
import com.google.ai.edge.gallery.ui.common.chat.ChatMessageClassification
import com.google.ai.edge.gallery.ui.common.chat.ChatMessageImage
import com.google.ai.edge.gallery.ui.common.chat.ChatMessageType
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.data.TASK_IMAGE_CLASSIFICATION
import com.google.ai.edge.gallery.ui.common.chat.ChatViewModel
import com.google.ai.edge.gallery.ui.common.runBasicBenchmark
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch

View file

@ -14,17 +14,17 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.imagegeneration
package com.google.ai.edge.gallery.ui.imagegeneration
import android.content.Context
import android.graphics.Bitmap
import android.util.Log
import com.google.mediapipe.framework.image.BitmapExtractor
import com.google.mediapipe.tasks.vision.imagegenerator.ImageGenerator
import com.google.aiedge.gallery.data.ConfigKey
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.ui.common.LatencyProvider
import com.google.aiedge.gallery.ui.common.cleanUpMediapipeTaskErrorMessage
import com.google.ai.edge.gallery.data.ConfigKey
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.ui.common.LatencyProvider
import com.google.ai.edge.gallery.ui.common.cleanUpMediapipeTaskErrorMessage
import kotlin.random.Random
private const val TAG = "AGImageGenerationModelHelper"

View file

@ -14,15 +14,15 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.imagegeneration
package com.google.ai.edge.gallery.ui.imagegeneration
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.lifecycle.viewmodel.compose.viewModel
import com.google.aiedge.gallery.ui.ViewModelProvider
import com.google.aiedge.gallery.ui.common.chat.ChatMessageText
import com.google.aiedge.gallery.ui.common.chat.ChatView
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.ai.edge.gallery.ui.ViewModelProvider
import com.google.ai.edge.gallery.ui.common.chat.ChatMessageText
import com.google.ai.edge.gallery.ui.common.chat.ChatView
import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import kotlinx.serialization.Serializable
/** Navigation destination data */

View file

@ -14,19 +14,19 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.imagegeneration
package com.google.ai.edge.gallery.ui.imagegeneration
import android.graphics.Bitmap
import androidx.compose.ui.graphics.ImageBitmap
import androidx.compose.ui.graphics.asImageBitmap
import androidx.lifecycle.viewModelScope
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.data.TASK_IMAGE_GENERATION
import com.google.aiedge.gallery.ui.common.chat.ChatMessageImageWithHistory
import com.google.aiedge.gallery.ui.common.chat.ChatMessageLoading
import com.google.aiedge.gallery.ui.common.chat.ChatMessageType
import com.google.aiedge.gallery.ui.common.chat.ChatSide
import com.google.aiedge.gallery.ui.common.chat.ChatViewModel
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.data.TASK_IMAGE_GENERATION
import com.google.ai.edge.gallery.ui.common.chat.ChatMessageImageWithHistory
import com.google.ai.edge.gallery.ui.common.chat.ChatMessageLoading
import com.google.ai.edge.gallery.ui.common.chat.ChatMessageType
import com.google.ai.edge.gallery.ui.common.chat.ChatSide
import com.google.ai.edge.gallery.ui.common.chat.ChatViewModel
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch

View file

@ -14,14 +14,14 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.llmchat
package com.google.ai.edge.gallery.ui.llmchat
import com.google.aiedge.gallery.data.Accelerator
import com.google.aiedge.gallery.data.Config
import com.google.aiedge.gallery.data.ConfigKey
import com.google.aiedge.gallery.data.NumberSliderConfig
import com.google.aiedge.gallery.data.SegmentedButtonConfig
import com.google.aiedge.gallery.data.ValueType
import com.google.ai.edge.gallery.data.Accelerator
import com.google.ai.edge.gallery.data.Config
import com.google.ai.edge.gallery.data.ConfigKey
import com.google.ai.edge.gallery.data.NumberSliderConfig
import com.google.ai.edge.gallery.data.SegmentedButtonConfig
import com.google.ai.edge.gallery.data.ValueType
const val DEFAULT_MAX_TOKEN = 1024
const val DEFAULT_TOPK = 40

View file

@ -14,15 +14,15 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.llmchat
package com.google.ai.edge.gallery.ui.llmchat
import android.content.Context
import android.graphics.Bitmap
import android.util.Log
import com.google.aiedge.gallery.data.Accelerator
import com.google.aiedge.gallery.data.ConfigKey
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.ui.common.cleanUpMediapipeTaskErrorMessage
import com.google.ai.edge.gallery.data.Accelerator
import com.google.ai.edge.gallery.data.ConfigKey
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.ui.common.cleanUpMediapipeTaskErrorMessage
import com.google.mediapipe.framework.image.BitmapImageBuilder
import com.google.mediapipe.tasks.genai.llminference.GraphOptions
import com.google.mediapipe.tasks.genai.llminference.LlmInference

View file

@ -14,18 +14,18 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.llmchat
package com.google.ai.edge.gallery.ui.llmchat
import android.graphics.Bitmap
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.lifecycle.viewmodel.compose.viewModel
import com.google.aiedge.gallery.ui.ViewModelProvider
import com.google.aiedge.gallery.ui.common.chat.ChatMessageImage
import com.google.aiedge.gallery.ui.common.chat.ChatMessageText
import com.google.aiedge.gallery.ui.common.chat.ChatView
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.ai.edge.gallery.ui.ViewModelProvider
import com.google.ai.edge.gallery.ui.common.chat.ChatMessageImage
import com.google.ai.edge.gallery.ui.common.chat.ChatMessageText
import com.google.ai.edge.gallery.ui.common.chat.ChatView
import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import kotlinx.serialization.Serializable
/** Navigation destination data */

View file

@ -14,25 +14,25 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.llmchat
package com.google.ai.edge.gallery.ui.llmchat
import android.content.Context
import android.graphics.Bitmap
import android.util.Log
import androidx.lifecycle.viewModelScope
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.data.TASK_LLM_CHAT
import com.google.aiedge.gallery.data.TASK_LLM_ASK_IMAGE
import com.google.aiedge.gallery.data.Task
import com.google.aiedge.gallery.ui.common.chat.ChatMessageBenchmarkLlmResult
import com.google.aiedge.gallery.ui.common.chat.ChatMessageLoading
import com.google.aiedge.gallery.ui.common.chat.ChatMessageText
import com.google.aiedge.gallery.ui.common.chat.ChatMessageType
import com.google.aiedge.gallery.ui.common.chat.ChatMessageWarning
import com.google.aiedge.gallery.ui.common.chat.ChatSide
import com.google.aiedge.gallery.ui.common.chat.ChatViewModel
import com.google.aiedge.gallery.ui.common.chat.Stat
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.data.TASK_LLM_CHAT
import com.google.ai.edge.gallery.data.TASK_LLM_ASK_IMAGE
import com.google.ai.edge.gallery.data.Task
import com.google.ai.edge.gallery.ui.common.chat.ChatMessageBenchmarkLlmResult
import com.google.ai.edge.gallery.ui.common.chat.ChatMessageLoading
import com.google.ai.edge.gallery.ui.common.chat.ChatMessageText
import com.google.ai.edge.gallery.ui.common.chat.ChatMessageType
import com.google.ai.edge.gallery.ui.common.chat.ChatMessageWarning
import com.google.ai.edge.gallery.ui.common.chat.ChatSide
import com.google.ai.edge.gallery.ui.common.chat.ChatViewModel
import com.google.ai.edge.gallery.ui.common.chat.Stat
import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.llmsingleturn
package com.google.ai.edge.gallery.ui.llmsingleturn
import android.util.Log
import androidx.activity.compose.BackHandler
@ -41,17 +41,17 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLayoutDirection
import androidx.compose.ui.tooling.preview.Preview
import androidx.lifecycle.viewmodel.compose.viewModel
import com.google.aiedge.gallery.data.ModelDownloadStatusType
import com.google.aiedge.gallery.ui.ViewModelProvider
import com.google.aiedge.gallery.ui.common.ErrorDialog
import com.google.aiedge.gallery.ui.common.ModelPageAppBar
import com.google.aiedge.gallery.ui.common.chat.ModelDownloadStatusInfoPanel
import com.google.aiedge.gallery.ui.modelmanager.ModelInitializationStatusType
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.aiedge.gallery.ui.preview.PreviewLlmSingleTurnViewModel
import com.google.aiedge.gallery.ui.preview.PreviewModelManagerViewModel
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.aiedge.gallery.ui.theme.customColors
import com.google.ai.edge.gallery.data.ModelDownloadStatusType
import com.google.ai.edge.gallery.ui.ViewModelProvider
import com.google.ai.edge.gallery.ui.common.ErrorDialog
import com.google.ai.edge.gallery.ui.common.ModelPageAppBar
import com.google.ai.edge.gallery.ui.common.chat.ModelDownloadStatusInfoPanel
import com.google.ai.edge.gallery.ui.modelmanager.ModelInitializationStatusType
import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.ai.edge.gallery.ui.preview.PreviewLlmSingleTurnViewModel
import com.google.ai.edge.gallery.ui.preview.PreviewModelManagerViewModel
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.ui.theme.customColors
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.serialization.Serializable

View file

@ -14,19 +14,19 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.llmsingleturn
package com.google.ai.edge.gallery.ui.llmsingleturn
import android.util.Log
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.data.TASK_LLM_PROMPT_LAB
import com.google.aiedge.gallery.data.Task
import com.google.aiedge.gallery.ui.common.chat.ChatMessageBenchmarkLlmResult
import com.google.aiedge.gallery.ui.common.chat.Stat
import com.google.aiedge.gallery.ui.common.processLlmResponse
import com.google.aiedge.gallery.ui.llmchat.LlmChatModelHelper
import com.google.aiedge.gallery.ui.llmchat.LlmModelInstance
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.data.TASK_LLM_PROMPT_LAB
import com.google.ai.edge.gallery.data.Task
import com.google.ai.edge.gallery.ui.common.chat.ChatMessageBenchmarkLlmResult
import com.google.ai.edge.gallery.ui.common.chat.Stat
import com.google.ai.edge.gallery.ui.common.processLlmResponse
import com.google.ai.edge.gallery.ui.llmchat.LlmChatModelHelper
import com.google.ai.edge.gallery.ui.llmchat.LlmModelInstance
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.MutableStateFlow

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.llmsingleturn
package com.google.ai.edge.gallery.ui.llmsingleturn
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.AnnotatedString

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.llmsingleturn
package com.google.ai.edge.gallery.ui.llmsingleturn
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.background
@ -85,12 +85,12 @@ import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.text.TextLayoutResult
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.R
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.ui.common.chat.MessageBubbleShape
import com.google.aiedge.gallery.ui.modelmanager.ModelInitializationStatusType
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.aiedge.gallery.ui.theme.customColors
import com.google.ai.edge.gallery.R
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.ui.common.chat.MessageBubbleShape
import com.google.ai.edge.gallery.ui.modelmanager.ModelInitializationStatusType
import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.ai.edge.gallery.ui.theme.customColors
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.llmsingleturn
package com.google.ai.edge.gallery.ui.llmsingleturn
import android.util.Log
import androidx.compose.foundation.layout.Arrangement
@ -56,13 +56,13 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalClipboardManager
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.data.TASK_LLM_PROMPT_LAB
import com.google.aiedge.gallery.ui.common.chat.MarkdownText
import com.google.aiedge.gallery.ui.common.chat.MessageBodyBenchmarkLlm
import com.google.aiedge.gallery.ui.common.chat.MessageBodyLoading
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.aiedge.gallery.ui.modelmanager.PagerScrollState
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.data.TASK_LLM_PROMPT_LAB
import com.google.ai.edge.gallery.ui.common.chat.MarkdownText
import com.google.ai.edge.gallery.ui.common.chat.MessageBodyBenchmarkLlm
import com.google.ai.edge.gallery.ui.common.chat.MessageBodyLoading
import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.ai.edge.gallery.ui.modelmanager.PagerScrollState
private val OPTIONS = listOf("Response", "Benchmark")
private val ICONS = listOf(Icons.Outlined.AutoAwesome, Icons.Outlined.Timer)

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.llmsingleturn
package com.google.ai.edge.gallery.ui.llmsingleturn
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.llmsingleturn
package com.google.ai.edge.gallery.ui.llmsingleturn
import androidx.compose.foundation.background
import androidx.compose.foundation.gestures.detectDragGestures
@ -42,8 +42,8 @@ import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.aiedge.gallery.ui.theme.customColors
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.ui.theme.customColors
@Composable
fun VerticalSplitView(

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.modelmanager
package com.google.ai.edge.gallery.ui.modelmanager
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
@ -49,13 +49,13 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextDecoration
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.data.Task
import com.google.aiedge.gallery.ui.common.modelitem.ModelItem
import com.google.aiedge.gallery.ui.preview.PreviewModelManagerViewModel
import com.google.aiedge.gallery.ui.preview.TASK_TEST1
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.aiedge.gallery.ui.theme.customColors
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.data.Task
import com.google.ai.edge.gallery.ui.common.modelitem.ModelItem
import com.google.ai.edge.gallery.ui.preview.PreviewModelManagerViewModel
import com.google.ai.edge.gallery.ui.preview.TASK_TEST1
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.ui.theme.customColors
private const val TAG = "AGModelList"

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.modelmanager
package com.google.ai.edge.gallery.ui.modelmanager
import androidx.activity.compose.BackHandler
import androidx.compose.foundation.layout.fillMaxSize
@ -28,14 +28,14 @@ import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.tooling.preview.Preview
import com.google.aiedge.gallery.GalleryTopAppBar
import com.google.aiedge.gallery.data.AppBarAction
import com.google.aiedge.gallery.data.AppBarActionType
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.data.Task
import com.google.aiedge.gallery.ui.preview.PreviewModelManagerViewModel
import com.google.aiedge.gallery.ui.preview.TASK_TEST1
import com.google.aiedge.gallery.ui.theme.GalleryTheme
import com.google.ai.edge.gallery.GalleryTopAppBar
import com.google.ai.edge.gallery.data.AppBarAction
import com.google.ai.edge.gallery.data.AppBarActionType
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.data.Task
import com.google.ai.edge.gallery.ui.preview.PreviewModelManagerViewModel
import com.google.ai.edge.gallery.ui.preview.TASK_TEST1
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
/** A screen to manage models. */
@OptIn(ExperimentalMaterial3Api::class)

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.modelmanager
package com.google.ai.edge.gallery.ui.modelmanager
import android.content.Context
import android.net.Uri
@ -22,37 +22,37 @@ import android.util.Log
import androidx.activity.result.ActivityResult
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.google.aiedge.gallery.data.AGWorkInfo
import com.google.aiedge.gallery.data.Accelerator
import com.google.aiedge.gallery.data.AccessTokenData
import com.google.aiedge.gallery.data.Config
import com.google.aiedge.gallery.data.ConfigKey
import com.google.aiedge.gallery.data.DataStoreRepository
import com.google.aiedge.gallery.data.DownloadRepository
import com.google.aiedge.gallery.data.EMPTY_MODEL
import com.google.aiedge.gallery.data.IMPORTS_DIR
import com.google.aiedge.gallery.data.ImportedModelInfo
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.data.ModelAllowlist
import com.google.aiedge.gallery.data.ModelDownloadStatus
import com.google.aiedge.gallery.data.ModelDownloadStatusType
import com.google.aiedge.gallery.data.TASKS
import com.google.aiedge.gallery.data.TASK_LLM_ASK_IMAGE
import com.google.aiedge.gallery.data.TASK_LLM_CHAT
import com.google.aiedge.gallery.data.TASK_LLM_PROMPT_LAB
import com.google.aiedge.gallery.data.Task
import com.google.aiedge.gallery.data.TaskType
import com.google.aiedge.gallery.data.ValueType
import com.google.aiedge.gallery.data.getModelByName
import com.google.aiedge.gallery.ui.common.AuthConfig
import com.google.aiedge.gallery.ui.common.convertValueToTargetType
import com.google.aiedge.gallery.ui.common.getJsonResponse
import com.google.aiedge.gallery.ui.common.processTasks
import com.google.aiedge.gallery.ui.imageclassification.ImageClassificationModelHelper
import com.google.aiedge.gallery.ui.imagegeneration.ImageGenerationModelHelper
import com.google.aiedge.gallery.ui.llmchat.LlmChatModelHelper
import com.google.aiedge.gallery.ui.llmchat.createLlmChatConfigs
import com.google.aiedge.gallery.ui.textclassification.TextClassificationModelHelper
import com.google.ai.edge.gallery.data.AGWorkInfo
import com.google.ai.edge.gallery.data.Accelerator
import com.google.ai.edge.gallery.data.AccessTokenData
import com.google.ai.edge.gallery.data.Config
import com.google.ai.edge.gallery.data.ConfigKey
import com.google.ai.edge.gallery.data.DataStoreRepository
import com.google.ai.edge.gallery.data.DownloadRepository
import com.google.ai.edge.gallery.data.EMPTY_MODEL
import com.google.ai.edge.gallery.data.IMPORTS_DIR
import com.google.ai.edge.gallery.data.ImportedModelInfo
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.data.ModelAllowlist
import com.google.ai.edge.gallery.data.ModelDownloadStatus
import com.google.ai.edge.gallery.data.ModelDownloadStatusType
import com.google.ai.edge.gallery.data.TASKS
import com.google.ai.edge.gallery.data.TASK_LLM_ASK_IMAGE
import com.google.ai.edge.gallery.data.TASK_LLM_CHAT
import com.google.ai.edge.gallery.data.TASK_LLM_PROMPT_LAB
import com.google.ai.edge.gallery.data.Task
import com.google.ai.edge.gallery.data.TaskType
import com.google.ai.edge.gallery.data.ValueType
import com.google.ai.edge.gallery.data.getModelByName
import com.google.ai.edge.gallery.ui.common.AuthConfig
import com.google.ai.edge.gallery.ui.common.convertValueToTargetType
import com.google.ai.edge.gallery.ui.common.getJsonResponse
import com.google.ai.edge.gallery.ui.common.processTasks
import com.google.ai.edge.gallery.ui.imageclassification.ImageClassificationModelHelper
import com.google.ai.edge.gallery.ui.imagegeneration.ImageGenerationModelHelper
import com.google.ai.edge.gallery.ui.llmchat.LlmChatModelHelper
import com.google.ai.edge.gallery.ui.llmchat.createLlmChatConfigs
import com.google.ai.edge.gallery.ui.textclassification.TextClassificationModelHelper
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.MutableStateFlow

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.navigation
package com.google.ai.edge.gallery.ui.navigation
import android.util.Log
import androidx.compose.animation.AnimatedContentTransitionScope
@ -42,32 +42,32 @@ import androidx.navigation.NavType
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.navArgument
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.data.TASK_IMAGE_CLASSIFICATION
import com.google.aiedge.gallery.data.TASK_IMAGE_GENERATION
import com.google.aiedge.gallery.data.TASK_LLM_CHAT
import com.google.aiedge.gallery.data.TASK_LLM_ASK_IMAGE
import com.google.aiedge.gallery.data.TASK_LLM_PROMPT_LAB
import com.google.aiedge.gallery.data.TASK_TEXT_CLASSIFICATION
import com.google.aiedge.gallery.data.Task
import com.google.aiedge.gallery.data.TaskType
import com.google.aiedge.gallery.data.getModelByName
import com.google.aiedge.gallery.ui.ViewModelProvider
import com.google.aiedge.gallery.ui.home.HomeScreen
import com.google.aiedge.gallery.ui.imageclassification.ImageClassificationDestination
import com.google.aiedge.gallery.ui.imageclassification.ImageClassificationScreen
import com.google.aiedge.gallery.ui.imagegeneration.ImageGenerationDestination
import com.google.aiedge.gallery.ui.imagegeneration.ImageGenerationScreen
import com.google.aiedge.gallery.ui.llmchat.LlmChatDestination
import com.google.aiedge.gallery.ui.llmchat.LlmChatScreen
import com.google.aiedge.gallery.ui.llmchat.LlmAskImageDestination
import com.google.aiedge.gallery.ui.llmchat.LlmAskImageScreen
import com.google.aiedge.gallery.ui.llmsingleturn.LlmSingleTurnDestination
import com.google.aiedge.gallery.ui.llmsingleturn.LlmSingleTurnScreen
import com.google.aiedge.gallery.ui.modelmanager.ModelManager
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.aiedge.gallery.ui.textclassification.TextClassificationDestination
import com.google.aiedge.gallery.ui.textclassification.TextClassificationScreen
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.data.TASK_IMAGE_CLASSIFICATION
import com.google.ai.edge.gallery.data.TASK_IMAGE_GENERATION
import com.google.ai.edge.gallery.data.TASK_LLM_CHAT
import com.google.ai.edge.gallery.data.TASK_LLM_ASK_IMAGE
import com.google.ai.edge.gallery.data.TASK_LLM_PROMPT_LAB
import com.google.ai.edge.gallery.data.TASK_TEXT_CLASSIFICATION
import com.google.ai.edge.gallery.data.Task
import com.google.ai.edge.gallery.data.TaskType
import com.google.ai.edge.gallery.data.getModelByName
import com.google.ai.edge.gallery.ui.ViewModelProvider
import com.google.ai.edge.gallery.ui.home.HomeScreen
import com.google.ai.edge.gallery.ui.imageclassification.ImageClassificationDestination
import com.google.ai.edge.gallery.ui.imageclassification.ImageClassificationScreen
import com.google.ai.edge.gallery.ui.imagegeneration.ImageGenerationDestination
import com.google.ai.edge.gallery.ui.imagegeneration.ImageGenerationScreen
import com.google.ai.edge.gallery.ui.llmchat.LlmChatDestination
import com.google.ai.edge.gallery.ui.llmchat.LlmChatScreen
import com.google.ai.edge.gallery.ui.llmchat.LlmAskImageDestination
import com.google.ai.edge.gallery.ui.llmchat.LlmAskImageScreen
import com.google.ai.edge.gallery.ui.llmsingleturn.LlmSingleTurnDestination
import com.google.ai.edge.gallery.ui.llmsingleturn.LlmSingleTurnScreen
import com.google.ai.edge.gallery.ui.modelmanager.ModelManager
import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.ai.edge.gallery.ui.textclassification.TextClassificationDestination
import com.google.ai.edge.gallery.ui.textclassification.TextClassificationScreen
private const val TAG = "AGGalleryNavGraph"
private const val ROUTE_PLACEHOLDER = "placeholder"
@ -267,7 +267,7 @@ fun GalleryNavHost(
if (data != null) {
intent.data = null
Log.d(TAG, "navigation link clicked: $data")
if (data.toString().startsWith("com.google.aiedge.gallery://model/")) {
if (data.toString().startsWith("com.google.ai.edge.gallery://model/")) {
val modelName = data.pathSegments.last()
getModelByName(modelName)?.let { model ->
// TODO(jingjin): need to show a list of possible tasks for this model.

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.preview
package com.google.ai.edge.gallery.ui.preview
import android.content.Context
import android.graphics.Bitmap
@ -23,13 +23,13 @@ import android.graphics.drawable.Drawable
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.asImageBitmap
import androidx.core.content.ContextCompat
import com.google.aiedge.gallery.R
import com.google.aiedge.gallery.ui.common.chat.ChatMessageClassification
import com.google.aiedge.gallery.ui.common.chat.ChatMessageImage
import com.google.aiedge.gallery.ui.common.chat.ChatMessageText
import com.google.aiedge.gallery.ui.common.chat.ChatSide
import com.google.aiedge.gallery.ui.common.chat.ChatViewModel
import com.google.aiedge.gallery.ui.common.chat.Classification
import com.google.ai.edge.gallery.R
import com.google.ai.edge.gallery.ui.common.chat.ChatMessageClassification
import com.google.ai.edge.gallery.ui.common.chat.ChatMessageImage
import com.google.ai.edge.gallery.ui.common.chat.ChatMessageText
import com.google.ai.edge.gallery.ui.common.chat.ChatSide
import com.google.ai.edge.gallery.ui.common.chat.ChatViewModel
import com.google.ai.edge.gallery.ui.common.chat.Classification
class PreviewChatModel(context: Context) : ChatViewModel(task = TASK_TEST1) {
init {

View file

@ -14,11 +14,11 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.preview
package com.google.ai.edge.gallery.ui.preview
import com.google.aiedge.gallery.data.AccessTokenData
import com.google.aiedge.gallery.data.DataStoreRepository
import com.google.aiedge.gallery.data.ImportedModelInfo
import com.google.ai.edge.gallery.data.AccessTokenData
import com.google.ai.edge.gallery.data.DataStoreRepository
import com.google.ai.edge.gallery.data.ImportedModelInfo
class PreviewDataStoreRepository : DataStoreRepository {
override fun saveTextInputHistory(history: List<String>) {

View file

@ -14,12 +14,12 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.preview
package com.google.ai.edge.gallery.ui.preview
import com.google.aiedge.gallery.data.AGWorkInfo
import com.google.aiedge.gallery.data.DownloadRepository
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.data.ModelDownloadStatus
import com.google.ai.edge.gallery.data.AGWorkInfo
import com.google.ai.edge.gallery.data.DownloadRepository
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.data.ModelDownloadStatus
import java.util.UUID
class PreviewDownloadRepository : DownloadRepository {

View file

@ -14,8 +14,8 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.preview
package com.google.ai.edge.gallery.ui.preview
import com.google.aiedge.gallery.ui.llmsingleturn.LlmSingleTurnViewModel
import com.google.ai.edge.gallery.ui.llmsingleturn.LlmSingleTurnViewModel
class PreviewLlmSingleTurnViewModel : LlmSingleTurnViewModel(task = TASK_TEST1)

View file

@ -14,13 +14,13 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.preview
package com.google.ai.edge.gallery.ui.preview
import android.content.Context
import com.google.aiedge.gallery.data.ModelDownloadStatus
import com.google.aiedge.gallery.data.ModelDownloadStatusType
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerUiState
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.ai.edge.gallery.data.ModelDownloadStatus
import com.google.ai.edge.gallery.data.ModelDownloadStatusType
import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerUiState
import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import kotlinx.coroutines.flow.update
class PreviewModelManagerViewModel(context: Context) :

View file

@ -14,21 +14,21 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.preview
package com.google.ai.edge.gallery.ui.preview
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.rounded.AccountBox
import androidx.compose.material.icons.rounded.AutoAwesome
import com.google.aiedge.gallery.data.BooleanSwitchConfig
import com.google.aiedge.gallery.data.Config
import com.google.aiedge.gallery.data.ConfigKey
import com.google.aiedge.gallery.data.LabelConfig
import com.google.aiedge.gallery.data.SegmentedButtonConfig
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.data.NumberSliderConfig
import com.google.aiedge.gallery.data.Task
import com.google.aiedge.gallery.data.TaskType
import com.google.aiedge.gallery.data.ValueType
import com.google.ai.edge.gallery.data.BooleanSwitchConfig
import com.google.ai.edge.gallery.data.Config
import com.google.ai.edge.gallery.data.ConfigKey
import com.google.ai.edge.gallery.data.LabelConfig
import com.google.ai.edge.gallery.data.SegmentedButtonConfig
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.data.NumberSliderConfig
import com.google.ai.edge.gallery.data.Task
import com.google.ai.edge.gallery.data.TaskType
import com.google.ai.edge.gallery.data.ValueType
val TEST_CONFIGS1: List<Config> = listOf(
LabelConfig(

View file

@ -14,15 +14,15 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.textclassification
package com.google.ai.edge.gallery.ui.textclassification
import android.content.Context
import android.util.Log
import com.google.mediapipe.tasks.components.containers.Category
import com.google.mediapipe.tasks.core.BaseOptions
import com.google.mediapipe.tasks.text.textclassifier.TextClassifier
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.ui.common.LatencyProvider
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.ui.common.LatencyProvider
import java.io.File
import java.io.FileInputStream
import java.nio.ByteBuffer

View file

@ -14,15 +14,15 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.textclassification
package com.google.ai.edge.gallery.ui.textclassification
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.lifecycle.viewmodel.compose.viewModel
import com.google.aiedge.gallery.ui.ViewModelProvider
import com.google.aiedge.gallery.ui.common.chat.ChatMessageText
import com.google.aiedge.gallery.ui.common.chat.ChatView
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.ai.edge.gallery.ui.ViewModelProvider
import com.google.ai.edge.gallery.ui.common.chat.ChatMessageText
import com.google.ai.edge.gallery.ui.common.chat.ChatView
import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import kotlinx.serialization.Serializable
/** Navigation destination data */

View file

@ -14,22 +14,22 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.textclassification
package com.google.ai.edge.gallery.ui.textclassification
import android.util.Log
import androidx.compose.ui.graphics.Color
import androidx.lifecycle.viewModelScope
import com.google.mediapipe.tasks.components.containers.Category
import com.google.aiedge.gallery.data.Model
import com.google.aiedge.gallery.data.TASK_TEXT_CLASSIFICATION
import com.google.aiedge.gallery.ui.common.chat.ChatMessage
import com.google.aiedge.gallery.ui.common.chat.ChatMessageClassification
import com.google.aiedge.gallery.ui.common.chat.ChatMessageText
import com.google.aiedge.gallery.ui.common.chat.ChatMessageType
import com.google.aiedge.gallery.ui.common.chat.ChatViewModel
import com.google.aiedge.gallery.ui.common.chat.Classification
import com.google.aiedge.gallery.ui.common.getDistinctiveColor
import com.google.aiedge.gallery.ui.common.runBasicBenchmark
import com.google.ai.edge.gallery.data.Model
import com.google.ai.edge.gallery.data.TASK_TEXT_CLASSIFICATION
import com.google.ai.edge.gallery.ui.common.chat.ChatMessage
import com.google.ai.edge.gallery.ui.common.chat.ChatMessageClassification
import com.google.ai.edge.gallery.ui.common.chat.ChatMessageText
import com.google.ai.edge.gallery.ui.common.chat.ChatMessageType
import com.google.ai.edge.gallery.ui.common.chat.ChatViewModel
import com.google.ai.edge.gallery.ui.common.chat.Classification
import com.google.ai.edge.gallery.ui.common.getDistinctiveColor
import com.google.ai.edge.gallery.ui.common.runBasicBenchmark
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.google.aiedge.gallery.ui.theme
package com.google.ai.edge.gallery.ui.theme
import androidx.compose.ui.graphics.Color

Some files were not shown because too many files have changed in this diff Show more