@sequent-org/ifc-viewer 1.0.5-ci.9.0 → 1.0.7-ci.10.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/README.md CHANGED
@@ -4,12 +4,46 @@ IFC 3D model viewer component for web applications. Основан на Three.js
4
4
 
5
5
  **✨ Полностью автономный пакет** - не требует внешних CSS фреймворков (Tailwind, Bootstrap и т.д.).
6
6
 
7
+ ## ⚡ Быстрый старт для интеграции
8
+
9
+ ### Минимальная настройка
10
+
11
+ 1. **Установите пакет:**
12
+ ```bash
13
+ npm install @sequent-org/ifc-viewer
14
+ ```
15
+
16
+ 2. **Используйте в коде:**
17
+ ```javascript
18
+ import { IfcViewer } from '@sequent-org/ifc-viewer'
19
+
20
+ const viewer = new IfcViewer({
21
+ container: '#viewer-container',
22
+ ifcUrl: '/path/to/model.ifc'
23
+ })
24
+
25
+ await viewer.init()
26
+ ```
27
+
28
+ **Готово!** WASM файл автоматически загружается из пакета. Никаких дополнительных настроек не требуется.
29
+
7
30
  ## 🚀 Установка
8
31
 
9
32
  ```bash
10
33
  npm install @sequent-org/ifc-viewer
11
34
  ```
12
35
 
36
+ ### ✨ Автоматическая настройка WASM
37
+
38
+ **WASM файл автоматически включается в пакет** - никаких дополнительных настроек не требуется!
39
+
40
+ - ✅ WASM файл автоматически загружается из пакета
41
+ - ✅ Не нужно копировать файлы в публичную папку
42
+ - ✅ Работает "из коробки" в любом проекте
43
+ - ✅ Совместимо с любыми сборщиками (Vite, Webpack, Rollup)
44
+
45
+ **Важно:** Пакет использует парсинг в главном потоке (Web Workers отключены) для максимальной совместимости с различными окружениями.
46
+
13
47
  ## 📋 Основное использование
14
48
 
15
49
  ### Простой пример
@@ -24,6 +58,21 @@ const viewer = new IfcViewer({
24
58
  // showSidebar: false (по умолчанию)
25
59
  // showControls: false (по умолчанию)
26
60
  // showToolbar: true (по умолчанию)
61
+ // wasmUrl: null (автоматически определяет путь к WASM)
62
+ })
63
+
64
+ await viewer.init()
65
+ ```
66
+
67
+ ### Пример с кастомным WASM путем
68
+
69
+ ```javascript
70
+ import { IfcViewer } from '@sequent-org/ifc-viewer'
71
+
72
+ const viewer = new IfcViewer({
73
+ container: document.getElementById('viewer-container'),
74
+ ifcUrl: '/models/building.ifc',
75
+ wasmUrl: '/custom-path/web-ifc.wasm' // Кастомный путь к WASM файлу
27
76
  })
28
77
 
29
78
  await viewer.init()
@@ -54,28 +103,44 @@ function showIfcModal(ifcUrl) {
54
103
  }
55
104
  ```
56
105
 
57
- **Настройка WASM файла в Laravel:**
58
-
59
- 1. Скопируйте `web-ifc.wasm` в папку `public/storage/`:
60
- ```bash
61
- cp node_modules/web-ifc/web-ifc.wasm public/storage/
62
- ```
106
+ **Настройка в Laravel:**
63
107
 
64
- 2. Или используйте символическую ссылку:
65
- ```bash
66
- php artisan storage:link
67
- # Затем скопируйте файл в storage/app/public/
68
- ```
108
+ WASM файл автоматически загружается из пакета. Дополнительная настройка не требуется!
69
109
 
70
- 3. Альтернативно, укажите путь к файлу в `node_modules`:
110
+ **Для кастомных путей (опционально):**
71
111
  ```javascript
72
112
  const viewer = new IfcViewer({
73
113
  container: container,
74
114
  ifcUrl: ifcUrl,
75
- wasmUrl: '/node_modules/web-ifc/web-ifc.wasm'
115
+ wasmUrl: '/custom-path/web-ifc.wasm' // Только если нужен кастомный путь
76
116
  })
