dvc890 commited on
Commit
801f0a7
·
verified ·
1 Parent(s): b0770b8

Upload 67 files

Browse files
Files changed (2) hide show
  1. components/Emoji.tsx +11 -2
  2. utils/mediaHelpers.ts +18 -8
components/Emoji.tsx CHANGED
@@ -46,8 +46,17 @@ export const Emoji: React.FC<EmojiProps> = memo(({ symbol, className = '', size
46
 
47
  // --- Windows 系统执行 Twemoji 图片替换 ---
48
 
49
- // 1. 简单正则判断是否包含 Emoji 字符 (避免对纯文本进行昂贵的 Hex 转换)
50
- const isEmoji = /\p{Emoji}/u.test(symbol);
 
 
 
 
 
 
 
 
 
51
  if (!isEmoji) {
52
  return <span className={className} style={{ fontSize: size }}>{symbol}</span>;
53
  }
 
46
 
47
  // --- Windows 系统执行 Twemoji 图片替换 ---
48
 
49
+ // 1. 安全判断是否包含 Emoji
50
+ let isEmoji = false;
51
+ try {
52
+ // Use RegExp constructor to avoid syntax error on older browsers during file parsing
53
+ const emojiRegex = new RegExp('\\p{Emoji}', 'u');
54
+ isEmoji = emojiRegex.test(symbol);
55
+ } catch (e) {
56
+ // Fallback simple check
57
+ isEmoji = /[\u{10000}-\u{10FFFF}]/u.test(symbol);
58
+ }
59
+
60
  if (!isEmoji) {
61
  return <span className={className} style={{ fontSize: size }}>{symbol}</span>;
62
  }
utils/mediaHelpers.ts CHANGED
@@ -84,16 +84,26 @@ export const decodePCM = (data: Uint8Array, ctx: AudioContext) => {
84
  };
85
 
86
  export const cleanTextForTTS = (text: string) => {
87
- return text
88
  // 1. Remove Markdown headers, bold, italic markers, and blockquotes
89
  .replace(/([#*`~>_])/g, '')
90
  // 2. Remove links [text](url) -> text
91
  .replace(/\[([^\]]+)\]\([^)]+\)/g, '$1')
92
- // 3. Remove Emojis (Standard and Extended)
93
- .replace(/\p{Extended_Pictographic}/gu, '')
94
- // 4. Remove common Kaomoji patterns
95
- .replace(/\([^\u4e00-\u9fa5A-Za-z,\.,。]{1,8}\)/g, '')
96
- // 5. Consolidate whitespace
97
- .replace(/\s+/g, ' ')
98
- .trim();
 
 
 
 
 
 
 
 
 
 
99
  };
 
84
  };
85
 
86
  export const cleanTextForTTS = (text: string) => {
87
+ let clean = text
88
  // 1. Remove Markdown headers, bold, italic markers, and blockquotes
89
  .replace(/([#*`~>_])/g, '')
90
  // 2. Remove links [text](url) -> text
91
  .replace(/\[([^\]]+)\]\([^)]+\)/g, '$1')
92
+ // 4. Remove common Kaomoji patterns (Moved up)
93
+ .replace(/\([^\u4e00-\u9fa5A-Za-z,\.,。]{1,8}\)/g, '');
94
+
95
+ // 3. Remove Emojis (Safe way for older Safari)
96
+ try {
97
+ // Use constructor to avoid parse-time SyntaxError if unsupported
98
+ // 'v' flag is better but 'u' is more supported.
99
+ const emojiRegex = new RegExp('\\p{Extended_Pictographic}', 'gu');
100
+ clean = clean.replace(emojiRegex, '');
101
+ } catch (e) {
102
+ // Fallback for older browsers (approximate ranges)
103
+ // This is a basic range for common emojis
104
+ clean = clean.replace(/[\u{1F600}-\u{1F64F}\u{1F300}-\u{1F5FF}\u{1F680}-\u{1F6FF}\u{1F1E0}-\u{1F1FF}]/gu, '');
105
+ }
106
+
107
+ // 5. Consolidate whitespace
108
+ return clean.replace(/\s+/g, ' ').trim();
109
  };