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 { android {
namespace = "com.google.aiedge.gallery" namespace = "com.google.ai.edge.gallery"
compileSdk = 35 compileSdk = 35
defaultConfig { defaultConfig {
// Don't change to com.google.ai.edge.gallery yet.
applicationId = "com.google.aiedge.gallery" applicationId = "com.google.aiedge.gallery"
minSdk = 26 minSdk = 26
targetSdk = 35 targetSdk = 35
@ -33,7 +34,7 @@ android {
versionName = "0.9.4" versionName = "0.9.4"
// Needed for HuggingFace auth workflows. // 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" 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" /> android:required="false" />
<application <application
android:name=".GalleryApplication" android:name="com.google.ai.edge.gallery.GalleryApplication"
android:allowBackup="true" android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules" android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules" android:fullBackupContent="@xml/backup_rules"
@ -38,7 +38,7 @@
android:theme="@style/Theme.Gallery" android:theme="@style/Theme.Gallery"
tools:targetApi="31"> tools:targetApi="31">
<activity <activity
android:name=".MainActivity" android:name="com.google.ai.edge.gallery.MainActivity"
android:exported="true" android:exported="true"
android:theme="@style/Theme.Gallery.SplashScreen" android:theme="@style/Theme.Gallery.SplashScreen"
android:screenOrientation="portrait" android:screenOrientation="portrait"
@ -57,7 +57,7 @@
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="com.google.aiedge.gallery" /> <data android:scheme="com.google.ai.edge.gallery" />
</intent-filter> </intent-filter>
</activity> </activity>

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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. // Keys used to send/receive data to Work.
const val KEY_MODEL_URL = "KEY_MODEL_URL" const val KEY_MODEL_URL = "KEY_MODEL_URL"

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.KeyGenParameterSpec
import android.security.keystore.KeyProperties import android.security.keystore.KeyProperties
@ -26,7 +26,7 @@ import androidx.datastore.preferences.core.longPreferencesKey
import androidx.datastore.preferences.core.stringPreferencesKey import androidx.datastore.preferences.core.stringPreferencesKey
import com.google.gson.Gson import com.google.gson.Gson
import com.google.gson.reflect.TypeToken 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.flow.first
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import java.security.KeyStore import java.security.KeyStore

View file

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

View file

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

View file

@ -14,13 +14,13 @@
* limitations under the License. * 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.ai.edge.gallery.ui.llmchat.DEFAULT_ACCELERATORS
import com.google.aiedge.gallery.ui.llmchat.DEFAULT_TEMPERATURE import com.google.ai.edge.gallery.ui.llmchat.DEFAULT_TEMPERATURE
import com.google.aiedge.gallery.ui.llmchat.DEFAULT_TOPK import com.google.ai.edge.gallery.ui.llmchat.DEFAULT_TOPK
import com.google.aiedge.gallery.ui.llmchat.DEFAULT_TOPP import com.google.ai.edge.gallery.ui.llmchat.DEFAULT_TOPP
import com.google.aiedge.gallery.ui.llmchat.createLlmChatConfigs import com.google.ai.edge.gallery.ui.llmchat.createLlmChatConfigs
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
/** A model in the model allowlist. */ /** A model in the model allowlist. */

View file

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

View file

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

View file

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

View file

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

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column

View file

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

View file

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

View file

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

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.Image
import androidx.compose.foundation.background 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.tooling.preview.Preview
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.R import com.google.ai.edge.gallery.R
import com.google.aiedge.gallery.data.TASKS import com.google.ai.edge.gallery.data.TASKS
import com.google.aiedge.gallery.data.TASK_LLM_CHAT import com.google.ai.edge.gallery.data.TASK_LLM_CHAT
import com.google.aiedge.gallery.data.Task import com.google.ai.edge.gallery.data.Task
import com.google.aiedge.gallery.ui.theme.GalleryTheme import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.aiedge.gallery.ui.theme.customColors import com.google.ai.edge.gallery.ui.theme.customColors
private val SHAPES: List<Int> = private val SHAPES: List<Int> =
listOf(R.drawable.pantegon, R.drawable.double_circle, R.drawable.circle, R.drawable.four_circle) 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. * limitations under the License.
*/ */
package com.google.aiedge.gallery.ui.common package com.google.ai.edge.gallery.ui.common
import android.Manifest import android.Manifest
import android.content.Context import android.content.Context
@ -28,18 +28,18 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.content.FileProvider import androidx.core.content.FileProvider
import com.google.aiedge.gallery.data.Config import com.google.ai.edge.gallery.data.Config
import com.google.aiedge.gallery.data.Model import com.google.ai.edge.gallery.data.Model
import com.google.aiedge.gallery.data.TASKS import com.google.ai.edge.gallery.data.TASKS
import com.google.aiedge.gallery.data.Task import com.google.ai.edge.gallery.data.Task
import com.google.aiedge.gallery.data.ValueType import com.google.ai.edge.gallery.data.ValueType
import com.google.aiedge.gallery.ui.common.chat.ChatMessageBenchmarkResult import com.google.ai.edge.gallery.ui.common.chat.ChatMessageBenchmarkResult
import com.google.aiedge.gallery.ui.common.chat.ChatMessageType import com.google.ai.edge.gallery.ui.common.chat.ChatMessageType
import com.google.aiedge.gallery.ui.common.chat.ChatViewModel import com.google.ai.edge.gallery.ui.common.chat.ChatViewModel
import com.google.aiedge.gallery.ui.common.chat.Histogram import com.google.ai.edge.gallery.ui.common.chat.Histogram
import com.google.aiedge.gallery.ui.common.chat.Stat import com.google.ai.edge.gallery.ui.common.chat.Stat
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.aiedge.gallery.ui.theme.customColors import com.google.ai.edge.gallery.ui.theme.customColors
import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.json.Json import kotlinx.serialization.json.Json
import java.io.File import java.io.File
@ -207,7 +207,9 @@ fun Context.createTempPictureUri(
} }
return FileProvider.getUriForFile( 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. * 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.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import com.google.aiedge.gallery.data.Config import com.google.ai.edge.gallery.data.Config
import com.google.aiedge.gallery.data.ConfigKey import com.google.ai.edge.gallery.data.ConfigKey
import com.google.aiedge.gallery.data.NumberSliderConfig import com.google.ai.edge.gallery.data.NumberSliderConfig
import com.google.aiedge.gallery.data.ValueType import com.google.ai.edge.gallery.data.ValueType
import com.google.aiedge.gallery.ui.common.convertValueToTargetType import com.google.ai.edge.gallery.ui.common.convertValueToTargetType
import com.google.aiedge.gallery.ui.theme.GalleryTheme import com.google.ai.edge.gallery.ui.theme.GalleryTheme
private const val DEFAULT_BENCHMARK_WARM_UP_ITERATIONS = 50f private const val DEFAULT_BENCHMARK_WARM_UP_ITERATIONS = 50f
private const val DEFAULT_BENCHMARK_ITERATIONS = 200f private const val DEFAULT_BENCHMARK_ITERATIONS = 200f

View file

@ -14,13 +14,13 @@
* limitations under the License. * 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.Bitmap
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.graphics.ImageBitmap
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import com.google.aiedge.gallery.data.Model import com.google.ai.edge.gallery.data.Model
enum class ChatMessageType { enum class ChatMessageType {
INFO, INFO,

View file

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

View file

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

View file

@ -14,13 +14,13 @@
* limitations under the License. * 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 android.util.Log
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import com.google.aiedge.gallery.data.Model import com.google.ai.edge.gallery.data.Model
import com.google.aiedge.gallery.data.Task import com.google.ai.edge.gallery.data.Task
import com.google.aiedge.gallery.ui.common.processLlmResponse import com.google.ai.edge.gallery.ui.common.processLlmResponse
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.update import kotlinx.coroutines.flow.update

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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 android.util.Log
import androidx.compose.foundation.border 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.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.Dialog
import com.google.aiedge.gallery.data.BooleanSwitchConfig import com.google.ai.edge.gallery.data.BooleanSwitchConfig
import com.google.aiedge.gallery.data.Config import com.google.ai.edge.gallery.data.Config
import com.google.aiedge.gallery.data.LabelConfig import com.google.ai.edge.gallery.data.LabelConfig
import com.google.aiedge.gallery.data.NumberSliderConfig import com.google.ai.edge.gallery.data.NumberSliderConfig
import com.google.aiedge.gallery.data.SegmentedButtonConfig import com.google.ai.edge.gallery.data.SegmentedButtonConfig
import com.google.aiedge.gallery.data.ValueType import com.google.ai.edge.gallery.data.ValueType
import com.google.aiedge.gallery.ui.preview.MODEL_TEST1 import com.google.ai.edge.gallery.ui.preview.MODEL_TEST1
import com.google.aiedge.gallery.ui.theme.GalleryTheme import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.aiedge.gallery.ui.theme.labelSmallNarrow import com.google.ai.edge.gallery.ui.theme.labelSmallNarrow
import kotlin.Double.Companion.NaN import kotlin.Double.Companion.NaN
private const val TAG = "AGConfigDialog" private const val TAG = "AGConfigDialog"

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.Arrangement
import androidx.compose.foundation.layout.Column 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.draw.alpha
import androidx.compose.ui.tooling.preview.Preview 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.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.aiedge.gallery.ui.theme.bodySmallMediumNarrow import com.google.ai.edge.gallery.ui.theme.bodySmallMediumNarrow
import com.google.aiedge.gallery.ui.theme.bodySmallMediumNarrowBold import com.google.ai.edge.gallery.ui.theme.bodySmallMediumNarrowBold
import com.google.aiedge.gallery.ui.theme.labelSmallNarrow import com.google.ai.edge.gallery.ui.theme.labelSmallNarrow
import com.google.aiedge.gallery.ui.theme.labelSmallNarrowMedium import com.google.ai.edge.gallery.ui.theme.labelSmallNarrowMedium
/** /**
* Composable function to display a data card with a label and a numeric value. * Composable function to display a data card with a label and a numeric value.

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.Bitmap
import android.graphics.Matrix import android.graphics.Matrix

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.MaterialTheme
import androidx.compose.material3.ProvideTextStyle 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.TextStyle
import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import com.google.aiedge.gallery.ui.theme.GalleryTheme import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.aiedge.gallery.ui.theme.customColors import com.google.ai.edge.gallery.ui.theme.customColors
import com.halilibo.richtext.commonmark.Markdown import com.halilibo.richtext.commonmark.Markdown
import com.halilibo.richtext.ui.CodeBlockStyle import com.halilibo.richtext.ui.CodeBlockStyle
import com.halilibo.richtext.ui.RichTextStyle import com.halilibo.richtext.ui.RichTextStyle

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.background
import androidx.compose.foundation.clickable 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.graphics.vector.ImageVector
import androidx.compose.ui.tooling.preview.Preview 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.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.aiedge.gallery.ui.theme.bodySmallNarrow import com.google.ai.edge.gallery.ui.theme.bodySmallNarrow
/** /**
* Composable function to display an action button below a chat message. * Composable function to display an action button below a chat message.

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.background
import androidx.compose.foundation.layout.Arrangement 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.draw.clip
import androidx.compose.ui.tooling.preview.Preview 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.ai.edge.gallery.ui.theme.GalleryTheme
import kotlin.math.max import kotlin.math.max
private const val DEFAULT_HISTOGRAM_BAR_HEIGHT = 50f private const val DEFAULT_HISTOGRAM_BAR_HEIGHT = 50f

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
@ -25,7 +25,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview 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.ai.edge.gallery.ui.theme.GalleryTheme
/** /**
* Composable function to display benchmark LLM results within a chat message. * Composable function to display benchmark LLM results within a chat message.

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.background
import androidx.compose.foundation.layout.Arrangement 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.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview 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.ai.edge.gallery.ui.theme.GalleryTheme
val CLASSIFICATION_BAR_HEIGHT = 8.dp val CLASSIFICATION_BAR_HEIGHT = 8.dp
val CLASSIFICATION_BAR_MAX_WIDTH = 200.dp val CLASSIFICATION_BAR_MAX_WIDTH = 200.dp

View file

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

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.Image
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.Image
import androidx.compose.foundation.gestures.detectHorizontalDragGestures import androidx.compose.foundation.gestures.detectHorizontalDragGestures

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.background
import androidx.compose.foundation.layout.Arrangement 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.draw.clip
import androidx.compose.ui.tooling.preview.Preview 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.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.aiedge.gallery.ui.theme.customColors import com.google.ai.edge.gallery.ui.theme.customColors
/** /**
* Composable function to display informational message content within a chat. * Composable function to display informational message content within a chat.

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.Animatable
import androidx.compose.animation.core.tween 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.res.painterResource
import androidx.compose.ui.tooling.preview.Preview 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.ai.edge.gallery.R
import com.google.aiedge.gallery.ui.common.getTaskIconColor import com.google.ai.edge.gallery.ui.common.getTaskIconColor
import com.google.aiedge.gallery.ui.theme.GalleryTheme import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.background
import androidx.compose.foundation.border 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.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview 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.Task import com.google.ai.edge.gallery.data.Task
import com.google.aiedge.gallery.ui.common.getTaskIconColor import com.google.ai.edge.gallery.ui.common.getTaskIconColor
import com.google.aiedge.gallery.ui.preview.ALL_PREVIEW_TASKS import com.google.ai.edge.gallery.ui.preview.ALL_PREVIEW_TASKS
import com.google.aiedge.gallery.ui.preview.TASK_TEST1 import com.google.ai.edge.gallery.ui.preview.TASK_TEST1
import com.google.aiedge.gallery.ui.theme.GalleryTheme import com.google.ai.edge.gallery.ui.theme.GalleryTheme
private const val CARD_HEIGHT = 100 private const val CARD_HEIGHT = 100

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.background
import androidx.compose.foundation.layout.Column 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.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview 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.ai.edge.gallery.ui.theme.GalleryTheme
/** /**
* Composable function to display the text content of a ChatMessageText. * Composable function to display the text content of a ChatMessageText.

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.background
import androidx.compose.foundation.layout.Arrangement 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.draw.clip
import androidx.compose.ui.tooling.preview.Preview 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.ai.edge.gallery.ui.theme.GalleryTheme
/** /**
* Composable function to display warning message content within a chat. * Composable function to display warning message content within a chat.

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.CornerRadius
import androidx.compose.ui.geometry.RoundRect import androidx.compose.ui.geometry.RoundRect

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.Manifest
import android.content.Context 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.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import com.google.aiedge.gallery.ui.common.createTempPictureUri import com.google.ai.edge.gallery.ui.common.createTempPictureUri
import com.google.aiedge.gallery.ui.theme.GalleryTheme import com.google.ai.edge.gallery.ui.theme.GalleryTheme
private const val TAG = "AGMessageInputImage" private const val TAG = "AGMessageInputImage"

View file

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

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.Arrangement
import androidx.compose.foundation.layout.Column 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.draw.alpha
import androidx.compose.ui.tooling.preview.Preview 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.common.humanReadableDuration import com.google.ai.edge.gallery.ui.common.humanReadableDuration
import com.google.aiedge.gallery.ui.theme.GalleryTheme import com.google.ai.edge.gallery.ui.theme.GalleryTheme
/** /**
* Composable function to display the latency of a chat message, if available. * Composable function to display the latency of a chat message, if available.

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.Bitmap
import androidx.annotation.StringRes import androidx.annotation.StringRes
@ -35,10 +35,10 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview 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.ai.edge.gallery.R
import com.google.aiedge.gallery.ui.theme.GalleryTheme import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.aiedge.gallery.ui.theme.bodySmallNarrow import com.google.ai.edge.gallery.ui.theme.bodySmallNarrow
import com.google.aiedge.gallery.ui.theme.bodySmallSemiBold import com.google.ai.edge.gallery.ui.theme.bodySmallSemiBold
data class MessageLayoutConfig( data class MessageLayoutConfig(
val horizontalArrangement: Arrangement.Horizontal, val horizontalArrangement: Arrangement.Horizontal,

View file

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

View file

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

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.background
import androidx.compose.foundation.layout.Arrangement 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.res.stringResource
import androidx.compose.ui.tooling.preview.Preview 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.ai.edge.gallery.R
import com.google.aiedge.gallery.ui.theme.GalleryTheme import com.google.ai.edge.gallery.ui.theme.GalleryTheme
/** /**
* Composable function to display a visual indicator for model initialization status. * Composable function to display a visual indicator for model initialization status.

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
@ -25,7 +25,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview 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. * 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. * 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.Arrangement
import androidx.compose.foundation.layout.Box 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.platform.LocalContext
import androidx.compose.ui.tooling.preview.Preview 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.ai.edge.gallery.data.Model
import com.google.aiedge.gallery.data.Task import com.google.ai.edge.gallery.data.Task
import com.google.aiedge.gallery.ui.common.convertValueToTargetType import com.google.ai.edge.gallery.ui.common.convertValueToTargetType
import com.google.aiedge.gallery.ui.common.modelitem.ModelItem import com.google.ai.edge.gallery.ui.common.modelitem.ModelItem
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.aiedge.gallery.ui.preview.PreviewModelManagerViewModel import com.google.ai.edge.gallery.ui.preview.PreviewModelManagerViewModel
import com.google.aiedge.gallery.ui.preview.TASK_TEST1 import com.google.ai.edge.gallery.ui.preview.TASK_TEST1
import com.google.aiedge.gallery.ui.preview.TASK_TEST2 import com.google.ai.edge.gallery.ui.preview.TASK_TEST2
import com.google.aiedge.gallery.ui.theme.GalleryTheme import com.google.ai.edge.gallery.ui.theme.GalleryTheme
/** /**
* Composable function to display a selectable model item with an option to configure its settings. * 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. * 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.background
import androidx.compose.foundation.clickable 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.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview 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.ai.edge.gallery.R
import com.google.aiedge.gallery.ui.theme.GalleryTheme import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.aiedge.gallery.ui.theme.customColors import com.google.ai.edge.gallery.ui.theme.customColors
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.DeferredTargetAnimation
import androidx.compose.animation.core.ExperimentalAnimatableApi import androidx.compose.animation.core.ExperimentalAnimatableApi

View file

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

View file

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

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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 android.content.Context
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
@ -35,12 +35,12 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.data.Model import com.google.ai.edge.gallery.data.Model
import com.google.aiedge.gallery.data.ModelDownloadStatus import com.google.ai.edge.gallery.data.ModelDownloadStatus
import com.google.aiedge.gallery.data.ModelDownloadStatusType import com.google.ai.edge.gallery.data.ModelDownloadStatusType
import com.google.aiedge.gallery.data.Task import com.google.ai.edge.gallery.data.Task
import com.google.aiedge.gallery.ui.common.getTaskIconColor import com.google.ai.edge.gallery.ui.common.getTaskIconColor
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
/** /**
* Composable function to display action buttons for a model item, based on its download status. * 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. * 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.AnimatedVisibilityScope
import androidx.compose.animation.ExperimentalSharedTransitionApi import androidx.compose.animation.ExperimentalSharedTransitionApi
@ -33,19 +33,18 @@ import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.focusModifier
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import com.google.aiedge.gallery.data.Model import com.google.ai.edge.gallery.data.Model
import com.google.aiedge.gallery.data.ModelDownloadStatus import com.google.ai.edge.gallery.data.ModelDownloadStatus
import com.google.aiedge.gallery.data.ModelDownloadStatusType import com.google.ai.edge.gallery.data.ModelDownloadStatusType
import com.google.aiedge.gallery.data.Task import com.google.ai.edge.gallery.data.Task
import com.google.aiedge.gallery.ui.common.formatToHourMinSecond import com.google.ai.edge.gallery.ui.common.formatToHourMinSecond
import com.google.aiedge.gallery.ui.common.getTaskIconColor import com.google.ai.edge.gallery.ui.common.getTaskIconColor
import com.google.aiedge.gallery.ui.common.humanReadableSize import com.google.ai.edge.gallery.ui.common.humanReadableSize
import com.google.aiedge.gallery.ui.theme.labelSmallNarrow import com.google.ai.edge.gallery.ui.theme.labelSmallNarrow
/** /**
* Composable function to display the model name and its download status information. * Composable function to display the model name and its download status information.

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.Arrangement
import androidx.compose.foundation.layout.Column 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.graphics.Color
import androidx.compose.ui.tooling.preview.Preview 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.ModelDownloadStatus import com.google.ai.edge.gallery.data.ModelDownloadStatus
import com.google.aiedge.gallery.data.ModelDownloadStatusType import com.google.ai.edge.gallery.data.ModelDownloadStatusType
import com.google.aiedge.gallery.ui.theme.GalleryTheme import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.aiedge.gallery.ui.theme.customColors import com.google.ai.edge.gallery.ui.theme.customColors
/** /**
* Composable function to display an icon representing the download status of a model. * Composable function to display an icon representing the download status of a model.

View file

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

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.Context
import android.net.Uri import android.net.Uri
@ -59,23 +59,23 @@ import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.Dialog
import androidx.compose.ui.window.DialogProperties import androidx.compose.ui.window.DialogProperties
import com.google.aiedge.gallery.data.Accelerator import com.google.ai.edge.gallery.data.Accelerator
import com.google.aiedge.gallery.data.BooleanSwitchConfig import com.google.ai.edge.gallery.data.BooleanSwitchConfig
import com.google.aiedge.gallery.data.Config import com.google.ai.edge.gallery.data.Config
import com.google.aiedge.gallery.data.ConfigKey import com.google.ai.edge.gallery.data.ConfigKey
import com.google.aiedge.gallery.data.IMPORTS_DIR import com.google.ai.edge.gallery.data.IMPORTS_DIR
import com.google.aiedge.gallery.data.LabelConfig import com.google.ai.edge.gallery.data.LabelConfig
import com.google.aiedge.gallery.data.ImportedModelInfo import com.google.ai.edge.gallery.data.ImportedModelInfo
import com.google.aiedge.gallery.data.NumberSliderConfig import com.google.ai.edge.gallery.data.NumberSliderConfig
import com.google.aiedge.gallery.data.SegmentedButtonConfig import com.google.ai.edge.gallery.data.SegmentedButtonConfig
import com.google.aiedge.gallery.data.ValueType import com.google.ai.edge.gallery.data.ValueType
import com.google.aiedge.gallery.ui.common.chat.ConfigEditorsPanel import com.google.ai.edge.gallery.ui.common.chat.ConfigEditorsPanel
import com.google.aiedge.gallery.ui.common.ensureValidFileName import com.google.ai.edge.gallery.ui.common.ensureValidFileName
import com.google.aiedge.gallery.ui.common.humanReadableSize import com.google.ai.edge.gallery.ui.common.humanReadableSize
import com.google.aiedge.gallery.ui.llmchat.DEFAULT_MAX_TOKEN import com.google.ai.edge.gallery.ui.llmchat.DEFAULT_MAX_TOKEN
import com.google.aiedge.gallery.ui.llmchat.DEFAULT_TEMPERATURE import com.google.ai.edge.gallery.ui.llmchat.DEFAULT_TEMPERATURE
import com.google.aiedge.gallery.ui.llmchat.DEFAULT_TOPK import com.google.ai.edge.gallery.ui.llmchat.DEFAULT_TOPK
import com.google.aiedge.gallery.ui.llmchat.DEFAULT_TOPP import com.google.ai.edge.gallery.ui.llmchat.DEFAULT_TOPP
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch 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 android.util.Log
import androidx.compose.animation.AnimatedVisibility 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.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.BuildConfig import androidx.lifecycle.Lifecycle
import com.google.aiedge.gallery.ui.common.getJsonResponse import androidx.lifecycle.LifecycleEventObserver
import com.google.aiedge.gallery.ui.modelmanager.ClickableLink 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.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlin.math.max import kotlin.math.max
@ -44,11 +50,20 @@ data class ReleaseInfo(
fun NewReleaseNotification() { fun NewReleaseNotification() {
var newReleaseVersion by remember { mutableStateOf("") } var newReleaseVersion by remember { mutableStateOf("") }
var newReleaseUrl by remember { mutableStateOf("") } var newReleaseUrl by remember { mutableStateOf("") }
val lifecycleOwner: LifecycleOwner = LocalLifecycleOwner.current
val coroutineScope = rememberCoroutineScope()
LaunchedEffect(Unit) { 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) { withContext(Dispatchers.IO) {
Log.d("AGNewReleaseNotification", "Checking for new release...") Log.d(TAG, "Checking for new release...")
val info = getJsonResponse<ReleaseInfo>("https://api.github.com/repos/$REPO/releases/latest") val info =
getJsonResponse<ReleaseInfo>("https://api.github.com/repos/$REPO/releases/latest")
if (info != null) { if (info != null) {
val curRelease = BuildConfig.VERSION_NAME val curRelease = BuildConfig.VERSION_NAME
val newRelease = info.jsonObj.tag_name val newRelease = info.jsonObj.tag_name
@ -61,6 +76,18 @@ fun NewReleaseNotification() {
} }
} }
} }
}
else -> {}
}
}
lifecycleOwner.lifecycle.addObserver(observer)
onDispose {
lifecycleOwner.lifecycle.removeObserver(observer)
}
}
AnimatedVisibility( AnimatedVisibility(
visible = newReleaseVersion.isNotEmpty(), visible = newReleaseVersion.isNotEmpty(),
@ -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"]) // 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 currentComponents = currentRelease.split('.').map { it.toIntOrNull() ?: 0 }
val newComponents = newRelease.split('.').map { it.toIntOrNull() ?: 0 } val newComponents = newRelease.split('.').map { it.toIntOrNull() ?: 0 }

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.border
import androidx.compose.foundation.clickable 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.height
import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.offset
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape 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.text.font.FontWeight
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.Dialog
import com.google.aiedge.gallery.BuildConfig import com.google.ai.edge.gallery.BuildConfig
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.aiedge.gallery.ui.theme.THEME_AUTO import com.google.ai.edge.gallery.ui.theme.THEME_AUTO
import com.google.aiedge.gallery.ui.theme.THEME_DARK import com.google.ai.edge.gallery.ui.theme.THEME_DARK
import com.google.aiedge.gallery.ui.theme.THEME_LIGHT import com.google.ai.edge.gallery.ui.theme.THEME_LIGHT
import com.google.aiedge.gallery.ui.theme.ThemeSettings import com.google.ai.edge.gallery.ui.theme.ThemeSettings
import com.google.aiedge.gallery.ui.theme.labelSmallNarrow import com.google.ai.edge.gallery.ui.theme.labelSmallNarrow
import java.time.Instant import java.time.Instant
import java.time.ZoneId import java.time.ZoneId
import java.time.format.DateTimeFormatter import java.time.format.DateTimeFormatter

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.Color
import androidx.compose.ui.graphics.PathFillType import androidx.compose.ui.graphics.PathFillType

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.content.Context
import android.graphics.Bitmap 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.client.TfLiteInitializationOptions
import com.google.android.gms.tflite.gpu.support.TfLiteGpu import com.google.android.gms.tflite.gpu.support.TfLiteGpu
import com.google.android.gms.tflite.java.TfLite import com.google.android.gms.tflite.java.TfLite
import com.google.aiedge.gallery.ui.common.chat.Classification import com.google.ai.edge.gallery.ui.common.chat.Classification
import com.google.aiedge.gallery.data.ConfigKey import com.google.ai.edge.gallery.data.ConfigKey
import com.google.aiedge.gallery.data.Model import com.google.ai.edge.gallery.data.Model
import com.google.aiedge.gallery.ui.common.LatencyProvider import com.google.ai.edge.gallery.ui.common.LatencyProvider
import org.tensorflow.lite.DataType import org.tensorflow.lite.DataType
import org.tensorflow.lite.InterpreterApi import org.tensorflow.lite.InterpreterApi
import org.tensorflow.lite.gpu.GpuDelegateFactory import org.tensorflow.lite.gpu.GpuDelegateFactory

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -14,14 +14,14 @@
* limitations under the License. * 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.ai.edge.gallery.data.Accelerator
import com.google.aiedge.gallery.data.Config import com.google.ai.edge.gallery.data.Config
import com.google.aiedge.gallery.data.ConfigKey import com.google.ai.edge.gallery.data.ConfigKey
import com.google.aiedge.gallery.data.NumberSliderConfig import com.google.ai.edge.gallery.data.NumberSliderConfig
import com.google.aiedge.gallery.data.SegmentedButtonConfig import com.google.ai.edge.gallery.data.SegmentedButtonConfig
import com.google.aiedge.gallery.data.ValueType import com.google.ai.edge.gallery.data.ValueType
const val DEFAULT_MAX_TOKEN = 1024 const val DEFAULT_MAX_TOKEN = 1024
const val DEFAULT_TOPK = 40 const val DEFAULT_TOPK = 40

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.graphics.Color
import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.AnnotatedString

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.BorderStroke
import androidx.compose.foundation.background 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.TextLayoutResult
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.R import com.google.ai.edge.gallery.R
import com.google.aiedge.gallery.data.Model import com.google.ai.edge.gallery.data.Model
import com.google.aiedge.gallery.ui.common.chat.MessageBubbleShape import com.google.ai.edge.gallery.ui.common.chat.MessageBubbleShape
import com.google.aiedge.gallery.ui.modelmanager.ModelInitializationStatusType import com.google.ai.edge.gallery.ui.modelmanager.ModelInitializationStatusType
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import com.google.aiedge.gallery.ui.theme.customColors import com.google.ai.edge.gallery.ui.theme.customColors
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch

View file

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

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.background
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.background
import androidx.compose.foundation.gestures.detectDragGestures 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.tooling.preview.Preview
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.google.aiedge.gallery.ui.theme.GalleryTheme import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.aiedge.gallery.ui.theme.customColors import com.google.ai.edge.gallery.ui.theme.customColors
@Composable @Composable
fun VerticalSplitView( fun VerticalSplitView(

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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.clickable
import androidx.compose.foundation.layout.Arrangement 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.text.style.TextDecoration
import androidx.compose.ui.tooling.preview.Preview 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.ai.edge.gallery.data.Model
import com.google.aiedge.gallery.data.Task import com.google.ai.edge.gallery.data.Task
import com.google.aiedge.gallery.ui.common.modelitem.ModelItem import com.google.ai.edge.gallery.ui.common.modelitem.ModelItem
import com.google.aiedge.gallery.ui.preview.PreviewModelManagerViewModel import com.google.ai.edge.gallery.ui.preview.PreviewModelManagerViewModel
import com.google.aiedge.gallery.ui.preview.TASK_TEST1 import com.google.ai.edge.gallery.ui.preview.TASK_TEST1
import com.google.aiedge.gallery.ui.theme.GalleryTheme import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.aiedge.gallery.ui.theme.customColors import com.google.ai.edge.gallery.ui.theme.customColors
private const val TAG = "AGModelList" private const val TAG = "AGModelList"

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -14,12 +14,12 @@
* limitations under the License. * 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.ai.edge.gallery.data.AGWorkInfo
import com.google.aiedge.gallery.data.DownloadRepository import com.google.ai.edge.gallery.data.DownloadRepository
import com.google.aiedge.gallery.data.Model import com.google.ai.edge.gallery.data.Model
import com.google.aiedge.gallery.data.ModelDownloadStatus import com.google.ai.edge.gallery.data.ModelDownloadStatus
import java.util.UUID import java.util.UUID
class PreviewDownloadRepository : DownloadRepository { class PreviewDownloadRepository : DownloadRepository {

View file

@ -14,8 +14,8 @@
* limitations under the License. * 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) class PreviewLlmSingleTurnViewModel : LlmSingleTurnViewModel(task = TASK_TEST1)

View file

@ -14,13 +14,13 @@
* limitations under the License. * 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.content.Context
import com.google.aiedge.gallery.data.ModelDownloadStatus import com.google.ai.edge.gallery.data.ModelDownloadStatus
import com.google.aiedge.gallery.data.ModelDownloadStatusType import com.google.ai.edge.gallery.data.ModelDownloadStatusType
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerUiState import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerUiState
import com.google.aiedge.gallery.ui.modelmanager.ModelManagerViewModel import com.google.ai.edge.gallery.ui.modelmanager.ModelManagerViewModel
import kotlinx.coroutines.flow.update import kotlinx.coroutines.flow.update
class PreviewModelManagerViewModel(context: Context) : class PreviewModelManagerViewModel(context: Context) :

View file

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

View file

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

View file

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

View file

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

View file

@ -14,7 +14,7 @@
* limitations under the License. * 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 import androidx.compose.ui.graphics.Color

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