joermd commited on
Commit
d68db78
·
verified ·
1 Parent(s): c5db608

Update sss.html

Browse files
Files changed (1) hide show
  1. sss.html +55 -16
sss.html CHANGED
@@ -67,6 +67,42 @@
67
  background-color: #404040;
68
  }
69
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  /* Code Block Styles */
71
  pre[class*="language-"] {
72
  direction: ltr;
@@ -246,7 +282,7 @@
246
  </footer>
247
 
248
  <script>
249
- const API_URL = 'https://nvgsxt9jqx730v-7777.proxy.runpod.net/proxy/8000/chat ';
250
  const messagesContainer = document.getElementById('messagesContainer');
251
  const messageInput = document.getElementById('messageInput');
252
  const sendButton = document.getElementById('sendMessage');
@@ -257,15 +293,15 @@
257
  let currentStyle = 'normal';
258
  let currentController = null;
259
 
260
- // Dark mode toggle
261
- darkModeToggle.addEventListener('click', () => {
262
- document.body.classList.toggle('dark-mode');
263
- document.body.classList.toggle('light-mode');
264
- });
265
-
266
- styleSelect.addEventListener('change', (e) => {
267
- currentStyle = e.target.value;
268
- });
269
 
270
  function createUserMessage(text) {
271
  return `
@@ -331,33 +367,32 @@
331
 
332
  async function typeText(elementId, text) {
333
  const element = document.getElementById(elementId);
 
 
 
 
334
  element.innerHTML = '';
335
 
336
- // Check if text contains code blocks
337
  const codeBlockRegex = /```(\w+)\n([\s\S]+?)```/g;
338
  let lastIndex = 0;
339
  let match;
340
 
341
  while ((match = codeBlockRegex.exec(text)) !== null) {
342
- // Add text before code block
343
  const beforeText = text.slice(lastIndex, match.index);
344
  if (beforeText) {
345
  await addTextWithEditor(element, beforeText);
346
  }
347
 
348
- // Add code block
349
  const [, language, code] = match;
350
  element.innerHTML += formatCodeBlock(code.trim(), language);
351
  lastIndex = match.index + match[0].length;
352
  }
353
 
354
- // Add remaining text
355
  const remainingText = text.slice(lastIndex);
356
  if (remainingText) {
357
  await addTextWithEditor(element, remainingText);
358
  }
359
 
360
- // Initialize Prism.js
361
  Prism.highlightAllUnder(element);
362
  }
363
 
@@ -379,7 +414,6 @@
379
  element.appendChild(textWrapper);
380
  element.appendChild(editorWrapper);
381
 
382
- // Initialize TinyMCE for this textarea
383
  tinymce.init({
384
  selector: '.tinymce-editor:last',
385
  directionality: 'rtl',
@@ -421,6 +455,11 @@
421
 
422
  messagesContainer.insertAdjacentHTML('beforeend', createUserMessage(message));
423
  messagesContainer.insertAdjacentHTML('beforeend', createBotMessage('', messageId));
 
 
 
 
 
424
  scrollToBottom();
425
 
426
  try {
 
67
  background-color: #404040;
68
  }
69
 
70
+ /* Typing Indicator Styles */
71
+ .typing-indicator {
72
+ display: flex;
73
+ align-items: center;
74
+ padding: 0.5rem 1rem;
75
+ }
76
+
77
+ .typing-indicator span {
78
+ height: 8px;
79
+ width: 8px;
80
+ margin: 0 1px;
81
+ background-color: #6366f1;
82
+ display: inline-block;
83
+ border-radius: 50%;
84
+ opacity: 0.4;
85
+ animation: typing 1s infinite ease-in-out;
86
+ }
87
+
88
+ .typing-indicator span:nth-child(1) {
89
+ animation-delay: 200ms;
90
+ }
91
+
92
+ .typing-indicator span:nth-child(2) {
93
+ animation-delay: 300ms;
94
+ }
95
+
96
+ .typing-indicator span:nth-child(3) {
97
+ animation-delay: 400ms;
98
+ }
99
+
100
+ @keyframes typing {
101
+ 0% { transform: translateY(0px); opacity: 0.4; }
102
+ 50% { transform: translateY(-5px); opacity: 0.8; }
103
+ 100% { transform: translateY(0px); opacity: 0.4; }
104
+ }
105
+
106
  /* Code Block Styles */
107
  pre[class*="language-"] {
108
  direction: ltr;
 
282
  </footer>
283
 
284
  <script>
285
+ const API_URL = 'https://nvgsxt9jqx730v-7777.proxy.runpod.net/proxy/8000/chat';
286
  const messagesContainer = document.getElementById('messagesContainer');
287
  const messageInput = document.getElementById('messageInput');
288
  const sendButton = document.getElementById('sendMessage');
 
293
  let currentStyle = 'normal';
294
  let currentController = null;
295
 
296
+ function createTypingIndicator() {
297
+ return `
298
+ <div class="typing-indicator">
299
+ <span></span>
300
+ <span></span>
301
+ <span></span>
302
+ </div>
303
+ `;
304
+ }
305
 
306
  function createUserMessage(text) {
307
  return `
 
367
 
368
  async function typeText(elementId, text) {
369
  const element = document.getElementById(elementId);
370
+ const typingIndicator = element.querySelector('.typing-indicator');
371
+ if (typingIndicator) {
372
+ typingIndicator.remove();
373
+ }
374
  element.innerHTML = '';
375
 
 
376
  const codeBlockRegex = /```(\w+)\n([\s\S]+?)```/g;
377
  let lastIndex = 0;
378
  let match;
379
 
380
  while ((match = codeBlockRegex.exec(text)) !== null) {
 
381
  const beforeText = text.slice(lastIndex, match.index);
382
  if (beforeText) {
383
  await addTextWithEditor(element, beforeText);
384
  }
385
 
 
386
  const [, language, code] = match;
387
  element.innerHTML += formatCodeBlock(code.trim(), language);
388
  lastIndex = match.index + match[0].length;
389
  }
390
 
 
391
  const remainingText = text.slice(lastIndex);
392
  if (remainingText) {
393
  await addTextWithEditor(element, remainingText);
394
  }
395
 
 
396
  Prism.highlightAllUnder(element);
397
  }
398
 
 
414
  element.appendChild(textWrapper);
415
  element.appendChild(editorWrapper);
416
 
 
417
  tinymce.init({
418
  selector: '.tinymce-editor:last',
419
  directionality: 'rtl',
 
455
 
456
  messagesContainer.insertAdjacentHTML('beforeend', createUserMessage(message));
457
  messagesContainer.insertAdjacentHTML('beforeend', createBotMessage('', messageId));
458
+
459
+ // Add typing indicator
460
+ const messageElement = document.getElementById(messageId);
461
+ messageElement.innerHTML = createTypingIndicator();
462
+
463
  scrollToBottom();
464
 
465
  try {