Spaces:
Sleeping
Sleeping
Update css.py
Browse files
css.py
CHANGED
|
@@ -34,13 +34,12 @@ def render_message(
|
|
| 34 |
import re, time
|
| 35 |
# โข ํ
๋ง/์ฝคํฉํธ ๊ฐ ์ฝ๊ธฐ
|
| 36 |
palette = _get_colors()
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
color = palette["user"] if sender == "user" else palette["bot"]
|
| 41 |
align = "right" if sender == "user" else "left"
|
| 42 |
-
pad = "
|
| 43 |
-
fsz = "
|
| 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 |
-
|
| 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}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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)
|