77
117
  ```
78
118
 
119
+ **Важно для Laravel:** Пакет работает "из коробки" без дополнительных настроек Vite.
120
+
121
+ ## 🔧 Особенности и совместимость
122
+
123
+ ### ✅ Что включено в пакет
124
+
125
+ - **Автономные стили** - не требует Tailwind CSS, Bootstrap или других фреймворков
126
+ - **Автоматический WASM** - файл автоматически включается в пакет
127
+ - **Отключенные Web Workers** - парсинг в главном потоке для максимальной совместимости
128
+ - **Fallback защита** - автоматическое переключение на резервные пути при ошибках WASM
129
+ - **Обработка ошибок** - graceful degradation при критических ошибках
130
+ - **Поддержка wasmUrl** - гибкая настройка пути к WASM файлу (опционально)
131
+
132
+ ### 🚫 Что НЕ включено
133
+
134
+ - **IFCWorker** - Web Workers отключены для предотвращения проблем интеграции
135
+ - **Внешние зависимости** - все стили и ресурсы включены в пакет
136
+
137
+ ### 🎯 Совместимость
138
+
139
+ - **Браузеры:** Chrome 80+, Firefox 75+, Safari 13+, Edge 80+
140
+ - **Фреймворки:** React, Vue, Angular, Laravel, Next.js, Nuxt.js
141
+ - **Сборщики:** Vite, Webpack, Rollup
142
+ - **Серверы:** Node.js, PHP, Python, .NET
143
+
79
144
  ### Загрузка пользовательского файла
80
145
 
81
146
  ```javascript
@@ -315,6 +380,56 @@ Failed to load web-ifc.wasm
315
380
  - Проверьте консоль на предупреждения о `wasmUrl`
316
381
  - Убедитесь, что файл `web-ifc.wasm` существует и доступен
317
382
 
383
+ ### Проблемы с Web Workers
384
+
385
+ **Ошибка IFCWorker:**
386
+ ```
387
+ Failed to load IFCWorker.js
388
+ ```
389
+
390
+ **Решение:** Эта ошибка не должна возникать, так как Web Workers отключены в пакете. Если она появляется:
391
+
392
+ 1. **Проверьте версию пакета:**
393
+ ```bash
394
+ npm list @sequent-org/ifc-viewer
395
+ ```
396
+
397
+ 2. **Очистите кэш:**
398
+ ```bash
399
+ npm cache clean --force
400
+ rm -rf node_modules package-lock.json
401
+ npm install
402
+ ```
403
+
404
+ 3. **Проверьте консоль браузера** - должно быть сообщение "Web Workers отключены"
405
+
406
+ ### Проблемы интеграции
407
+
408
+ **Ошибка при импорте:**
409
+ ```
410
+ Cannot resolve module '@sequent-org/ifc-viewer'
411
+ ```
412
+
413
+ **Решения:**
414
+ 1. **Убедитесь в правильной установке:**
415
+ ```bash
416
+ npm install @sequent-org/ifc-viewer
417
+ ```
418
+
419
+ 2. **Проверьте package.json:**
420
+ ```json
421
+ {
422
+ "dependencies": {
423
+ "@sequent-org/ifc-viewer": "^1.0.1"
424
+ }
425
+ }
426
+ ```
427
+
428
+ 3. **Для TypeScript проектов:**
429
+ ```typescript
430
+ import { IfcViewer } from '@sequent-org/ifc-viewer'
431
+ ```
432
+
318
433
  ## 🔧 Системные требования
319
434
 
320
435
  - Node.js >= 16
@@ -322,6 +437,40 @@ Failed to load web-ifc.wasm
322
437
  - Для работы требуются файлы `web-ifc.wasm` в публичной папке проекта
323
438
  - Поддержка ES6 модулей в браузере
324
439
 
440
+ ## 👨‍💻 Информация для разработчиков
441
+
442
+ ### Архитектура пакета
443
+
444
+ - **IfcViewer** - основной класс-обертка для интеграции
445
+ - **IfcService** - сервис загрузки и парсинга IFC файлов
446
+ - **Viewer** - Three.js сцена и рендеринг
447
+ - **IfcTreeView** - компонент дерева IFC структуры
448
+
449
+ ### Ключевые особенности
450
+
451
+ - **Web Workers отключены** - парсинг в главном потоке
452
+ - **IFCWorker исключен** - предотвращает проблемы интеграции
453
+ - **Fallback защита** - множественные пути к WASM файлу
454
+ - **Автономные стили** - встроенные CSS без внешних зависимостей
455
+
456
+ ### Для ассистентов по интеграции
457
+
458
+ При помощи с интеграцией пакета учитывайте:
459
+
460
+ 1. **WASM файл автоматически включен** - никаких дополнительных настроек не требуется
461
+ 2. **Web Workers отключены** - не пытайтесь их включить
462
+ 3. **Используйте параметр wasmUrl** только для кастомных путей (опционально)
463
+ 4. **Пакет полностью автономен** - не требует внешних CSS фреймворков
464
+ 5. **Поддерживает все современные фреймворки** - React, Vue, Angular, Laravel
465
+ 6. **Работает "из коробки"** - просто установите и используйте
466
+
467
+ ### Отладка
468
+
469
+ - Проверьте консоль на сообщение "Web Workers отключены"
470
+ - WASM файл автоматически загружается из пакета
471
+ - Используйте DevTools → Network для проверки загрузки ресурсов
472
+ - При проблемах используйте параметр `wasmUrl` для кастомного пути
473
+
325
474
  ## 📄 Лицензия
