//
//  KBStreamTextView.h
//  KeyBoard
//
//  一个可滚动的视图，用于接收“流式”文本输入。
//  当检测到分隔符（默认: "\t" 制表符）时，会将当前累计的文本作为一个段落
//  创建一个新的 UILabel；每个标签支持自动换行和点击事件。
//  适用于流式数据逐步到达、按段落追加展示的场景。
//

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

typedef void (^KBStreamTextTapHandler)(NSInteger index, NSString *text);

@interface KBStreamTextView : UIView

/// 分段分隔符，默认 "\t"（制表符）。
@property (nonatomic, copy) NSString *delimiter;

/// 标签使用的字体，默认系统 16 号。
@property (nonatomic, strong) UIFont *labelFont;

/// 标签文本颜色，iOS 13+ 默认 labelColor，低版本默认黑色。
@property (nonatomic, strong) UIColor *labelTextColor;

/// 水平内边距（左右留白），默认 12。
@property (nonatomic, assign) CGFloat contentHorizontalPadding;

/// 标签间的垂直间距，默认 5。
@property (nonatomic, assign) CGFloat interItemSpacing;

/// 标签点击回调，提供被点击的序号与文本。
@property (nonatomic, copy, nullable) KBStreamTextTapHandler onLabelTap;

/// 是否裁剪各段落前后的空白/换行，默认 YES。
@property (nonatomic, assign) BOOL shouldTrimSegments;

/// 追加流式文本（边输边见）：
/// - 实时将未完成段落展示在“当前标签”上；
/// - 当遇到分隔符时，先将当前标签视为“完成段”，可选裁剪空白，再创建一个新的空标签作为下一段的容器。
- (void)appendStreamText:(NSString *)text;

/// 清空所有标签并重置内部缓冲。
- (void)reset;

/// 结束输入：将当前正在输入的段落视为完成段（按需裁剪），但不会再新建标签。
- (void)finishStreaming;

@end

NS_ASSUME_NONNULL_END
