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 } }