//
//  MiddleTruncatedText.swift
//  suixinkan
//
//  文件名中间省略展示，对齐 Android MiddleEllipsisTextView。
//

import SwiftUI
import UIKit

/// 中间省略文本，用于长文件名展示。
struct MiddleTruncatedText: UIViewRepresentable {
    let text: String
    var font: UIFont = .systemFont(ofSize: 11, weight: .regular)
    var textColor: UIColor = UIColor(red: 0.2, green: 0.2, blue: 0.2, alpha: 1)

    /// 创建中间省略 UILabel。
    func makeUIView(context: Context) -> UILabel {
        let label = UILabel()
        label.lineBreakMode = .byTruncatingMiddle
        label.numberOfLines = 1
        label.setContentHuggingPriority(.required, for: .vertical)
        label.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
        label.setContentCompressionResistancePriority(.required, for: .vertical)
        return label
    }

    /// 更新文本样式。
    func updateUIView(_ uiView: UILabel, context: Context) {
        uiView.text = text
        uiView.font = font
        uiView.textColor = textColor
    }
}
