@sequent-org/moodboard 1.0.4 → 1.0.7

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sequent-org/moodboard",
3
- "version": "1.0.4",
3
+ "version": "1.0.7",
4
4
  "type": "module",
5
5
  "description": "Interactive moodboard",
6
6
  "main": "./src/index.js",
package/src/ui/Topbar.js CHANGED
@@ -39,6 +39,11 @@ export class Topbar {
39
39
  createTopbar() {
40
40
  this.element = document.createElement('div');
41
41
  this.element.className = `moodboard-topbar moodboard-topbar--${this.theme}`;
42
+
43
+ console.log('🔍 Topbar: создаю верхнюю панель');
44
+ console.log('🔍 Topbar: this.icons содержит:', this.icons);
45
+ console.log('🔍 Topbar: количество иконок:', Object.keys(this.icons).length);
46
+
42
47
  // Кнопки выбора вида сетки (без функциональности)
43
48
  const buttons = [
44
49
  { id: 'grid-line', icon: 'grid-line', title: 'Сетка: линии', type: 'line' },
@@ -51,10 +56,14 @@ export class Topbar {
51
56
  const btn = document.createElement('button');
52
57
  btn.className = 'moodboard-topbar__button';
53
58
 
59
+ console.log(`🔍 Topbar: создаю кнопку для иконки "${cfg.icon}"`);
60
+
54
61
  // Создаем SVG иконку
55
62
  if (this.icons[cfg.icon]) {
63
+ console.log(`✅ Topbar: иконка "${cfg.icon}" найдена, создаю SVG`);
56
64
  this.createSvgIcon(btn, cfg.icon);
57
65
  } else {
66
+ console.warn(`⚠️ Topbar: иконка "${cfg.icon}" не найдена, создаю fallback`);
58
67
  // Fallback: создаем простую текстовую иконку
59
68
  const fallbackIcon = document.createElement('span');
60
69
  fallbackIcon.textContent = cfg.icon.charAt(0).toUpperCase();
@@ -78,10 +87,14 @@ export class Topbar {
78
87
  paintBtn.className = 'moodboard-topbar__button moodboard-topbar__button--paint';
79
88
  paintBtn.title = 'Палитра фона';
80
89
 
90
+ console.log('🔍 Topbar: создаю кнопку краски');
91
+
81
92
  // Создаем SVG иконку
82
93
  if (this.icons['paint']) {
94
+ console.log('✅ Topbar: иконка paint найдена, создаю SVG');
83
95
  this.createSvgIcon(paintBtn, 'paint');
84
96
  } else {
97
+ console.warn('⚠️ Topbar: иконка paint не найдена, создаю fallback');
85
98
  // Fallback: создаем простую текстовую иконку
86
99
  const fallbackIcon = document.createElement('span');
87
100
  fallbackIcon.textContent = '🎨';
@@ -101,7 +114,11 @@ export class Topbar {
101
114
  * Создает SVG иконку для кнопки
102
115
  */
103
116
  createSvgIcon(button, iconName) {
117
+ console.log(`🔍 Topbar: создаю SVG иконку "${iconName}"`);
118
+ console.log(`🔍 Topbar: доступные иконки:`, Object.keys(this.icons));
119
+
104
120
  if (this.icons[iconName]) {
121
+ console.log(`✅ Topbar: иконка "${iconName}" найдена, создаю SVG элемент`);
105
122
  // Создаем SVG элемент из загруженного содержимого
106
123
  const tempDiv = document.createElement('div');
107
124
  tempDiv.innerHTML = this.icons[iconName];
@@ -115,7 +132,12 @@ export class Topbar {
115
132
 
116
133
  // Добавляем SVG в кнопку
117
134
  button.appendChild(svg);
135
+ console.log(`✅ Topbar: SVG иконка "${iconName}" успешно добавлена в кнопку`);
136
+ } else {
137
+ console.warn(`⚠️ Topbar: не удалось найти SVG элемент в содержимом иконки "${iconName}"`);
118
138
  }
139
+ } else {
140
+ console.warn(`⚠️ Topbar: иконка "${iconName}" не найдена в this.icons`);
119
141
  }
120
142
  }
121
143
 
@@ -9,27 +9,21 @@ export class TopbarIconLoader {
9
9
 
10
10
  async init() {
11
11
  try {
12
- // Загружаем иконки через import.meta.glob
13
- const iconModules = import.meta.glob('../assets/icons/topbar/*.svg', {
14
- eager: true,
15
- as: 'raw'
16
- });
12
+ // Всегда используем встроенные иконки для надежности
13
+ // Это гарантирует работу в любом окружении (npm пакет, CDN, локальная разработка)
14
+ this.loadBuiltInIcons();
17
15
 
18
- for (const [path, content] of Object.entries(iconModules)) {
19
- const iconName = path.split('/').pop().replace('.svg', '');
20
- this.icons.set(iconName, content);
21
- }
16
+ console.log('✅ Иконки верхней панели загружены успешно');
22
17
 
23
18
  } catch (error) {
24
- console.warn('Не удалось загрузить SVG иконки через import.meta.glob, используем встроенные:', error);
19
+ console.error(' Критическая ошибка загрузки иконок верхней панели:', error);
20
+ // Даже в случае ошибки пытаемся загрузить встроенные иконки
25
21
  this.loadBuiltInIcons();
26
22
  }
27
23
  }
28
24
 
29
-
30
-
31
25
  loadBuiltInIcons() {
32
- // Встроенные иконки как fallback
26
+ // Встроенные иконки как основной источник
33
27
  const builtInIcons = {
34
28
  'grid-line': `<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
35
29
  <path d="M2 2H16V4H2V2Z" fill="currentColor"/>
@@ -82,10 +76,7 @@ export class TopbarIconLoader {
82
76
  this.icons.set(iconName, svgContent);
83
77
  }
84
78
 
85
- // Добавляем встроенные иконки в Map
86
- Object.entries(builtInIcons).forEach(([name, content]) => {
87
- this.icons.set(name, content);
88
- });
79
+ console.log(`📦 Загружено ${this.icons.size} встроенных иконок верхней панели`);
89
80
  }
90
81
 
91
82
  getIcon(name) {