Skip to content

Commit e292412

Browse files
author
nickwhite
committed
fix
1 parent 27c218c commit e292412

4 files changed

Lines changed: 711 additions & 72 deletions

File tree

README.md

Lines changed: 112 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -4,76 +4,141 @@
44

55
## ✨ Особенности
66

7-
- **Единый режим**: TypeScript + JavaScript с подсветкой синтаксиса
8-
- **Автозапуск**: Автоматическое выполнение кода при изменении
9-
- **Подсветка синтаксиса**: Улучшенная подсветка для TypeScript и JavaScript
10-
- **Космический дизайн**: Современный UI с анимациями
7+
- **🌐 Универсальный язык**: Поддержка TypeScript и JavaScript в едином режиме
8+
- **🎨 Подсветка синтаксиса**: Красивая подсветка кода с темой Monokai
9+
- **⚡ Автоматический запуск**: Код выполняется автоматически при изменении
10+
- **🔍 Отображение ошибок**: Подробная информация об ошибках TypeScript с указанием строки
11+
- **📱 Адаптивный дизайн**: Полная поддержка мобильных устройств и планшетов
12+
- **🌙 Космическая тема**: Современный темный интерфейс
1113

12-
## 🎯 Функциональность
14+
## 📱 Адаптивность
1315

14-
### Подсветка синтаксиса
15-
- TypeScript типы и интерфейсы
16-
- JavaScript синтаксис
17-
- Ключевые слова и операторы
18-
- Строки, числа, комментарии
16+
Проект полностью адаптирован для различных устройств:
17+
18+
- **🖥️ Десктоп**: Полнофункциональный интерфейс с большими областями редактирования
19+
- **📱 Мобильные устройства**: Оптимизированный интерфейс с вертикальным расположением элементов
20+
- **📟 Планшеты**: Адаптированный дизайн для средних экранов
21+
- **🔄 Поворот экрана**: Автоматическая адаптация при смене ориентации
22+
23+
### Поддерживаемые разрешения:
24+
- **Мобильные**: 320px - 768px
25+
- **Планшеты**: 769px - 1024px
26+
- **Десктоп**: 1025px+
27+
28+
## 🚀 Функциональность
29+
30+
### Редактор кода
31+
- Подсветка синтаксиса TypeScript/JavaScript
32+
- Нумерация строк
33+
- Автоматическое завершение строк
34+
- Темная тема Monokai
1935

2036
### Выполнение кода
21-
- Компиляция TypeScript в JavaScript
22-
- Безопасная среда выполнения
23-
- Вывод результатов в реальном времени
24-
- Обработка ошибок
37+
- Автоматическая компиляция TypeScript
38+
- Безопасное выполнение в песочнице
39+
- Перехват console.log и console.error
40+
- Отображение результатов в реальном времени
41+
42+
### Отображение ошибок
43+
- Подробная диагностика TypeScript
44+
- Указание строки и символа ошибки
45+
- Цветовое кодирование типов ошибок
46+
- Иконки для быстрой идентификации
47+
48+
## 🛠️ Быстрый старт
2549

26-
## 🚀 Быстрый старт
50+
1. **Клонируйте репозиторий**
51+
```bash
52+
git clone [url-репозитория]
53+
cd JavaScript-Universe-Code
54+
```
2755

28-
1. Откройте `index.html` в браузере
29-
2. Начните писать код в редакторе
30-
3. Используйте `Ctrl+Enter` для запуска
31-
4. Наслаждайтесь подсветкой синтаксиса
56+
2. **Откройте index.html**
57+
- В браузере или через локальный сервер
3258

33-
## 💡 Примеры использования
59+
3. **Начните писать код**
60+
- Используйте TypeScript или JavaScript
61+
- Код выполняется автоматически
3462