326
475
 
327
476
  MIT License
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sequent-org/ifc-viewer",
3
3
  "private": false,
4
- "version": "1.0.5-ci.9.0",
4
+ "version": "1.0.7-ci.10.0",
5
5
  "type": "module",
6
6
  "description": "IFC 3D model viewer component for web applications",
7
7
  "main": "src/index.js",
@@ -10,11 +10,12 @@
10
10
  ".": {
11
11
  "import": "./src/index.js"
12
12
  },
13
- "./style.css": "./src/style.css"
13
+ "./style.css": "./src/style.css",
14
+ "./wasm/web-ifc.wasm": "./wasm/web-ifc.wasm"
14
15
  },
15
16
  "files": [
16
17
  "src/",
17
- "public/wasm/",
18
+ "wasm/",
18
19
  "README.md"
19
20
  ],
20
21
  "keywords": [
@@ -2,12 +2,10 @@
2
2
  // Требует three@^0.149 и web-ifc-three совместимой версии
3
3
 
4
4
  import { IFCLoader } from "web-ifc-three/IFCLoader";
5
- // Абсолютный URL до wasm-асета из папки public (Vite подставит корректный путь)
5
+ // Автоматический импорт WASM файла из пакета
6
6
  import WEBIFC_WASM_URL from '/wasm/web-ifc.wasm?url';
7
- // URL собранного воркера через Vite (даёт корректный путь для useWebWorkers)
8
- // Важно: используем ?url, чтобы получить сырой URL ассета и создать классический Worker,
9
- // т.к. web-ifc-three создаёт воркер без { type: 'module' }
10
- import IFCWorkerUrl from 'web-ifc-three/IFCWorker.js?url';
7
+ // Примечание: IFCWorker не используется, так как мы отключаем Web Workers
8
+ // для стабильности работы в различных окружениях
11
9
 
12
10
  export class IfcService {
13
11
  /**
@@ -28,8 +26,14 @@ export class IfcService {
28
26
  init() {
29
27
  try {
30
28
  this.loader = new IFCLoader();
31
- // Отключаем Web Worker: временно парсим в главном потоке для стабильности
32
- try { this.loader.ifcManager.useWebWorkers?.(false); } catch(_) {}
29
+ // Отключаем Web Workers: парсим в главном потоке для стабильности
30
+ // Это предотвращает проблемы с загрузкой IFCWorker в различных окружениях
31
+ try {
32
+ this.loader.ifcManager.useWebWorkers?.(false);
33
+ console.log('IfcService: Web Workers отключены, парсинг в главном потоке');
34
+ } catch (error) {
35
+ console.warn('IfcService: не удалось отключить Web Workers:', error.message);
36
+ }
33
37
 
34
38
  // Настройка пути к WASM файлу с улучшенной обработкой ошибок
35
39
  this._setupWasmPath();
@@ -77,17 +81,17 @@ export class IfcService {
77
81
  paths.push(this.wasmUrl);
78
82
  }
79
83
 
80
- // 2. Пути по умолчанию
84
+ // 2. WASM файл из пакета (автоматически включен в сборку)
81
85
  try {
82
- const wasmDir = new URL('.', WEBIFC_WASM_URL).href;
83
- paths.push(wasmDir);
86
+ paths.push(WEBIFC_WASM_URL);
84
87
  } catch (_) {}
85
88
 
86
89
  try {
87
- paths.push(WEBIFC_WASM_URL);
90
+ const wasmDir = new URL('.', WEBIFC_WASM_URL).href;
91
+ paths.push(wasmDir);
88
92
  } catch (_) {}
89
93
 
90
- // 3. Резервные пути
94
+ // 3. Резервные пути для обратной совместимости
91
95
  paths.push('/wasm/', '/wasm/web-ifc.wasm', '/web-ifc.wasm');
92
96
 
93
97
  return paths;
Binary file