hrenpack-theme-style 3.2.8 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/EXAMPLES.md +281 -0
- package/README.md +76 -0
- package/SNOW_DOCUMENTATION.md +42 -2
- package/form.js.map +1 -1
- package/input-reversed.d.ts.map +1 -1
- package/input-reversed.js.map +1 -1
- package/package.json +2 -2
- package/script.d.ts.map +1 -1
- package/script.js.map +1 -1
- package/snow.d.ts +2 -0
- package/snow.d.ts.map +1 -1
- package/snow.js +9 -1
- package/snow.js.map +1 -1
- package/types.d.ts +1 -0
package/EXAMPLES.md
ADDED
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
# Примеры использования Snow Manager
|
|
2
|
+
|
|
3
|
+
## Базовые сценарии
|
|
4
|
+
|
|
5
|
+
### 1. Простое подключение
|
|
6
|
+
```html
|
|
7
|
+
<!-- Минимальная конфигурация -->
|
|
8
|
+
<script src="snow.js"></script>
|
|
9
|
+
<!-- Будет использовано 50 голубых снежинок -->
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
### 2. Праздничное оформление
|
|
13
|
+
```html
|
|
14
|
+
<script src="snow.js"
|
|
15
|
+
data-count="200"
|
|
16
|
+
data-color="#ffffff"
|
|
17
|
+
data-min-size="5"
|
|
18
|
+
data-max-size="30"
|
|
19
|
+
data-rotation
|
|
20
|
+
data-speed="1.5"
|
|
21
|
+
data-types="8"
|
|
22
|
+
data-z-index="99999">
|
|
23
|
+
</script>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### 3. Интеграция с интерфейсом администратора
|
|
27
|
+
```html
|
|
28
|
+
<div class="snow-control-panel">
|
|
29
|
+
<h3>Управление снегопадом</h3>
|
|
30
|
+
|
|
31
|
+
<div class="control-group">
|
|
32
|
+
<label>Количество снежинок: <span id="count-value">50</span></label>
|
|
33
|
+
<input type="range" min="10" max="300" value="50"
|
|
34
|
+
oninput="updateSnowCount(this.value)">
|
|
35
|
+
</div>
|
|
36
|
+
|
|
37
|
+
<div class="control-group">
|
|
38
|
+
<label>Скорость:</label>
|
|
39
|
+
<input type="range" min="0.1" max="5" step="0.1" value="1"
|
|
40
|
+
oninput="snowManager.speed = parseFloat(this.value)">
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
<div class="control-group">
|
|
44
|
+
<label>Цвет:</label>
|
|
45
|
+
<input type="color" value="#5ecdef"
|
|
46
|
+
onchange="snowManager.color = this.value">
|
|
47
|
+
</div>
|
|
48
|
+
|
|
49
|
+
<div class="control-group">
|
|
50
|
+
<button onclick="snowManager.toggle()">⏯️ Вкл/Выкл</button>
|
|
51
|
+
<button onclick="snowManager.destroy()">🗑️ Удалить</button>
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
|
|
55
|
+
<script>
|
|
56
|
+
function updateSnowCount(value) {
|
|
57
|
+
document.getElementById('count-value').textContent = value;
|
|
58
|
+
snowManager.count = parseInt(value);
|
|
59
|
+
}
|
|
60
|
+
</script>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Продвинутые сценарии
|
|
64
|
+
### 1. Адаптивный снегопад
|
|
65
|
+
```js
|
|
66
|
+
// Автоматическая адаптация к размеру экрана
|
|
67
|
+
function createAdaptiveSnow() {
|
|
68
|
+
const isMobile = window.innerWidth < 768;
|
|
69
|
+
const isTablet = window.innerWidth < 1024;
|
|
70
|
+
|
|
71
|
+
const config = {
|
|
72
|
+
count: isMobile ? 30 : isTablet ? 60 : 100,
|
|
73
|
+
minSize: isMobile ? 5 : 8,
|
|
74
|
+
maxSize: isMobile ? 15 : 25,
|
|
75
|
+
speed: isMobile ? 0.8 : 1.2,
|
|
76
|
+
optimize: true
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
return new SnowManager(config);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Реакция на изменение размера окна
|
|
83
|
+
let resizeTimeout;
|
|
84
|
+
window.addEventListener('resize', () => {
|
|
85
|
+
clearTimeout(resizeTimeout);
|
|
86
|
+
resizeTimeout = setTimeout(() => {
|
|
87
|
+
snowManager.destroy();
|
|
88
|
+
snowManager = createAdaptiveSnow();
|
|
89
|
+
}, 500);
|
|
90
|
+
});
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### 2. Снегопад с интерактивностью
|
|
94
|
+
```js
|
|
95
|
+
// Снежинки реагируют на курсор
|
|
96
|
+
document.addEventListener('mousemove', (e) => {
|
|
97
|
+
if (!snowManager.snow) return;
|
|
98
|
+
|
|
99
|
+
const snowflakes = document.querySelectorAll('.snowflake');
|
|
100
|
+
const mouseX = e.clientX;
|
|
101
|
+
const mouseY = e.clientY;
|
|
102
|
+
|
|
103
|
+
snowflakes.forEach(flake => {
|
|
104
|
+
const rect = flake.getBoundingClientRect();
|
|
105
|
+
const distance = Math.sqrt(
|
|
106
|
+
Math.pow(rect.x - mouseX, 2) +
|
|
107
|
+
Math.pow(rect.y - mouseY, 2)
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
if (distance < 100) {
|
|
111
|
+
// Отталкивание снежинок от курсора
|
|
112
|
+
const force = (100 - distance) / 100;
|
|
113
|
+
flake.style.transform += ` translate(${force * 10}px, ${force * 10}px)`;
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### 3. Сезонные темы
|
|
120
|
+
```js
|
|
121
|
+
// Автоматическое определение сезона
|
|
122
|
+
function getSeasonalSnowConfig() {
|
|
123
|
+
const month = new Date().getMonth();
|
|
124
|
+
|
|
125
|
+
switch(month) {
|
|
126
|
+
case 11: // Декабрь
|
|
127
|
+
case 0: // Январь
|
|
128
|
+
case 1: // Февраль
|
|
129
|
+
return {
|
|
130
|
+
count: 150,
|
|
131
|
+
color: '#ffffff',
|
|
132
|
+
speed: 1.5,
|
|
133
|
+
rotation: true,
|
|
134
|
+
types: 8
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
case 2: // Март
|
|
138
|
+
case 3: // Апрель
|
|
139
|
+
return {
|
|
140
|
+
count: 80,
|
|
141
|
+
color: '#e6f7ff',
|
|
142
|
+
speed: 0.8,
|
|
143
|
+
rotation: false,
|
|
144
|
+
types: 4
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
default:
|
|
148
|
+
return {
|
|
149
|
+
count: 50,
|
|
150
|
+
color: '#5ecdef',
|
|
151
|
+
speed: 1,
|
|
152
|
+
rotation: false,
|
|
153
|
+
types: 6
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// Инициализация с сезонной темой
|
|
159
|
+
snowManager = new SnowManager(getSeasonalSnowConfig());
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### 4. Интеграция с игровым интерфейсом
|
|
163
|
+
```js
|
|
164
|
+
// Снегопад как часть игровой механики
|
|
165
|
+
class SnowGame {
|
|
166
|
+
constructor() {
|
|
167
|
+
this.snow = new SnowManager({
|
|
168
|
+
count: 100,
|
|
169
|
+
color: '#ffffff',
|
|
170
|
+
speed: 1,
|
|
171
|
+
stop: true // Не запускаем автоматически
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
this.score = 0;
|
|
175
|
+
this.setupGame();
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
setupGame() {
|
|
179
|
+
// Собираем снежинки кликом
|
|
180
|
+
document.addEventListener('click', (e) => {
|
|
181
|
+
const snowflakes = document.querySelectorAll('.snowflake');
|
|
182
|
+
snowflakes.forEach(flake => {
|
|
183
|
+
const rect = flake.getBoundingClientRect();
|
|
184
|
+
if (e.clientX >= rect.left && e.clientX <= rect.right &&
|
|
185
|
+
e.clientY >= rect.top && e.clientY <= rect.bottom) {
|
|
186
|
+
this.collectSnowflake(flake);
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
collectSnowflake(flake) {
|
|
193
|
+
flake.style.opacity = '0';
|
|
194
|
+
flake.style.transform = 'scale(0)';
|
|
195
|
+
this.score += 10;
|
|
196
|
+
|
|
197
|
+
setTimeout(() => {
|
|
198
|
+
flake.remove();
|
|
199
|
+
// Добавляем новую снежинку
|
|
200
|
+
this.addSnowflake();
|
|
201
|
+
}, 300);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
addSnowflake() {
|
|
205
|
+
// Логика добавления новой снежинки
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
startGame() {
|
|
209
|
+
this.snow.play();
|
|
210
|
+
setTimeout(() => this.snow.pause(), 30000); // Игра 30 секунд
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### 5. Снегопад для фонового видео
|
|
216
|
+
```html
|
|
217
|
+
<div class="video-container">
|
|
218
|
+
<video autoplay muted loop>
|
|
219
|
+
<source src="winter-scene.mp4" type="video/mp4">
|
|
220
|
+
</video>
|
|
221
|
+
<div class="snow-overlay"></div>
|
|
222
|
+
</div>
|
|
223
|
+
|
|
224
|
+
<script>
|
|
225
|
+
// Снегопад поверх видео
|
|
226
|
+
const snowManager = new SnowManager({
|
|
227
|
+
container: document.querySelector('.snow-overlay'),
|
|
228
|
+
count: 200,
|
|
229
|
+
color: '#ffffff',
|
|
230
|
+
minOpacity: 0.3,
|
|
231
|
+
maxOpacity: 0.8,
|
|
232
|
+
zIndex: 100,
|
|
233
|
+
autoResize: false,
|
|
234
|
+
width: document.querySelector('.video-container').offsetWidth,
|
|
235
|
+
height: document.querySelector('.video-container').offsetHeight
|
|
236
|
+
});
|
|
237
|
+
|
|
238
|
+
// Синхронизация с размером видео
|
|
239
|
+
document.querySelector('video').addEventListener('loadedmetadata', function() {
|
|
240
|
+
snowManager.width = this.videoWidth;
|
|
241
|
+
snowManager.height = this.videoHeight;
|
|
242
|
+
});
|
|
243
|
+
</script>
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
## Отладка и оптимизация
|
|
247
|
+
### Профилирование в Chrome DevTools
|
|
248
|
+
```js
|
|
249
|
+
// Включить мониторинг производительности
|
|
250
|
+
const snowPerf = {
|
|
251
|
+
startTime: performance.now(),
|
|
252
|
+
frameCount: 0,
|
|
253
|
+
|
|
254
|
+
startMonitoring() {
|
|
255
|
+
const snowCanvas = document.querySelector('canvas');
|
|
256
|
+
if (snowCanvas) {
|
|
257
|
+
const ctx = snowCanvas.getContext('2d');
|
|
258
|
+
const originalFill = ctx.fillRect;
|
|
259
|
+
|
|
260
|
+
// Перехватываем отрисовку
|
|
261
|
+
ctx.fillRect = function(...args) {
|
|
262
|
+
snowPerf.frameCount++;
|
|
263
|
+
return originalFill.apply(this, args);
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
},
|
|
267
|
+
|
|
268
|
+
getStats() {
|
|
269
|
+
const elapsed = performance.now() - this.startTime;
|
|
270
|
+
return {
|
|
271
|
+
fps: Math.round((this.frameCount / elapsed) * 1000),
|
|
272
|
+
totalFrames: this.frameCount,
|
|
273
|
+
elapsedTime: Math.round(elapsed)
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
};
|
|
277
|
+
|
|
278
|
+
// Запуск мониторинга
|
|
279
|
+
snowPerf.startMonitoring();
|
|
280
|
+
setInterval(() => console.log(snowPerf.getStats()), 5000);
|
|
281
|
+
```
|
package/README.md
CHANGED
|
@@ -195,6 +195,67 @@ snowManager.destroy();
|
|
|
195
195
|
</script>
|
|
196
196
|
```
|
|
197
197
|
|
|
198
|
+
### Мониторинг состояния снегопада
|
|
199
|
+
```javascript
|
|
200
|
+
// Проверка активности снегопада
|
|
201
|
+
console.log(`Снегопад активен: ${snowManager.isActive}`);
|
|
202
|
+
console.log(`Текущие параметры:`, snowManager.snow?.params);
|
|
203
|
+
|
|
204
|
+
// Подписка на события
|
|
205
|
+
document.addEventListener('visibilitychange', () => {
|
|
206
|
+
console.log(`Видимость страницы: ${document.visibilityState}`);
|
|
207
|
+
console.log(`Состояние снегопада: ${snowManager.isActive ? 'активен' : 'на паузе'}`);
|
|
208
|
+
});
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### Интеграция с системными событиями
|
|
212
|
+
Snow Manager автоматически обрабатывает:
|
|
213
|
+
- Переключение вкладок браузера
|
|
214
|
+
- Сворачивание/разворачивание окна
|
|
215
|
+
- Изменение размера окна (при `autoResize: true`)
|
|
216
|
+
- Системные уведомления о экономии энергии
|
|
217
|
+
|
|
218
|
+
### Расширенная конфигурация для разных сезонов/праздников:
|
|
219
|
+
```js
|
|
220
|
+
// Новогодняя тема
|
|
221
|
+
const newYearConfig = {
|
|
222
|
+
count: 200,
|
|
223
|
+
color: '#ffffff',
|
|
224
|
+
minSize: 8,
|
|
225
|
+
maxSize: 30,
|
|
226
|
+
speed: 1.5,
|
|
227
|
+
rotation: true,
|
|
228
|
+
wind: true,
|
|
229
|
+
minOpacity: 0.4,
|
|
230
|
+
maxOpacity: 0.9
|
|
231
|
+
};
|
|
232
|
+
|
|
233
|
+
// Легкий снегопад
|
|
234
|
+
const lightSnowConfig = {
|
|
235
|
+
count: 30,
|
|
236
|
+
color: '#f0f8ff',
|
|
237
|
+
minSize: 5,
|
|
238
|
+
maxSize: 15,
|
|
239
|
+
speed: 0.7,
|
|
240
|
+
rotation: false,
|
|
241
|
+
minOpacity: 0.2,
|
|
242
|
+
maxOpacity: 0.5
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
// Метель
|
|
246
|
+
const blizzardConfig = {
|
|
247
|
+
count: 300,
|
|
248
|
+
color: '#d4eaff',
|
|
249
|
+
minSize: 3,
|
|
250
|
+
maxSize: 20,
|
|
251
|
+
speed: 3,
|
|
252
|
+
rotation: true,
|
|
253
|
+
wind: true,
|
|
254
|
+
minOpacity: 0.7,
|
|
255
|
+
maxOpacity: 1
|
|
256
|
+
};
|
|
257
|
+
```
|
|
258
|
+
|
|
198
259
|
## Зависимости
|
|
199
260
|
- `hrenpack_js` (^3.1.5) — базовые утилиты для работы с cookies, темами и DOM
|
|
200
261
|
- `magic-snowflakes` (^7.0.2) — библиотека для создания анимированного снегопада
|
|
@@ -211,6 +272,21 @@ snowManager.destroy();
|
|
|
211
272
|
1. **Последовательность загрузки:** Стили `style.css` должны подключаться после Bootstrap для корректного переопределения переменных.
|
|
212
273
|
2. **Браузерная поддержка:** Некоторые старые браузеры могут не поддерживать CSS-переменные, что приведет к отображению только светлой темы.
|
|
213
274
|
|
|
275
|
+
### Производительность и оптимизация
|
|
276
|
+
1. **Графические ускорители:** На устройствах без аппаратного ускорения Canvas может наблюдаться снижение производительности при большом количестве снежинок.
|
|
277
|
+
2. **Экономия заряда батареи:** На мобильных устройствах в режиме энергосбережения снегопад автоматически снижает частоту кадров.
|
|
278
|
+
3. **Память:** Каждая снежинка использует ~2-5KB памяти. При 150 снежинках общее потребление составляет 300-750KB.
|
|
279
|
+
|
|
280
|
+
### Совместимость с фреймворками
|
|
281
|
+
- **React/Vue/Angular:** Snow Manager можно использовать внутри компонентов, но требуется ручное управление жизненным циклом:
|
|
282
|
+
```javascript
|
|
283
|
+
// Пример для React
|
|
284
|
+
useEffect(() => {
|
|
285
|
+
const manager = new SnowManager(config);
|
|
286
|
+
return () => manager.destroy(); // Очистка при размонтировании
|
|
287
|
+
}, []);
|
|
288
|
+
```
|
|
289
|
+
|
|
214
290
|
## Совместимость
|
|
215
291
|
- Поддерживает современные браузеры (ES2020+)
|
|
216
292
|
- TypeScript 5.9.3 и выше
|
package/SNOW_DOCUMENTATION.md
CHANGED
|
@@ -19,7 +19,8 @@
|
|
|
19
19
|
data-max-size="15"
|
|
20
20
|
data-speed="2"
|
|
21
21
|
data-rotation
|
|
22
|
-
data-z-index="9999"
|
|
22
|
+
data-z-index="9999"
|
|
23
|
+
data-no-optimize>
|
|
23
24
|
</script>
|
|
24
25
|
```
|
|
25
26
|
> ⚠️ **Важно:** Скрипт должен загружаться синхронно (без `async`/`defer`).
|
|
@@ -72,6 +73,7 @@ new SnowManager(options?: SnowOptions)
|
|
|
72
73
|
- `rotation` - Включить вращение
|
|
73
74
|
- `wind` - Включить эффект ветра
|
|
74
75
|
- `zIndex` - CSS z-index
|
|
76
|
+
- `optimize` - Включит/выключить оптимизацию (отключение анимации, если вкладка неактивна)
|
|
75
77
|
|
|
76
78
|
## События
|
|
77
79
|
Снегопад автоматически реагирует на:
|
|
@@ -99,7 +101,45 @@ new SnowManager(options?: SnowOptions)
|
|
|
99
101
|
| Программное API | Все параметры, включая wind, autoResize, container | В любой момент времени |
|
|
100
102
|
|
|
101
103
|
|
|
102
|
-
##
|
|
104
|
+
## Безопасность и производительность
|
|
105
|
+
|
|
106
|
+
#### Защита от XSS
|
|
107
|
+
При использовании data-атрибутов все значения проходят валидацию:
|
|
108
|
+
- Числовые параметры проверяются на корректность
|
|
109
|
+
- Строковые значения (color) санитизируются
|
|
110
|
+
- Булевые параметры обрабатываются безопасно
|
|
111
|
+
|
|
112
|
+
#### Оптимальные настройки для разных устройств:
|
|
113
|
+
| Устройство | count | maxSize | speed | optimize |
|
|
114
|
+
|------------|-------|---------|-------|----------|
|
|
115
|
+
| Десктоп (мощный) | 150 | 25 | 2 | true |
|
|
116
|
+
| Десктоп (обычный) | 80 | 20 | 1 | true |
|
|
117
|
+
| Планшет | 60 | 15 | 1 | true |
|
|
118
|
+
| Мобильный | 40 | 12 | 1 | true |
|
|
119
|
+
| Старые устройства | 20 | 10 | 0.5 | true |
|
|
120
|
+
|
|
121
|
+
#### Мониторинг производительности:
|
|
122
|
+
```javascript
|
|
123
|
+
// Проверка FPS снегопада
|
|
124
|
+
let frameCount = 0;
|
|
125
|
+
let lastTime = performance.now();
|
|
126
|
+
|
|
127
|
+
function monitorPerformance() {
|
|
128
|
+
frameCount++;
|
|
129
|
+
const currentTime = performance.now();
|
|
130
|
+
if (currentTime - lastTime >= 1000) {
|
|
131
|
+
const fps = Math.round((frameCount * 1000) / (currentTime - lastTime));
|
|
132
|
+
console.log(`Snow FPS: ${fps}`);
|
|
133
|
+
if (fps < 30) {
|
|
134
|
+
console.warn('Низкий FPS. Рекомендуется уменьшить количество снежинок.');
|
|
135
|
+
}
|
|
136
|
+
frameCount = 0;
|
|
137
|
+
lastTime = currentTime;
|
|
138
|
+
}
|
|
139
|
+
requestAnimationFrame(monitorPerformance);
|
|
140
|
+
}
|
|
141
|
+
monitorPerformance();
|
|
142
|
+
```
|
|
103
143
|
|
|
104
144
|
### Рекомендации по настройке
|
|
105
145
|
| Параметр | Рекомендуемое значение | Влияние на производительность |
|
package/form.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.js","sourceRoot":"","sources":["form.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"form.js","sourceRoot":"","sources":["form.ts"],"names":[],"mappings":";AAMA,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC/C,MAAM,IAAI,GAA2B,QAAQ,CAAC,aAAa,CACvD,QAAQ,CAAC,aAAc,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,CAAA;IAC5D,IAAI,IAAI;QACJ,yBAAyB,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA"}
|
package/input-reversed.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-reversed.d.ts","sourceRoot":"","sources":["input-reversed.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"input-reversed.d.ts","sourceRoot":"","sources":["input-reversed.ts"],"names":[],"mappings":"AAMA,iBAAS,YAAY,CAAC,SAAS,EAAE,oBAAoB,GAAG,kBAAkB,CAmBzE;AAED,iBAAS,iBAAiB,CAAC,IAAI,EAAE,eAAe,QAW/C"}
|
package/input-reversed.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-reversed.js","sourceRoot":"","sources":["input-reversed.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"input-reversed.js","sourceRoot":"","sources":["input-reversed.ts"],"names":[],"mappings":";AAMA,SAAS,YAAY,CAAC,SAA+B;IACjD,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,EAAC,KAAK,EAAE,KAAa,EAAE,KAAK,EAAE,KAAa,EAAE,OAAO,EAAE,KAAK,EAAC,CAAA;IAG3E,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;QACjB,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;QACpB,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;QAEpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK;gBAAE,UAAU,GAAG,CAAC,CAAC;YAC1C,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK;gBAAE,UAAU,GAAG,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,CAAC,OAAO,GAAG,UAAU,KAAK,CAAC,CAAC,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,UAAU,GAAG,UAAU,CAAA;IACtF,CAAC;IACD,OAAO,MAAM,CAAA;AACjB,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAqB;IAC5C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;QAC3C,MAAM,EAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAC,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,OAAO,EAAE,CAAC;YACV,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAClD,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;YAC1B,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;YAC1B,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;YAC9B,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;QAC7C,CAAC;IACL,CAAC,CAAC,CAAA;AACN,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hrenpack-theme-style",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.0",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"build": "tsc",
|
|
6
6
|
"copyright": "add-copyright !(*.d).ts types.d.ts -y 2024-2025 -l -r && tsc",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"bootstrap": "^5.3.8",
|
|
34
|
-
"hrenpack_js": "^3.
|
|
34
|
+
"hrenpack_js": "^3.3.0",
|
|
35
35
|
"magic-snowflakes": "^7.0.2"
|
|
36
36
|
}
|
|
37
37
|
}
|
package/script.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"script.d.ts","sourceRoot":"","sources":["script.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"script.d.ts","sourceRoot":"","sources":["script.ts"],"names":[],"mappings":"AAMA,iBAAS,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,eAAe,GAAE,OAAe,UAUlF;AAED,iBAAS,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,UAIpD;AAED,iBAAS,cAAc,SAgCtB;AAED,iBAAS,eAAe,SAMvB"}
|
package/script.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"script.js","sourceRoot":"","sources":["script.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"script.js","sourceRoot":"","sources":["script.ts"],"names":[],"mappings":";AAMA,SAAS,cAAc,CAAC,MAAyB,EAAE,kBAA2B,KAAK;IAC/E,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC9C,OAAO,eAAe;YAClB,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,+BAA+B,CAAC;YAC9D,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACJ,OAAO,eAAe;YAClB,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,+BAA+B,CAAC;YAC9D,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;IAC/D,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAyB;IACjD,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC9C,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,uBAAuB,CAAC;QACtD,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,cAAc;IACnB,MAAM,OAAO,GAAgB,QAAQ,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACpE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAErB,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAEhD,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE;YACjC,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,UAAU,CAAC,gBAAgB,CAAC,iCAAiC,CAAC,CAAC;YAC9F,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE;YACjC,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC5D,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE;YAChC,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;YACtD,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE;YAC/B,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC5D,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE;YAClC,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;YACtD,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,eAAe;IACpB,MAAM,OAAO,GAAgB,QAAQ,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAA;IACnE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACrB,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC,CAAC,CAAA;AACN,CAAC;AAED,MAAM,CAAC,MAAM,GAAG;IACZ,cAAc,EAAE,CAAA;AACpB,CAAC,CAAA"}
|
package/snow.d.ts
CHANGED
|
@@ -43,6 +43,8 @@ declare class SnowManager {
|
|
|
43
43
|
set zIndex(value: Optional<number>);
|
|
44
44
|
get autoResize(): Optional<boolean>;
|
|
45
45
|
set autoResize(value: Optional<boolean>);
|
|
46
|
+
get optimize(): Optional<boolean>;
|
|
47
|
+
set optimize(value: Optional<boolean>);
|
|
46
48
|
}
|
|
47
49
|
declare let snowManager: SnowManager;
|
|
48
50
|
//# sourceMappingURL=snow.d.ts.map
|
package/snow.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snow.d.ts","sourceRoot":"","sources":["snow.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"snow.d.ts","sourceRoot":"","sources":["snow.ts"],"names":[],"mappings":"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"}
|
package/snow.js
CHANGED
|
@@ -83,6 +83,7 @@ class SnowManager {
|
|
|
83
83
|
stop: 'stop' in dataset,
|
|
84
84
|
types: toNumber(dataset.types, 'int', 6),
|
|
85
85
|
zIndex: toNumber(dataset.zIndex, 'int', 9999),
|
|
86
|
+
optimize: 'noOptimize' in dataset,
|
|
86
87
|
};
|
|
87
88
|
}
|
|
88
89
|
return new SnowManager(options);
|
|
@@ -103,11 +104,13 @@ class SnowManager {
|
|
|
103
104
|
wind: config.wind ?? true,
|
|
104
105
|
zIndex: config.zIndex ?? 9999,
|
|
105
106
|
autoResize: config.autoResize ?? true,
|
|
107
|
+
optimize: config.optimize ?? true,
|
|
106
108
|
};
|
|
107
109
|
}
|
|
108
110
|
setupVisibility() {
|
|
109
111
|
const handleVisibility = () => {
|
|
110
|
-
|
|
112
|
+
if (this.optimize)
|
|
113
|
+
document.hidden ? this.pause() : this.play();
|
|
111
114
|
};
|
|
112
115
|
document.addEventListener('visibilitychange', handleVisibility);
|
|
113
116
|
window.addEventListener('blur', () => this.pause());
|
|
@@ -174,6 +177,8 @@ class SnowManager {
|
|
|
174
177
|
set zIndex(value) { }
|
|
175
178
|
get autoResize() { return null; }
|
|
176
179
|
set autoResize(value) { }
|
|
180
|
+
get optimize() { return null; }
|
|
181
|
+
set optimize(value) { }
|
|
177
182
|
}
|
|
178
183
|
__decorate([
|
|
179
184
|
SnowProperty
|
|
@@ -220,6 +225,9 @@ __decorate([
|
|
|
220
225
|
__decorate([
|
|
221
226
|
SnowProperty
|
|
222
227
|
], SnowManager.prototype, "autoResize", null);
|
|
228
|
+
__decorate([
|
|
229
|
+
SnowProperty
|
|
230
|
+
], SnowManager.prototype, "optimize", null);
|
|
223
231
|
let snowManager;
|
|
224
232
|
if (!document.currentScript.dataset.hasOwnProperty('noInit'))
|
|
225
233
|
snowManager = SnowManager.fromScriptDataset(document.currentScript);
|
package/snow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snow.js","sourceRoot":"","sources":["snow.ts"],"names":[],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"snow.js","sourceRoot":"","sources":["snow.ts"],"names":[],"mappings":";;;;;;;AAMA,SAAS,YAAY,CAAC,MAAW,EAAE,WAA4B,EAAE,UAA8B;IAC3F,IAAI,UAAU,CAAC,GAAG,EAAE,CAAC;QACjB,UAAU,CAAC,GAAG,GAAG;YACb,MAAM,QAAQ,GAAG,IAAW,CAAC;YAC7B,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAChB,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,WAA+B,CAAC,CAAC;YACjE,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC;IACN,CAAC;IAED,IAAI,UAAU,CAAC,GAAG,EAAE,CAAC;QACjB,UAAU,CAAC,GAAG,GAAG,UAAS,KAAU;YAChC,MAAM,QAAQ,GAAG,IAAW,CAAC;YAC7B,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAEhB,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC3C,MAAM,SAAS,GAAG;oBACd,GAAG,aAAa;oBAChB,CAAC,WAAW,CAAC,EAAE,KAAK;iBACvB,CAAC;gBAGF,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAGxB,QAAQ,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;gBAE1C,OAAO;YACX,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,cAAc,MAAM,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC;QACnF,CAAC,CAAC;IACN,CAAC;IAED,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAuB,EAAE,UAA2B,EAAE,YAAoB;IACxF,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC,KAAK;QAAE,OAAO,YAAY,CAAC;IAChC,QAAQ,UAAU,EAAE,CAAC;QACjB,KAAK,KAAK;YACN,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YACzB,MAAM;QACV,KAAK,OAAO;YACR,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YAC3B,MAAM;QACV;YACI,MAAM,IAAI,KAAK,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC;AAClD,CAAC;AAOD,MAAM,WAAW;IAIb,YAAY,UAAuB,EAAE;QAHrC;;;;;WAAyB;QACzB;;;;;WAAmB;QAGf,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,eAAe,EAAE,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,MAA8B;QACnD,IAAI,OAAO,GAAgB,EAAE,CAAA;QAC7B,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAC/B,OAAO,GAAG;gBACN,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;gBACzC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;gBACjC,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC;gBACtD,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;gBACpD,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;gBAC/C,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC7C,QAAQ,EAAE,UAAU,IAAI,OAAO;gBAC/B,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;gBACxC,IAAI,EAAE,MAAM,IAAI,OAAO;gBACvB,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;gBACxC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC;gBAC7C,QAAQ,EAAE,YAAc,IAAG,OAAO;aACrC,CAAA;QACL,CAAC;QACD,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAES,UAAU,CAAC,MAAmB;QACpC,OAAO;YACH,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI;YAC5C,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;YACzB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,SAAS;YAChC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,GAAG;YACpC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC;YAClC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;YAC7B,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;YAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,KAAK;YAClC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;YACxB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,KAAK;YAC1B,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;YACxB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI;YAC7B,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI;YACrC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;SACrC,CAAC;IACL,CAAC;IAES,eAAe;QACrB,MAAM,gBAAgB,GAAG,GAAG,EAAE;YAC1B,IAAI,IAAI,CAAC,QAAQ;gBACb,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACrD,CAAC,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;QAChE,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,KAAK;QACD,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC3B,CAAC;IACJ,CAAC;IAED,IAAI;QACA,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC1B,CAAC;IACJ,CAAC;IAED,MAAM;QACF,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/C,CAAC;IAED,OAAO;QACH,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACtB,CAAC;IACJ,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC;IACxC,CAAC;IAED,IAAI,SAAS,CAAC,SAAsB;QAChC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAChC,OAAO;QACZ,CAAC;QACA,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IAC1E,CAAC;IAID,IAAI,KAAK,KAAsB,OAAO,IAAI,CAAC,CAAA,CAAC;IAC5C,IAAI,KAAK,CAAC,KAAuB,IAAG,CAAC;IAIrC,IAAI,KAAK,KAAY,OAAO,EAAE,CAAC,CAAA,CAAC;IAChC,IAAI,KAAK,CAAC,KAAa,IAAG,CAAC;IAI3B,IAAI,UAAU,KAAsB,OAAO,IAAI,CAAC,CAAA,CAAC;IACjD,IAAI,UAAU,CAAC,KAAuB,IAAG,CAAC;IAI1C,IAAI,UAAU,KAAsB,OAAO,IAAI,CAAC,CAAA,CAAC;IACjD,IAAI,UAAU,CAAC,KAAuB,IAAG,CAAC;IAI1C,IAAI,OAAO,KAAsB,OAAO,IAAI,CAAC,CAAA,CAAC;IAC9C,IAAI,OAAO,CAAC,KAAuB,IAAG,CAAC;IAIvC,IAAI,OAAO,KAAsB,OAAO,IAAI,CAAC,CAAA,CAAC;IAC9C,IAAI,OAAO,CAAC,KAAuB,IAAG,CAAC;IAIvC,IAAI,QAAQ,KAAuB,OAAO,IAAI,CAAC,CAAA,CAAC;IAChD,IAAI,QAAQ,CAAC,KAAwB,IAAG,CAAC;IAIzC,IAAI,KAAK,KAAsB,OAAO,IAAI,CAAC,CAAA,CAAC;IAC5C,IAAI,KAAK,CAAC,KAAuB,IAAG,CAAC;IAIrC,IAAI,IAAI,KAAuB,OAAO,IAAI,CAAC,CAAA,CAAC;IAC5C,IAAI,IAAI,CAAC,KAAwB,IAAG,CAAC;IAIrC,IAAI,KAAK,KAAsB,OAAO,IAAI,CAAC,CAAA,CAAC;IAC5C,IAAI,KAAK,CAAC,KAAuB,IAAG,CAAC;IAIrC,IAAI,KAAK,KAAsB,OAAO,IAAI,CAAC,CAAA,CAAC;IAC5C,IAAI,KAAK,CAAC,KAAuB,IAAG,CAAC;IAIrC,IAAI,MAAM,KAAsB,OAAO,IAAI,CAAC,CAAA,CAAC;IAC7C,IAAI,MAAM,CAAC,KAAuB,IAAG,CAAC;IAItC,IAAI,IAAI,KAAuB,OAAO,IAAI,CAAC,CAAA,CAAC;IAC5C,IAAI,IAAI,CAAC,KAAwB,IAAG,CAAC;IAIrC,IAAI,MAAM,KAAsB,OAAO,IAAI,CAAC,CAAA,CAAC;IAC7C,IAAI,MAAM,CAAC,KAAuB,IAAG,CAAC;IAItC,IAAI,UAAU,KAAuB,OAAO,IAAI,CAAC,CAAA,CAAC;IAClD,IAAI,UAAU,CAAC,KAAwB,IAAG,CAAC;IAI3C,IAAI,QAAQ,KAAuB,OAAO,IAAI,CAAC,CAAA,CAAC;IAChD,IAAI,QAAQ,CAAC,KAAwB,IAAG,CAAC;CAC5C;AA7EG;IADC,YAAY;wCAC+B;AAK5C;IADC,YAAY;wCACmB;AAKhC;IADC,YAAY;6CACoC;AAKjD;IADC,YAAY;6CACoC;AAKjD;IADC,YAAY;0CACiC;AAK9C;IADC,YAAY;0CACiC;AAK9C;IADC,YAAY;2CACmC;AAKhD;IADC,YAAY;wCAC+B;AAK5C;IADC,YAAY;uCAC+B;AAK5C;IADC,YAAY;wCAC+B;AAK5C;IADC,YAAY;wCAC+B;AAK5C;IADC,YAAY;yCACgC;AAK7C;IADC,YAAY;uCAC+B;AAK5C;IADC,YAAY;yCACgC;AAK7C;IADC,YAAY;6CACqC;AAKlD;IADC,YAAY;2CACmC;AAIpD,IAAI,WAAwB,CAAC;AAE7B,IAAI,CAAC,QAAQ,CAAC,aAAc,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC;IACzD,WAAW,GAAG,WAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC,aAAc,CAAC,CAAC"}
|