35-
### TypeScript интерфейсы
63+
4. **Наслаждайтесь подсветкой синтаксиса**
64+
- Красивая подсветка ключевых слов
65+
- Цветовое кодирование типов
66+
- Подсветка строк и комментариев
67+
68+
## 📝 Примеры использования
69+
70+
### Базовый TypeScript
3671
```typescript
3772
interface User {
38-
id: number;
3973
name: string;
40-
email: string;
41-
age?: number;
74+
age: number;
4275
}
76+
77+
const user: User = {
78+
name: "Иван",
79+
age: 25
80+
};
81+
82+
console.log(user);
4383
```
4484

45-
### Классы и методы
85+
### Работа с массивами
4686
```typescript
47-
class UserService {
48-
private users: User[] = [];
87+
const numbers: number[] = [1, 2, 3, 4, 5];
88+
const doubled = numbers.map(n => n * 2);
89+
console.log(doubled);
90+
```
4991

50-
addUser(user: User): void {
51-
this.users.push(user);
52-
console.log('✅ Пользователь добавлен:', user);
92+
### Асинхронные функции
93+
```typescript
94+
async function fetchData() {
95+
try {
96+
const response = await fetch('https://api.example.com/data');
97+
const data = await response.json();
98+
console.log(data);
99+
} catch (error) {
100+
console.error('Ошибка:', error);
53101
}
54102
}
55103
```
56104

57-
### Работа с массивами
58-
```typescript
59-
const arr: number[] = [1, 2, 3, 4, 5];
60-
arr.map(x => x * 2).filter(x => x > 5);
61-
```
105+
## 🎯 Технологии
106+
107+
- **HTML5**: Семантическая разметка
108+
- **CSS3**: Адаптивные стили и анимации
109+
- **JavaScript ES6+**: Современный JavaScript
110+
- **TypeScript**: Типизированный JavaScript
111+
- **CodeMirror**: Редактор кода
112+
- **Monokai**: Темная тема
113+
114+
## 📱 Мобильная оптимизация
62115

63-
## 🎨 Дизайн
116+
- **Сенсорная поддержка**: Оптимизировано для касаний
117+
- **Предотвращение зума**: Настроено для предотвращения случайного масштабирования
118+
- **Адаптивные кнопки**: Увеличенные области касания на мобильных
119+
- **Оптимизированные шрифты**: Читаемые размеры на всех устройствах
120+
- **Горизонтальная прокрутка**: Поддержка ландшафтной ориентации
64121

65-
- Космическая тема с анимациями
66-
- Адаптивный дизайн
67-
- Темная цветовая схема
68-
- Плавные переходы и эффекты
122+
## 🔧 Настройка
123+
124+
Проект не требует установки зависимостей - все библиотеки загружаются через CDN.
125+
126+
### Локальная разработка
127+
```bash
128+
# Запуск через Python
129+
python -m http.server 8000
130+
131+
# Запуск через Node.js
132+
npx serve .
133+
134+
# Запуск через PHP
135+
php -S localhost:8000
136+
```
69137

70-
## 🔧 Технологии
138+
## 📄 Лицензия
71139

72-
- **CodeMirror 5**: Редактор кода
73-
- **TypeScript**: Компилятор
74-
- **CSS3**: Анимации и стили
75-
- **Vanilla JavaScript**: Логика приложения
140+
MIT License - свободное использование и модификация.
76141

77-
## 📝 Лицензия
142+
---
78143

79-
MIT License
144+
**Создано с ❤️ для изучения JavaScript и TypeScript**

index.html

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,12 @@
22
<html lang="ru">
33
<head>
44
<meta charset="UTF-8">
5-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6-
<title>🚀 JavaScript Universe</title>
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
6+
<title>JavaScript Universe - Редактор кода</title>
77
<link rel="stylesheet" href="styles.css">
88
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.2/codemirror.min.css">
99
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.2/theme/monokai.min.css">
10-
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.2/addon/hint/show-hint.css">
11-
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.2/addon/lint/lint.css">
10+
<link href="https://fonts.googleapis.com/css2?family=Fira+Code:wght@300;400;500;600&display=swap" rel="stylesheet">
1211
</head>
1312
<body>
1413
<div class="container">
@@ -74,16 +73,10 @@ <h3>🌟 Результат выполнения</h3>
7473
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.2/codemirror.min.js"></script>
7574
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.2/mode/javascript/javascript.min.js"></script>
7675
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.2/mode/typescript/typescript.min.js"></script>
77-
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.2/addon/hint/show-hint.js"></script>
78-
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.2/addon/hint/javascript-hint.js"></script>
79-
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.2/addon/hint/anyword-hint.js"></script>
8076
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.2/addon/edit/closebrackets.js"></script>
8177
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.2/addon/edit/matchbrackets.js"></script>
82-
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.2/addon/lint/lint.js"></script>
83-
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.2/addon/lint/javascript-lint.js"></script>
8478
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.2/addon/selection/active-line.js"></script>
8579
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.2/addon/edit/trailingspace.js"></script>
86-
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.2/addon/mode/simple.js"></script>
8780
<script src="https://unpkg.com/typescript@latest/lib/typescript.js"></script>
8881
<script src="script.js"></script>
8982
</body>

script.js

Lines changed: 68 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,78 @@ class CodePlayground {
1010
this.autoRunTimeout = null;
1111
this.autoRunDelay = 1000; // 1 секунда задержки
1212

13-
this.initEditor();
13+
this.initializeEditor();
1414
this.bindEvents();
1515
this.loadDefaultCode();
16+
this.setupMobileOptimizations();
1617
}
1718

18-
initEditor() {
19+
setupMobileOptimizations() {
20+
// Предотвращение двойного касания для зума
21+
let lastTouchEnd = 0;
22+
document.addEventListener('touchend', (event) => {
23+
const now = (new Date()).getTime();
24+
if (now - lastTouchEnd <= 300) {
25+
event.preventDefault();
26+
}
27+
lastTouchEnd = now;
28+
}, false);
29+
30+
// Оптимизация для мобильных устройств
31+
if (window.innerWidth <= 768) {
32+
this.setupMobileEditor();
33+
}
34+
35+
// Обработка изменения ориентации
36+
window.addEventListener('orientationchange', () => {
37+
setTimeout(() => {
38+
this.editor.refresh();
39+
}, 100);
40+
});
41+
42+
// Обработка изменения размера окна
43+
window.addEventListener('resize', () => {
44+
setTimeout(() => {
45+
this.editor.refresh();
46+
}, 100);
47+
});
48+
}
49+
50+
setupMobileEditor() {
51+
// Уменьшаем задержку авто-запуска на мобильных
52+
this.autoRunDelay = 1000;
53+
54+
// Оптимизируем CodeMirror для мобильных
55+
this.editor.setOption('lineWrapping', true);
56+
this.editor.setOption('scrollbarStyle', 'native');
57+
58+
// Улучшаем обработку касаний
59+
this.editor.on('touchstart', () => {
60+
// Предотвращаем конфликты с системными жестами
61+
});
62+
63+
// Дополнительные оптимизации для очень маленьких экранов
64+
if (window.innerWidth <= 480) {
65+
this.setupTinyScreenOptimizations();
66+
}
67+
}
68+
69+
setupTinyScreenOptimizations() {
70+
// Уменьшаем размеры шрифтов
71+
this.editor.setOption('lineHeight', 1.1);
72+
73+
// Уменьшаем отступы
74+
const editorElement = this.editor.getWrapperElement();
75+
editorElement.style.fontSize = '10px';
76+
77+
// Оптимизируем для касаний
78+
this.editor.setOption('cursorBlinkRate', 0); // Отключаем мигание курсора для экономии ресурсов
79+
80+
// Уменьшаем задержку авто-запуска для быстрого отклика
81+
this.autoRunDelay = 800;
82+
}
83+
84+
initializeEditor() {
1985
const textarea = document.getElementById('codeEditor');
2086

2187
this.editor = CodeMirror.fromTextArea(textarea, {

0 commit comments

Comments
 (0)