diff --git a/platform/compose/resources/intellij.platform.compose.xml b/platform/compose/resources/intellij.platform.compose.xml index 524eab6fff0c..82d63967d208 100644 --- a/platform/compose/resources/intellij.platform.compose.xml +++ b/platform/compose/resources/intellij.platform.compose.xml @@ -10,6 +10,8 @@ /> + + diff --git a/platform/compose/src/com/intellij/platform/compose/JBComposePanel.kt b/platform/compose/src/com/intellij/platform/compose/JBComposePanel.kt index 1f37c547477d..ee1f0e773aae 100644 --- a/platform/compose/src/com/intellij/platform/compose/JBComposePanel.kt +++ b/platform/compose/src/com/intellij/platform/compose/JBComposePanel.kt @@ -17,7 +17,5 @@ fun JBComposePanel( if (ApplicationManager.getApplication().isInternal) { System.setProperty("compose.swing.render.on.graphics", Registry.stringValue("compose.swing.render.on.graphics")) } - return JewelComposePanel { content() }.apply { - ComposeUiInspector(this) - } + return JewelComposePanel { content() } } \ No newline at end of file diff --git a/platform/jewel/decorated-window/intellij.platform.jewel.decoratedWindow.iml b/platform/jewel/decorated-window/intellij.platform.jewel.decoratedWindow.iml index 4efbd86143a2..09a25aa00e78 100644 --- a/platform/jewel/decorated-window/intellij.platform.jewel.decoratedWindow.iml +++ b/platform/jewel/decorated-window/intellij.platform.jewel.decoratedWindow.iml @@ -15,7 +15,7 @@ - $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.1.10/kotlin-compose-compiler-plugin-2.1.10.jar + $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.0.21/kotlin-compose-compiler-plugin-2.0.21.jar diff --git a/platform/jewel/foundation/intellij.platform.jewel.foundation.iml b/platform/jewel/foundation/intellij.platform.jewel.foundation.iml index 591a3c7a844a..70c8dbb6939b 100644 --- a/platform/jewel/foundation/intellij.platform.jewel.foundation.iml +++ b/platform/jewel/foundation/intellij.platform.jewel.foundation.iml @@ -15,7 +15,7 @@ - $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.1.10/kotlin-compose-compiler-plugin-2.1.10.jar + $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.0.21/kotlin-compose-compiler-plugin-2.0.21.jar diff --git a/platform/jewel/ide-laf-bridge/intellij.platform.jewel.ideLafBridge.iml b/platform/jewel/ide-laf-bridge/intellij.platform.jewel.ideLafBridge.iml index 2a47925ea39c..730255a1cd7f 100644 --- a/platform/jewel/ide-laf-bridge/intellij.platform.jewel.ideLafBridge.iml +++ b/platform/jewel/ide-laf-bridge/intellij.platform.jewel.ideLafBridge.iml @@ -15,7 +15,7 @@ - $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.1.10/kotlin-compose-compiler-plugin-2.1.10.jar + $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.0.21/kotlin-compose-compiler-plugin-2.0.21.jar diff --git a/platform/jewel/int-ui/int-ui-decorated-window/intellij.platform.jewel.intUi.decoratedWindow.iml b/platform/jewel/int-ui/int-ui-decorated-window/intellij.platform.jewel.intUi.decoratedWindow.iml index 674c4f98089d..5681185de12e 100644 --- a/platform/jewel/int-ui/int-ui-decorated-window/intellij.platform.jewel.intUi.decoratedWindow.iml +++ b/platform/jewel/int-ui/int-ui-decorated-window/intellij.platform.jewel.intUi.decoratedWindow.iml @@ -15,7 +15,7 @@ - $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.1.10/kotlin-compose-compiler-plugin-2.1.10.jar + $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.0.21/kotlin-compose-compiler-plugin-2.0.21.jar diff --git a/platform/jewel/int-ui/int-ui-standalone/intellij.platform.jewel.intUi.standalone.iml b/platform/jewel/int-ui/int-ui-standalone/intellij.platform.jewel.intUi.standalone.iml index 17bd924233fc..d03396c7c57b 100644 --- a/platform/jewel/int-ui/int-ui-standalone/intellij.platform.jewel.intUi.standalone.iml +++ b/platform/jewel/int-ui/int-ui-standalone/intellij.platform.jewel.intUi.standalone.iml @@ -15,7 +15,7 @@ - $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.1.10/kotlin-compose-compiler-plugin-2.1.10.jar + $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.0.21/kotlin-compose-compiler-plugin-2.0.21.jar diff --git a/platform/jewel/markdown/core/intellij.platform.jewel.markdown.core.iml b/platform/jewel/markdown/core/intellij.platform.jewel.markdown.core.iml index bfcb906a931e..85c311eebb1b 100644 --- a/platform/jewel/markdown/core/intellij.platform.jewel.markdown.core.iml +++ b/platform/jewel/markdown/core/intellij.platform.jewel.markdown.core.iml @@ -15,7 +15,7 @@ - $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.1.10/kotlin-compose-compiler-plugin-2.1.10.jar + $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.0.21/kotlin-compose-compiler-plugin-2.0.21.jar diff --git a/platform/jewel/markdown/extension/autolink/intellij.platform.jewel.markdown.extension.autolink.iml b/platform/jewel/markdown/extension/autolink/intellij.platform.jewel.markdown.extension.autolink.iml index 3ba26667c901..655cd2834b92 100644 --- a/platform/jewel/markdown/extension/autolink/intellij.platform.jewel.markdown.extension.autolink.iml +++ b/platform/jewel/markdown/extension/autolink/intellij.platform.jewel.markdown.extension.autolink.iml @@ -15,7 +15,7 @@ - $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.1.10/kotlin-compose-compiler-plugin-2.1.10.jar + $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.0.21/kotlin-compose-compiler-plugin-2.0.21.jar diff --git a/platform/jewel/markdown/extension/gfm-alerts/intellij.platform.jewel.markdown.extension.gfmAlerts.iml b/platform/jewel/markdown/extension/gfm-alerts/intellij.platform.jewel.markdown.extension.gfmAlerts.iml index b9d22d29df9b..99f5950df3d0 100644 --- a/platform/jewel/markdown/extension/gfm-alerts/intellij.platform.jewel.markdown.extension.gfmAlerts.iml +++ b/platform/jewel/markdown/extension/gfm-alerts/intellij.platform.jewel.markdown.extension.gfmAlerts.iml @@ -15,7 +15,7 @@ - $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.1.10/kotlin-compose-compiler-plugin-2.1.10.jar + $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.0.21/kotlin-compose-compiler-plugin-2.0.21.jar diff --git a/platform/jewel/markdown/extension/gfm-strikethrough/intellij.platform.jewel.markdown.extension.gfmStrikethrough.iml b/platform/jewel/markdown/extension/gfm-strikethrough/intellij.platform.jewel.markdown.extension.gfmStrikethrough.iml index d175f3e8ee51..6051eb4357ed 100644 --- a/platform/jewel/markdown/extension/gfm-strikethrough/intellij.platform.jewel.markdown.extension.gfmStrikethrough.iml +++ b/platform/jewel/markdown/extension/gfm-strikethrough/intellij.platform.jewel.markdown.extension.gfmStrikethrough.iml @@ -15,7 +15,7 @@ - $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.1.10/kotlin-compose-compiler-plugin-2.1.10.jar + $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.0.21/kotlin-compose-compiler-plugin-2.0.21.jar diff --git a/platform/jewel/markdown/extension/gfm-tables/intellij.platform.jewel.markdown.extension.gfmTables.iml b/platform/jewel/markdown/extension/gfm-tables/intellij.platform.jewel.markdown.extension.gfmTables.iml index f98afe1d8acb..1e3714a5a442 100644 --- a/platform/jewel/markdown/extension/gfm-tables/intellij.platform.jewel.markdown.extension.gfmTables.iml +++ b/platform/jewel/markdown/extension/gfm-tables/intellij.platform.jewel.markdown.extension.gfmTables.iml @@ -14,9 +14,7 @@ - - $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.1.10/kotlin-compose-compiler-plugin-2.1.10.jar - + $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.0.21/kotlin-compose-compiler-plugin-2.0.21.jar diff --git a/platform/jewel/markdown/ide-laf-bridge-styling/intellij.platform.jewel.markdown.ideLafBridgeStyling.iml b/platform/jewel/markdown/ide-laf-bridge-styling/intellij.platform.jewel.markdown.ideLafBridgeStyling.iml index 76d5b0995a11..496832bb1fe4 100644 --- a/platform/jewel/markdown/ide-laf-bridge-styling/intellij.platform.jewel.markdown.ideLafBridgeStyling.iml +++ b/platform/jewel/markdown/ide-laf-bridge-styling/intellij.platform.jewel.markdown.ideLafBridgeStyling.iml @@ -15,7 +15,7 @@ - $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.1.10/kotlin-compose-compiler-plugin-2.1.10.jar + $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.0.21/kotlin-compose-compiler-plugin-2.0.21.jar diff --git a/platform/jewel/markdown/ide-laf-bridge-styling/src/main/kotlin/org/jetbrains/jewel/intui/markdown/bridge/BridgeProvideMarkdownStyling.kt b/platform/jewel/markdown/ide-laf-bridge-styling/src/main/kotlin/org/jetbrains/jewel/intui/markdown/bridge/BridgeProvideMarkdownStyling.kt index 751070fcc2cd..3c09c3ead09f 100644 --- a/platform/jewel/markdown/ide-laf-bridge-styling/src/main/kotlin/org/jetbrains/jewel/intui/markdown/bridge/BridgeProvideMarkdownStyling.kt +++ b/platform/jewel/markdown/ide-laf-bridge-styling/src/main/kotlin/org/jetbrains/jewel/intui/markdown/bridge/BridgeProvideMarkdownStyling.kt @@ -16,6 +16,7 @@ import org.jetbrains.jewel.foundation.theme.JewelTheme import org.jetbrains.jewel.intui.markdown.bridge.styling.create import org.jetbrains.jewel.markdown.MarkdownMode import org.jetbrains.jewel.markdown.extensions.LocalMarkdownBlockRenderer +import org.jetbrains.jewel.markdown.extensions.LocalMarkdownMode import org.jetbrains.jewel.markdown.extensions.LocalMarkdownProcessor import org.jetbrains.jewel.markdown.extensions.LocalMarkdownStyling import org.jetbrains.jewel.markdown.processing.MarkdownProcessor @@ -36,6 +37,7 @@ public fun ProvideMarkdownStyling( ) { CompositionLocalProvider( LocalMarkdownStyling provides markdownStyling, + LocalMarkdownMode provides markdownMode, LocalMarkdownProcessor provides markdownProcessor, LocalMarkdownBlockRenderer provides markdownBlockRenderer, LocalCodeHighlighter provides codeHighlighter, @@ -61,6 +63,7 @@ public fun ProvideMarkdownStyling( ProvideMarkdownStyling( themeName = themeName, markdownStyling = markdownStyling, + markdownMode = markdownMode, markdownProcessor = markdownProcessor, markdownBlockRenderer = markdownBlockRenderer, codeHighlighter = codeHighlighter, diff --git a/platform/jewel/markdown/int-ui-standalone-styling/intellij.platform.jewel.markdown.intUiStandaloneStyling.iml b/platform/jewel/markdown/int-ui-standalone-styling/intellij.platform.jewel.markdown.intUiStandaloneStyling.iml index 1a7c78fd16d3..954c25a5891f 100644 --- a/platform/jewel/markdown/int-ui-standalone-styling/intellij.platform.jewel.markdown.intUiStandaloneStyling.iml +++ b/platform/jewel/markdown/int-ui-standalone-styling/intellij.platform.jewel.markdown.intUiStandaloneStyling.iml @@ -15,7 +15,7 @@ - $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.1.10/kotlin-compose-compiler-plugin-2.1.10.jar + $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.0.21/kotlin-compose-compiler-plugin-2.0.21.jar diff --git a/platform/jewel/markdown/int-ui-standalone-styling/src/main/kotlin/org/jetbrains/jewel/intui/markdown/standalone/styling/extensions/github/tables/IntUiGitHubTableStyling.kt b/platform/jewel/markdown/int-ui-standalone-styling/src/main/kotlin/org/jetbrains/jewel/intui/markdown/standalone/styling/extensions/github/tables/IntUiGitHubTableStyling.kt index eb03d178fb31..7c6667c2e6d5 100644 --- a/platform/jewel/markdown/int-ui-standalone-styling/src/main/kotlin/org/jetbrains/jewel/intui/markdown/standalone/styling/extensions/github/tables/IntUiGitHubTableStyling.kt +++ b/platform/jewel/markdown/int-ui-standalone-styling/src/main/kotlin/org/jetbrains/jewel/intui/markdown/standalone/styling/extensions/github/tables/IntUiGitHubTableStyling.kt @@ -6,8 +6,6 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import org.jetbrains.jewel.intui.standalone.theme.dark -import org.jetbrains.jewel.intui.standalone.theme.light import org.jetbrains.jewel.markdown.extensions.github.tables.GfmTableColors import org.jetbrains.jewel.markdown.extensions.github.tables.GfmTableMetrics import org.jetbrains.jewel.markdown.extensions.github.tables.GfmTableStyling diff --git a/platform/jewel/samples/ide-plugin/intellij.platform.jewel.samples.idePlugin.iml b/platform/jewel/samples/ide-plugin/intellij.platform.jewel.samples.idePlugin.iml index 4132f892927f..1c2955d97b22 100644 --- a/platform/jewel/samples/ide-plugin/intellij.platform.jewel.samples.idePlugin.iml +++ b/platform/jewel/samples/ide-plugin/intellij.platform.jewel.samples.idePlugin.iml @@ -15,7 +15,7 @@ - $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.1.10/kotlin-compose-compiler-plugin-2.1.10.jar + $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.0.21/kotlin-compose-compiler-plugin-2.0.21.jar diff --git a/platform/jewel/samples/showcase/intellij.platform.jewel.samples.showcase.iml b/platform/jewel/samples/showcase/intellij.platform.jewel.samples.showcase.iml index bfd8743b8a90..731a3b6682df 100644 --- a/platform/jewel/samples/showcase/intellij.platform.jewel.samples.showcase.iml +++ b/platform/jewel/samples/showcase/intellij.platform.jewel.samples.showcase.iml @@ -15,7 +15,7 @@ - $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.1.10/kotlin-compose-compiler-plugin-2.1.10.jar + $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.0.21/kotlin-compose-compiler-plugin-2.0.21.jar diff --git a/platform/jewel/samples/standalone/intellij.platform.jewel.samples.standalone.iml b/platform/jewel/samples/standalone/intellij.platform.jewel.samples.standalone.iml index f9b0afbb2f7e..6c9880aa6999 100644 --- a/platform/jewel/samples/standalone/intellij.platform.jewel.samples.standalone.iml +++ b/platform/jewel/samples/standalone/intellij.platform.jewel.samples.standalone.iml @@ -14,7 +14,7 @@ - $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.1.10/kotlin-compose-compiler-plugin-2.1.10.jar + $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.0.21/kotlin-compose-compiler-plugin-2.0.21.jar diff --git a/platform/jewel/ui-tests/intellij.platform.jewel.uiTests.iml b/platform/jewel/ui-tests/intellij.platform.jewel.uiTests.iml index 1f40b0a5b80f..20c60a7f752a 100644 --- a/platform/jewel/ui-tests/intellij.platform.jewel.uiTests.iml +++ b/platform/jewel/ui-tests/intellij.platform.jewel.uiTests.iml @@ -15,7 +15,7 @@ - $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.1.10/kotlin-compose-compiler-plugin-2.1.10.jar + $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.0.21/kotlin-compose-compiler-plugin-2.0.21.jar diff --git a/platform/jewel/ui/intellij.platform.jewel.ui.iml b/platform/jewel/ui/intellij.platform.jewel.ui.iml index 2d08f28e3e40..8ce95fc7c286 100644 --- a/platform/jewel/ui/intellij.platform.jewel.ui.iml +++ b/platform/jewel/ui/intellij.platform.jewel.ui.iml @@ -15,7 +15,7 @@ - $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.1.10/kotlin-compose-compiler-plugin-2.1.10.jar + $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.0.21/kotlin-compose-compiler-plugin-2.0.21.jar diff --git a/plugins/markdown/compose/intellij.markdown.compose.preview.iml b/plugins/markdown/compose/intellij.markdown.compose.preview.iml index ea5c2ffc7cfe..59dde7a4b1e6 100644 --- a/plugins/markdown/compose/intellij.markdown.compose.preview.iml +++ b/plugins/markdown/compose/intellij.markdown.compose.preview.iml @@ -14,7 +14,7 @@ - $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.1.0/kotlin-compose-compiler-plugin-2.1.0.jar + $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.0.21/kotlin-compose-compiler-plugin-2.0.21.jar @@ -34,9 +34,7 @@ - - - + \ No newline at end of file diff --git a/plugins/markdown/compose/src/main/kotlin/com/intellij/markdown/compose/preview/ComposePanelProvider.kt b/plugins/markdown/compose/src/main/kotlin/com/intellij/markdown/compose/preview/ComposePanelProvider.kt index 1c7f080203a6..f80947246fa5 100644 --- a/plugins/markdown/compose/src/main/kotlin/com/intellij/markdown/compose/preview/ComposePanelProvider.kt +++ b/plugins/markdown/compose/src/main/kotlin/com/intellij/markdown/compose/preview/ComposePanelProvider.kt @@ -7,8 +7,6 @@ import com.intellij.openapi.util.registry.Registry import com.intellij.openapi.vfs.VirtualFile import org.intellij.plugins.markdown.ui.preview.MarkdownHtmlPanel import org.intellij.plugins.markdown.ui.preview.MarkdownHtmlPanelProvider -import org.intellij.plugins.markdown.ui.preview.MarkdownHtmlPanelProvider.AvailabilityInfo -import org.intellij.plugins.markdown.ui.preview.MarkdownHtmlPanelProvider.ProviderInfo import org.jetbrains.jewel.foundation.ExperimentalJewelApi @OptIn(ExperimentalJewelApi::class) diff --git a/plugins/markdown/compose/src/main/kotlin/com/intellij/markdown/compose/preview/MarkdownComposePanel.kt b/plugins/markdown/compose/src/main/kotlin/com/intellij/markdown/compose/preview/MarkdownComposePanel.kt index b310c64091fc..4f70cd5eef22 100644 --- a/plugins/markdown/compose/src/main/kotlin/com/intellij/markdown/compose/preview/MarkdownComposePanel.kt +++ b/plugins/markdown/compose/src/main/kotlin/com/intellij/markdown/compose/preview/MarkdownComposePanel.kt @@ -1,50 +1,37 @@ -// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.markdown.compose.preview -import androidx.compose.animation.core.AnimationSpec -import androidx.compose.animation.core.LinearEasing -import androidx.compose.animation.core.TweenSpec import androidx.compose.foundation.* import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.intellij.ide.BrowserUtil -import com.intellij.openapi.editor.Editor import com.intellij.openapi.project.Project import com.intellij.openapi.util.UserDataHolder import com.intellij.openapi.util.UserDataHolderBase import com.intellij.openapi.vfs.VirtualFile import com.intellij.platform.compose.JBComposePanel -import kotlinx.coroutines.FlowPreview -import kotlinx.coroutines.flow.MutableSharedFlow -import kotlinx.coroutines.flow.debounce -import kotlinx.coroutines.launch import org.intellij.plugins.markdown.ui.preview.MarkdownHtmlPanel import org.intellij.plugins.markdown.ui.preview.MarkdownHtmlPanelEx import org.intellij.plugins.markdown.ui.preview.MarkdownUpdateHandler import org.intellij.plugins.markdown.ui.preview.MarkdownUpdateHandler.PreviewRequest import org.intellij.plugins.markdown.ui.preview.PreviewStyleScheme import org.jetbrains.annotations.ApiStatus -import org.jetbrains.jewel.bridge.code.highlighting.CodeHighlighterFactory import org.jetbrains.jewel.bridge.toComposeColor import org.jetbrains.jewel.foundation.ExperimentalJewelApi -import org.jetbrains.jewel.foundation.code.highlighting.NoOpCodeHighlighter import org.jetbrains.jewel.intui.markdown.bridge.ProvideMarkdownStyling import org.jetbrains.jewel.markdown.Markdown -import org.jetbrains.jewel.markdown.MarkdownMode -import org.jetbrains.jewel.markdown.rendering.DefaultInlineMarkdownRenderer -import org.jetbrains.jewel.markdown.scrolling.ScrollSyncMarkdownBlockRenderer -import org.jetbrains.jewel.markdown.scrolling.ScrollingSynchronizer import javax.swing.JComponent -import kotlin.time.Duration.Companion.milliseconds @ExperimentalJewelApi -internal class MarkdownComposePanel( +class MarkdownComposePanel( private val project: Project?, private val virtualFile: VirtualFile?, private val updateHandler: MarkdownUpdateHandler = MarkdownUpdateHandler.Debounced() @@ -52,8 +39,6 @@ internal class MarkdownComposePanel( constructor() : this(null, null) - private val scrollToLineFlow = MutableSharedFlow(replay = 1) - private val panelComponent by lazy { JBComposePanel { // TODO temporary styling, we will likely need our own in the future for JCEF-like rendering @@ -66,26 +51,16 @@ internal class MarkdownComposePanel( private fun MarkdownPanel() { val scheme = PreviewStyleScheme.fromCurrentTheme() val fontSize = scheme.fontSize.sp / scheme.scale - val scrollState = rememberScrollState(0) - val scrollingSynchronizer = remember(scrollState) { ScrollingSynchronizer.create(scrollState) } - val markdownStyling = JcefLikeMarkdownStyling(scheme, fontSize) - val blockRenderer = ScrollSyncMarkdownBlockRenderer(markdownStyling, emptyList(), DefaultInlineMarkdownRenderer(emptyList())) ProvideMarkdownStyling( - markdownMode = MarkdownMode.EditorPreview(scrollingSynchronizer), - markdownStyling = markdownStyling, - codeHighlighter = remember(project) { - project?.let { - CodeHighlighterFactory.getInstance(project).createHighlighter() - } ?: NoOpCodeHighlighter - }, - markdownBlockRenderer = blockRenderer + markdownStyling = JcefLikeMarkdownStyling(scheme, fontSize), ) { Box( modifier = Modifier .background(scheme.backgroundColor.toComposeColor()) .padding(horizontal = fontSize.value.dp * 2) ) { - MarkdownPreviewPanel(scrollState, scrollingSynchronizer, blockRenderer) + val scrollState = rememberScrollState(0) + MarkdownPreviewPanel(scrollState) VerticalScrollbar( modifier = Modifier .align(Alignment.CenterEnd), @@ -95,33 +70,11 @@ internal class MarkdownComposePanel( } } - @OptIn(FlowPreview::class) @Suppress("FunctionName") @Composable - private fun MarkdownPreviewPanel(scrollState: ScrollState, - scrollingSynchronizer: ScrollingSynchronizer?, - blockRenderer: ScrollSyncMarkdownBlockRenderer, - animationSpec: AnimationSpec = TweenSpec(easing = LinearEasing) - ) { + private fun MarkdownPreviewPanel(scrollState: ScrollState) { val request by updateHandler.requests.collectAsState(null) (request as? PreviewRequest.Update)?.let { - if (scrollingSynchronizer != null) { - val coroutineScope = rememberCoroutineScope() - LaunchedEffect(Unit) { - coroutineScope.launch { - scrollToLineFlow.debounce(16.milliseconds).collect { scrollToLine -> - scrollingSynchronizer.scrollToLine(scrollToLine, animationSpec) - } - } - } - LaunchedEffect(it.initialScrollOffset) { - coroutineScope.launch { - if (it.initialScrollOffset != 0) { - scrollToLineFlow.emit(it.initialScrollOffset) - } - } - } - } Markdown( it.content, modifier = Modifier @@ -130,16 +83,12 @@ internal class MarkdownComposePanel( enabled = true, selectable = true, onUrlClick = { url -> BrowserUtil.open(url) }, - blockRenderer = blockRenderer, ) } } override fun setHtml(html: String, initialScrollOffset: Int, document: VirtualFile?) { - } - - override fun setHtml(html: String, initialScrollOffset: Int, initialScrollLineNumber: Int, document: VirtualFile?) { - updateHandler.setContent(html, initialScrollLineNumber, document) + updateHandler.setContent(html, initialScrollOffset, document) } override fun reloadWithOffset(offset: Int) { @@ -165,8 +114,7 @@ internal class MarkdownComposePanel( override fun removeScrollListener(listener: MarkdownHtmlPanel.ScrollListener) { } - override suspend fun scrollTo(editor: Editor, line: Int) { - scrollToLineFlow.emit(line) + override fun scrollToMarkdownSrcOffset(offset: Int, smooth: Boolean) { } override fun scrollBy(horizontalUnits: Int, verticalUnits: Int) {