mirror of
https://github.com/florisboard/florisboard.git
synced 2024-09-19 19:42:20 +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:android"))
|
||||||
implementation(project(":lib:kotlin"))
|
implementation(project(":lib:kotlin"))
|
||||||
implementation(project(":lib:native"))
|
implementation(project(":lib:native"))
|
||||||
|
implementation(project(":lib:snygg"))
|
||||||
|
|
||||||
testImplementation(libs.equalsverifier)
|
testImplementation(libs.equalsverifier)
|
||||||
testImplementation(libs.kotest.assertions.core)
|
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.media.emoji.FlorisEmojiCompat
|
||||||
import dev.patrickgold.florisboard.ime.nlp.NlpManager
|
import dev.patrickgold.florisboard.ime.nlp.NlpManager
|
||||||
import dev.patrickgold.florisboard.ime.text.gestures.GlideTypingManager
|
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.ime.theme.ThemeManager
|
||||||
import dev.patrickgold.florisboard.lib.cache.CacheManager
|
import dev.patrickgold.florisboard.lib.cache.CacheManager
|
||||||
import dev.patrickgold.florisboard.lib.crashutility.CrashUtility
|
import dev.patrickgold.florisboard.lib.crashutility.CrashUtility
|
||||||
@ -60,6 +61,7 @@ class FlorisApplication : Application() {
|
|||||||
System.loadLibrary("fl_native")
|
System.loadLibrary("fl_native")
|
||||||
} catch (_: Exception) {
|
} 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.flogInfo
|
||||||
import dev.patrickgold.florisboard.lib.devtools.flogWarning
|
import dev.patrickgold.florisboard.lib.devtools.flogWarning
|
||||||
import dev.patrickgold.florisboard.lib.observeAsTransformingState
|
import dev.patrickgold.florisboard.lib.observeAsTransformingState
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.SnyggSurface
|
import org.florisboard.lib.snygg.ui.SnyggSurface
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.shape
|
import org.florisboard.lib.snygg.ui.shape
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBackground
|
import org.florisboard.lib.snygg.ui.snyggBackground
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBorder
|
import org.florisboard.lib.snygg.ui.snyggBorder
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggShadow
|
import org.florisboard.lib.snygg.ui.snyggShadow
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.solidColor
|
import org.florisboard.lib.snygg.ui.solidColor
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.spSize
|
import org.florisboard.lib.snygg.ui.spSize
|
||||||
import dev.patrickgold.florisboard.lib.util.ViewUtils
|
import dev.patrickgold.florisboard.lib.util.ViewUtils
|
||||||
import dev.patrickgold.florisboard.lib.util.debugSummarize
|
import dev.patrickgold.florisboard.lib.util.debugSummarize
|
||||||
import dev.patrickgold.florisboard.lib.util.launchActivity
|
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 org.florisboard.lib.android.isOrientationPortrait
|
||||||
import dev.patrickgold.florisboard.lib.ext.ExtensionComponentName
|
import dev.patrickgold.florisboard.lib.ext.ExtensionComponentName
|
||||||
import dev.patrickgold.florisboard.lib.observeAsTransformingState
|
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.florisboard.lib.util.VersionName
|
||||||
import dev.patrickgold.jetpref.datastore.JetPref
|
import dev.patrickgold.jetpref.datastore.JetPref
|
||||||
import dev.patrickgold.jetpref.datastore.model.PreferenceMigrationEntry
|
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.text.key.UtilityKeyAction
|
||||||
import dev.patrickgold.florisboard.ime.theme.ThemeMode
|
import dev.patrickgold.florisboard.ime.theme.ThemeMode
|
||||||
import dev.patrickgold.florisboard.lib.compose.stringRes
|
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.ListPreferenceEntry
|
||||||
import dev.patrickgold.jetpref.datastore.ui.listPrefEntries
|
import dev.patrickgold.jetpref.datastore.ui.listPrefEntries
|
||||||
import org.florisboard.lib.kotlin.curlyFormat
|
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.FlorisRef
|
||||||
import dev.patrickgold.florisboard.lib.io.ZipUtils
|
import dev.patrickgold.florisboard.lib.io.ZipUtils
|
||||||
import dev.patrickgold.florisboard.lib.rememberValidationResult
|
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.florisboard.themeManager
|
||||||
import dev.patrickgold.jetpref.datastore.ui.Preference
|
import dev.patrickgold.jetpref.datastore.ui.Preference
|
||||||
import dev.patrickgold.jetpref.datastore.ui.vectorResource
|
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.compose.stringRes
|
||||||
import dev.patrickgold.florisboard.lib.ext.ExtensionValidation
|
import dev.patrickgold.florisboard.lib.ext.ExtensionValidation
|
||||||
import dev.patrickgold.florisboard.lib.rememberValidationResult
|
import dev.patrickgold.florisboard.lib.rememberValidationResult
|
||||||
import dev.patrickgold.florisboard.lib.snygg.SnyggLevel
|
import org.florisboard.lib.snygg.SnyggLevel
|
||||||
import dev.patrickgold.florisboard.lib.snygg.SnyggPropertySetSpec
|
import org.florisboard.lib.snygg.SnyggPropertySetSpec
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.MaterialYouColor
|
import org.florisboard.lib.snygg.value.MaterialYouColor
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggCutCornerDpShapeValue
|
import org.florisboard.lib.snygg.value.SnyggCutCornerDpShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggCutCornerPercentShapeValue
|
import org.florisboard.lib.snygg.value.SnyggCutCornerPercentShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggDefinedVarValue
|
import org.florisboard.lib.snygg.value.SnyggDefinedVarValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggDpShapeValue
|
import org.florisboard.lib.snygg.value.SnyggDpShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggDpSizeValue
|
import org.florisboard.lib.snygg.value.SnyggDpSizeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggImplicitInheritValue
|
import org.florisboard.lib.snygg.value.SnyggImplicitInheritValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggMaterialYouDarkColorValue
|
import org.florisboard.lib.snygg.value.SnyggMaterialYouDarkColorValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggMaterialYouLightColorValue
|
import org.florisboard.lib.snygg.value.SnyggMaterialYouLightColorValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggMaterialYouValue
|
import org.florisboard.lib.snygg.value.SnyggMaterialYouValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggPercentShapeValue
|
import org.florisboard.lib.snygg.value.SnyggPercentShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggRoundedCornerDpShapeValue
|
import org.florisboard.lib.snygg.value.SnyggRoundedCornerDpShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggRoundedCornerPercentShapeValue
|
import org.florisboard.lib.snygg.value.SnyggRoundedCornerPercentShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggShapeValue
|
import org.florisboard.lib.snygg.value.SnyggShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggSolidColorValue
|
import org.florisboard.lib.snygg.value.SnyggSolidColorValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggSpSizeValue
|
import org.florisboard.lib.snygg.value.SnyggSpSizeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggValue
|
import org.florisboard.lib.snygg.value.SnyggValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggValueEncoder
|
import org.florisboard.lib.snygg.value.SnyggValueEncoder
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggVarValueEncoders
|
import org.florisboard.lib.snygg.value.SnyggVarValueEncoders
|
||||||
import dev.patrickgold.florisboard.lib.stripUnicodeCtrlChars
|
import dev.patrickgold.florisboard.lib.stripUnicodeCtrlChars
|
||||||
import dev.patrickgold.jetpref.material.ui.ExperimentalJetPrefMaterial3Ui
|
import dev.patrickgold.jetpref.material.ui.ExperimentalJetPrefMaterial3Ui
|
||||||
import dev.patrickgold.jetpref.material.ui.JetPrefAlertDialog
|
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.FlorisOutlinedTextField
|
||||||
import dev.patrickgold.florisboard.lib.compose.florisHorizontalScroll
|
import dev.patrickgold.florisboard.lib.compose.florisHorizontalScroll
|
||||||
import dev.patrickgold.florisboard.lib.compose.stringRes
|
import dev.patrickgold.florisboard.lib.compose.stringRes
|
||||||
import dev.patrickgold.florisboard.lib.snygg.SnyggLevel
|
import org.florisboard.lib.snygg.SnyggLevel
|
||||||
import dev.patrickgold.florisboard.lib.snygg.SnyggRule
|
import org.florisboard.lib.snygg.SnyggRule
|
||||||
import dev.patrickgold.florisboard.lib.util.InputMethodUtils
|
import dev.patrickgold.florisboard.lib.util.InputMethodUtils
|
||||||
import dev.patrickgold.jetpref.material.ui.JetPrefAlertDialog
|
import dev.patrickgold.jetpref.material.ui.JetPrefAlertDialog
|
||||||
import org.florisboard.lib.kotlin.curlyFormat
|
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.enumDisplayEntriesOf
|
||||||
import dev.patrickgold.florisboard.app.florisPreferenceModel
|
import dev.patrickgold.florisboard.app.florisPreferenceModel
|
||||||
import dev.patrickgold.florisboard.lib.compose.stringRes
|
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.ListPreference
|
||||||
import dev.patrickgold.jetpref.datastore.ui.PreferenceLayout
|
import dev.patrickgold.jetpref.datastore.ui.PreferenceLayout
|
||||||
import dev.patrickgold.jetpref.material.ui.JetPrefAlertDialog
|
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.platform.LocalContext
|
||||||
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 dev.patrickgold.florisboard.lib.snygg.value.SnyggCutCornerDpShapeValue
|
import org.florisboard.lib.snygg.value.SnyggCutCornerDpShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggDefinedVarValue
|
import org.florisboard.lib.snygg.value.SnyggDefinedVarValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggDpSizeValue
|
import org.florisboard.lib.snygg.value.SnyggDpSizeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggMaterialYouValue
|
import org.florisboard.lib.snygg.value.SnyggMaterialYouValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggRoundedCornerDpShapeValue
|
import org.florisboard.lib.snygg.value.SnyggRoundedCornerDpShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggShapeValue
|
import org.florisboard.lib.snygg.value.SnyggShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggSolidColorValue
|
import org.florisboard.lib.snygg.value.SnyggSolidColorValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggSpSizeValue
|
import org.florisboard.lib.snygg.value.SnyggSpSizeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggValue
|
import org.florisboard.lib.snygg.value.SnyggValue
|
||||||
import dev.patrickgold.jetpref.material.ui.checkeredBackground
|
import dev.patrickgold.jetpref.material.ui.checkeredBackground
|
||||||
|
|
||||||
object SnyggValueIcon {
|
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.compose.stringRes
|
||||||
import dev.patrickgold.florisboard.lib.ext.ExtensionValidation
|
import dev.patrickgold.florisboard.lib.ext.ExtensionValidation
|
||||||
import dev.patrickgold.florisboard.lib.rememberValidationResult
|
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.florisboard.themeManager
|
||||||
import dev.patrickgold.jetpref.datastore.model.observeAsState
|
import dev.patrickgold.jetpref.datastore.model.observeAsState
|
||||||
import dev.patrickgold.jetpref.material.ui.JetPrefAlertDialog
|
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.android.showLongToast
|
||||||
import org.florisboard.lib.kotlin.io.readJson
|
import org.florisboard.lib.kotlin.io.readJson
|
||||||
import org.florisboard.lib.kotlin.io.subFile
|
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>>(
|
internal val IntListSaver = Saver<SnapshotStateList<Int>, ArrayList<Int>>(
|
||||||
save = { ArrayList(it) },
|
save = { ArrayList(it) },
|
||||||
|
@ -23,27 +23,27 @@ import dev.patrickgold.florisboard.R
|
|||||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
||||||
import dev.patrickgold.florisboard.lib.UnicodeCtrlChar
|
import dev.patrickgold.florisboard.lib.UnicodeCtrlChar
|
||||||
import dev.patrickgold.florisboard.lib.compose.stringRes
|
import dev.patrickgold.florisboard.lib.compose.stringRes
|
||||||
import dev.patrickgold.florisboard.lib.snygg.Snygg
|
import org.florisboard.lib.snygg.Snygg
|
||||||
import dev.patrickgold.florisboard.lib.snygg.SnyggLevel
|
import org.florisboard.lib.snygg.SnyggLevel
|
||||||
import dev.patrickgold.florisboard.lib.snygg.SnyggRule
|
import org.florisboard.lib.snygg.SnyggRule
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.RgbaColor
|
import org.florisboard.lib.snygg.value.RgbaColor
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggCircleShapeValue
|
import org.florisboard.lib.snygg.value.SnyggCircleShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggCutCornerDpShapeValue
|
import org.florisboard.lib.snygg.value.SnyggCutCornerDpShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggCutCornerPercentShapeValue
|
import org.florisboard.lib.snygg.value.SnyggCutCornerPercentShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggDefinedVarValue
|
import org.florisboard.lib.snygg.value.SnyggDefinedVarValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggDpSizeValue
|
import org.florisboard.lib.snygg.value.SnyggDpSizeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggExplicitInheritValue
|
import org.florisboard.lib.snygg.value.SnyggExplicitInheritValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggImplicitInheritValue
|
import org.florisboard.lib.snygg.value.SnyggImplicitInheritValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggMaterialYouDarkColorValue
|
import org.florisboard.lib.snygg.value.SnyggMaterialYouDarkColorValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggMaterialYouLightColorValue
|
import org.florisboard.lib.snygg.value.SnyggMaterialYouLightColorValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggPercentageSizeValue
|
import org.florisboard.lib.snygg.value.SnyggPercentageSizeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggRectangleShapeValue
|
import org.florisboard.lib.snygg.value.SnyggRectangleShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggRoundedCornerDpShapeValue
|
import org.florisboard.lib.snygg.value.SnyggRoundedCornerDpShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggRoundedCornerPercentShapeValue
|
import org.florisboard.lib.snygg.value.SnyggRoundedCornerPercentShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggSolidColorValue
|
import org.florisboard.lib.snygg.value.SnyggSolidColorValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggSpSizeValue
|
import org.florisboard.lib.snygg.value.SnyggSpSizeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggValue
|
import org.florisboard.lib.snygg.value.SnyggValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggValueEncoder
|
import org.florisboard.lib.snygg.value.SnyggValueEncoder
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
@Composable
|
@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.safeTimes
|
||||||
import dev.patrickgold.florisboard.lib.compose.stringRes
|
import dev.patrickgold.florisboard.lib.compose.stringRes
|
||||||
import dev.patrickgold.florisboard.lib.observeAsNonNullState
|
import dev.patrickgold.florisboard.lib.observeAsNonNullState
|
||||||
import dev.patrickgold.florisboard.lib.snygg.SnyggPropertySet
|
import org.florisboard.lib.snygg.SnyggPropertySet
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.SnyggSurface
|
import org.florisboard.lib.snygg.ui.SnyggSurface
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBackground
|
import org.florisboard.lib.snygg.ui.snyggBackground
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBorder
|
import org.florisboard.lib.snygg.ui.snyggBorder
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggClip
|
import org.florisboard.lib.snygg.ui.snyggClip
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggShadow
|
import org.florisboard.lib.snygg.ui.snyggShadow
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.solidColor
|
import org.florisboard.lib.snygg.ui.solidColor
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.spSize
|
import org.florisboard.lib.snygg.ui.spSize
|
||||||
import dev.patrickgold.florisboard.lib.util.NetworkUtils
|
import dev.patrickgold.florisboard.lib.util.NetworkUtils
|
||||||
import dev.patrickgold.jetpref.datastore.model.observeAsState
|
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.FlorisImeTheme
|
||||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
||||||
import dev.patrickgold.florisboard.keyboardManager
|
import dev.patrickgold.florisboard.keyboardManager
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.SnyggSurface
|
import org.florisboard.lib.snygg.ui.SnyggSurface
|
||||||
|
|
||||||
@SuppressLint("MutableCollectionMutableState")
|
@SuppressLint("MutableCollectionMutableState")
|
||||||
@Composable
|
@Composable
|
||||||
|
@ -92,11 +92,11 @@ import org.florisboard.lib.android.systemService
|
|||||||
import dev.patrickgold.florisboard.lib.compose.florisScrollbar
|
import dev.patrickgold.florisboard.lib.compose.florisScrollbar
|
||||||
import dev.patrickgold.florisboard.lib.compose.safeTimes
|
import dev.patrickgold.florisboard.lib.compose.safeTimes
|
||||||
import dev.patrickgold.florisboard.lib.compose.stringRes
|
import dev.patrickgold.florisboard.lib.compose.stringRes
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBackground
|
import org.florisboard.lib.snygg.ui.snyggBackground
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBorder
|
import org.florisboard.lib.snygg.ui.snyggBorder
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggShadow
|
import org.florisboard.lib.snygg.ui.snyggShadow
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.solidColor
|
import org.florisboard.lib.snygg.ui.solidColor
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.spSize
|
import org.florisboard.lib.snygg.ui.spSize
|
||||||
import dev.patrickgold.jetpref.datastore.model.observeAsState
|
import dev.patrickgold.jetpref.datastore.model.observeAsState
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
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.FlorisImeTheme
|
||||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
||||||
import dev.patrickgold.florisboard.lib.compose.stringRes
|
import dev.patrickgold.florisboard.lib.compose.stringRes
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBackground
|
import org.florisboard.lib.snygg.ui.snyggBackground
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.solidColor
|
import org.florisboard.lib.snygg.ui.solidColor
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun RowScope.OneHandedPanel(
|
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.FlorisImeTheme
|
||||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
||||||
import dev.patrickgold.florisboard.lib.compose.safeTimes
|
import dev.patrickgold.florisboard.lib.compose.safeTimes
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.SnyggSurface
|
import org.florisboard.lib.snygg.ui.SnyggSurface
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBackground
|
import org.florisboard.lib.snygg.ui.snyggBackground
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBorder
|
import org.florisboard.lib.snygg.ui.snyggBorder
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggShadow
|
import org.florisboard.lib.snygg.ui.snyggShadow
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.solidColor
|
import org.florisboard.lib.snygg.ui.solidColor
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.spSize
|
import org.florisboard.lib.snygg.ui.spSize
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun PopupBaseBox(
|
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.florisHorizontalScroll
|
||||||
import dev.patrickgold.florisboard.lib.compose.safeTimes
|
import dev.patrickgold.florisboard.lib.compose.safeTimes
|
||||||
import dev.patrickgold.florisboard.lib.observeAsNonNullState
|
import dev.patrickgold.florisboard.lib.observeAsNonNullState
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBackground
|
import org.florisboard.lib.snygg.ui.snyggBackground
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.solidColor
|
import org.florisboard.lib.snygg.ui.solidColor
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.spSize
|
import org.florisboard.lib.snygg.ui.spSize
|
||||||
import dev.patrickgold.florisboard.nlpManager
|
import dev.patrickgold.florisboard.nlpManager
|
||||||
import dev.patrickgold.florisboard.subtypeManager
|
import dev.patrickgold.florisboard.subtypeManager
|
||||||
import dev.patrickgold.jetpref.datastore.model.observeAsState
|
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.keyboardManager
|
||||||
import dev.patrickgold.florisboard.lib.compose.horizontalTween
|
import dev.patrickgold.florisboard.lib.compose.horizontalTween
|
||||||
import dev.patrickgold.florisboard.lib.compose.verticalTween
|
import dev.patrickgold.florisboard.lib.compose.verticalTween
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBackground
|
import org.florisboard.lib.snygg.ui.snyggBackground
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBorder
|
import org.florisboard.lib.snygg.ui.snyggBorder
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggShadow
|
import org.florisboard.lib.snygg.ui.snyggShadow
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.solidColor
|
import org.florisboard.lib.snygg.ui.solidColor
|
||||||
import dev.patrickgold.jetpref.datastore.model.observeAsState
|
import dev.patrickgold.jetpref.datastore.model.observeAsState
|
||||||
import dev.patrickgold.jetpref.datastore.ui.vectorResource
|
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.text.keyboard.TextKeyData
|
||||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeTheme
|
import dev.patrickgold.florisboard.ime.theme.FlorisImeTheme
|
||||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.shape
|
import org.florisboard.lib.snygg.ui.shape
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBorder
|
import org.florisboard.lib.snygg.ui.snyggBorder
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggClip
|
import org.florisboard.lib.snygg.ui.snyggClip
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggShadow
|
import org.florisboard.lib.snygg.ui.snyggShadow
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.solidColor
|
import org.florisboard.lib.snygg.ui.solidColor
|
||||||
|
|
||||||
private val BackgroundAnimationSpec = tween<Color>(durationMillis = 150, easing = FastOutSlowInEasing)
|
private val BackgroundAnimationSpec = tween<Color>(durationMillis = 150, easing = FastOutSlowInEasing)
|
||||||
private val DebugHelperColor = Color.Red.copy(alpha = 0.5f)
|
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.FlorisIconButton
|
||||||
import dev.patrickgold.florisboard.lib.compose.safeTimes
|
import dev.patrickgold.florisboard.lib.compose.safeTimes
|
||||||
import dev.patrickgold.florisboard.lib.compose.stringRes
|
import dev.patrickgold.florisboard.lib.compose.stringRes
|
||||||
import dev.patrickgold.florisboard.lib.snygg.SnyggPropertySet
|
import org.florisboard.lib.snygg.SnyggPropertySet
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBackground
|
import org.florisboard.lib.snygg.ui.snyggBackground
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggClip
|
import org.florisboard.lib.snygg.ui.snyggClip
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.solidColor
|
import org.florisboard.lib.snygg.ui.solidColor
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.spSize
|
import org.florisboard.lib.snygg.ui.spSize
|
||||||
import dev.patrickgold.florisboard.lib.toIntOffset
|
import dev.patrickgold.florisboard.lib.toIntOffset
|
||||||
|
|
||||||
private const val ItemNotFound = -1
|
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.ime.theme.FlorisImeUi
|
||||||
import dev.patrickgold.florisboard.keyboardManager
|
import dev.patrickgold.florisboard.keyboardManager
|
||||||
import dev.patrickgold.florisboard.lib.compose.stringRes
|
import dev.patrickgold.florisboard.lib.compose.stringRes
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.SnyggButton
|
import org.florisboard.lib.snygg.ui.SnyggButton
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBackground
|
import org.florisboard.lib.snygg.ui.snyggBackground
|
||||||
import dev.patrickgold.jetpref.datastore.model.observeAsState
|
import dev.patrickgold.jetpref.datastore.model.observeAsState
|
||||||
|
|
||||||
@Composable
|
@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.text.keyboard.TextKeyData
|
||||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeTheme
|
import dev.patrickgold.florisboard.ime.theme.FlorisImeTheme
|
||||||
import dev.patrickgold.florisboard.keyboardManager
|
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
|
import dev.patrickgold.jetpref.datastore.model.observeAsState
|
||||||
|
|
||||||
internal val ToggleOverflowPanelAction = QuickAction.InsertKey(TextKeyData.TOGGLE_ACTIONS_OVERFLOW)
|
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.FlorisImeTheme
|
||||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
||||||
import dev.patrickgold.florisboard.keyboardManager
|
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
|
import dev.patrickgold.jetpref.datastore.model.observeAsState
|
||||||
|
|
||||||
@Composable
|
@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.LogTopic
|
||||||
import dev.patrickgold.florisboard.lib.devtools.flogDebug
|
import dev.patrickgold.florisboard.lib.devtools.flogDebug
|
||||||
import dev.patrickgold.florisboard.lib.observeAsTransformingState
|
import dev.patrickgold.florisboard.lib.observeAsTransformingState
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.SnyggSurface
|
import org.florisboard.lib.snygg.ui.SnyggSurface
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.snyggBackground
|
import org.florisboard.lib.snygg.ui.snyggBackground
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.solidColor
|
import org.florisboard.lib.snygg.ui.solidColor
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.spSize
|
import org.florisboard.lib.snygg.ui.spSize
|
||||||
import dev.patrickgold.florisboard.lib.toIntOffset
|
import dev.patrickgold.florisboard.lib.toIntOffset
|
||||||
import dev.patrickgold.jetpref.datastore.model.observeAsState
|
import dev.patrickgold.jetpref.datastore.model.observeAsState
|
||||||
import kotlinx.coroutines.channels.Channel
|
import kotlinx.coroutines.channels.Channel
|
||||||
|
@ -29,9 +29,14 @@ import androidx.compose.runtime.staticCompositionLocalOf
|
|||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.text.TextStyle
|
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.observeAsNonNullState
|
||||||
import dev.patrickgold.florisboard.lib.snygg.SnyggStylesheet
|
import org.florisboard.lib.snygg.SnyggStylesheet
|
||||||
import dev.patrickgold.florisboard.themeManager
|
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 LocalConfig = staticCompositionLocalOf<ThemeExtensionComponent> { error("not init") }
|
||||||
private val LocalStyle = staticCompositionLocalOf<SnyggStylesheet> { error("not init") }
|
private val LocalStyle = staticCompositionLocalOf<SnyggStylesheet> { error("not init") }
|
||||||
@ -59,6 +64,44 @@ object FlorisImeTheme {
|
|||||||
fun fallbackContentColor(): Color {
|
fun fallbackContentColor(): Color {
|
||||||
return if (config.isNightTheme) Color.White else Color.Black
|
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
|
@Composable
|
||||||
@ -80,7 +123,12 @@ fun FlorisImeTheme(content: @Composable () -> Unit) {
|
|||||||
LocalStyle provides activeStyle,
|
LocalStyle provides activeStyle,
|
||||||
LocalTextStyle provides TextStyle.Default,
|
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 androidx.compose.ui.unit.sp
|
||||||
import dev.patrickgold.florisboard.ime.input.InputShiftState
|
import dev.patrickgold.florisboard.ime.input.InputShiftState
|
||||||
import dev.patrickgold.florisboard.ime.text.key.KeyCode
|
import dev.patrickgold.florisboard.ime.text.key.KeyCode
|
||||||
import dev.patrickgold.florisboard.lib.snygg.SnyggStylesheet
|
import org.florisboard.lib.snygg.SnyggStylesheet
|
||||||
|
|
||||||
val FlorisImeThemeBaseStyle = SnyggStylesheet {
|
val FlorisImeThemeBaseStyle = SnyggStylesheet {
|
||||||
defines {
|
defines {
|
||||||
|
@ -16,21 +16,21 @@
|
|||||||
|
|
||||||
package dev.patrickgold.florisboard.ime.theme
|
package dev.patrickgold.florisboard.ime.theme
|
||||||
|
|
||||||
import dev.patrickgold.florisboard.lib.snygg.Snygg
|
import org.florisboard.lib.snygg.Snygg
|
||||||
import dev.patrickgold.florisboard.lib.snygg.SnyggLevel
|
import org.florisboard.lib.snygg.SnyggLevel
|
||||||
import dev.patrickgold.florisboard.lib.snygg.SnyggPropertySetSpecBuilder
|
import org.florisboard.lib.snygg.SnyggPropertySetSpecBuilder
|
||||||
import dev.patrickgold.florisboard.lib.snygg.SnyggSpec
|
import org.florisboard.lib.snygg.SnyggSpec
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggCircleShapeValue
|
import org.florisboard.lib.snygg.value.SnyggCircleShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggCutCornerDpShapeValue
|
import org.florisboard.lib.snygg.value.SnyggCutCornerDpShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggCutCornerPercentShapeValue
|
import org.florisboard.lib.snygg.value.SnyggCutCornerPercentShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggDpSizeValue
|
import org.florisboard.lib.snygg.value.SnyggDpSizeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggMaterialYouDarkColorValue
|
import org.florisboard.lib.snygg.value.SnyggMaterialYouDarkColorValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggMaterialYouLightColorValue
|
import org.florisboard.lib.snygg.value.SnyggMaterialYouLightColorValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggRectangleShapeValue
|
import org.florisboard.lib.snygg.value.SnyggRectangleShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggRoundedCornerDpShapeValue
|
import org.florisboard.lib.snygg.value.SnyggRoundedCornerDpShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggRoundedCornerPercentShapeValue
|
import org.florisboard.lib.snygg.value.SnyggRoundedCornerPercentShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggSolidColorValue
|
import org.florisboard.lib.snygg.value.SnyggSolidColorValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggSpSizeValue
|
import org.florisboard.lib.snygg.value.SnyggSpSizeValue
|
||||||
|
|
||||||
fun SnyggPropertySetSpecBuilder.background() {
|
fun SnyggPropertySetSpecBuilder.background() {
|
||||||
property(
|
property(
|
||||||
|
@ -18,7 +18,7 @@ package dev.patrickgold.florisboard.ime.theme
|
|||||||
|
|
||||||
import dev.patrickgold.florisboard.lib.ext.ExtensionComponent
|
import dev.patrickgold.florisboard.lib.ext.ExtensionComponent
|
||||||
import dev.patrickgold.florisboard.lib.ext.ExtensionComponentName
|
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.SerialName
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@ -47,11 +47,6 @@ import dev.patrickgold.florisboard.appContext
|
|||||||
import dev.patrickgold.florisboard.extensionManager
|
import dev.patrickgold.florisboard.extensionManager
|
||||||
import dev.patrickgold.florisboard.lib.ext.ExtensionComponentName
|
import dev.patrickgold.florisboard.lib.ext.ExtensionComponentName
|
||||||
import dev.patrickgold.florisboard.lib.io.ZipUtils
|
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 dev.patrickgold.florisboard.lib.util.ViewUtils
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
@ -59,7 +54,11 @@ import kotlinx.coroutines.SupervisorJob
|
|||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.sync.Mutex
|
import kotlinx.coroutines.sync.Mutex
|
||||||
import kotlinx.coroutines.sync.withLock
|
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
|
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.FlorisImeTheme
|
||||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
||||||
import org.florisboard.lib.android.AndroidVersion
|
import org.florisboard.lib.android.AndroidVersion
|
||||||
import dev.patrickgold.florisboard.lib.snygg.ui.solidColor
|
import org.florisboard.lib.snygg.ui.solidColor
|
||||||
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
@ -20,17 +20,17 @@ import androidx.core.text.trimmedLength
|
|||||||
import dev.patrickgold.florisboard.R
|
import dev.patrickgold.florisboard.R
|
||||||
import dev.patrickgold.florisboard.ime.theme.ThemeExtensionComponent
|
import dev.patrickgold.florisboard.ime.theme.ThemeExtensionComponent
|
||||||
import dev.patrickgold.florisboard.lib.ValidationRule
|
import dev.patrickgold.florisboard.lib.ValidationRule
|
||||||
import dev.patrickgold.florisboard.lib.snygg.SnyggStylesheet
|
import org.florisboard.lib.snygg.SnyggStylesheet
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggDpShapeValue
|
import org.florisboard.lib.snygg.value.SnyggDpShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggPercentShapeValue
|
import org.florisboard.lib.snygg.value.SnyggPercentShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggSolidColorValue
|
import org.florisboard.lib.snygg.value.SnyggSolidColorValue
|
||||||
import dev.patrickgold.florisboard.lib.validate
|
import dev.patrickgold.florisboard.lib.validate
|
||||||
|
import org.florisboard.lib.snygg.value.SnyggVarValue
|
||||||
|
|
||||||
object ExtensionValidation {
|
object ExtensionValidation {
|
||||||
private val MetaIdRegex = """^[a-z][a-z0-9_]*(\.[a-z0-9][a-z0-9_]*)*${'$'}""".toRegex()
|
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 ComponentIdRegex = """^[a-z][a-z0-9_]*${'$'}""".toRegex()
|
||||||
private val ThemeComponentStylesheetPathRegex = """^[^:*<>"']*${'$'}""".toRegex()
|
private val ThemeComponentStylesheetPathRegex = """^[^:*<>"']*${'$'}""".toRegex()
|
||||||
val ThemeComponentVariableNameRegex = """^[a-zA-Z0-9-_]+${'$'}""".toRegex()
|
|
||||||
|
|
||||||
val MetaId = ValidationRule<String> {
|
val MetaId = ValidationRule<String> {
|
||||||
forKlass = ExtensionMeta::class
|
forKlass = ExtensionMeta::class
|
||||||
@ -148,8 +148,8 @@ object ExtensionValidation {
|
|||||||
when {
|
when {
|
||||||
str.isBlank() -> resultInvalid(error = R.string.ext__validation__enter_property)
|
str.isBlank() -> resultInvalid(error = R.string.ext__validation__enter_property)
|
||||||
str == "-" || str.startsWith("--") -> resultValid()
|
str == "-" || str.startsWith("--") -> resultValid()
|
||||||
!ThemeComponentVariableNameRegex.matches(str) -> {
|
!SnyggVarValue.VariableNameRegex.matches(str) -> {
|
||||||
resultInvalid(error = R.string.ext__validation__error_property, "variable_name_regex" to ThemeComponentVariableNameRegex)
|
resultInvalid(error = R.string.ext__validation__error_property, "variable_name_regex" to SnyggVarValue.VariableNameRegex)
|
||||||
}
|
}
|
||||||
else -> resultValid(hint = R.string.ext__validation__hint_property)
|
else -> resultValid(hint = R.string.ext__validation__hint_property)
|
||||||
}
|
}
|
||||||
@ -163,7 +163,7 @@ object ExtensionValidation {
|
|||||||
val str = input.trim()
|
val str = input.trim()
|
||||||
when {
|
when {
|
||||||
str.isBlank() -> resultInvalid(error = R.string.ext__validation__enter_color)
|
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)
|
resultInvalid(error = R.string.ext__validation__error_color)
|
||||||
}
|
}
|
||||||
else -> resultValid()
|
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.core.spec.style.FunSpec
|
||||||
import io.kotest.data.forAll
|
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.dp
|
||||||
import androidx.compose.ui.unit.sp
|
import androidx.compose.ui.unit.sp
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
plugins {
|
plugins {
|
||||||
alias(libs.plugins.agp.library)
|
alias(libs.plugins.agp.library)
|
||||||
alias(libs.plugins.kotlin.android)
|
alias(libs.plugins.kotlin.android)
|
||||||
|
alias(libs.plugins.kotlin.serialization)
|
||||||
}
|
}
|
||||||
|
|
||||||
val projectMinSdk: String by project
|
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.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package dev.patrickgold.florisboard.lib.snygg
|
package org.florisboard.lib.snygg
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Main object for defining all known Snygg property names.
|
* Main object for defining all known Snygg property names.
|
||||||
@ -41,4 +41,14 @@ object Snygg {
|
|||||||
const val ShadowElevation = "shadow-elevation"
|
const val ShadowElevation = "shadow-elevation"
|
||||||
|
|
||||||
const val Shape = "shape"
|
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.
|
* 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
|
* 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.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package dev.patrickgold.florisboard.lib.snygg
|
package org.florisboard.lib.snygg
|
||||||
|
|
||||||
import androidx.annotation.FloatRange
|
import androidx.annotation.FloatRange
|
||||||
import androidx.annotation.IntRange
|
import androidx.annotation.IntRange
|
||||||
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.compose.ui.unit.TextUnit
|
import androidx.compose.ui.unit.TextUnit
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.RgbaColor
|
import org.florisboard.lib.snygg.value.RgbaColor
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggCircleShapeValue
|
import org.florisboard.lib.snygg.value.SnyggCircleShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggCutCornerDpShapeValue
|
import org.florisboard.lib.snygg.value.SnyggCutCornerDpShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggCutCornerPercentShapeValue
|
import org.florisboard.lib.snygg.value.SnyggCutCornerPercentShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggDefinedVarValue
|
import org.florisboard.lib.snygg.value.SnyggDefinedVarValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggDpSizeValue
|
import org.florisboard.lib.snygg.value.SnyggDpSizeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggImageRefValue
|
import org.florisboard.lib.snygg.value.SnyggImageRefValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggImplicitInheritValue
|
import org.florisboard.lib.snygg.value.SnyggImplicitInheritValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggPercentageSizeValue
|
import org.florisboard.lib.snygg.value.SnyggPercentageSizeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggRectangleShapeValue
|
import org.florisboard.lib.snygg.value.SnyggRectangleShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggRoundedCornerDpShapeValue
|
import org.florisboard.lib.snygg.value.SnyggRoundedCornerDpShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggRoundedCornerPercentShapeValue
|
import org.florisboard.lib.snygg.value.SnyggRoundedCornerPercentShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggSolidColorValue
|
import org.florisboard.lib.snygg.value.SnyggSolidColorValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggSpSizeValue
|
import org.florisboard.lib.snygg.value.SnyggSpSizeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggValue
|
import org.florisboard.lib.snygg.value.SnyggValue
|
||||||
|
|
||||||
class SnyggPropertySet(val properties: Map<String, SnyggValue>) {
|
class SnyggPropertySet(val properties: Map<String, SnyggValue>) {
|
||||||
val width = properties[Snygg.Width] ?: SnyggImplicitInheritValue
|
val width = properties[Snygg.Width] ?: SnyggImplicitInheritValue
|
@ -14,12 +14,9 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package dev.patrickgold.florisboard.lib.snygg
|
package org.florisboard.lib.snygg
|
||||||
|
|
||||||
import androidx.compose.runtime.saveable.Saver
|
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.KSerializer
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
import kotlinx.serialization.descriptors.PrimitiveKind
|
import kotlinx.serialization.descriptors.PrimitiveKind
|
||||||
@ -60,39 +57,9 @@ data class SnyggRule(
|
|||||||
private val RuleValidator =
|
private val RuleValidator =
|
||||||
"""^(@?)[a-zA-Z0-9-]+(\[(code|group|shiftstate)=(\+|-)?([0-9]+)(\|(\+|-)?([0-9]+))*\])*(:(pressed|focus|disabled))*${'$'}""".toRegex()
|
"""^(@?)[a-zA-Z0-9-]+(\[(code|group|shiftstate)=(\+|-)?([0-9]+)(\|(\+|-)?([0-9]+))*\])*(:(pressed|focus|disabled))*${'$'}""".toRegex()
|
||||||
|
|
||||||
val Placeholders = mapOf(
|
var Placeholders = mapOf<String, Int>()
|
||||||
"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,
|
|
||||||
)
|
|
||||||
|
|
||||||
private val PreferredElementSorting = listOf(
|
internal var PreferredElementSorting = listOf<String>()
|
||||||
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,
|
|
||||||
)
|
|
||||||
|
|
||||||
val Saver = Saver<SnyggRule?, String>(
|
val Saver = Saver<SnyggRule?, String>(
|
||||||
save = { it?.toString() ?: "" },
|
save = { it?.toString() ?: "" },
|
@ -14,11 +14,11 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package dev.patrickgold.florisboard.lib.snygg
|
package org.florisboard.lib.snygg
|
||||||
|
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggDefinedVarValue
|
import org.florisboard.lib.snygg.value.SnyggDefinedVarValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggExplicitInheritValue
|
import org.florisboard.lib.snygg.value.SnyggExplicitInheritValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggValueEncoder
|
import org.florisboard.lib.snygg.value.SnyggValueEncoder
|
||||||
|
|
||||||
open class SnyggSpec(init: SnyggSpecBuilder.() -> Unit) {
|
open class SnyggSpec(init: SnyggSpecBuilder.() -> Unit) {
|
||||||
val elements: Map<String, SnyggPropertySetSpec>
|
val elements: Map<String, SnyggPropertySetSpec>
|
@ -14,15 +14,10 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package dev.patrickgold.florisboard.lib.snygg
|
package org.florisboard.lib.snygg
|
||||||
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.remember
|
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.KSerializer
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
import kotlinx.serialization.builtins.MapSerializer
|
import kotlinx.serialization.builtins.MapSerializer
|
||||||
@ -30,6 +25,10 @@ import kotlinx.serialization.builtins.serializer
|
|||||||
import kotlinx.serialization.encoding.Decoder
|
import kotlinx.serialization.encoding.Decoder
|
||||||
import kotlinx.serialization.encoding.Encoder
|
import kotlinx.serialization.encoding.Encoder
|
||||||
import kotlinx.serialization.json.Json
|
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
|
val SnyggStylesheetJsonConfig = Json
|
||||||
|
|
||||||
@ -251,6 +250,10 @@ class SnyggStylesheetSerializer : KSerializer<SnyggStylesheet> {
|
|||||||
|
|
||||||
override val descriptor = ruleMapSerializer.descriptor
|
override val descriptor = ruleMapSerializer.descriptor
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
var GlobalStylesheetSpec: SnyggSpec? = null
|
||||||
|
}
|
||||||
|
|
||||||
override fun serialize(encoder: Encoder, value: SnyggStylesheet) {
|
override fun serialize(encoder: Encoder, value: SnyggStylesheet) {
|
||||||
val rawRuleMap = value.rules.mapValues { (_, propertySet) ->
|
val rawRuleMap = value.rules.mapValues { (_, propertySet) ->
|
||||||
propertySet.properties.mapValues { (_, snyggValue) ->
|
propertySet.properties.mapValues { (_, snyggValue) ->
|
||||||
@ -264,8 +267,8 @@ class SnyggStylesheetSerializer : KSerializer<SnyggStylesheet> {
|
|||||||
val rawRuleMap = ruleMapSerializer.deserialize(decoder)
|
val rawRuleMap = ruleMapSerializer.deserialize(decoder)
|
||||||
val ruleMap = mutableMapOf<SnyggRule, SnyggPropertySet>()
|
val ruleMap = mutableMapOf<SnyggRule, SnyggPropertySet>()
|
||||||
for ((rule, rawProperties) in rawRuleMap) {
|
for ((rule, rawProperties) in rawRuleMap) {
|
||||||
// FIXME: hardcoding which spec to use, the selection should happen dynamically
|
val stylesheetSpec = GlobalStylesheetSpec ?:
|
||||||
val stylesheetSpec = FlorisImeUiSpec
|
throw IllegalStateException("No global stylesheet spec defined")
|
||||||
if (rule.isDefinedVariablesRule()) {
|
if (rule.isDefinedVariablesRule()) {
|
||||||
val parsedProperties = rawProperties.mapValues { (_, rawValue) ->
|
val parsedProperties = rawProperties.mapValues { (_, rawValue) ->
|
||||||
SnyggVarValueEncoders.firstNotNullOfOrNull { it.deserialize(rawValue).getOrNull() }
|
SnyggVarValueEncoders.firstNotNullOfOrNull { it.deserialize(rawValue).getOrNull() }
|
@ -14,24 +14,23 @@
|
|||||||
* limitations under the License.
|
* 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.BorderStroke
|
||||||
import androidx.compose.foundation.layout.PaddingValues
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.material.Button
|
import androidx.compose.material3.Button
|
||||||
import androidx.compose.material.ButtonDefaults
|
import androidx.compose.material3.ButtonDefaults
|
||||||
import androidx.compose.material.Icon
|
import androidx.compose.material3.Icon
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.graphics.painter.Painter
|
import androidx.compose.ui.graphics.painter.Painter
|
||||||
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 dev.patrickgold.florisboard.ime.theme.FlorisImeTheme
|
import org.florisboard.lib.snygg.SnyggPropertySet
|
||||||
import dev.patrickgold.florisboard.lib.snygg.SnyggPropertySet
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun SnyggButton(
|
fun SnyggButton(
|
||||||
@ -44,6 +43,7 @@ fun SnyggButton(
|
|||||||
contentPadding: PaddingValues = ButtonDefaults.ContentPadding,
|
contentPadding: PaddingValues = ButtonDefaults.ContentPadding,
|
||||||
) {
|
) {
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
|
val uiDefaults = LocalSnyggUiDefaults.current
|
||||||
val border = remember (style) {
|
val border = remember (style) {
|
||||||
BorderStroke(style.borderWidth.dpSize(default = 0.dp), style.borderColor.solidColor(context))
|
BorderStroke(style.borderWidth.dpSize(default = 0.dp), style.borderColor.solidColor(context))
|
||||||
}
|
}
|
||||||
@ -51,7 +51,7 @@ fun SnyggButton(
|
|||||||
Button(
|
Button(
|
||||||
modifier = modifier,
|
modifier = modifier,
|
||||||
enabled = enabled,
|
enabled = enabled,
|
||||||
elevation = ButtonDefaults.elevation(
|
elevation = ButtonDefaults.buttonElevation(
|
||||||
defaultElevation = elevation,
|
defaultElevation = elevation,
|
||||||
pressedElevation = elevation,
|
pressedElevation = elevation,
|
||||||
disabledElevation = elevation,
|
disabledElevation = elevation,
|
||||||
@ -61,8 +61,8 @@ fun SnyggButton(
|
|||||||
shape = style.shape.shape(),
|
shape = style.shape.shape(),
|
||||||
border = border,
|
border = border,
|
||||||
colors = ButtonDefaults.buttonColors(
|
colors = ButtonDefaults.buttonColors(
|
||||||
backgroundColor = style.background.solidColor(context, default = FlorisImeTheme.fallbackContentColor()),
|
containerColor = style.background.solidColor(context, default = uiDefaults.fallbackContentColor),
|
||||||
contentColor = style.foreground.solidColor(context, default = FlorisImeTheme.fallbackSurfaceColor()),
|
contentColor = style.foreground.solidColor(context, default = uiDefaults.fallbackSurfaceColor),
|
||||||
),
|
),
|
||||||
contentPadding = contentPadding,
|
contentPadding = contentPadding,
|
||||||
onClick = onClick,
|
onClick = onClick,
|
@ -14,7 +14,7 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package dev.patrickgold.florisboard.lib.snygg.ui
|
package org.florisboard.lib.snygg.ui
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.compose.foundation.background
|
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.TextUnit
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.unit.takeOrElse
|
import androidx.compose.ui.unit.takeOrElse
|
||||||
import dev.patrickgold.florisboard.lib.snygg.SnyggPropertySet
|
import org.florisboard.lib.snygg.SnyggPropertySet
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggDpSizeValue
|
import org.florisboard.lib.snygg.value.SnyggDpSizeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggMaterialYouLightColorValue
|
import org.florisboard.lib.snygg.value.SnyggMaterialYouValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggMaterialYouValue
|
import org.florisboard.lib.snygg.value.SnyggShapeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggShapeValue
|
import org.florisboard.lib.snygg.value.SnyggSolidColorValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggSolidColorValue
|
import org.florisboard.lib.snygg.value.SnyggSpSizeValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggSpSizeValue
|
import org.florisboard.lib.snygg.value.SnyggValue
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.SnyggValue
|
|
||||||
|
|
||||||
fun Modifier.snyggBackground(
|
fun Modifier.snyggBackground(
|
||||||
context: Context,
|
context: Context,
|
@ -14,22 +14,21 @@
|
|||||||
* limitations under the License.
|
* 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.Box
|
||||||
import androidx.compose.foundation.layout.BoxScope
|
import androidx.compose.foundation.layout.BoxScope
|
||||||
import androidx.compose.foundation.layout.PaddingValues
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.material.LocalAbsoluteElevation
|
import androidx.compose.material3.LocalAbsoluteTonalElevation
|
||||||
import androidx.compose.material.LocalContentColor
|
import androidx.compose.material3.LocalContentColor
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.CompositionLocalProvider
|
import androidx.compose.runtime.CompositionLocalProvider
|
||||||
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.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.unit.takeOrElse
|
import androidx.compose.ui.unit.takeOrElse
|
||||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeTheme
|
import org.florisboard.lib.snygg.SnyggPropertySet
|
||||||
import dev.patrickgold.florisboard.lib.snygg.SnyggPropertySet
|
|
||||||
|
|
||||||
val NoContentPadding = PaddingValues(all = 0.dp)
|
val NoContentPadding = PaddingValues(all = 0.dp)
|
||||||
|
|
||||||
@ -43,12 +42,13 @@ fun SnyggSurface(
|
|||||||
content: @Composable BoxScope.() -> Unit,
|
content: @Composable BoxScope.() -> Unit,
|
||||||
) {
|
) {
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
|
val uiDefaults = LocalSnyggUiDefaults.current
|
||||||
val elevationDp = style.shadowElevation.dpSize().takeOrElse { 0.dp }.coerceAtLeast(0.dp)
|
val elevationDp = style.shadowElevation.dpSize().takeOrElse { 0.dp }.coerceAtLeast(0.dp)
|
||||||
val contentColor = style.foreground.solidColor(context, default = FlorisImeTheme.fallbackContentColor())
|
val contentColor = style.foreground.solidColor(context, default = uiDefaults.fallbackContentColor)
|
||||||
val absoluteElevation = LocalAbsoluteElevation.current + elevationDp
|
val absoluteElevation = LocalAbsoluteTonalElevation.current + elevationDp
|
||||||
CompositionLocalProvider(
|
CompositionLocalProvider(
|
||||||
LocalContentColor provides contentColor,
|
LocalContentColor provides contentColor,
|
||||||
LocalAbsoluteElevation provides absoluteElevation,
|
LocalAbsoluteTonalElevation provides absoluteElevation,
|
||||||
) {
|
) {
|
||||||
Box(
|
Box(
|
||||||
modifier = modifier
|
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.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package dev.patrickgold.florisboard.lib.snygg.value
|
package org.florisboard.lib.snygg.value
|
||||||
|
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
@ -14,7 +14,7 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package dev.patrickgold.florisboard.lib.snygg.value
|
package org.florisboard.lib.snygg.value
|
||||||
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
@JvmInline
|
@JvmInline
|
@ -14,17 +14,17 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package dev.patrickgold.florisboard.lib.snygg.value
|
package org.florisboard.lib.snygg.value
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.compose.material3.ColorScheme
|
import androidx.compose.material3.ColorScheme
|
||||||
import androidx.compose.material3.dynamicDarkColorScheme
|
import androidx.compose.material3.dynamicDarkColorScheme
|
||||||
import androidx.compose.material3.dynamicLightColorScheme
|
import androidx.compose.material3.dynamicLightColorScheme
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.MaterialYouColor.ColorName
|
import org.florisboard.lib.snygg.value.MaterialYouColor.ColorName
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.MaterialYouColor.ColorNameId
|
import org.florisboard.lib.snygg.value.MaterialYouColor.ColorNameId
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.MaterialYouColor.darkColorName
|
import org.florisboard.lib.snygg.value.MaterialYouColor.darkColorName
|
||||||
import dev.patrickgold.florisboard.lib.snygg.value.MaterialYouColor.lightColorName
|
import org.florisboard.lib.snygg.value.MaterialYouColor.lightColorName
|
||||||
|
|
||||||
sealed interface SnyggMaterialYouValue : SnyggValue {
|
sealed interface SnyggMaterialYouValue : SnyggValue {
|
||||||
val colorName: String
|
val colorName: String
|
@ -14,7 +14,7 @@
|
|||||||
* limitations under the License.
|
* 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 RelPath = "relPath"
|
||||||
private const val ImageFunction = "image"
|
private const val ImageFunction = "image"
|
@ -14,7 +14,7 @@
|
|||||||
* limitations under the License.
|
* 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.CircleShape
|
||||||
import androidx.compose.foundation.shape.CutCornerShape
|
import androidx.compose.foundation.shape.CutCornerShape
|
@ -14,7 +14,7 @@
|
|||||||
* limitations under the License.
|
* 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.Dp
|
||||||
import androidx.compose.ui.unit.TextUnit
|
import androidx.compose.ui.unit.TextUnit
|
@ -14,7 +14,7 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package dev.patrickgold.florisboard.lib.snygg.value
|
package org.florisboard.lib.snygg.value
|
||||||
|
|
||||||
import org.florisboard.lib.android.AndroidVersion
|
import org.florisboard.lib.android.AndroidVersion
|
||||||
|
|
@ -14,7 +14,7 @@
|
|||||||
* limitations under the License.
|
* 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
|
* SnyggValueEncoder is responsible for the representation of a [SnyggValue] specification and for providing methods
|
@ -14,7 +14,7 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package dev.patrickgold.florisboard.lib.snygg.value
|
package org.florisboard.lib.snygg.value
|
||||||
|
|
||||||
import org.florisboard.lib.kotlin.toStringWithoutDotZero
|
import org.florisboard.lib.kotlin.toStringWithoutDotZero
|
||||||
|
|
@ -14,18 +14,20 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package dev.patrickgold.florisboard.lib.snygg.value
|
package org.florisboard.lib.snygg.value
|
||||||
|
|
||||||
import dev.patrickgold.florisboard.lib.ext.ExtensionValidation
|
|
||||||
|
|
||||||
private const val VarKey = "varKey"
|
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 {
|
data class SnyggDefinedVarValue(val key: String) : SnyggVarValue {
|
||||||
companion object : SnyggValueEncoder {
|
companion object : SnyggValueEncoder {
|
||||||
override val spec = SnyggValueSpec {
|
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("")
|
override fun defaultValue() = SnyggDefinedVarValue("")
|
@ -38,3 +38,4 @@ include(":benchmark")
|
|||||||
include(":lib:android")
|
include(":lib:android")
|
||||||
include(":lib:kotlin")
|
include(":lib:kotlin")
|
||||||
include(":lib:native")
|
include(":lib:native")
|
||||||
|
include(":lib:snygg")
|
||||||
|
Loading…
Reference in New Issue
Block a user