mirror of
https://github.com/florisboard/florisboard.git
synced 2024-09-19 11:32:18 +02:00
Move lib.snygg
to separate module
This commit is contained in:
parent
6244198795
commit
b0649b1b7e
@ -208,6 +208,7 @@ dependencies {
|
||||
implementation(project(":lib:android"))
|
||||
implementation(project(":lib:kotlin"))
|
||||
implementation(project(":lib:native"))
|
||||
implementation(project(":lib:snygg"))
|
||||
|
||||
testImplementation(libs.equalsverifier)
|
||||
testImplementation(libs.kotest.assertions.core)
|
||||
|
@ -33,6 +33,7 @@ import dev.patrickgold.florisboard.ime.keyboard.KeyboardManager
|
||||
import dev.patrickgold.florisboard.ime.media.emoji.FlorisEmojiCompat
|
||||
import dev.patrickgold.florisboard.ime.nlp.NlpManager
|
||||
import dev.patrickgold.florisboard.ime.text.gestures.GlideTypingManager
|
||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeTheme
|
||||
import dev.patrickgold.florisboard.ime.theme.ThemeManager
|
||||
import dev.patrickgold.florisboard.lib.cache.CacheManager
|
||||
import dev.patrickgold.florisboard.lib.crashutility.CrashUtility
|
||||
@ -60,6 +61,7 @@ class FlorisApplication : Application() {
|
||||
System.loadLibrary("fl_native")
|
||||
} catch (_: Exception) {
|
||||
}
|
||||
FlorisImeTheme.init()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -105,13 +105,13 @@ import dev.patrickgold.florisboard.lib.devtools.flogError
|
||||
import dev.patrickgold.florisboard.lib.devtools.flogInfo
|
||||
import dev.patrickgold.florisboard.lib.devtools.flogWarning
|
||||
import dev.patrickgold.florisboard.lib.observeAsTransformingState
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.SnyggSurface
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.shape
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBackground
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBorder
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggShadow
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.solidColor
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.spSize
|
||||
import org.florisboard.lib.snygg.ui.SnyggSurface
|
||||
import org.florisboard.lib.snygg.ui.shape
|
||||
import org.florisboard.lib.snygg.ui.snyggBackground
|
||||
import org.florisboard.lib.snygg.ui.snyggBorder
|
||||
import org.florisboard.lib.snygg.ui.snyggShadow
|
||||
import org.florisboard.lib.snygg.ui.solidColor
|
||||
import org.florisboard.lib.snygg.ui.spSize
|
||||
import dev.patrickgold.florisboard.lib.util.ViewUtils
|
||||
import dev.patrickgold.florisboard.lib.util.debugSummarize
|
||||
import dev.patrickgold.florisboard.lib.util.launchActivity
|
||||
|
@ -49,7 +49,7 @@ import dev.patrickgold.florisboard.ime.theme.extCoreTheme
|
||||
import org.florisboard.lib.android.isOrientationPortrait
|
||||
import dev.patrickgold.florisboard.lib.ext.ExtensionComponentName
|
||||
import dev.patrickgold.florisboard.lib.observeAsTransformingState
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggLevel
|
||||
import org.florisboard.lib.snygg.SnyggLevel
|
||||
import dev.patrickgold.florisboard.lib.util.VersionName
|
||||
import dev.patrickgold.jetpref.datastore.JetPref
|
||||
import dev.patrickgold.jetpref.datastore.model.PreferenceMigrationEntry
|
||||
|
@ -23,7 +23,7 @@ import dev.patrickgold.florisboard.ime.text.key.KeyHintMode
|
||||
import dev.patrickgold.florisboard.ime.text.key.UtilityKeyAction
|
||||
import dev.patrickgold.florisboard.ime.theme.ThemeMode
|
||||
import dev.patrickgold.florisboard.lib.compose.stringRes
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggLevel
|
||||
import org.florisboard.lib.snygg.SnyggLevel
|
||||
import dev.patrickgold.jetpref.datastore.ui.ListPreferenceEntry
|
||||
import dev.patrickgold.jetpref.datastore.ui.listPrefEntries
|
||||
import org.florisboard.lib.kotlin.curlyFormat
|
||||
|
@ -83,7 +83,7 @@ import dev.patrickgold.florisboard.lib.ext.validate
|
||||
import dev.patrickgold.florisboard.lib.io.FlorisRef
|
||||
import dev.patrickgold.florisboard.lib.io.ZipUtils
|
||||
import dev.patrickgold.florisboard.lib.rememberValidationResult
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggStylesheetJsonConfig
|
||||
import org.florisboard.lib.snygg.SnyggStylesheetJsonConfig
|
||||
import dev.patrickgold.florisboard.themeManager
|
||||
import dev.patrickgold.jetpref.datastore.ui.Preference
|
||||
import dev.patrickgold.jetpref.datastore.ui.vectorResource
|
||||
|
@ -70,27 +70,27 @@ import dev.patrickgold.florisboard.lib.compose.rippleClickable
|
||||
import dev.patrickgold.florisboard.lib.compose.stringRes
|
||||
import dev.patrickgold.florisboard.lib.ext.ExtensionValidation
|
||||
import dev.patrickgold.florisboard.lib.rememberValidationResult
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggLevel
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggPropertySetSpec
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.MaterialYouColor
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggCutCornerDpShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggCutCornerPercentShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggDefinedVarValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggDpShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggDpSizeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggImplicitInheritValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggMaterialYouDarkColorValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggMaterialYouLightColorValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggMaterialYouValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggPercentShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggRoundedCornerDpShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggRoundedCornerPercentShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggSolidColorValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggSpSizeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggValueEncoder
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggVarValueEncoders
|
||||
import org.florisboard.lib.snygg.SnyggLevel
|
||||
import org.florisboard.lib.snygg.SnyggPropertySetSpec
|
||||
import org.florisboard.lib.snygg.value.MaterialYouColor
|
||||
import org.florisboard.lib.snygg.value.SnyggCutCornerDpShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggCutCornerPercentShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggDefinedVarValue
|
||||
import org.florisboard.lib.snygg.value.SnyggDpShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggDpSizeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggImplicitInheritValue
|
||||
import org.florisboard.lib.snygg.value.SnyggMaterialYouDarkColorValue
|
||||
import org.florisboard.lib.snygg.value.SnyggMaterialYouLightColorValue
|
||||
import org.florisboard.lib.snygg.value.SnyggMaterialYouValue
|
||||
import org.florisboard.lib.snygg.value.SnyggPercentShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggRoundedCornerDpShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggRoundedCornerPercentShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggSolidColorValue
|
||||
import org.florisboard.lib.snygg.value.SnyggSpSizeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggValue
|
||||
import org.florisboard.lib.snygg.value.SnyggValueEncoder
|
||||
import org.florisboard.lib.snygg.value.SnyggVarValueEncoders
|
||||
import dev.patrickgold.florisboard.lib.stripUnicodeCtrlChars
|
||||
import dev.patrickgold.jetpref.material.ui.ExperimentalJetPrefMaterial3Ui
|
||||
import dev.patrickgold.jetpref.material.ui.JetPrefAlertDialog
|
||||
|
@ -94,8 +94,8 @@ import dev.patrickgold.florisboard.lib.compose.FlorisIconButton
|
||||
import dev.patrickgold.florisboard.lib.compose.FlorisOutlinedTextField
|
||||
import dev.patrickgold.florisboard.lib.compose.florisHorizontalScroll
|
||||
import dev.patrickgold.florisboard.lib.compose.stringRes
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggLevel
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggRule
|
||||
import org.florisboard.lib.snygg.SnyggLevel
|
||||
import org.florisboard.lib.snygg.SnyggRule
|
||||
import dev.patrickgold.florisboard.lib.util.InputMethodUtils
|
||||
import dev.patrickgold.jetpref.material.ui.JetPrefAlertDialog
|
||||
import org.florisboard.lib.kotlin.curlyFormat
|
||||
|
@ -23,7 +23,7 @@ import dev.patrickgold.florisboard.R
|
||||
import dev.patrickgold.florisboard.app.enumDisplayEntriesOf
|
||||
import dev.patrickgold.florisboard.app.florisPreferenceModel
|
||||
import dev.patrickgold.florisboard.lib.compose.stringRes
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggLevel
|
||||
import org.florisboard.lib.snygg.SnyggLevel
|
||||
import dev.patrickgold.jetpref.datastore.ui.ListPreference
|
||||
import dev.patrickgold.jetpref.datastore.ui.PreferenceLayout
|
||||
import dev.patrickgold.jetpref.material.ui.JetPrefAlertDialog
|
||||
|
@ -39,15 +39,15 @@ import androidx.compose.ui.graphics.Shape
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import androidx.compose.ui.unit.dp
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggCutCornerDpShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggDefinedVarValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggDpSizeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggMaterialYouValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggRoundedCornerDpShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggSolidColorValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggSpSizeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggValue
|
||||
import org.florisboard.lib.snygg.value.SnyggCutCornerDpShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggDefinedVarValue
|
||||
import org.florisboard.lib.snygg.value.SnyggDpSizeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggMaterialYouValue
|
||||
import org.florisboard.lib.snygg.value.SnyggRoundedCornerDpShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggSolidColorValue
|
||||
import org.florisboard.lib.snygg.value.SnyggSpSizeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggValue
|
||||
import dev.patrickgold.jetpref.material.ui.checkeredBackground
|
||||
|
||||
object SnyggValueIcon {
|
||||
|
@ -89,15 +89,6 @@ import dev.patrickgold.florisboard.lib.compose.rippleClickable
|
||||
import dev.patrickgold.florisboard.lib.compose.stringRes
|
||||
import dev.patrickgold.florisboard.lib.ext.ExtensionValidation
|
||||
import dev.patrickgold.florisboard.lib.rememberValidationResult
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggLevel
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggPropertySetEditor
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggPropertySetSpec
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggRule
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggStylesheet
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggStylesheetEditor
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggStylesheetJsonConfig
|
||||
import dev.patrickgold.florisboard.lib.snygg.definedVariablesRule
|
||||
import dev.patrickgold.florisboard.lib.snygg.isDefinedVariablesRule
|
||||
import dev.patrickgold.florisboard.themeManager
|
||||
import dev.patrickgold.jetpref.datastore.model.observeAsState
|
||||
import dev.patrickgold.jetpref.material.ui.JetPrefAlertDialog
|
||||
@ -107,6 +98,15 @@ import kotlinx.coroutines.launch
|
||||
import org.florisboard.lib.android.showLongToast
|
||||
import org.florisboard.lib.kotlin.io.readJson
|
||||
import org.florisboard.lib.kotlin.io.subFile
|
||||
import org.florisboard.lib.snygg.SnyggLevel
|
||||
import org.florisboard.lib.snygg.SnyggPropertySetEditor
|
||||
import org.florisboard.lib.snygg.SnyggPropertySetSpec
|
||||
import org.florisboard.lib.snygg.SnyggRule
|
||||
import org.florisboard.lib.snygg.SnyggStylesheet
|
||||
import org.florisboard.lib.snygg.SnyggStylesheetEditor
|
||||
import org.florisboard.lib.snygg.SnyggStylesheetJsonConfig
|
||||
import org.florisboard.lib.snygg.definedVariablesRule
|
||||
import org.florisboard.lib.snygg.isDefinedVariablesRule
|
||||
|
||||
internal val IntListSaver = Saver<SnapshotStateList<Int>, ArrayList<Int>>(
|
||||
save = { ArrayList(it) },
|
||||
|
@ -23,27 +23,27 @@ import dev.patrickgold.florisboard.R
|
||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
||||
import dev.patrickgold.florisboard.lib.UnicodeCtrlChar
|
||||
import dev.patrickgold.florisboard.lib.compose.stringRes
|
||||
import dev.patrickgold.florisboard.lib.snygg.Snygg
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggLevel
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggRule
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.RgbaColor
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggCircleShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggCutCornerDpShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggCutCornerPercentShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggDefinedVarValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggDpSizeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggExplicitInheritValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggImplicitInheritValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggMaterialYouDarkColorValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggMaterialYouLightColorValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggPercentageSizeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggRectangleShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggRoundedCornerDpShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggRoundedCornerPercentShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggSolidColorValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggSpSizeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggValueEncoder
|
||||
import org.florisboard.lib.snygg.Snygg
|
||||
import org.florisboard.lib.snygg.SnyggLevel
|
||||
import org.florisboard.lib.snygg.SnyggRule
|
||||
import org.florisboard.lib.snygg.value.RgbaColor
|
||||
import org.florisboard.lib.snygg.value.SnyggCircleShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggCutCornerDpShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggCutCornerPercentShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggDefinedVarValue
|
||||
import org.florisboard.lib.snygg.value.SnyggDpSizeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggExplicitInheritValue
|
||||
import org.florisboard.lib.snygg.value.SnyggImplicitInheritValue
|
||||
import org.florisboard.lib.snygg.value.SnyggMaterialYouDarkColorValue
|
||||
import org.florisboard.lib.snygg.value.SnyggMaterialYouLightColorValue
|
||||
import org.florisboard.lib.snygg.value.SnyggPercentageSizeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggRectangleShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggRoundedCornerDpShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggRoundedCornerPercentShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggSolidColorValue
|
||||
import org.florisboard.lib.snygg.value.SnyggSpSizeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggValue
|
||||
import org.florisboard.lib.snygg.value.SnyggValueEncoder
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
@Composable
|
||||
|
@ -105,14 +105,14 @@ import dev.patrickgold.florisboard.lib.compose.rippleClickable
|
||||
import dev.patrickgold.florisboard.lib.compose.safeTimes
|
||||
import dev.patrickgold.florisboard.lib.compose.stringRes
|
||||
import dev.patrickgold.florisboard.lib.observeAsNonNullState
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggPropertySet
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.SnyggSurface
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBackground
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBorder
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggClip
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggShadow
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.solidColor
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.spSize
|
||||
import org.florisboard.lib.snygg.SnyggPropertySet
|
||||
import org.florisboard.lib.snygg.ui.SnyggSurface
|
||||
import org.florisboard.lib.snygg.ui.snyggBackground
|
||||
import org.florisboard.lib.snygg.ui.snyggBorder
|
||||
import org.florisboard.lib.snygg.ui.snyggClip
|
||||
import org.florisboard.lib.snygg.ui.snyggShadow
|
||||
import org.florisboard.lib.snygg.ui.solidColor
|
||||
import org.florisboard.lib.snygg.ui.spSize
|
||||
import dev.patrickgold.florisboard.lib.util.NetworkUtils
|
||||
import dev.patrickgold.jetpref.datastore.model.observeAsState
|
||||
|
||||
|
@ -57,7 +57,7 @@ import dev.patrickgold.florisboard.ime.text.keyboard.TextKeyData
|
||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeTheme
|
||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
||||
import dev.patrickgold.florisboard.keyboardManager
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.SnyggSurface
|
||||
import org.florisboard.lib.snygg.ui.SnyggSurface
|
||||
|
||||
@SuppressLint("MutableCollectionMutableState")
|
||||
@Composable
|
||||
|
@ -92,11 +92,11 @@ import org.florisboard.lib.android.systemService
|
||||
import dev.patrickgold.florisboard.lib.compose.florisScrollbar
|
||||
import dev.patrickgold.florisboard.lib.compose.safeTimes
|
||||
import dev.patrickgold.florisboard.lib.compose.stringRes
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBackground
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBorder
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggShadow
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.solidColor
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.spSize
|
||||
import org.florisboard.lib.snygg.ui.snyggBackground
|
||||
import org.florisboard.lib.snygg.ui.snyggBorder
|
||||
import org.florisboard.lib.snygg.ui.snyggShadow
|
||||
import org.florisboard.lib.snygg.ui.solidColor
|
||||
import org.florisboard.lib.snygg.ui.spSize
|
||||
import dev.patrickgold.jetpref.datastore.model.observeAsState
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
|
@ -39,8 +39,8 @@ import dev.patrickgold.florisboard.ime.keyboard.FlorisImeSizing
|
||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeTheme
|
||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
||||
import dev.patrickgold.florisboard.lib.compose.stringRes
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBackground
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.solidColor
|
||||
import org.florisboard.lib.snygg.ui.snyggBackground
|
||||
import org.florisboard.lib.snygg.ui.solidColor
|
||||
|
||||
@Composable
|
||||
fun RowScope.OneHandedPanel(
|
||||
|
@ -43,12 +43,12 @@ import dev.patrickgold.florisboard.ime.text.key.KeyCode
|
||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeTheme
|
||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
||||
import dev.patrickgold.florisboard.lib.compose.safeTimes
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.SnyggSurface
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBackground
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBorder
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggShadow
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.solidColor
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.spSize
|
||||
import org.florisboard.lib.snygg.ui.SnyggSurface
|
||||
import org.florisboard.lib.snygg.ui.snyggBackground
|
||||
import org.florisboard.lib.snygg.ui.snyggBorder
|
||||
import org.florisboard.lib.snygg.ui.snyggShadow
|
||||
import org.florisboard.lib.snygg.ui.solidColor
|
||||
import org.florisboard.lib.snygg.ui.spSize
|
||||
|
||||
@Composable
|
||||
fun PopupBaseBox(
|
||||
|
@ -60,9 +60,9 @@ import org.florisboard.lib.android.AndroidVersion
|
||||
import dev.patrickgold.florisboard.lib.compose.florisHorizontalScroll
|
||||
import dev.patrickgold.florisboard.lib.compose.safeTimes
|
||||
import dev.patrickgold.florisboard.lib.observeAsNonNullState
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBackground
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.solidColor
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.spSize
|
||||
import org.florisboard.lib.snygg.ui.snyggBackground
|
||||
import org.florisboard.lib.snygg.ui.solidColor
|
||||
import org.florisboard.lib.snygg.ui.spSize
|
||||
import dev.patrickgold.florisboard.nlpManager
|
||||
import dev.patrickgold.florisboard.subtypeManager
|
||||
import dev.patrickgold.jetpref.datastore.model.observeAsState
|
||||
|
@ -65,10 +65,10 @@ import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
||||
import dev.patrickgold.florisboard.keyboardManager
|
||||
import dev.patrickgold.florisboard.lib.compose.horizontalTween
|
||||
import dev.patrickgold.florisboard.lib.compose.verticalTween
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBackground
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBorder
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggShadow
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.solidColor
|
||||
import org.florisboard.lib.snygg.ui.snyggBackground
|
||||
import org.florisboard.lib.snygg.ui.snyggBorder
|
||||
import org.florisboard.lib.snygg.ui.snyggShadow
|
||||
import org.florisboard.lib.snygg.ui.solidColor
|
||||
import dev.patrickgold.jetpref.datastore.model.observeAsState
|
||||
import dev.patrickgold.jetpref.datastore.ui.vectorResource
|
||||
|
||||
|
@ -62,11 +62,11 @@ import dev.patrickgold.florisboard.ime.text.key.KeyCode
|
||||
import dev.patrickgold.florisboard.ime.text.keyboard.TextKeyData
|
||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeTheme
|
||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.shape
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBorder
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggClip
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggShadow
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.solidColor
|
||||
import org.florisboard.lib.snygg.ui.shape
|
||||
import org.florisboard.lib.snygg.ui.snyggBorder
|
||||
import org.florisboard.lib.snygg.ui.snyggClip
|
||||
import org.florisboard.lib.snygg.ui.snyggShadow
|
||||
import org.florisboard.lib.snygg.ui.solidColor
|
||||
|
||||
private val BackgroundAnimationSpec = tween<Color>(durationMillis = 150, easing = FastOutSlowInEasing)
|
||||
private val DebugHelperColor = Color.Red.copy(alpha = 0.5f)
|
||||
|
@ -66,11 +66,11 @@ import dev.patrickgold.florisboard.keyboardManager
|
||||
import dev.patrickgold.florisboard.lib.compose.FlorisIconButton
|
||||
import dev.patrickgold.florisboard.lib.compose.safeTimes
|
||||
import dev.patrickgold.florisboard.lib.compose.stringRes
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggPropertySet
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBackground
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggClip
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.solidColor
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.spSize
|
||||
import org.florisboard.lib.snygg.SnyggPropertySet
|
||||
import org.florisboard.lib.snygg.ui.snyggBackground
|
||||
import org.florisboard.lib.snygg.ui.snyggClip
|
||||
import org.florisboard.lib.snygg.ui.solidColor
|
||||
import org.florisboard.lib.snygg.ui.spSize
|
||||
import dev.patrickgold.florisboard.lib.toIntOffset
|
||||
|
||||
private const val ItemNotFound = -1
|
||||
|
@ -39,8 +39,8 @@ import dev.patrickgold.florisboard.ime.theme.FlorisImeTheme
|
||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
||||
import dev.patrickgold.florisboard.keyboardManager
|
||||
import dev.patrickgold.florisboard.lib.compose.stringRes
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.SnyggButton
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBackground
|
||||
import org.florisboard.lib.snygg.ui.SnyggButton
|
||||
import org.florisboard.lib.snygg.ui.snyggBackground
|
||||
import dev.patrickgold.jetpref.datastore.model.observeAsState
|
||||
|
||||
@Composable
|
||||
|
@ -34,7 +34,7 @@ import dev.patrickgold.florisboard.ime.smartbar.SmartbarLayout
|
||||
import dev.patrickgold.florisboard.ime.text.keyboard.TextKeyData
|
||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeTheme
|
||||
import dev.patrickgold.florisboard.keyboardManager
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBackground
|
||||
import org.florisboard.lib.snygg.ui.snyggBackground
|
||||
import dev.patrickgold.jetpref.datastore.model.observeAsState
|
||||
|
||||
internal val ToggleOverflowPanelAction = QuickAction.InsertKey(TextKeyData.TOGGLE_ACTIONS_OVERFLOW)
|
||||
|
@ -42,7 +42,7 @@ import dev.patrickgold.florisboard.ime.text.keyboard.TextKeyboardLayout
|
||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeTheme
|
||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
||||
import dev.patrickgold.florisboard.keyboardManager
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.solidColor
|
||||
import org.florisboard.lib.snygg.ui.solidColor
|
||||
import dev.patrickgold.jetpref.datastore.model.observeAsState
|
||||
|
||||
@Composable
|
||||
|
@ -91,10 +91,10 @@ import dev.patrickgold.florisboard.lib.compose.safeTimes
|
||||
import dev.patrickgold.florisboard.lib.devtools.LogTopic
|
||||
import dev.patrickgold.florisboard.lib.devtools.flogDebug
|
||||
import dev.patrickgold.florisboard.lib.observeAsTransformingState
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.SnyggSurface
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBackground
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.solidColor
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.spSize
|
||||
import org.florisboard.lib.snygg.ui.SnyggSurface
|
||||
import org.florisboard.lib.snygg.ui.snyggBackground
|
||||
import org.florisboard.lib.snygg.ui.solidColor
|
||||
import org.florisboard.lib.snygg.ui.spSize
|
||||
import dev.patrickgold.florisboard.lib.toIntOffset
|
||||
import dev.patrickgold.jetpref.datastore.model.observeAsState
|
||||
import kotlinx.coroutines.channels.Channel
|
||||
|
@ -29,9 +29,14 @@ import androidx.compose.runtime.staticCompositionLocalOf
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.text.TextStyle
|
||||
import dev.patrickgold.florisboard.ime.input.InputShiftState
|
||||
import dev.patrickgold.florisboard.ime.text.key.KeyCode
|
||||
import dev.patrickgold.florisboard.lib.observeAsNonNullState
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggStylesheet
|
||||
import org.florisboard.lib.snygg.SnyggStylesheet
|
||||
import dev.patrickgold.florisboard.themeManager
|
||||
import org.florisboard.lib.snygg.Snygg
|
||||
import org.florisboard.lib.snygg.ui.ProvideSnyggUiDefaults
|
||||
import org.florisboard.lib.snygg.ui.SnyggUiDefaults
|
||||
|
||||
private val LocalConfig = staticCompositionLocalOf<ThemeExtensionComponent> { error("not init") }
|
||||
private val LocalStyle = staticCompositionLocalOf<SnyggStylesheet> { error("not init") }
|
||||
@ -59,6 +64,44 @@ object FlorisImeTheme {
|
||||
fun fallbackContentColor(): Color {
|
||||
return if (config.isNightTheme) Color.White else Color.Black
|
||||
}
|
||||
|
||||
fun init() {
|
||||
Snygg.init(
|
||||
stylesheetSpec = FlorisImeUiSpec,
|
||||
rulePreferredElementSorting = listOf(
|
||||
FlorisImeUi.Keyboard,
|
||||
FlorisImeUi.Key,
|
||||
FlorisImeUi.KeyHint,
|
||||
FlorisImeUi.KeyPopup,
|
||||
FlorisImeUi.Smartbar,
|
||||
FlorisImeUi.SmartbarSharedActionsRow,
|
||||
FlorisImeUi.SmartbarSharedActionsToggle,
|
||||
FlorisImeUi.SmartbarExtendedActionsRow,
|
||||
FlorisImeUi.SmartbarExtendedActionsToggle,
|
||||
FlorisImeUi.SmartbarActionKey,
|
||||
FlorisImeUi.SmartbarActionTile,
|
||||
FlorisImeUi.SmartbarActionsOverflow,
|
||||
FlorisImeUi.SmartbarActionsOverflowCustomizeButton,
|
||||
FlorisImeUi.SmartbarActionsEditor,
|
||||
FlorisImeUi.SmartbarActionsEditorHeader,
|
||||
FlorisImeUi.SmartbarActionsEditorSubheader,
|
||||
FlorisImeUi.SmartbarCandidatesRow,
|
||||
FlorisImeUi.SmartbarCandidateWord,
|
||||
FlorisImeUi.SmartbarCandidateClip,
|
||||
FlorisImeUi.SmartbarCandidateSpacer,
|
||||
),
|
||||
rulePlaceholders = mapOf(
|
||||
"c:delete" to KeyCode.DELETE,
|
||||
"c:enter" to KeyCode.ENTER,
|
||||
"c:shift" to KeyCode.SHIFT,
|
||||
"c:space" to KeyCode.SPACE,
|
||||
"sh:unshifted" to InputShiftState.UNSHIFTED.value,
|
||||
"sh:shifted_manual" to InputShiftState.SHIFTED_MANUAL.value,
|
||||
"sh:shifted_automatic" to InputShiftState.SHIFTED_AUTOMATIC.value,
|
||||
"sh:caps_lock" to InputShiftState.CAPS_LOCK.value,
|
||||
),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
@ -80,7 +123,12 @@ fun FlorisImeTheme(content: @Composable () -> Unit) {
|
||||
LocalStyle provides activeStyle,
|
||||
LocalTextStyle provides TextStyle.Default,
|
||||
) {
|
||||
content()
|
||||
val fallbackContentColor = FlorisImeTheme.fallbackContentColor()
|
||||
val fallbackSurfaceColor = FlorisImeTheme.fallbackSurfaceColor()
|
||||
val snyggUiDefaults = remember(fallbackContentColor, fallbackSurfaceColor) {
|
||||
SnyggUiDefaults(fallbackContentColor, fallbackSurfaceColor)
|
||||
}
|
||||
ProvideSnyggUiDefaults(snyggUiDefaults, content)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -20,7 +20,7 @@ import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import dev.patrickgold.florisboard.ime.input.InputShiftState
|
||||
import dev.patrickgold.florisboard.ime.text.key.KeyCode
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggStylesheet
|
||||
import org.florisboard.lib.snygg.SnyggStylesheet
|
||||
|
||||
val FlorisImeThemeBaseStyle = SnyggStylesheet {
|
||||
defines {
|
||||
|
@ -16,21 +16,21 @@
|
||||
|
||||
package dev.patrickgold.florisboard.ime.theme
|
||||
|
||||
import dev.patrickgold.florisboard.lib.snygg.Snygg
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggLevel
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggPropertySetSpecBuilder
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggSpec
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggCircleShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggCutCornerDpShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggCutCornerPercentShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggDpSizeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggMaterialYouDarkColorValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggMaterialYouLightColorValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggRectangleShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggRoundedCornerDpShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggRoundedCornerPercentShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggSolidColorValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggSpSizeValue
|
||||
import org.florisboard.lib.snygg.Snygg
|
||||
import org.florisboard.lib.snygg.SnyggLevel
|
||||
import org.florisboard.lib.snygg.SnyggPropertySetSpecBuilder
|
||||
import org.florisboard.lib.snygg.SnyggSpec
|
||||
import org.florisboard.lib.snygg.value.SnyggCircleShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggCutCornerDpShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggCutCornerPercentShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggDpSizeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggMaterialYouDarkColorValue
|
||||
import org.florisboard.lib.snygg.value.SnyggMaterialYouLightColorValue
|
||||
import org.florisboard.lib.snygg.value.SnyggRectangleShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggRoundedCornerDpShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggRoundedCornerPercentShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggSolidColorValue
|
||||
import org.florisboard.lib.snygg.value.SnyggSpSizeValue
|
||||
|
||||
fun SnyggPropertySetSpecBuilder.background() {
|
||||
property(
|
||||
|
@ -18,7 +18,7 @@ package dev.patrickgold.florisboard.ime.theme
|
||||
|
||||
import dev.patrickgold.florisboard.lib.ext.ExtensionComponent
|
||||
import dev.patrickgold.florisboard.lib.ext.ExtensionComponentName
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggStylesheetEditor
|
||||
import org.florisboard.lib.snygg.SnyggStylesheetEditor
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
|
@ -47,11 +47,6 @@ import dev.patrickgold.florisboard.appContext
|
||||
import dev.patrickgold.florisboard.extensionManager
|
||||
import dev.patrickgold.florisboard.lib.ext.ExtensionComponentName
|
||||
import dev.patrickgold.florisboard.lib.io.ZipUtils
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggStylesheet
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggStylesheetJsonConfig
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.solidColor
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.MaterialYouColor
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggSolidColorValue
|
||||
import dev.patrickgold.florisboard.lib.util.ViewUtils
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
@ -59,7 +54,11 @@ import kotlinx.coroutines.SupervisorJob
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.sync.Mutex
|
||||
import kotlinx.coroutines.sync.withLock
|
||||
import kotlinx.serialization.decodeFromString
|
||||
import org.florisboard.lib.snygg.SnyggStylesheet
|
||||
import org.florisboard.lib.snygg.SnyggStylesheetJsonConfig
|
||||
import org.florisboard.lib.snygg.ui.solidColor
|
||||
import org.florisboard.lib.snygg.value.MaterialYouColor
|
||||
import org.florisboard.lib.snygg.value.SnyggSolidColorValue
|
||||
import kotlin.properties.Delegates
|
||||
|
||||
/**
|
||||
|
@ -30,7 +30,7 @@ import androidx.core.view.WindowInsetsControllerCompat
|
||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeTheme
|
||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
||||
import org.florisboard.lib.android.AndroidVersion
|
||||
import dev.patrickgold.florisboard.lib.snygg.ui.solidColor
|
||||
import org.florisboard.lib.snygg.ui.solidColor
|
||||
|
||||
|
||||
@Composable
|
||||
|
@ -20,17 +20,17 @@ import androidx.core.text.trimmedLength
|
||||
import dev.patrickgold.florisboard.R
|
||||
import dev.patrickgold.florisboard.ime.theme.ThemeExtensionComponent
|
||||
import dev.patrickgold.florisboard.lib.ValidationRule
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggStylesheet
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggDpShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggPercentShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggSolidColorValue
|
||||
import org.florisboard.lib.snygg.SnyggStylesheet
|
||||
import org.florisboard.lib.snygg.value.SnyggDpShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggPercentShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggSolidColorValue
|
||||
import dev.patrickgold.florisboard.lib.validate
|
||||
import org.florisboard.lib.snygg.value.SnyggVarValue
|
||||
|
||||
object ExtensionValidation {
|
||||
private val MetaIdRegex = """^[a-z][a-z0-9_]*(\.[a-z0-9][a-z0-9_]*)*${'$'}""".toRegex()
|
||||
private val ComponentIdRegex = """^[a-z][a-z0-9_]*${'$'}""".toRegex()
|
||||
private val ThemeComponentStylesheetPathRegex = """^[^:*<>"']*${'$'}""".toRegex()
|
||||
val ThemeComponentVariableNameRegex = """^[a-zA-Z0-9-_]+${'$'}""".toRegex()
|
||||
|
||||
val MetaId = ValidationRule<String> {
|
||||
forKlass = ExtensionMeta::class
|
||||
@ -148,8 +148,8 @@ object ExtensionValidation {
|
||||
when {
|
||||
str.isBlank() -> resultInvalid(error = R.string.ext__validation__enter_property)
|
||||
str == "-" || str.startsWith("--") -> resultValid()
|
||||
!ThemeComponentVariableNameRegex.matches(str) -> {
|
||||
resultInvalid(error = R.string.ext__validation__error_property, "variable_name_regex" to ThemeComponentVariableNameRegex)
|
||||
!SnyggVarValue.VariableNameRegex.matches(str) -> {
|
||||
resultInvalid(error = R.string.ext__validation__error_property, "variable_name_regex" to SnyggVarValue.VariableNameRegex)
|
||||
}
|
||||
else -> resultValid(hint = R.string.ext__validation__hint_property)
|
||||
}
|
||||
@ -163,7 +163,7 @@ object ExtensionValidation {
|
||||
val str = input.trim()
|
||||
when {
|
||||
str.isBlank() -> resultInvalid(error = R.string.ext__validation__enter_color)
|
||||
dev.patrickgold.florisboard.lib.snygg.value.SnyggSolidColorValue.deserialize(str).isFailure -> {
|
||||
org.florisboard.lib.snygg.value.SnyggSolidColorValue.deserialize(str).isFailure -> {
|
||||
resultInvalid(error = R.string.ext__validation__error_color)
|
||||
}
|
||||
else -> resultValid()
|
||||
|
@ -1,4 +1,4 @@
|
||||
package dev.patrickgold.florisboard.lib.snygg
|
||||
package org.florisboard.lib.snygg
|
||||
|
||||
import io.kotest.core.spec.style.FunSpec
|
||||
import io.kotest.data.forAll
|
||||
|
@ -1,4 +1,4 @@
|
||||
package dev.patrickgold.florisboard.lib.snygg.value
|
||||
package org.florisboard.lib.snygg.value
|
||||
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
|
@ -1,6 +1,7 @@
|
||||
plugins {
|
||||
alias(libs.plugins.agp.library)
|
||||
alias(libs.plugins.kotlin.android)
|
||||
alias(libs.plugins.kotlin.serialization)
|
||||
}
|
||||
|
||||
val projectMinSdk: String by project
|
||||
|
@ -1,24 +0,0 @@
|
||||
package org.florisboard.lib.android
|
||||
|
||||
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("org.florisboard.lib.android.test", appContext.packageName)
|
||||
}
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
package org.florisboard.lib.android
|
||||
|
||||
import org.junit.Test
|
||||
|
||||
import org.junit.Assert.*
|
||||
|
||||
/**
|
||||
* Example local unit test, which will execute on the development machine (host).
|
||||
*
|
||||
* See [testing documentation](http://d.android.com/tools/testing).
|
||||
*/
|
||||
class ExampleUnitTest {
|
||||
@Test
|
||||
fun addition_isCorrect() {
|
||||
assertEquals(4, 2 + 2)
|
||||
}
|
||||
}
|
1
lib/snygg/.gitignore
vendored
Normal file
1
lib/snygg/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/build
|
53
lib/snygg/build.gradle.kts
Normal file
53
lib/snygg/build.gradle.kts
Normal file
@ -0,0 +1,53 @@
|
||||
plugins {
|
||||
alias(libs.plugins.agp.library)
|
||||
alias(libs.plugins.kotlin.android)
|
||||
alias(libs.plugins.kotlin.serialization)
|
||||
}
|
||||
|
||||
val projectMinSdk: String by project
|
||||
val projectCompileSdk: String by project
|
||||
|
||||
android {
|
||||
namespace = "org.florisboard.lib.snygg"
|
||||
compileSdk = projectCompileSdk.toInt()
|
||||
|
||||
defaultConfig {
|
||||
minSdk = projectMinSdk.toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildFeatures {
|
||||
compose = true
|
||||
}
|
||||
composeOptions {
|
||||
kotlinCompilerExtensionVersion = libs.versions.androidx.compose.compiler.get()
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
isMinifyEnabled = false
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
}
|
||||
}
|
||||
compileOptions {
|
||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
targetCompatibility = JavaVersion.VERSION_1_8
|
||||
}
|
||||
kotlinOptions {
|
||||
jvmTarget = "1.8"
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(project(":lib:android"))
|
||||
implementation(project(":lib:kotlin"))
|
||||
|
||||
implementation(libs.androidx.core.ktx)
|
||||
implementation(libs.androidx.compose.material3)
|
||||
implementation(libs.androidx.compose.ui)
|
||||
implementation(libs.kotlinx.serialization.json)
|
||||
}
|
0
lib/snygg/consumer-rules.pro
Normal file
0
lib/snygg/consumer-rules.pro
Normal file
21
lib/snygg/proguard-rules.pro
vendored
Normal file
21
lib/snygg/proguard-rules.pro
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
# Add project specific ProGuard rules here.
|
||||
# You can control the set of applied configuration files using the
|
||||
# proguardFiles setting in build.gradle.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
||||
|
||||
# Uncomment this to preserve the line number information for
|
||||
# debugging stack traces.
|
||||
#-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# If you keep the line number information, uncomment this to
|
||||
# hide the original source file name.
|
||||
#-renamesourcefileattribute SourceFile
|
4
lib/snygg/src/main/AndroidManifest.xml
Normal file
4
lib/snygg/src/main/AndroidManifest.xml
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
</manifest>
|
@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.patrickgold.florisboard.lib.snygg
|
||||
package org.florisboard.lib.snygg
|
||||
|
||||
/**
|
||||
* Main object for defining all known Snygg property names.
|
||||
@ -41,4 +41,14 @@ object Snygg {
|
||||
const val ShadowElevation = "shadow-elevation"
|
||||
|
||||
const val Shape = "shape"
|
||||
|
||||
fun init(
|
||||
stylesheetSpec: SnyggSpec,
|
||||
rulePreferredElementSorting: List<String>,
|
||||
rulePlaceholders: Map<String, Int>,
|
||||
) {
|
||||
SnyggStylesheetSerializer.GlobalStylesheetSpec = stylesheetSpec
|
||||
SnyggRule.PreferredElementSorting = rulePreferredElementSorting
|
||||
SnyggRule.Placeholders = rulePlaceholders
|
||||
}
|
||||
}
|
@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.patrickgold.florisboard.lib.snygg
|
||||
package org.florisboard.lib.snygg
|
||||
|
||||
/**
|
||||
* SnyggLevel indicates if a rule property is intended to be edited by all users (BASIC) or only by advanced users
|
@ -14,28 +14,28 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.patrickgold.florisboard.lib.snygg
|
||||
package org.florisboard.lib.snygg
|
||||
|
||||
import androidx.annotation.FloatRange
|
||||
import androidx.annotation.IntRange
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import androidx.compose.ui.unit.TextUnit
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.RgbaColor
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggCircleShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggCutCornerDpShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggCutCornerPercentShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggDefinedVarValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggDpSizeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggImageRefValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggImplicitInheritValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggPercentageSizeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggRectangleShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggRoundedCornerDpShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggRoundedCornerPercentShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggSolidColorValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggSpSizeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggValue
|
||||
import org.florisboard.lib.snygg.value.RgbaColor
|
||||
import org.florisboard.lib.snygg.value.SnyggCircleShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggCutCornerDpShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggCutCornerPercentShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggDefinedVarValue
|
||||
import org.florisboard.lib.snygg.value.SnyggDpSizeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggImageRefValue
|
||||
import org.florisboard.lib.snygg.value.SnyggImplicitInheritValue
|
||||
import org.florisboard.lib.snygg.value.SnyggPercentageSizeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggRectangleShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggRoundedCornerDpShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggRoundedCornerPercentShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggSolidColorValue
|
||||
import org.florisboard.lib.snygg.value.SnyggSpSizeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggValue
|
||||
|
||||
class SnyggPropertySet(val properties: Map<String, SnyggValue>) {
|
||||
val width = properties[Snygg.Width] ?: SnyggImplicitInheritValue
|
@ -14,12 +14,9 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.patrickgold.florisboard.lib.snygg
|
||||
package org.florisboard.lib.snygg
|
||||
|
||||
import androidx.compose.runtime.saveable.Saver
|
||||
import dev.patrickgold.florisboard.ime.input.InputShiftState
|
||||
import dev.patrickgold.florisboard.ime.text.key.KeyCode
|
||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
||||
import kotlinx.serialization.KSerializer
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.descriptors.PrimitiveKind
|
||||
@ -60,39 +57,9 @@ data class SnyggRule(
|
||||
private val RuleValidator =
|
||||
"""^(@?)[a-zA-Z0-9-]+(\[(code|group|shiftstate)=(\+|-)?([0-9]+)(\|(\+|-)?([0-9]+))*\])*(:(pressed|focus|disabled))*${'$'}""".toRegex()
|
||||
|
||||
val Placeholders = mapOf(
|
||||
"c:delete" to KeyCode.DELETE,
|
||||
"c:enter" to KeyCode.ENTER,
|
||||
"c:shift" to KeyCode.SHIFT,
|
||||
"c:space" to KeyCode.SPACE,
|
||||
"sh:unshifted" to InputShiftState.UNSHIFTED.value,
|
||||
"sh:shifted_manual" to InputShiftState.SHIFTED_MANUAL.value,
|
||||
"sh:shifted_automatic" to InputShiftState.SHIFTED_AUTOMATIC.value,
|
||||
"sh:caps_lock" to InputShiftState.CAPS_LOCK.value,
|
||||
)
|
||||
var Placeholders = mapOf<String, Int>()
|
||||
|
||||
private val PreferredElementSorting = listOf(
|
||||
FlorisImeUi.Keyboard,
|
||||
FlorisImeUi.Key,
|
||||
FlorisImeUi.KeyHint,
|
||||
FlorisImeUi.KeyPopup,
|
||||
FlorisImeUi.Smartbar,
|
||||
FlorisImeUi.SmartbarSharedActionsRow,
|
||||
FlorisImeUi.SmartbarSharedActionsToggle,
|
||||
FlorisImeUi.SmartbarExtendedActionsRow,
|
||||
FlorisImeUi.SmartbarExtendedActionsToggle,
|
||||
FlorisImeUi.SmartbarActionKey,
|
||||
FlorisImeUi.SmartbarActionTile,
|
||||
FlorisImeUi.SmartbarActionsOverflow,
|
||||
FlorisImeUi.SmartbarActionsOverflowCustomizeButton,
|
||||
FlorisImeUi.SmartbarActionsEditor,
|
||||
FlorisImeUi.SmartbarActionsEditorHeader,
|
||||
FlorisImeUi.SmartbarActionsEditorSubheader,
|
||||
FlorisImeUi.SmartbarCandidatesRow,
|
||||
FlorisImeUi.SmartbarCandidateWord,
|
||||
FlorisImeUi.SmartbarCandidateClip,
|
||||
FlorisImeUi.SmartbarCandidateSpacer,
|
||||
)
|
||||
internal var PreferredElementSorting = listOf<String>()
|
||||
|
||||
val Saver = Saver<SnyggRule?, String>(
|
||||
save = { it?.toString() ?: "" },
|
@ -14,11 +14,11 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.patrickgold.florisboard.lib.snygg
|
||||
package org.florisboard.lib.snygg
|
||||
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggDefinedVarValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggExplicitInheritValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggValueEncoder
|
||||
import org.florisboard.lib.snygg.value.SnyggDefinedVarValue
|
||||
import org.florisboard.lib.snygg.value.SnyggExplicitInheritValue
|
||||
import org.florisboard.lib.snygg.value.SnyggValueEncoder
|
||||
|
||||
open class SnyggSpec(init: SnyggSpecBuilder.() -> Unit) {
|
||||
val elements: Map<String, SnyggPropertySetSpec>
|
@ -14,15 +14,10 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.patrickgold.florisboard.lib.snygg
|
||||
package org.florisboard.lib.snygg
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.remember
|
||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeUiSpec
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggDefinedVarValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggImplicitInheritValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggVarValueEncoders
|
||||
import kotlinx.serialization.KSerializer
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.builtins.MapSerializer
|
||||
@ -30,6 +25,10 @@ import kotlinx.serialization.builtins.serializer
|
||||
import kotlinx.serialization.encoding.Decoder
|
||||
import kotlinx.serialization.encoding.Encoder
|
||||
import kotlinx.serialization.json.Json
|
||||
import org.florisboard.lib.snygg.value.SnyggDefinedVarValue
|
||||
import org.florisboard.lib.snygg.value.SnyggImplicitInheritValue
|
||||
import org.florisboard.lib.snygg.value.SnyggValue
|
||||
import org.florisboard.lib.snygg.value.SnyggVarValueEncoders
|
||||
|
||||
val SnyggStylesheetJsonConfig = Json
|
||||
|
||||
@ -251,6 +250,10 @@ class SnyggStylesheetSerializer : KSerializer<SnyggStylesheet> {
|
||||
|
||||
override val descriptor = ruleMapSerializer.descriptor
|
||||
|
||||
companion object {
|
||||
var GlobalStylesheetSpec: SnyggSpec? = null
|
||||
}
|
||||
|
||||
override fun serialize(encoder: Encoder, value: SnyggStylesheet) {
|
||||
val rawRuleMap = value.rules.mapValues { (_, propertySet) ->
|
||||
propertySet.properties.mapValues { (_, snyggValue) ->
|
||||
@ -264,8 +267,8 @@ class SnyggStylesheetSerializer : KSerializer<SnyggStylesheet> {
|
||||
val rawRuleMap = ruleMapSerializer.deserialize(decoder)
|
||||
val ruleMap = mutableMapOf<SnyggRule, SnyggPropertySet>()
|
||||
for ((rule, rawProperties) in rawRuleMap) {
|
||||
// FIXME: hardcoding which spec to use, the selection should happen dynamically
|
||||
val stylesheetSpec = FlorisImeUiSpec
|
||||
val stylesheetSpec = GlobalStylesheetSpec ?:
|
||||
throw IllegalStateException("No global stylesheet spec defined")
|
||||
if (rule.isDefinedVariablesRule()) {
|
||||
val parsedProperties = rawProperties.mapValues { (_, rawValue) ->
|
||||
SnyggVarValueEncoders.firstNotNullOfOrNull { it.deserialize(rawValue).getOrNull() }
|
@ -14,24 +14,23 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.patrickgold.florisboard.lib.snygg.ui
|
||||
package org.florisboard.lib.snygg.ui
|
||||
|
||||
import androidx.compose.foundation.BorderStroke
|
||||
import androidx.compose.foundation.layout.PaddingValues
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.material.Button
|
||||
import androidx.compose.material.ButtonDefaults
|
||||
import androidx.compose.material.Icon
|
||||
import androidx.compose.material.Text
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.ButtonDefaults
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.painter.Painter
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.unit.dp
|
||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeTheme
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggPropertySet
|
||||
import org.florisboard.lib.snygg.SnyggPropertySet
|
||||
|
||||
@Composable
|
||||
fun SnyggButton(
|
||||
@ -44,6 +43,7 @@ fun SnyggButton(
|
||||
contentPadding: PaddingValues = ButtonDefaults.ContentPadding,
|
||||
) {
|
||||
val context = LocalContext.current
|
||||
val uiDefaults = LocalSnyggUiDefaults.current
|
||||
val border = remember (style) {
|
||||
BorderStroke(style.borderWidth.dpSize(default = 0.dp), style.borderColor.solidColor(context))
|
||||
}
|
||||
@ -51,7 +51,7 @@ fun SnyggButton(
|
||||
Button(
|
||||
modifier = modifier,
|
||||
enabled = enabled,
|
||||
elevation = ButtonDefaults.elevation(
|
||||
elevation = ButtonDefaults.buttonElevation(
|
||||
defaultElevation = elevation,
|
||||
pressedElevation = elevation,
|
||||
disabledElevation = elevation,
|
||||
@ -61,8 +61,8 @@ fun SnyggButton(
|
||||
shape = style.shape.shape(),
|
||||
border = border,
|
||||
colors = ButtonDefaults.buttonColors(
|
||||
backgroundColor = style.background.solidColor(context, default = FlorisImeTheme.fallbackContentColor()),
|
||||
contentColor = style.foreground.solidColor(context, default = FlorisImeTheme.fallbackSurfaceColor()),
|
||||
containerColor = style.background.solidColor(context, default = uiDefaults.fallbackContentColor),
|
||||
contentColor = style.foreground.solidColor(context, default = uiDefaults.fallbackSurfaceColor),
|
||||
),
|
||||
contentPadding = contentPadding,
|
||||
onClick = onClick,
|
@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.patrickgold.florisboard.lib.snygg.ui
|
||||
package org.florisboard.lib.snygg.ui
|
||||
|
||||
import android.content.Context
|
||||
import androidx.compose.foundation.background
|
||||
@ -30,14 +30,13 @@ import androidx.compose.ui.unit.Dp
|
||||
import androidx.compose.ui.unit.TextUnit
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.takeOrElse
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggPropertySet
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggDpSizeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggMaterialYouLightColorValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggMaterialYouValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggShapeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggSolidColorValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggSpSizeValue
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggValue
|
||||
import org.florisboard.lib.snygg.SnyggPropertySet
|
||||
import org.florisboard.lib.snygg.value.SnyggDpSizeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggMaterialYouValue
|
||||
import org.florisboard.lib.snygg.value.SnyggShapeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggSolidColorValue
|
||||
import org.florisboard.lib.snygg.value.SnyggSpSizeValue
|
||||
import org.florisboard.lib.snygg.value.SnyggValue
|
||||
|
||||
fun Modifier.snyggBackground(
|
||||
context: Context,
|
@ -14,22 +14,21 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.patrickgold.florisboard.lib.snygg.ui
|
||||
package org.florisboard.lib.snygg.ui
|
||||
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.BoxScope
|
||||
import androidx.compose.foundation.layout.PaddingValues
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.material.LocalAbsoluteElevation
|
||||
import androidx.compose.material.LocalContentColor
|
||||
import androidx.compose.material3.LocalAbsoluteTonalElevation
|
||||
import androidx.compose.material3.LocalContentColor
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.CompositionLocalProvider
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.takeOrElse
|
||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeTheme
|
||||
import dev.patrickgold.florisboard.lib.snygg.SnyggPropertySet
|
||||
import org.florisboard.lib.snygg.SnyggPropertySet
|
||||
|
||||
val NoContentPadding = PaddingValues(all = 0.dp)
|
||||
|
||||
@ -43,12 +42,13 @@ fun SnyggSurface(
|
||||
content: @Composable BoxScope.() -> Unit,
|
||||
) {
|
||||
val context = LocalContext.current
|
||||
val uiDefaults = LocalSnyggUiDefaults.current
|
||||
val elevationDp = style.shadowElevation.dpSize().takeOrElse { 0.dp }.coerceAtLeast(0.dp)
|
||||
val contentColor = style.foreground.solidColor(context, default = FlorisImeTheme.fallbackContentColor())
|
||||
val absoluteElevation = LocalAbsoluteElevation.current + elevationDp
|
||||
val contentColor = style.foreground.solidColor(context, default = uiDefaults.fallbackContentColor)
|
||||
val absoluteElevation = LocalAbsoluteTonalElevation.current + elevationDp
|
||||
CompositionLocalProvider(
|
||||
LocalContentColor provides contentColor,
|
||||
LocalAbsoluteElevation provides absoluteElevation,
|
||||
LocalAbsoluteTonalElevation provides absoluteElevation,
|
||||
) {
|
||||
Box(
|
||||
modifier = modifier
|
@ -0,0 +1,27 @@
|
||||
package org.florisboard.lib.snygg.ui
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.CompositionLocalProvider
|
||||
import androidx.compose.runtime.staticCompositionLocalOf
|
||||
import androidx.compose.ui.graphics.Color
|
||||
|
||||
data class SnyggUiDefaults(
|
||||
val fallbackContentColor: Color,
|
||||
val fallbackSurfaceColor: Color,
|
||||
)
|
||||
|
||||
internal val LocalSnyggUiDefaults = staticCompositionLocalOf {
|
||||
SnyggUiDefaults(
|
||||
fallbackContentColor = Color.Black,
|
||||
fallbackSurfaceColor = Color.White,
|
||||
)
|
||||
}
|
||||
|
||||
@Composable fun ProvideSnyggUiDefaults(
|
||||
defaults: SnyggUiDefaults,
|
||||
content: @Composable () -> Unit,
|
||||
) {
|
||||
CompositionLocalProvider(LocalSnyggUiDefaults provides defaults) {
|
||||
content()
|
||||
}
|
||||
}
|
@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.patrickgold.florisboard.lib.snygg.value
|
||||
package org.florisboard.lib.snygg.value
|
||||
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import kotlin.math.roundToInt
|
@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.patrickgold.florisboard.lib.snygg.value
|
||||
package org.florisboard.lib.snygg.value
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
@JvmInline
|
@ -14,17 +14,17 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.patrickgold.florisboard.lib.snygg.value
|
||||
package org.florisboard.lib.snygg.value
|
||||
|
||||
import android.content.Context
|
||||
import androidx.compose.material3.ColorScheme
|
||||
import androidx.compose.material3.dynamicDarkColorScheme
|
||||
import androidx.compose.material3.dynamicLightColorScheme
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.MaterialYouColor.ColorName
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.MaterialYouColor.ColorNameId
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.MaterialYouColor.darkColorName
|
||||
import dev.patrickgold.florisboard.lib.snygg.value.MaterialYouColor.lightColorName
|
||||
import org.florisboard.lib.snygg.value.MaterialYouColor.ColorName
|
||||
import org.florisboard.lib.snygg.value.MaterialYouColor.ColorNameId
|
||||
import org.florisboard.lib.snygg.value.MaterialYouColor.darkColorName
|
||||
import org.florisboard.lib.snygg.value.MaterialYouColor.lightColorName
|
||||
|
||||
sealed interface SnyggMaterialYouValue : SnyggValue {
|
||||
val colorName: String
|
@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.patrickgold.florisboard.lib.snygg.value
|
||||
package org.florisboard.lib.snygg.value
|
||||
|
||||
private const val RelPath = "relPath"
|
||||
private const val ImageFunction = "image"
|
@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.patrickgold.florisboard.lib.snygg.value
|
||||
package org.florisboard.lib.snygg.value
|
||||
|
||||
import androidx.compose.foundation.shape.CircleShape
|
||||
import androidx.compose.foundation.shape.CutCornerShape
|
@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.patrickgold.florisboard.lib.snygg.value
|
||||
package org.florisboard.lib.snygg.value
|
||||
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import androidx.compose.ui.unit.TextUnit
|
@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.patrickgold.florisboard.lib.snygg.value
|
||||
package org.florisboard.lib.snygg.value
|
||||
|
||||
import org.florisboard.lib.android.AndroidVersion
|
||||
|
@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.patrickgold.florisboard.lib.snygg.value
|
||||
package org.florisboard.lib.snygg.value
|
||||
|
||||
/**
|
||||
* SnyggValueEncoder is responsible for the representation of a [SnyggValue] specification and for providing methods
|
@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.patrickgold.florisboard.lib.snygg.value
|
||||
package org.florisboard.lib.snygg.value
|
||||
|
||||
import org.florisboard.lib.kotlin.toStringWithoutDotZero
|
||||
|
@ -14,18 +14,20 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.patrickgold.florisboard.lib.snygg.value
|
||||
|
||||
import dev.patrickgold.florisboard.lib.ext.ExtensionValidation
|
||||
package org.florisboard.lib.snygg.value
|
||||
|
||||
private const val VarKey = "varKey"
|
||||
|
||||
sealed interface SnyggVarValue : SnyggValue
|
||||
sealed interface SnyggVarValue : SnyggValue {
|
||||
companion object {
|
||||
val VariableNameRegex = """^[a-zA-Z0-9-_]+${'$'}""".toRegex()
|
||||
}
|
||||
}
|
||||
|
||||
data class SnyggDefinedVarValue(val key: String) : SnyggVarValue {
|
||||
companion object : SnyggValueEncoder {
|
||||
override val spec = SnyggValueSpec {
|
||||
function(name = "var") { string(id = VarKey, regex = ExtensionValidation.ThemeComponentVariableNameRegex) }
|
||||
function(name = "var") { string(id = VarKey, regex = SnyggVarValue.VariableNameRegex) }
|
||||
}
|
||||
|
||||
override fun defaultValue() = SnyggDefinedVarValue("")
|
@ -38,3 +38,4 @@ include(":benchmark")
|
||||
include(":lib:android")
|
||||
include(":lib:kotlin")
|
||||
include(":lib:native")
|
||||
include(":lib:snygg")
|
||||
|
Loading…
Reference in New Issue
Block a user