50 lines
1.0 KiB
QML
50 lines
1.0 KiB
QML
import QtQuick
|
|
import ZShell.Config
|
|
import ZShell.Llm
|
|
import qs.Components
|
|
import qs.Services
|
|
|
|
Item {
|
|
id: root
|
|
|
|
required property string latex
|
|
property color mathColor: Colors.palette.m3onSurface
|
|
property real fontSize: Tokens.font.size.large
|
|
|
|
implicitHeight: Math.max(equationImage.height, fallbackText.contentHeight) + Tokens.padding.small * 2
|
|
|
|
LlmMathText {
|
|
id: math
|
|
|
|
latex: root.latex
|
|
color: root.mathColor
|
|
fontPointSize: root.fontSize
|
|
devicePixelRatio: Screen.devicePixelRatio
|
|
}
|
|
|
|
Image {
|
|
id: equationImage
|
|
|
|
anchors.centerIn: parent
|
|
source: math.imageUrl
|
|
asynchronous: true
|
|
visible: math.ok
|
|
fillMode: Image.PreserveAspectFit
|
|
smooth: true
|
|
width: Math.min(math.width, root.width)
|
|
height: math.width > 0 ? width * (math.height / math.width) : 0
|
|
}
|
|
|
|
CustomText {
|
|
id: fallbackText
|
|
|
|
anchors.centerIn: parent
|
|
color: root.mathColor
|
|
font.family: Config.appearance.font.family.mono
|
|
font.pointSize: Tokens.font.size.small
|
|
text: root.latex
|
|
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
|
|
visible: !math.ok
|
|
}
|
|
}
|