Skip to content

Commit c004030

Browse files
committed
add memory visualization and responsive sidebar to event loop demo
1 parent 46a95b5 commit c004030

File tree

14 files changed

+1542
-544
lines changed

14 files changed

+1542
-544
lines changed

README.md

Lines changed: 52 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,24 +12,34 @@
1212
## ✨ Можливості
1313

1414
### 🎨 UI/UX
15-
- **Сучасний дизайн** з shadcn/ui компонентами
15+
- **Сучасний дизайн** з shadcn/ui компонентами та responsive сайдбаром
1616
- **Темна та світла тема** з автоматичним перемиканням
1717
- **Повністю адаптивний** дизайн для мобільних, планшетів та десктопів
18+
- **Інтелектуальний сайдбар**:
19+
- Автоматично згортається на вузьких екранах (тільки іконки)
20+
- Розгортається на широких екранах з повним текстом
21+
- Перемикається клавішею `B`
1822
- **Плавні анімації** та переходи між станами
1923
- **Інтуїтивний інтерфейс** з tooltips та підказками
24+
- **Чистий UI** - порожні секції автоматично ховаються
2025

2126
### 📚 Функціонал
22-
- **Візуалізація** Call Stack, Web APIs, Microtask Queue та Task Queue
27+
- **Візуалізація** Call Stack, Web APIs, Microtask Queue, Task Queue, Stack та Heap пам'яті
2328
- **Покрокове виконання** з детальними поясненнями кожної дії
24-
- **Вбудовані приклади**:
25-
- setTimeout демонстрація
26-
- Promise vs setTimeout (різниця в пріоритетах)
27-
- Складний приклад з вкладеними мікро- та макрозавданнями
28-
- Fetch API з демонстрацією мережевих запитів
29+
- **5 вбудованих прикладів**:
30+
- 🗄️ **Пам'ять та Змінні** - демонстрація Stack та Heap (примітиви, об'єкти, функції)
31+
- ⏱️ **setTimeout** - базова робота з асинхронним кодом
32+
-**Promise vs setTimeout** - різниця між microtask та macrotask
33+
- 🔄 **Складний приклад** - вкладені Promise та setTimeout
34+
- 🌐 **Fetch API** - мережеві запити та їх обробка
2935
- **Два режими роботи**: автоматичний та ручний
3036
- **Історія дій** для відстеження всіх кроків виконання
3137
- **Відображення коду** з підсвічуванням активного рядка
32-
- **Keyboard shortcuts**: Space, 1-4, A, C, Esc для швидкої роботи
38+
- **Інтерактивний сайдбар** з:
39+
- Швидким запуском прикладів
40+
- Кнопками очищення (повне та вибіркове)
41+
- Довідкою по роботі Event Loop
42+
- **Keyboard shortcuts**: Space, 0-4, A, B, C, Esc для швидкої роботи
3343

3444
### 🌍 Локалізація
3545
- Повна підтримка **української мови**
@@ -85,31 +95,45 @@ Build результат буде в теці `dist/`
8595
```
8696
src/
8797
├── components/ # React компоненти
88-
│ ├── ui/ # shadcn/ui компоненти
89-
│ ├── layout/ # Header, ThemeToggle
98+
│ ├── ui/ # shadcn/ui компоненти (sidebar, button, card...)
99+
│ ├── layout/ # Header, ExamplesSidebar, KeyboardShortcuts
90100
│ ├── event-loop/ # Візуалізація Event Loop
91-
│ ├── controls/ # Кнопки управління
92-
│ └── panels/ # Інформаційні панелі
101+
│ │ ├── CallStack.tsx
102+
│ │ ├── WebAPIs.tsx
103+
│ │ ├── MicrotaskQueue.tsx
104+
│ │ ├── TaskQueue.tsx
105+
│ │ ├── Memory.tsx # Heap пам'ять
106+
│ │ └── StackVariables.tsx # Stack frames
107+
│ ├── controls/ # StepControls
108+
│ └── panels/ # HistoryPanel
93109
├── hooks/ # Custom React hooks
94110
│ ├── useEventLoop.ts
95-
│ └── useStepExecution.ts
111+
│ ├── useStepExecution.ts
112+
│ ├── useKeyboardShortcuts.ts
113+
│ └── use-mobile.tsx
96114
├── context/ # React Context (ThemeProvider)
97115
├── lib/ # Утиліти та приклади
116+
│ ├── examples.ts # 5 вбудованих прикладів
117+
│ └── utils.ts
98118
├── types/ # TypeScript типи
119+
│ ├── eventLoop.ts
120+
│ └── memory.ts
99121
├── i18n/ # Переклади
100122
├── App.tsx # Головний компонент
101123
└── main.tsx # Entry point
102124
```
103125

