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