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