104126
## 🔧 Як це працює
105127

106-
Візуалізатор демонструє роботу JavaScript Event Loop:
128+
Візуалізатор демонструє роботу JavaScript Event Loop та управління пам'яттю:
107129

108130
1. **Call Stack**: Відображає функції, які зараз виконуються.
109131
2. **Web APIs**: Показує асинхронні операції, що виконуються у фоні.
110132
3. **Microtask Queue**: Черга високопріоритетних завдань (Promise).
111133
4. **Task Queue**: Черга регулярних завдань (setTimeout, setInterval).
112-
5. **Event Loop**: Постійно перевіряє стан стеку та черг, дотримуючись пріоритетів.
134+
5. **Stack Variables**: Відображає локальні змінні у Stack Frames.
135+
6. **Memory (Heap)**: Показує об'єкти, функції та інші складні типи даних.
136+
7. **Event Loop**: Постійно перевіряє стан стеку та черг, дотримуючись пріоритетів.
113137

114138
### Порядок виконання в Event Loop:
115139

@@ -121,7 +145,12 @@ src/
121145

122146
## 🎯 Як Використовувати
123147

124-
1. **Виберіть приклад** - Натисніть на одну з кнопок прикладів (або клавіші **1-4**)
148+
1. **Виберіть приклад** в сайдбарі зліва (або клавіші **0-4**):
149+
- **0** - Пам'ять та Змінні (Stack & Heap)
150+
- **1** - setTimeout демонстрація
151+
- **2** - Promise vs setTimeout
152+
- **3** - Складний приклад
153+
- **4** - Fetch API
125154
2. **Режим виконання**:
126155
- **Ручний режим**: Натискайте "Наступний крок" або **Space/Enter**
127156
- **Авто режим**: Автоматичне виконання з затримкою 1.5 сек (клавіша **A**)
@@ -130,8 +159,11 @@ src/
130159
- Web APIs - асинхронні операції
131160
- Microtask Queue - високопріоритетні завдання (Promise)
132161
- Task Queue - звичайні завдання (setTimeout)
162+
- Stack Variables - локальні змінні (з'являються в прикладі 0)
163+
- Memory (Heap) - об'єкти та функції (з'являються в прикладі 0)
133164
4. **Відстежуйте** історію дій у правій панелі
134-
5. **Keyboard shortcuts** - Натисніть іконку клавіатури у header для переліку всіх скорочень
165+
5. **Керуйте сайдбаром** - клавіша **B** або кнопка у header
166+
6. **Keyboard shortcuts** - Натисніть іконку клавіатури у header для переліку всіх скорочень
135167

136168
## 👥 Як Зробити Внесок
137169

@@ -157,6 +189,9 @@ src/
157189

158190
- [x] ~~Додати Examples 3 та 4 (складний приклад, Fetch API)~~
159191
- [x] ~~Keyboard shortcuts (Space, числа, A, C)~~
192+
- [x] ~~Responsive сайдбар з shadcn/ui~~
193+
- [x] ~~Візуалізація Stack та Heap пам'яті~~
194+
- [x] ~~Приклад роботи з пам'яттю~~
160195
- [ ] Інтерактивний режим для створення власних прикладів
161196
- [ ] Експорт історії виконання
162197
- [ ] Додаткові мови інтерфейсу (EN, PL)

0 commit comments

Comments
 (0)