Fix media sizing on mobile
authorLanius Trolling <lanius@laniustrolling.dev>
Fri, 7 Oct 2022 19:20:05 +0000 (15:20 -0400)
committerLanius Trolling <lanius@laniustrolling.dev>
Fri, 7 Oct 2022 19:20:05 +0000 (15:20 -0400)
build.gradle.kts
src/main/kotlin/info/mechyrdia/Configuration.kt
src/main/kotlin/info/mechyrdia/lore/parser_tags.kt
src/main/kotlin/info/mechyrdia/lore/parser_toc.kt
src/main/resources/static/style.css

index 75d369c266b73572b8473b6dfa4d85a4ad1a1d3e..1dd99da09cf54e33358b306c923301c113cee4cd 100644 (file)
@@ -16,9 +16,9 @@ repositories {
 }
 
 dependencies {
-       implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.2")
-       implementation("org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.6.2")
-       implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactive:1.6.2")
+       implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4")
+       implementation("org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.6.4")
+       implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactive:1.6.4")
        implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.3.3")
        implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.3")
        
@@ -27,8 +27,8 @@ dependencies {
        
        implementation("org.jetbrains.kotlinx:kotlinx-html-jvm:0.7.5")
        
-       implementation("org.slf4j:slf4j-api:1.7.32")
-       implementation("ch.qos.logback:logback-classic:1.2.10")
+       implementation("org.slf4j:slf4j-api:1.7.36")
+       implementation("ch.qos.logback:logback-classic:1.2.11")
 }
 
 tasks.withType<KotlinCompile> {
index 427958e0dbf0d9f78777380935cb3f2abe466c1e..8f5d51b9872aa567997144821942009111554ec0 100644 (file)
@@ -36,9 +36,9 @@ data class Configuration(
                                return JsonConfigCodec.decodeFromString(serializer(), json).also { currentConfig = it }
                        }
                
-               @OptIn(ExperimentalSerializationApi::class)
                val JsonConfigCodec = Json {
                        prettyPrint = true
+                       @OptIn(ExperimentalSerializationApi::class)
                        prettyPrintIndent = "\t"
                        
                        useAlternativeNames = false
index 63483f1addf6b016c93205a17c15b1f64a575d4a..b9ac1f893674b776a0b8005fb6e178f33e9291e5 100644 (file)
@@ -307,7 +307,7 @@ enum class TextParserFormattingTag(val type: TextParserTagType<Unit>) {
                } ?: (null to null)
                
                fun getTableSizeAttributes(width: Int?, height: Int?) = (width?.let { " colspan=\"$it\"" } ?: "") + (height?.let { " rowspan=\"$it\"" } ?: "")
-               fun getImageSizeAttributes(width: Int?, height: Int?) = " style=\"" + (width?.let { "width: ${it * 0.025}vmin;" } ?: "") + (height?.let { "height: ${it * 0.025}vmin;" } ?: "") + "\""
+               fun getImageSizeAttributes(width: Int?, height: Int?) = " style=\"" + (width?.let { "width: calc(var(--media-size-unit) * $it);" } ?: "") + (height?.let { "height: calc(var(--media-size-unit) * $it);" } ?: "") + "\""
        }
 }
 
index 9e17a3819be86e42acbec2344ed958d2b5f56793..9aad1dfc8c3450f7a198de3ed082315a590aa851 100644 (file)
@@ -7,6 +7,9 @@ class TableOfContentsBuilder {
        
        fun add(text: String, level: Int, toAnchor: String) {
                if (level == 0) {
+                       if (title != null)
+                               throw IllegalArgumentException("[h1] cannot appear multiple times in an article!")
+                       
                        title = text
                        return
                }
@@ -16,7 +19,7 @@ class TableOfContentsBuilder {
                                levels.add(1)
                                levels.joinToString(separator = ".") { it.toString() }
                        } else
-                               throw IllegalArgumentException("[h${level + 1}] cannot come after [h${levels.size + 1}]!")
+                               throw IllegalArgumentException("[h${level + 1}] cannot appear after [h${levels.size + 1}]!")
                } else {
                        levels.addAll(levels.take(level).also { levels.clear() }.mapIndexed { i, n -> if (i == level - 1) n + 1 else n })
                        levels.joinToString(separator = ".") { it.toString() }
index fc410bb1bddd0951db37e3dbb5d52e453d60bd22..aee6e4026144435d9853ca26ee7f865feb4143f2 100644 (file)
@@ -11,6 +11,8 @@ html {
        --h2-size: 1.4em;
        --h3-size: 1.2em;
 
+       --media-size-unit: 0.035vw;
+
        /***************
        * color params *
        ***************/
@@ -332,6 +334,8 @@ aside.mobile img {
                --h1-size: 2.6em;
                --h2-size: 2.2em;
                --h3-size: 1.8em;
+
+               --media-size-unit: 0.025vmin;
        }
 
        div#bg {