@2112-lab/central-plant 0.1.4 → 0.1.5

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.
Files changed (87) hide show
  1. package/dist/cjs/_virtual/_rollupPluginBabelHelpers.js +432 -1
  2. package/dist/cjs/node_modules/@2112-lab/pathfinder/dist/index.esm.js +1448 -1
  3. package/dist/cjs/node_modules/three/examples/jsm/controls/OrbitControls.js +1853 -1
  4. package/dist/cjs/node_modules/three/examples/jsm/exporters/GLTFExporter.js +3537 -1
  5. package/dist/cjs/node_modules/three/examples/jsm/exporters/OBJExporter.js +305 -1
  6. package/dist/cjs/node_modules/three/examples/jsm/exporters/PLYExporter.js +542 -1
  7. package/dist/cjs/node_modules/three/examples/jsm/exporters/STLExporter.js +218 -1
  8. package/dist/cjs/node_modules/three/examples/jsm/loaders/DRACOLoader.js +683 -1
  9. package/dist/cjs/node_modules/three/examples/jsm/loaders/GLTFLoader.js +4811 -1
  10. package/dist/cjs/node_modules/three/examples/jsm/loaders/RGBELoader.js +480 -1
  11. package/dist/cjs/node_modules/three/examples/jsm/renderers/CSS2DRenderer.js +309 -1
  12. package/dist/cjs/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +120 -1
  13. package/dist/cjs/src/analysis/analysis.js +560 -1
  14. package/dist/cjs/src/analysis/testing.js +958 -1
  15. package/dist/cjs/src/core/centralPlant.js +1149 -1
  16. package/dist/cjs/src/core/debugLogger.js +175 -1
  17. package/dist/cjs/src/core/mathUtils.js +574 -1
  18. package/dist/cjs/src/core/nameUtils.js +93 -1
  19. package/dist/cjs/src/data/export.js +716 -1
  20. package/dist/cjs/src/data/import.js +380 -1
  21. package/dist/cjs/src/data/numerics.js +522 -1
  22. package/dist/cjs/src/helpers/sceneHelper.js +572 -1
  23. package/dist/cjs/src/index.js +69 -1
  24. package/dist/cjs/src/managers/components/animationManager.js +123 -1
  25. package/dist/cjs/src/managers/components/componentManager.js +332 -1
  26. package/dist/cjs/src/managers/components/pathfindingManager.js +1441 -1
  27. package/dist/cjs/src/managers/controls/TransformControls.js +1063 -1
  28. package/dist/cjs/src/managers/controls/cameraControlsManager.js +79 -1
  29. package/dist/cjs/src/managers/controls/dragDropManager.js +1026 -1
  30. package/dist/cjs/src/managers/controls/keyboardControlsManager.js +395 -1
  31. package/dist/cjs/src/managers/controls/transformControlsManager.js +1807 -1
  32. package/dist/cjs/src/managers/environment/environmentManager.js +714 -1
  33. package/dist/cjs/src/managers/environment/textureConfig.js +229 -1
  34. package/dist/cjs/src/managers/scene/sceneExportManager.js +264 -1
  35. package/dist/cjs/src/managers/scene/sceneInitializationManager.js +346 -1
  36. package/dist/cjs/src/managers/scene/sceneOperationsManager.js +1509 -1
  37. package/dist/cjs/src/managers/scene/sceneTooltipsManager.js +661 -1
  38. package/dist/cjs/src/managers/system/disposalManager.js +444 -1
  39. package/dist/cjs/src/managers/system/hotReloadManager.js +291 -1
  40. package/dist/cjs/src/managers/system/performanceMonitor.js +863 -1
  41. package/dist/cjs/src/rendering/modelPreloader.js +369 -1
  42. package/dist/cjs/src/rendering/rendering2D.js +631 -1
  43. package/dist/cjs/src/rendering/rendering3D.js +685 -1
  44. package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +396 -1
  45. package/dist/esm/node_modules/@2112-lab/pathfinder/dist/index.esm.js +1444 -1
  46. package/dist/esm/node_modules/three/examples/jsm/controls/OrbitControls.js +1849 -1
  47. package/dist/esm/node_modules/three/examples/jsm/exporters/GLTFExporter.js +3533 -1
  48. package/dist/esm/node_modules/three/examples/jsm/exporters/OBJExporter.js +301 -1
  49. package/dist/esm/node_modules/three/examples/jsm/exporters/PLYExporter.js +538 -1
  50. package/dist/esm/node_modules/three/examples/jsm/exporters/STLExporter.js +214 -1
  51. package/dist/esm/node_modules/three/examples/jsm/loaders/DRACOLoader.js +679 -1
  52. package/dist/esm/node_modules/three/examples/jsm/loaders/GLTFLoader.js +4807 -1
  53. package/dist/esm/node_modules/three/examples/jsm/loaders/RGBELoader.js +476 -1
  54. package/dist/esm/node_modules/three/examples/jsm/renderers/CSS2DRenderer.js +304 -1
  55. package/dist/esm/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +116 -1
  56. package/dist/esm/src/analysis/analysis.js +536 -1
  57. package/dist/esm/src/analysis/testing.js +954 -1
  58. package/dist/esm/src/core/centralPlant.js +1144 -1
  59. package/dist/esm/src/core/debugLogger.js +167 -1
  60. package/dist/esm/src/core/mathUtils.js +570 -1
  61. package/dist/esm/src/core/nameUtils.js +87 -1
  62. package/dist/esm/src/data/export.js +712 -1
  63. package/dist/esm/src/data/import.js +356 -1
  64. package/dist/esm/src/data/numerics.js +518 -1
  65. package/dist/esm/src/helpers/sceneHelper.js +547 -1
  66. package/dist/esm/src/index.js +35 -1
  67. package/dist/esm/src/managers/components/animationManager.js +119 -1
  68. package/dist/esm/src/managers/components/componentManager.js +328 -1
  69. package/dist/esm/src/managers/components/pathfindingManager.js +1417 -1
  70. package/dist/esm/src/managers/controls/TransformControls.js +1057 -1
  71. package/dist/esm/src/managers/controls/cameraControlsManager.js +75 -1
  72. package/dist/esm/src/managers/controls/dragDropManager.js +1002 -1
  73. package/dist/esm/src/managers/controls/keyboardControlsManager.js +371 -1
  74. package/dist/esm/src/managers/controls/transformControlsManager.js +1782 -1
  75. package/dist/esm/src/managers/environment/environmentManager.js +690 -1
  76. package/dist/esm/src/managers/environment/textureConfig.js +202 -1
  77. package/dist/esm/src/managers/scene/sceneExportManager.js +260 -1
  78. package/dist/esm/src/managers/scene/sceneInitializationManager.js +322 -1
  79. package/dist/esm/src/managers/scene/sceneOperationsManager.js +1485 -1
  80. package/dist/esm/src/managers/scene/sceneTooltipsManager.js +637 -1
  81. package/dist/esm/src/managers/system/disposalManager.js +440 -1
  82. package/dist/esm/src/managers/system/hotReloadManager.js +287 -1
  83. package/dist/esm/src/managers/system/performanceMonitor.js +858 -1
  84. package/dist/esm/src/rendering/modelPreloader.js +364 -1
  85. package/dist/esm/src/rendering/rendering2D.js +627 -1
  86. package/dist/esm/src/rendering/rendering3D.js +661 -1
  87. package/package.json +1 -1
