@sequent-org/ifc-viewer 1.0.2-ci.2.0 → 1.0.2-ci.4.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 ADDED
@@ -0,0 +1,201 @@
1
+ # @sequent-org/ifc-viewer
2
+
3
+ IFC 3D model viewer component for web applications. Основан на Three.js и web-ifc для просмотра BIM моделей в браузере.
4
+
5
+ ## 🚀 Установка
6
+
7
+ ```bash
8
+ npm install @sequent-org/ifc-viewer
9
+ ```
10
+
11
+ ## 📋 Основное использование
12
+
13
+ ### Простой пример
14
+
15
+ ```javascript
16
+ import { IfcViewer } from '@sequent-org/ifc-viewer'
17
+
18
+ // Создание просмотрщика с автозагрузкой модели (минимальный режим)
19
+ const viewer = new IfcViewer({
20
+ container: document.getElementById('viewer-container'),
21
+ ifcUrl: '/path/to/model.ifc'
22
+ // showSidebar: false (по умолчанию)
23
+ // showControls: false (по умолчанию)
24
+ // showToolbar: true (по умолчанию)
25
+ })
26
+
27
+ await viewer.init()
28
+ ```
29
+
30
+ ### Интеграция в Laravel + Vite
31
+
32
+ В Laravel проекте с Vite:
33
+
34
+ ```javascript
35
+ // В вашем JS файле
36
+ import { IfcViewer } from '@sequent-org/ifc-viewer'
37
+
38
+ function showIfcModal(ifcUrl) {
39
+ const modal = document.getElementById('ifc-modal')
40
+ const container = modal.querySelector('.modal-content')
41
+
42
+ const viewer = new IfcViewer({
43
+ container: container,
44
+ ifcUrl: ifcUrl
45
+ // Минимальный режим по умолчанию - только просмотрщик с верхней панелью
46
+ })
47
+
48
+ viewer.init().then(() => {
49
+ modal.style.display = 'flex'
50
+ })
51
+ }
52
+ ```
53
+
54
+ ### Загрузка пользовательского файла
55
+
56
+ ```javascript
57
+ const viewer = new IfcViewer({
58
+ container: '#viewer-container',
59
+ autoLoad: false // не загружать автоматически
60
+ // По умолчанию только верхняя панель, загрузка через кнопку "📁 Загрузить"
61
+ })
62
+
63
+ await viewer.init()
64
+
65
+ // Альтернативно: программная загрузка файла
66
+ const fileInput = document.getElementById('file-input')
67
+ fileInput.addEventListener('change', async (e) => {
68
+ const file = e.target.files[0]
69
+ if (file) {
70
+ await viewer.loadModel(file)
71
+ }
72
+ })
73
+ ```
74
+
75
+ ## ⚙️ Опции конфигурации
76
+
77
+ | Опция | Тип | По умолчанию | Описание |
78
+ |-------|-----|--------------|----------|
79
+ | `container` | `HTMLElement \| string` | **обязательно** | DOM элемент или селектор для контейнера |
80
+ | `ifcUrl` | `string` | `null` | URL для загрузки IFC файла |
81
+ | `ifcFile` | `File` | `null` | File объект для загрузки |
82
+ | `showSidebar` | `boolean` | `false` | Показывать боковую панель с деревом |
83
+ | `showControls` | `boolean` | `false` | Показывать нижние кнопки управления |
84
+ | `showToolbar` | `boolean` | `true` | Показывать верхнюю панель инструментов |
85
+ | `autoLoad` | `boolean` | `true` | Автоматически загружать при инициализации |
86
+ | `theme` | `string` | `'light'` | Тема интерфейса (`'light'` \| `'dark'`) |
87
+
88
+ ## 🎯 API методы
89
+
90
+ ### Основные методы
91
+
92
+ ```javascript
93
+ // Инициализация просмотрщика
94
+ await viewer.init()
95
+
96
+ // Загрузка модели
97
+ await viewer.loadModel('/path/to/model.ifc') // по URL
98
+ await viewer.loadModel(fileObject) // File объект
99
+
100
+ // Управление интерфейсом
101
+ viewer.setSidebarVisible(true)
102
+ viewer.setTheme('dark')
103
+
104
+ // Получение информации
105
+ const modelInfo = viewer.getModelInfo()
106
+ const threeViewer = viewer.getViewer()
107
+ const ifcService = viewer.getIfcService()
108
+
109
+ // Освобождение ресурсов
110
+ viewer.dispose()
111
+ ```
112
+
113
+ ## 📡 События
114
+
115
+ Просмотрщик отправляет пользовательские события:
116
+
117
+ ```javascript
118
+ const container = document.getElementById('viewer-container')
119
+
120
+ // Готовность к работе
121
+ container.addEventListener('ifcviewer:ready', (e) => {
122
+ console.log('Просмотрщик готов', e.detail.viewer)
123
+ })
124
+
125
+ // Модель загружена
126
+ container.addEventListener('ifcviewer:model-loaded', (e) => {
127
+ console.log('Модель загружена', e.detail.model)
128
+ })
129
+
130
+ // Ошибка
131
+ container.addEventListener('ifcviewer:error', (e) => {
132
+ console.error('Ошибка просмотрщика', e.detail.error)
133
+ })
134
+
135
+ // Освобождение ресурсов
136
+ container.addEventListener('ifcviewer:disposed', (e) => {
137
+ console.log('Ресурсы освобождены')
138
+ })
139
+ ```
140
+
141
+ ## 🎨 Стили
142
+
143
+ Стили подключаются автоматически при импорте пакета. Если нужно подключить стили отдельно:
144
+
145
+ ```javascript
146
+ import '@sequent-org/ifc-viewer/style.css'
147
+ ```
148
+
149
+ ## 🎛️ Функции верхней панели
150
+
151
+ При включенной опции `showToolbar` доступны следующие инструменты:
152
+
153
+ ### Качество рендеринга
154
+ - **Low** - Низкое качество для слабых устройств
155
+ - **Med** - Среднее качество (по умолчанию)
156
+ - **High** - Высокое качество для детального просмотра
157
+
158
+ ### Стили отображения
159
+ - **Edges** - Показ/скрытие контуров граней
160
+ - **Flat** - Переключение плоского/гладкого затенения
161
+
162
+ ### Секущие плоскости
163
+ - **Clip X/Y/Z** - Активация секущих плоскостей по осям
164
+ - При активации появляются слайдеры для точной настройки позиции
165
+ - Одновременно активна только одна плоскость
166
+
167
+ ### Загрузка файлов
168
+ - **📁 Загрузить** - Кнопка выбора IFC файла пользователем
169
+
170
+ ## 🧪 Тестирование
171
+
172
+ Для локального тестирования пакета:
173
+
174
+ ```bash
175
+ git clone <repo-url>
176
+ cd ifc-viewer
177
+ npm install
178
+ npm run test:manual
179
+ ```
180
+
181
+ Откроется страница `test.html` с интерактивными тестами.
182
+
183
+ ## 📦 Поддерживаемые форматы
184
+
185
+ - `.ifc` - стандартные IFC файлы
186
+ - `.ifczip` - архивы IFC
187
+ - `.zip` - ZIP архивы с IFC файлами
188
+
189
+ ## 🔧 Системные требования
190
+
191
+ - Node.js >= 16
192
+ - Современный браузер с поддержкой WebGL
193
+ - Для работы требуются файлы `web-ifc.wasm` в публичной папке проекта
194
+
195
+ ## 📄 Лицензия
196
+
197
+ MIT License
198
+
199
+ ## 🤝 Поддержка
200
+
201
+ Для вопросов и предложений создавайте Issues в репозитории проекта.
package/package.json CHANGED
@@ -1,15 +1,42 @@
1
1
  {
2
2
  "name": "@sequent-org/ifc-viewer",
3
3
  "private": false,
4
- "version": "1.0.2-ci.2.0",
4
+ "version": "1.0.2-ci.4.0",
5
5
  "type": "module",
6
+ "description": "IFC 3D model viewer component for web applications",
7
+ "main": "src/index.js",
8
+ "module": "src/index.js",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./src/index.js"
12
+ },
13
+ "./style.css": "./src/style.css"
14
+ },
15
+ "files": [
16
+ "src/",
17
+ "public/wasm/",
18
+ "README.md"
19
+ ],
20
+ "keywords": [
21
+ "ifc",
22
+ "3d",
23
+ "viewer",
24
+ "bim",
25
+ "three.js",
26
+ "web-ifc"
27
+ ],
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "git+https://github.com/sequent-org/ifc-viewer.git"
31
+ },
6
32
  "publishConfig": {
7
33
  "access": "public"
8
34
  },
9
35
  "scripts": {
10
36
  "dev": "vite",
11
37
  "build": "vite build",
12
- "preview": "vite preview"
38
+ "preview": "vite preview",
39
+ "test:manual": "vite dev --open test.html"
13
40
  },
14
41
  "devDependencies": {
15
42
  "@tailwindcss/postcss": "^4.1.13",