@sequent-org/moodboard 1.2.6 → 1.2.8
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/package.json +1 -1
- package/src/index.js +239 -1
- package/src/initNoBundler.js +170 -0
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -2,6 +2,244 @@
|
|
|
2
2
|
export { MoodBoard } from './moodboard/MoodBoard.js';
|
|
3
3
|
|
|
4
4
|
// Дополнительные экспорты для работы без bundler
|
|
5
|
-
export { initMoodBoardNoBundler, quickInitMoodBoard, injectCriticalStyles } from './initNoBundler.js';
|
|
5
|
+
export { initMoodBoardNoBundler, quickInitMoodBoard, injectCriticalStyles, forceInjectPanelStyles } from './initNoBundler.js';
|
|
6
6
|
export { StyleLoader } from './utils/styleLoader.js';
|
|
7
7
|
export { EmojiLoaderNoBundler } from './utils/emojiLoaderNoBundler.js';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* СУПЕР-АГРЕССИВНАЯ функция для исправления панелей в проектах с конфликтами CSS
|
|
11
|
+
*/
|
|
12
|
+
export function forceFixPanelStyles() {
|
|
13
|
+
console.log('💪 СУПЕР-АГРЕССИВНОЕ исправление панелей (для проектов с конфликтами)...');
|
|
14
|
+
|
|
15
|
+
const superForcedCSS = `
|
|
16
|
+
/* МАКСИМАЛЬНО АГРЕССИВНЫЕ стили панелей */
|
|
17
|
+
.text-properties-panel,
|
|
18
|
+
div.text-properties-panel,
|
|
19
|
+
[class*="text-properties-panel"] {
|
|
20
|
+
min-width: 320px !important;
|
|
21
|
+
max-width: none !important;
|
|
22
|
+
width: auto !important;
|
|
23
|
+
height: 36px !important;
|
|
24
|
+
padding: 12px 22px !important;
|
|
25
|
+
margin: 0 !important;
|
|
26
|
+
background: #ffffff !important;
|
|
27
|
+
background-color: #ffffff !important;
|
|
28
|
+
border: 1px solid #e0e0e0 !important;
|
|
29
|
+
border-radius: 9999px !important;
|
|
30
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12) !important;
|
|
31
|
+
display: flex !important;
|
|
32
|
+
flex-direction: row !important;
|
|
33
|
+
align-items: center !important;
|
|
34
|
+
gap: 8px !important;
|
|
35
|
+
font-size: 13px !important;
|
|
36
|
+
font-family: 'Roboto', Arial, sans-serif !important;
|
|
37
|
+
position: absolute !important;
|
|
38
|
+
pointer-events: auto !important;
|
|
39
|
+
z-index: 10001 !important;
|
|
40
|
+
box-sizing: border-box !important;
|
|
41
|
+
transform: none !important;
|
|
42
|
+
opacity: 1 !important;
|
|
43
|
+
visibility: visible !important;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.frame-properties-panel,
|
|
47
|
+
div.frame-properties-panel,
|
|
48
|
+
[class*="frame-properties-panel"] {
|
|
49
|
+
min-width: 320px !important;
|
|
50
|
+
max-width: none !important;
|
|
51
|
+
width: auto !important;
|
|
52
|
+
height: 36px !important;
|
|
53
|
+
padding: 12px 32px !important;
|
|
54
|
+
margin: 0 !important;
|
|
55
|
+
background: #ffffff !important;
|
|
56
|
+
background-color: #ffffff !important;
|
|
57
|
+
border: 1px solid #e0e0e0 !important;
|
|
58
|
+
border-radius: 9999px !important;
|
|
59
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12) !important;
|
|
60
|
+
display: inline-flex !important;
|
|
61
|
+
align-items: center !important;
|
|
62
|
+
gap: 8px !important;
|
|
63
|
+
font-size: 13px !important;
|
|
64
|
+
font-family: 'Roboto', Arial, sans-serif !important;
|
|
65
|
+
position: absolute !important;
|
|
66
|
+
pointer-events: auto !important;
|
|
67
|
+
z-index: 10001 !important;
|
|
68
|
+
box-sizing: border-box !important;
|
|
69
|
+
transform: none !important;
|
|
70
|
+
opacity: 1 !important;
|
|
71
|
+
visibility: visible !important;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.note-properties-panel,
|
|
75
|
+
div.note-properties-panel,
|
|
76
|
+
[class*="note-properties-panel"] {
|
|
77
|
+
min-width: 280px !important;
|
|
78
|
+
max-width: none !important;
|
|
79
|
+
width: auto !important;
|
|
80
|
+
height: 40px !important;
|
|
81
|
+
padding: 8px 40px !important;
|
|
82
|
+
margin: 0 !important;
|
|
83
|
+
background: white !important;
|
|
84
|
+
background-color: white !important;
|
|
85
|
+
border: 1px solid #e0e0e0 !important;
|
|
86
|
+
border-radius: 9999px !important;
|
|
87
|
+
box-shadow: 0 6px 24px rgba(0, 0, 0, 0.16) !important;
|
|
88
|
+
display: inline-flex !important;
|
|
89
|
+
flex-direction: row !important;
|
|
90
|
+
align-items: center !important;
|
|
91
|
+
gap: 8px !important;
|
|
92
|
+
font-size: 12px !important;
|
|
93
|
+
font-family: Arial, sans-serif !important;
|
|
94
|
+
position: absolute !important;
|
|
95
|
+
pointer-events: auto !important;
|
|
96
|
+
z-index: 10000 !important;
|
|
97
|
+
box-sizing: border-box !important;
|
|
98
|
+
backdrop-filter: blur(4px) !important;
|
|
99
|
+
transform: none !important;
|
|
100
|
+
opacity: 1 !important;
|
|
101
|
+
visibility: visible !important;
|
|
102
|
+
}
|
|
103
|
+
`;
|
|
104
|
+
|
|
105
|
+
// Удаляем предыдущие версии
|
|
106
|
+
const existingStyles = document.querySelectorAll('#moodboard-universal-panel-fix, #moodboard-super-force-panel-fix');
|
|
107
|
+
existingStyles.forEach(style => style.remove());
|
|
108
|
+
|
|
109
|
+
const style = document.createElement('style');
|
|
110
|
+
style.id = 'moodboard-super-force-panel-fix';
|
|
111
|
+
style.textContent = superForcedCSS;
|
|
112
|
+
|
|
113
|
+
// Вставляем в самый конец head для максимального приоритета
|
|
114
|
+
document.head.appendChild(style);
|
|
115
|
+
|
|
116
|
+
console.log('💪 Супер-агрессивные стили применены');
|
|
117
|
+
|
|
118
|
+
// Проверяем все панели
|
|
119
|
+
setTimeout(() => {
|
|
120
|
+
const panels = document.querySelectorAll('.text-properties-panel, .frame-properties-panel, .note-properties-panel');
|
|
121
|
+
panels.forEach((panel, index) => {
|
|
122
|
+
const computedStyle = getComputedStyle(panel);
|
|
123
|
+
const width = parseInt(computedStyle.minWidth);
|
|
124
|
+
console.log(`📏 Панель ${index + 1}: minWidth = ${width}px`);
|
|
125
|
+
});
|
|
126
|
+
}, 200);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Универсальная функция для исправления стилей панелей
|
|
131
|
+
* Работает с любой версией MoodBoard (bundled и no-bundler)
|
|
132
|
+
*/
|
|
133
|
+
export function fixPanelStyles() {
|
|
134
|
+
console.log('🔧 Исправляем стили панелей MoodBoard (универсальная версия)...');
|
|
135
|
+
|
|
136
|
+
const forcedPanelCSS = `
|
|
137
|
+
/* УНИВЕРСАЛЬНЫЕ принудительные стили панелей */
|
|
138
|
+
.text-properties-panel {
|
|
139
|
+
min-width: 320px !important;
|
|
140
|
+
width: auto !important;
|
|
141
|
+
height: 36px !important;
|
|
142
|
+
padding: 12px 22px !important;
|
|
143
|
+
background-color: #ffffff !important;
|
|
144
|
+
border: 1px solid #e0e0e0 !important;
|
|
145
|
+
border-radius: 9999px !important;
|
|
146
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12) !important;
|
|
147
|
+
display: flex !important;
|
|
148
|
+
flex-direction: row !important;
|
|
149
|
+
align-items: center !important;
|
|
150
|
+
gap: 8px !important;
|
|
151
|
+
font-size: 13px !important;
|
|
152
|
+
font-family: 'Roboto', Arial, sans-serif !important;
|
|
153
|
+
position: absolute !important;
|
|
154
|
+
pointer-events: auto !important;
|
|
155
|
+
z-index: 1001 !important;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.frame-properties-panel {
|
|
159
|
+
min-width: 320px !important;
|
|
160
|
+
width: auto !important;
|
|
161
|
+
height: 36px !important;
|
|
162
|
+
padding: 12px 32px !important;
|
|
163
|
+
background-color: #ffffff !important;
|
|
164
|
+
border: 1px solid #e0e0e0 !important;
|
|
165
|
+
border-radius: 9999px !important;
|
|
166
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12) !important;
|
|
167
|
+
display: inline-flex !important;
|
|
168
|
+
align-items: center !important;
|
|
169
|
+
gap: 8px !important;
|
|
170
|
+
font-size: 13px !important;
|
|
171
|
+
font-family: 'Roboto', Arial, sans-serif !important;
|
|
172
|
+
position: absolute !important;
|
|
173
|
+
pointer-events: auto !important;
|
|
174
|
+
z-index: 1001 !important;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.note-properties-panel {
|
|
178
|
+
min-width: 280px !important;
|
|
179
|
+
width: auto !important;
|
|
180
|
+
height: 36px !important;
|
|
181
|
+
padding: 12px 22px !important;
|
|
182
|
+
background-color: #ffffff !important;
|
|
183
|
+
border: 1px solid #e0e0e0 !important;
|
|
184
|
+
border-radius: 9999px !important;
|
|
185
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12) !important;
|
|
186
|
+
display: inline-flex !important;
|
|
187
|
+
align-items: center !important;
|
|
188
|
+
gap: 8px !important;
|
|
189
|
+
font-size: 13px !important;
|
|
190
|
+
font-family: 'Roboto', Arial, sans-serif !important;
|
|
191
|
+
position: absolute !important;
|
|
192
|
+
pointer-events: auto !important;
|
|
193
|
+
z-index: 1001 !important;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
.file-properties-panel, .moodboard-file-properties-panel {
|
|
197
|
+
min-width: 250px !important;
|
|
198
|
+
width: auto !important;
|
|
199
|
+
height: 36px !important;
|
|
200
|
+
padding: 8px 12px !important;
|
|
201
|
+
background-color: #ffffff !important;
|
|
202
|
+
border: 1px solid #e5e7eb !important;
|
|
203
|
+
border-radius: 8px !important;
|
|
204
|
+
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;
|
|
205
|
+
display: flex !important;
|
|
206
|
+
flex-direction: row !important;
|
|
207
|
+
align-items: center !important;
|
|
208
|
+
gap: 8px !important;
|
|
209
|
+
font-size: 14px !important;
|
|
210
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif !important;
|
|
211
|
+
position: absolute !important;
|
|
212
|
+
pointer-events: auto !important;
|
|
213
|
+
z-index: 1000 !important;
|
|
214
|
+
}
|
|
215
|
+
`;
|
|
216
|
+
|
|
217
|
+
// Проверяем, не добавлены ли уже стили
|
|
218
|
+
if (document.getElementById('moodboard-universal-panel-fix')) {
|
|
219
|
+
console.log('⚠️ Универсальные стили панелей уже добавлены');
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
const style = document.createElement('style');
|
|
224
|
+
style.id = 'moodboard-universal-panel-fix';
|
|
225
|
+
style.textContent = forcedPanelCSS;
|
|
226
|
+
document.head.appendChild(style);
|
|
227
|
+
|
|
228
|
+
console.log('✅ Универсальные стили панелей добавлены');
|
|
229
|
+
|
|
230
|
+
// Проверяем результат через 100ms
|
|
231
|
+
setTimeout(() => {
|
|
232
|
+
const panel = document.querySelector('.text-properties-panel, .frame-properties-panel, .note-properties-panel');
|
|
233
|
+
if (panel) {
|
|
234
|
+
const computedStyle = getComputedStyle(panel);
|
|
235
|
+
const width = parseInt(computedStyle.minWidth);
|
|
236
|
+
console.log(`📏 Проверка панели: minWidth = ${width}px`);
|
|
237
|
+
|
|
238
|
+
if (width >= 250) {
|
|
239
|
+
console.log('✅ Стили панелей исправлены успешно!');
|
|
240
|
+
} else {
|
|
241
|
+
console.log('⚠️ Панель все еще узкая, возможны конфликты CSS');
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}, 100);
|
|
245
|
+
}
|
package/src/initNoBundler.js
CHANGED
|
@@ -45,6 +45,13 @@ export async function initMoodBoardNoBundler(container, options = {}, basePath =
|
|
|
45
45
|
* Инжектирует критичные стили inline для мгновенного отображения
|
|
46
46
|
*/
|
|
47
47
|
export function injectCriticalStyles() {
|
|
48
|
+
// Проверяем, не добавлены ли уже критичные стили
|
|
49
|
+
if (document.getElementById('moodboard-critical-styles')) {
|
|
50
|
+
console.log('⚠️ Критичные стили уже добавлены');
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
console.log('🎨 Добавляем критичные стили MoodBoard...');
|
|
48
55
|
const criticalCSS = `
|
|
49
56
|
/* Критичные стили для мгновенного отображения */
|
|
50
57
|
.moodboard-workspace {
|
|
@@ -225,6 +232,153 @@ export function injectCriticalStyles() {
|
|
|
225
232
|
style.id = 'moodboard-critical-styles';
|
|
226
233
|
style.textContent = criticalCSS;
|
|
227
234
|
document.head.appendChild(style);
|
|
235
|
+
|
|
236
|
+
console.log('✅ Критичные стили добавлены в DOM');
|
|
237
|
+
|
|
238
|
+
// Проверяем, применились ли стили панелей
|
|
239
|
+
setTimeout(() => {
|
|
240
|
+
const testPanel = document.querySelector('.text-properties-panel');
|
|
241
|
+
if (testPanel) {
|
|
242
|
+
const computedStyle = getComputedStyle(testPanel);
|
|
243
|
+
console.log('📋 Стили панели применены:', {
|
|
244
|
+
minWidth: computedStyle.minWidth,
|
|
245
|
+
height: computedStyle.height,
|
|
246
|
+
display: computedStyle.display,
|
|
247
|
+
padding: computedStyle.padding
|
|
248
|
+
});
|
|
249
|
+
} else {
|
|
250
|
+
console.log('📋 Панели пока не созданы, стили ожидают применения');
|
|
251
|
+
}
|
|
252
|
+
}, 100);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Принудительно инжектирует стили панелей с !important
|
|
257
|
+
* Используйте если панели отображаются узкими
|
|
258
|
+
*/
|
|
259
|
+
export function forceInjectPanelStyles() {
|
|
260
|
+
console.log('🔧 Принудительно добавляем стили панелей...');
|
|
261
|
+
|
|
262
|
+
const forcedPanelCSS = `
|
|
263
|
+
/* ПРИНУДИТЕЛЬНЫЕ стили панелей - с !important */
|
|
264
|
+
.text-properties-panel {
|
|
265
|
+
position: absolute !important;
|
|
266
|
+
pointer-events: auto !important;
|
|
267
|
+
display: flex !important;
|
|
268
|
+
flex-direction: row !important;
|
|
269
|
+
align-items: center !important;
|
|
270
|
+
gap: 8px !important;
|
|
271
|
+
padding: 12px 22px !important;
|
|
272
|
+
background-color: #ffffff !important;
|
|
273
|
+
border: 1px solid #e0e0e0 !important;
|
|
274
|
+
border-radius: 9999px !important;
|
|
275
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12) !important;
|
|
276
|
+
font-size: 13px !important;
|
|
277
|
+
font-family: 'Roboto', Arial, sans-serif !important;
|
|
278
|
+
min-width: 320px !important;
|
|
279
|
+
width: auto !important;
|
|
280
|
+
height: 36px !important;
|
|
281
|
+
z-index: 1001 !important;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
.frame-properties-panel {
|
|
285
|
+
position: absolute !important;
|
|
286
|
+
pointer-events: auto !important;
|
|
287
|
+
display: inline-flex !important;
|
|
288
|
+
align-items: center !important;
|
|
289
|
+
gap: 8px !important;
|
|
290
|
+
padding: 12px 32px !important;
|
|
291
|
+
background-color: #ffffff !important;
|
|
292
|
+
border: 1px solid #e0e0e0 !important;
|
|
293
|
+
border-radius: 9999px !important;
|
|
294
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12) !important;
|
|
295
|
+
font-size: 13px !important;
|
|
296
|
+
font-family: 'Roboto', Arial, sans-serif !important;
|
|
297
|
+
min-width: 320px !important;
|
|
298
|
+
width: auto !important;
|
|
299
|
+
height: 36px !important;
|
|
300
|
+
z-index: 1001 !important;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
.note-properties-panel {
|
|
304
|
+
position: absolute !important;
|
|
305
|
+
pointer-events: auto !important;
|
|
306
|
+
display: inline-flex !important;
|
|
307
|
+
align-items: center !important;
|
|
308
|
+
gap: 8px !important;
|
|
309
|
+
padding: 12px 22px !important;
|
|
310
|
+
background-color: #ffffff !important;
|
|
311
|
+
border: 1px solid #e0e0e0 !important;
|
|
312
|
+
border-radius: 9999px !important;
|
|
313
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12) !important;
|
|
314
|
+
font-size: 13px !important;
|
|
315
|
+
font-family: 'Roboto', Arial, sans-serif !important;
|
|
316
|
+
min-width: 280px !important;
|
|
317
|
+
width: auto !important;
|
|
318
|
+
height: 36px !important;
|
|
319
|
+
z-index: 1001 !important;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
.file-properties-panel {
|
|
323
|
+
position: absolute !important;
|
|
324
|
+
pointer-events: auto !important;
|
|
325
|
+
display: inline-flex !important;
|
|
326
|
+
align-items: center !important;
|
|
327
|
+
gap: 8px !important;
|
|
328
|
+
padding: 12px 22px !important;
|
|
329
|
+
background-color: #ffffff !important;
|
|
330
|
+
border: 1px solid #e0e0e0 !important;
|
|
331
|
+
border-radius: 9999px !important;
|
|
332
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12) !important;
|
|
333
|
+
font-size: 13px !important;
|
|
334
|
+
font-family: 'Roboto', Arial, sans-serif !important;
|
|
335
|
+
min-width: 250px !important;
|
|
336
|
+
width: auto !important;
|
|
337
|
+
height: 36px !important;
|
|
338
|
+
z-index: 1001 !important;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
/* Элементы панелей */
|
|
342
|
+
.tpp-label, .fpp-label, .npp-label, .file-panel-label {
|
|
343
|
+
font-family: 'Roboto', Arial, sans-serif !important;
|
|
344
|
+
font-size: 12px !important;
|
|
345
|
+
color: #666 !important;
|
|
346
|
+
font-weight: 500 !important;
|
|
347
|
+
white-space: nowrap !important;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
.font-select, .font-size-select, .fpp-select, .fpp-input {
|
|
351
|
+
border: 1px solid #ddd !important;
|
|
352
|
+
border-radius: 4px !important;
|
|
353
|
+
padding: 4px 8px !important;
|
|
354
|
+
font-size: 13px !important;
|
|
355
|
+
background-color: #fff !important;
|
|
356
|
+
cursor: pointer !important;
|
|
357
|
+
min-height: 20px !important;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
.font-select { min-width: 110px !important; }
|
|
361
|
+
.font-size-select { min-width: 56px !important; }
|
|
362
|
+
|
|
363
|
+
.current-color-button, .current-bgcolor-button, .fpp-color-button {
|
|
364
|
+
width: 28px !important;
|
|
365
|
+
height: 28px !important;
|
|
366
|
+
border: 1px solid #ddd !important;
|
|
367
|
+
border-radius: 50% !important;
|
|
368
|
+
cursor: pointer !important;
|
|
369
|
+
margin: 0 !important;
|
|
370
|
+
padding: 0 !important;
|
|
371
|
+
display: block !important;
|
|
372
|
+
box-sizing: border-box !important;
|
|
373
|
+
}
|
|
374
|
+
`;
|
|
375
|
+
|
|
376
|
+
const style = document.createElement('style');
|
|
377
|
+
style.id = 'moodboard-forced-panel-styles';
|
|
378
|
+
style.textContent = forcedPanelCSS;
|
|
379
|
+
document.head.appendChild(style);
|
|
380
|
+
|
|
381
|
+
console.log('🔧 Принудительные стили панелей добавлены');
|
|
228
382
|
}
|
|
229
383
|
|
|
230
384
|
/**
|
|
@@ -245,6 +399,8 @@ export function quickInitMoodBoard(container, options = {}, basePath = '') {
|
|
|
245
399
|
if (container) {
|
|
246
400
|
container.classList.add('moodboard-styles-loaded');
|
|
247
401
|
}
|
|
402
|
+
}).catch(error => {
|
|
403
|
+
console.warn('⚠️ Не удалось загрузить полные стили, используем критичные:', error);
|
|
248
404
|
});
|
|
249
405
|
|
|
250
406
|
// Создаем MoodBoard с fallback эмоджи
|
|
@@ -255,5 +411,19 @@ export function quickInitMoodBoard(container, options = {}, basePath = '') {
|
|
|
255
411
|
emojiBasePath: basePath ? `${basePath}src/assets/emodji/` : null
|
|
256
412
|
});
|
|
257
413
|
|
|
414
|
+
// Автоматическая проверка и исправление стилей панелей через 3 секунды
|
|
415
|
+
setTimeout(() => {
|
|
416
|
+
const panel = document.querySelector('.text-properties-panel, .frame-properties-panel, .note-properties-panel, .file-properties-panel');
|
|
417
|
+
if (panel) {
|
|
418
|
+
const computedStyle = getComputedStyle(panel);
|
|
419
|
+
const width = parseInt(computedStyle.minWidth);
|
|
420
|
+
|
|
421
|
+
if (width < 200) { // Если панель очень узкая
|
|
422
|
+
console.log('🔧 Обнаружена узкая панель, автоматически исправляем стили...');
|
|
423
|
+
forceInjectPanelStyles();
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
}, 3000);
|
|
427
|
+
|
|
258
428
|
return moodboard;
|
|
259
429
|
}
|