@@ -1 +1,356 @@
1
- import{createClass as e,slicedToArray as r,classCallCheck as t,asyncToGenerator as o,regenerator as n,toConsumableArray as s,createForOfIteratorHelper as i}from"../../_virtual/_rollupPluginBabelHelpers.js";import*as a from"three";import{GLTFLoader as c}from"../../node_modules/three/examples/jsm/loaders/GLTFLoader.js";import{DRACOLoader as u}from"../../node_modules/three/examples/jsm/loaders/DRACOLoader.js";import{logger as l}from"../core/debugLogger.js";var f=function(){return e(function e(){t(this,e),this.gltfLoader=new c,this.dracoLoader=new u,this.textureLoader=new a.TextureLoader,this.dracoLoader.setDecoderPath("/draco/"),this.gltfLoader.setDRACOLoader(this.dracoLoader),this.supportedFormats={models:[".glb",".gltf"],textures:[".jpg",".jpeg",".png",".hdr",".exr"],scenes:[".json"],configs:[".json",".yaml",".yml"]}},[{key:"importModel",value:(d=o(n().m(function e(r){var t,o,i,a,c,u,f,m,p,d,h,v,g,y,w,k=this,b=arguments;return n().w(function(e){for(;;)switch(e.n){case 0:return o=(t=b.length>1&&void 0!==b[1]?b[1]:{}).scale,i=void 0===o?1:o,a=t.position,c=void 0===a?[0,0,0]:a,u=t.rotation,f=void 0===u?[0,0,0]:u,m=t.castShadow,p=void 0===m||m,d=t.receiveShadow,h=void 0===d||d,e.p=1,l.info("🔄 Importing model: ".concat(r)),e.n=2,new Promise(function(e,t){k.gltfLoader.load(r,e,function(e){var r=(e.loaded/e.total*100).toFixed(1);l.debug("Loading progress: ".concat(r,"%"))},t)});case 2:return y=e.v,1!==i&&y.scene.scale.setScalar(i),(v=y.scene.position).set.apply(v,s(c)),(g=y.scene.rotation).set.apply(g,s(f)),y.scene.traverse(function(e){e.isMesh&&(e.castShadow=p,e.receiveShadow=h)}),l.info("✅ Model imported successfully: ".concat(r)),e.a(2,{scene:y.scene,animations:y.animations,cameras:y.cameras,asset:y.asset});case 3:throw e.p=3,w=e.v,l.error("❌ Failed to import model ".concat(r,":"),w),w;case 4:return e.a(2)}},e,null,[[1,3]])})),function(e){return d.apply(this,arguments)})},{key:"importTextures",value:(p=o(n().m(function e(r){var t,o,s,i,a=this;return n().w(function(e){for(;;)switch(e.n){case 0:return t=Array.isArray(r)?r:[r],e.p=1,o=t.map(function(e){return new Promise(function(r,t){a.textureLoader.load(e,r,void 0,t)})}),e.n=2,Promise.all(o);case 2:return s=e.v,l.info("✅ Imported ".concat(s.length," texture(s)")),e.a(2,Array.isArray(r)?s:s[0]);case 3:throw e.p=3,i=e.v,l.error("❌ Failed to import textures:",i),i;case 4:return e.a(2)}},e,null,[[1,3]])})),function(e){return p.apply(this,arguments)})},{key:"importSceneConfig",value:(m=o(n().m(function e(r){var t,o,s,i,a,c;return n().w(function(e){for(;;)switch(e.n){case 0:return e.p=0,l.info("🔄 Importing scene config: ".concat(r)),e.n=1,fetch(r);case 1:if((t=e.v).ok){e.n=2;break}throw new Error("HTTP ".concat(t.status,": ").concat(t.statusText));case 2:return e.n=3,t.json();case 3:for(o=e.v,s=0,i=["scene","connections"];s<i.length;s++)o[a=i[s]]||l.warn("⚠️ Missing required property: ".concat(a));return l.info("✅ Scene config imported: ".concat(r)),e.a(2,o);case 4:throw e.p=4,c=e.v,l.error("❌ Failed to import scene config ".concat(r,":"),c),c;case 5:return e.a(2)}},e,null,[[0,4]])})),function(e){return m.apply(this,arguments)})},{key:"importBatch",value:(f=o(n().m(function e(r){var t,o,s,a,c,u,f,m,p;return n().w(function(e){for(;;)switch(e.n){case 0:l.info("🔄 Starting batch import of ".concat(r.length," files")),t=[],o=[],s=i(r),e.p=1,s.s();case 2:if((a=s.n()).done){e.n=14;break}c=a.value,e.p=3,u=void 0,f=c.type,e.n="model"===f?4:"texture"===f?6:"scene"===f?8:10;break;case 4:return e.n=5,this.importModel(c.url,c.options);case 5:return u=e.v,e.a(3,11);case 6:return e.n=7,this.importTextures(c.url);case 7:return u=e.v,e.a(3,11);case 8:return e.n=9,this.importSceneConfig(c.url);case 9:return u=e.v,e.a(3,11);case 10:throw new Error("Unknown import type: ".concat(c.type));case 11:t.push({url:c.url,type:c.type,data:u}),e.n=13;break;case 12:e.p=12,m=e.v,o.push({url:c.url,type:c.type,error:m}),l.error("❌ Failed to import ".concat(c.url,":"),m);case 13:e.n=2;break;case 14:e.n=16;break;case 15:e.p=15,p=e.v,s.e(p);case 16:return e.p=16,s.f(),e.f(16);case 17:return l.info("✅ Batch import complete: ".concat(t.length," successful, ").concat(o.length," failed")),e.a(2,{results:t,errors:o})}},e,this,[[3,12],[1,15,16,17]])})),function(e){return f.apply(this,arguments)})},{key:"isFormatSupported",value:function(e,r){var t,o="."+e.split(".").pop().toLowerCase();return(null===(t=this.supportedFormats[r])||void 0===t?void 0:t.includes(o))||!1}},{key:"getFormatInfo",value:function(e){for(var t="."+e.split(".").pop().toLowerCase(),o=0,n=Object.entries(this.supportedFormats);o<n.length;o++){var s=r(n[o],2),i=s[0];if(s[1].includes(t))return{category:i,extension:t,supported:!0}}return{category:"unknown",extension:t,supported:!1}}},{key:"dispose",value:function(){this.dracoLoader.dispose&&this.dracoLoader.dispose(),l.info("Import disposed")}}]);var f,m,p,d}();export{f as Import};
1
+ import { createClass as _createClass, slicedToArray as _slicedToArray, classCallCheck as _classCallCheck, asyncToGenerator as _asyncToGenerator, regenerator as _regenerator, toConsumableArray as _toConsumableArray, createForOfIteratorHelper as _createForOfIteratorHelper } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import * as THREE from 'three';
3
+ import { GLTFLoader } from '../../node_modules/three/examples/jsm/loaders/GLTFLoader.js';
4
+ import { DRACOLoader } from '../../node_modules/three/examples/jsm/loaders/DRACOLoader.js';
5
+ import { logger } from '../core/debugLogger.js';
6
+
7
+ var Import = /*#__PURE__*/function () {
8
+ function Import() {
9
+ _classCallCheck(this, Import);
10
+ this.gltfLoader = new GLTFLoader();
11
+ this.dracoLoader = new DRACOLoader();
12
+ this.textureLoader = new THREE.TextureLoader();
13
+
14
+ // Configure DRACO decoder
15
+ this.dracoLoader.setDecoderPath('/draco/');
16
+ this.gltfLoader.setDRACOLoader(this.dracoLoader);
17
+ this.supportedFormats = {
18
+ models: ['.glb', '.gltf'],
19
+ textures: ['.jpg', '.jpeg', '.png', '.hdr', '.exr'],
20
+ scenes: ['.json'],
21
+ configs: ['.json', '.yaml', '.yml']
22
+ };
23
+ }
24
+
25
+ /**
26
+ * Import a 3D model file
27
+ * @param {string} url - Path to the model file
28
+ * @param {Object} options - Import options
29
+ * @returns {Promise<Object>} Imported model data
30
+ */
31
+ return _createClass(Import, [{
32
+ key: "importModel",
33
+ value: (function () {
34
+ var _importModel = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(url) {
35
+ var _this = this;
36
+ var options,
37
+ _options$scale,
38
+ scale,
39
+ _options$position,
40
+ position,
41
+ _options$rotation,
42
+ rotation,
43
+ _options$castShadow,
44
+ castShadow,
45
+ _options$receiveShado,
46
+ receiveShadow,
47
+ _gltf$scene$position,
48
+ _gltf$scene$rotation,
49
+ gltf,
50
+ _args = arguments,
51
+ _t;
52
+ return _regenerator().w(function (_context) {
53
+ while (1) switch (_context.n) {
54
+ case 0:
55
+ options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};
56
+ _options$scale = options.scale, scale = _options$scale === void 0 ? 1 : _options$scale, _options$position = options.position, position = _options$position === void 0 ? [0, 0, 0] : _options$position, _options$rotation = options.rotation, rotation = _options$rotation === void 0 ? [0, 0, 0] : _options$rotation, _options$castShadow = options.castShadow, castShadow = _options$castShadow === void 0 ? true : _options$castShadow, _options$receiveShado = options.receiveShadow, receiveShadow = _options$receiveShado === void 0 ? true : _options$receiveShado;
57
+ _context.p = 1;
58
+ logger.info("\uD83D\uDD04 Importing model: ".concat(url));
59
+ _context.n = 2;
60
+ return new Promise(function (resolve, reject) {
61
+ _this.gltfLoader.load(url, resolve, function (progress) {
62
+ var percent = (progress.loaded / progress.total * 100).toFixed(1);
63
+ logger.debug("Loading progress: ".concat(percent, "%"));
64
+ }, reject);
65
+ });
66
+ case 2:
67
+ gltf = _context.v;
68
+ // Apply transformations
69
+ if (scale !== 1) {
70
+ gltf.scene.scale.setScalar(scale);
71
+ }
72
+ (_gltf$scene$position = gltf.scene.position).set.apply(_gltf$scene$position, _toConsumableArray(position));
73
+ (_gltf$scene$rotation = gltf.scene.rotation).set.apply(_gltf$scene$rotation, _toConsumableArray(rotation));
74
+
75
+ // Configure shadows
76
+ gltf.scene.traverse(function (child) {
77
+ if (child.isMesh) {
78
+ child.castShadow = castShadow;
79
+ child.receiveShadow = receiveShadow;
80
+ }
81
+ });
82
+ logger.info("\u2705 Model imported successfully: ".concat(url));
83
+ return _context.a(2, {
84
+ scene: gltf.scene,
85
+ animations: gltf.animations,
86
+ cameras: gltf.cameras,
87
+ asset: gltf.asset
88
+ });
89
+ case 3:
90
+ _context.p = 3;
91
+ _t = _context.v;
92
+ logger.error("\u274C Failed to import model ".concat(url, ":"), _t);
93
+ throw _t;
94
+ case 4:
95
+ return _context.a(2);
96
+ }
97
+ }, _callee, null, [[1, 3]]);
98
+ }));
99
+ function importModel(_x) {
100
+ return _importModel.apply(this, arguments);
101
+ }
102
+ return importModel;
103
+ }()
104
+ /**
105
+ * Import texture files
106
+ * @param {string|Array} urls - Single URL or array of texture URLs
107
+ * @returns {Promise<THREE.Texture|Array>} Loaded texture(s)
108
+ */
109
+ )
110
+ }, {
111
+ key: "importTextures",
112
+ value: (function () {
113
+ var _importTextures = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(urls) {
114
+ var _this2 = this;
115
+ var urlArray, texturePromises, textures, _t2;
116
+ return _regenerator().w(function (_context2) {
117
+ while (1) switch (_context2.n) {
118
+ case 0:
119
+ urlArray = Array.isArray(urls) ? urls : [urls];
120
+ _context2.p = 1;
121
+ texturePromises = urlArray.map(function (url) {
122
+ return new Promise(function (resolve, reject) {
123
+ _this2.textureLoader.load(url, resolve, undefined, reject);
124
+ });
125
+ });
126
+ _context2.n = 2;
127
+ return Promise.all(texturePromises);
128
+ case 2:
129
+ textures = _context2.v;
130
+ logger.info("\u2705 Imported ".concat(textures.length, " texture(s)"));
131
+ return _context2.a(2, Array.isArray(urls) ? textures : textures[0]);
132
+ case 3:
133
+ _context2.p = 3;
134
+ _t2 = _context2.v;
135
+ logger.error('❌ Failed to import textures:', _t2);
136
+ throw _t2;
137
+ case 4:
138
+ return _context2.a(2);
139
+ }
140
+ }, _callee2, null, [[1, 3]]);
141
+ }));
142
+ function importTextures(_x2) {
143
+ return _importTextures.apply(this, arguments);
144
+ }
145
+ return importTextures;
146
+ }()
147
+ /**
148
+ * Import scene configuration from JSON
149
+ * @param {string} url - Path to the scene JSON file
150
+ * @returns {Promise<Object>} Scene configuration
151
+ */
152
+ )
153
+ }, {
154
+ key: "importSceneConfig",
155
+ value: (function () {
156
+ var _importSceneConfig = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(url) {
157
+ var response, sceneData, requiredProps, _i, _requiredProps, prop, _t3;
158
+ return _regenerator().w(function (_context3) {
159
+ while (1) switch (_context3.n) {
160
+ case 0:
161
+ _context3.p = 0;
162
+ logger.info("\uD83D\uDD04 Importing scene config: ".concat(url));
163
+ _context3.n = 1;
164
+ return fetch(url);
165
+ case 1:
166
+ response = _context3.v;
167
+ if (response.ok) {
168
+ _context3.n = 2;
169
+ break;
170
+ }
171
+ throw new Error("HTTP ".concat(response.status, ": ").concat(response.statusText));
172
+ case 2:
173
+ _context3.n = 3;
174
+ return response.json();
175
+ case 3:
176
+ sceneData = _context3.v;
177
+ // Validate required scene properties
178
+ requiredProps = ['scene', 'connections'];
179
+ for (_i = 0, _requiredProps = requiredProps; _i < _requiredProps.length; _i++) {
180
+ prop = _requiredProps[_i];
181
+ if (!sceneData[prop]) {
182
+ logger.warn("\u26A0\uFE0F Missing required property: ".concat(prop));
183
+ }
184
+ }
185
+ logger.info("\u2705 Scene config imported: ".concat(url));
186
+ return _context3.a(2, sceneData);
187
+ case 4:
188
+ _context3.p = 4;
189
+ _t3 = _context3.v;
190
+ logger.error("\u274C Failed to import scene config ".concat(url, ":"), _t3);
191
+ throw _t3;
192
+ case 5:
193
+ return _context3.a(2);
194
+ }
195
+ }, _callee3, null, [[0, 4]]);
196
+ }));
197
+ function importSceneConfig(_x3) {
198
+ return _importSceneConfig.apply(this, arguments);
199
+ }
200
+ return importSceneConfig;
201
+ }()
202
+ /**
203
+ * Import multiple files in batch
204
+ * @param {Array} fileList - Array of file objects with {url, type, options}
205
+ * @returns {Promise<Array>} Array of imported data
206
+ */
207
+ )
208
+ }, {
209
+ key: "importBatch",
210
+ value: (function () {
211
+ var _importBatch = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(fileList) {
212
+ var results, errors, _iterator, _step, file, result, _t4, _t5, _t6;
213
+ return _regenerator().w(function (_context4) {
214
+ while (1) switch (_context4.n) {
215
+ case 0:
216
+ logger.info("\uD83D\uDD04 Starting batch import of ".concat(fileList.length, " files"));
217
+ results = [];
218
+ errors = [];
219
+ _iterator = _createForOfIteratorHelper(fileList);
220
+ _context4.p = 1;
221
+ _iterator.s();
222
+ case 2:
223
+ if ((_step = _iterator.n()).done) {
224
+ _context4.n = 14;
225
+ break;
226
+ }
227
+ file = _step.value;
228
+ _context4.p = 3;
229
+ result = void 0;
230
+ _t4 = file.type;
231
+ _context4.n = _t4 === 'model' ? 4 : _t4 === 'texture' ? 6 : _t4 === 'scene' ? 8 : 10;
232
+ break;
233
+ case 4:
234
+ _context4.n = 5;
235
+ return this.importModel(file.url, file.options);
236
+ case 5:
237
+ result = _context4.v;
238
+ return _context4.a(3, 11);
239
+ case 6:
240
+ _context4.n = 7;
241
+ return this.importTextures(file.url);
242
+ case 7:
243
+ result = _context4.v;
244
+ return _context4.a(3, 11);
245
+ case 8:
246
+ _context4.n = 9;
247
+ return this.importSceneConfig(file.url);
248
+ case 9:
249
+ result = _context4.v;
250
+ return _context4.a(3, 11);
251
+ case 10:
252
+ throw new Error("Unknown import type: ".concat(file.type));
253
+ case 11:
254
+ results.push({
255
+ url: file.url,
256
+ type: file.type,
257
+ data: result
258
+ });
259
+ _context4.n = 13;
260
+ break;
261
+ case 12:
262
+ _context4.p = 12;
263
+ _t5 = _context4.v;
264
+ errors.push({
265
+ url: file.url,
266
+ type: file.type,
267
+ error: _t5
268
+ });
269
+ logger.error("\u274C Failed to import ".concat(file.url, ":"), _t5);
270
+ case 13:
271
+ _context4.n = 2;
272
+ break;
273
+ case 14:
274
+ _context4.n = 16;
275
+ break;
276
+ case 15:
277
+ _context4.p = 15;
278
+ _t6 = _context4.v;
279
+ _iterator.e(_t6);
280
+ case 16:
281
+ _context4.p = 16;
282
+ _iterator.f();
283
+ return _context4.f(16);
284
+ case 17:
285
+ logger.info("\u2705 Batch import complete: ".concat(results.length, " successful, ").concat(errors.length, " failed"));
286
+ return _context4.a(2, {
287
+ results: results,
288
+ errors: errors
289
+ });
290
+ }
291
+ }, _callee4, this, [[3, 12], [1, 15, 16, 17]]);
292
+ }));
293
+ function importBatch(_x4) {
294
+ return _importBatch.apply(this, arguments);
295
+ }
296
+ return importBatch;
297
+ }()
298
+ /**
299
+ * Check if file format is supported
300
+ * @param {string} filename - Name of the file
301
+ * @param {string} category - Category to check (models, textures, scenes, configs)
302
+ * @returns {boolean} Whether format is supported
303
+ */
304
+ )
305
+ }, {
306
+ key: "isFormatSupported",
307
+ value: function isFormatSupported(filename, category) {
308
+ var _this$supportedFormat;
309
+ var extension = '.' + filename.split('.').pop().toLowerCase();
310
+ return ((_this$supportedFormat = this.supportedFormats[category]) === null || _this$supportedFormat === void 0 ? void 0 : _this$supportedFormat.includes(extension)) || false;
311
+ }
312
+
313
+ /**
314
+ * Get file format information
315
+ * @param {string} filename - Name of the file
316
+ * @returns {Object} Format information
317
+ */
318
+ }, {
319
+ key: "getFormatInfo",
320
+ value: function getFormatInfo(filename) {
321
+ var extension = '.' + filename.split('.').pop().toLowerCase();
322
+ for (var _i2 = 0, _Object$entries = Object.entries(this.supportedFormats); _i2 < _Object$entries.length; _i2++) {
323
+ var _Object$entries$_i = _slicedToArray(_Object$entries[_i2], 2),
324
+ category = _Object$entries$_i[0],
325
+ formats = _Object$entries$_i[1];
326
+ if (formats.includes(extension)) {
327
+ return {
328
+ category: category,
329
+ extension: extension,
330
+ supported: true
331
+ };
332
+ }
333
+ }
334
+ return {
335
+ category: 'unknown',
336
+ extension: extension,
337
+ supported: false
338
+ };
339
+ }
340
+
341
+ /**
342
+ * Dispose of loaders and free memory
343
+ */
344
+ }, {
345
+ key: "dispose",
346
+ value: function dispose() {
347
+ // Clean up loaders if they have dispose methods
348
+ if (this.dracoLoader.dispose) {
349
+ this.dracoLoader.dispose();
350
+ }
351
+ logger.info('Import disposed');
352
+ }
353
+ }]);
354
+ }();
355
+
356
+ export { Import };