code-slicer commited on
Commit
165e514
ยท
verified ยท
1 Parent(s): a05ea34

Update css.py

Browse files
Files changed (1) hide show
  1. css.py +18 -10
css.py CHANGED
@@ -34,13 +34,12 @@ def render_message(
34
  import re, time
35
  # โ‘ข ํ…Œ๋งˆ/์ฝคํŒฉํŠธ ๊ฐ’ ์ฝ๊ธฐ
36
  palette = _get_colors()
37
- dense = st.session_state.get("dense_mode", False)
38
- show_time = st.session_state.get("show_time", False) and sender == "bot" # โ‘ฃ ๋ด‡๋งŒ ์‹œ๊ฐ„ ํ‘œ์‹œ
39
-
40
  color = palette["user"] if sender == "user" else palette["bot"]
41
  align = "right" if sender == "user" else "left"
42
- pad = "6px 10px" if dense else "10px 14px" # โ‘ข ์ฝคํŒฉํŠธ ๋ชจ๋“œ ํŒจ๋”ฉ
43
- fsz = "12px" if dense else "13px" # โ‘ข ์ฝคํŒฉํŠธ ๋ชจ๋“œ ํฐํŠธ
44
 
45
  message = str(message).rstrip()
46
  # โ‘ฃ ํƒ€์ž„์Šคํƒฌํ”„ HTML
@@ -50,12 +49,23 @@ def render_message(
50
  )
51
 
52
  # ๊ณตํ†ต ํ’์„  ๋ž˜ํผ
 
53
  def _wrap(html_inner: str) -> str:
54
- return (
55
- f'''<div style="text-align:{align}; margin:6px 0;">'''
56
  f'''<span style="background:{color}; padding:{pad}; border-radius:12px;'''
57
  f'''display:inline-block; max-width:80%; font-size:{fsz}; line-height:1.45;'''
58
- f'''word-break:break-word;">{html_inner}{ts_html}</span></div>'''
 
 
 
 
 
 
 
 
 
 
 
59
  )
60
 
61
  if not animated:
@@ -63,7 +73,6 @@ def render_message(
63
  else:
64
  ph = st.empty()
65
  buf = ""
66
- # ํƒœ๊ทธ๋Š” ์ฆ‰์‹œ, ํ…์ŠคํŠธ๋งŒ ์ ์ง„ ์ถœ๋ ฅ(ํƒœ๊ทธ ๊นจ์ง ๋ฐฉ์ง€)
67
  segments = re.split(r'(<[^>]+>)', message)
68
  delay = max(0.005, 1.0 / max(1, speed_cps))
69
  for seg in segments:
@@ -84,7 +93,6 @@ def render_message(
84
  ph.markdown(_wrap(buf), unsafe_allow_html=True)
85
  time.sleep(delay)
86
 
87
- # ์นฉ ๋ฒ„ํŠผ
88
  if chips:
89
  prefix = f"{key or 'chips'}_{abs(hash(message))}"
90
  clicked = render_chip_buttons(chips, key_prefix=prefix)
 
34
  import re, time
35
  # โ‘ข ํ…Œ๋งˆ/์ฝคํŒฉํŠธ ๊ฐ’ ์ฝ๊ธฐ
36
  palette = _get_colors()
37
+ show_time = st.session_state.get("show_time", False) and sender == "bot"
38
+
 
39
  color = palette["user"] if sender == "user" else palette["bot"]
40
  align = "right" if sender == "user" else "left"
41
+ pad = "10px 14px"
42
+ fsz = "13px"
43
 
44
  message = str(message).rstrip()
45
  # โ‘ฃ ํƒ€์ž„์Šคํƒฌํ”„ HTML
 
49
  )
50
 
51
  # ๊ณตํ†ต ํ’์„  ๋ž˜ํผ
52
+ # โœ… ์นดํ†ก์ฒ˜๋Ÿผ: ๋งํ’์„ (๋ฒ„๋ธ”)๊ณผ ์‹œ๊ฐ„์„ ๋‚˜๋ž€ํžˆ ๋ฐฐ์น˜ (์‹œ๊ฐ„์€ ๋ฒ„๋ธ” '๋ฐ–')
53
  def _wrap(html_inner: str) -> str:
54
+ bubble = (
 
55
  f'''<span style="background:{color}; padding:{pad}; border-radius:12px;'''
56
  f'''display:inline-block; max-width:80%; font-size:{fsz}; line-height:1.45;'''
57
+ f'''word-break:break-word;">{html_inner}</span>'''
58
+ )
59
+ ts = (
60
+ f'''<span style="font-size:11px;color:#888;white-space:nowrap;'''
61
+ f'''align-self:flex-end;margin:0 2px 2px;">{ts_text}</span>'''
62
+ ) if ts_text else ""
63
+
64
+ # bot: ์‹œ๊ฐ„ + ๋ฒ„๋ธ” / user: ๋ฒ„๋ธ” + ์‹œ๊ฐ„
65
+ inner = (ts + bubble) if sender != "user" else (bubble + ts)
66
+ return (
67
+ f'''<div style="display:flex;align-items:flex-end;justify-content:{align};'''
68
+ f'''gap:6px;margin:6px 0;">{inner}</div>'''
69
  )
70
 
71
  if not animated:
 
73
  else:
74
  ph = st.empty()
75
  buf = ""
 
76
  segments = re.split(r'(<[^>]+>)', message)
77
  delay = max(0.005, 1.0 / max(1, speed_cps))
78
  for seg in segments:
 
93
  ph.markdown(_wrap(buf), unsafe_allow_html=True)
94
  time.sleep(delay)
95
 
 
96
  if chips:
97
  prefix = f"{key or 'chips'}_{abs(hash(message))}"
98
  clicked = render_chip_buttons(chips, key_prefix=prefix)