import React from 'react'; import { Pencil, Trash2 } from 'lucide-react'; import { VisibilityRule } from '../types'; import { formatVisibilityRuleDescription, isVisibilityRuleEnabled } from '../utils'; interface VisibilityRuleSummaryProps { rule: VisibilityRule; onEdit: () => void; onDelete: () => void; onToggleEnabled?: () => void; } /** 将 {变量} 或「内容值」高亮展示 */ function renderRuleDescription(rule: VisibilityRule) { const text = formatVisibilityRuleDescription(rule); if (rule.target === 'content') { const parts = text.split('内容值'); if (parts.length === 1) return text; return parts.flatMap((part, i) => i === 0 ? [{part}, 内容值] : [{part}] ); } const parts = text.split(/(\{[^}]+\})/g); return parts.map((part, i) => part.startsWith('{') && part.endsWith('}') ? ( {part} ) : ( {part} ) ); } export const VisibilityRuleSummary: React.FC = ({ rule, onEdit, onDelete, onToggleEnabled, }) => { const enabled = isVisibilityRuleEnabled(rule); return ( {onToggleEnabled && ( )} {renderRuleDescription(rule)} ); };
{renderRuleDescription(rule)}