@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,123 @@
1
- "use strict";Object.defineProperty(exports,"t",{value:!0});var t=require("../../../_virtual/_rollupPluginBabelHelpers.js"),e=require("../../core/debugLogger.js"),i=function(){return t.createClass(function e(i){t.classCallCheck(this,e),this.sceneViewer=i,this.lastFrameTime=0,this.targetFPS=60,this.frameInterval=1e3/this.targetFPS,this.animationId=null},[{key:"startAnimation",value:function(){var t=this,i=this.sceneViewer,n=function(e){i.isDestroyed||(t.animationId=requestAnimationFrame(n),e-t.lastFrameTime<t.frameInterval||(t.lastFrameTime=e,!i.isDestroyed&&i.controls&&i.renderer&&i.scene&&i.camera&&t.updateFrame()))};n(0),e.logger.info("Animation loop started")}},{key:"updateFrame",value:function(){var t=this.sceneViewer;t.controls.update(),t.performanceMonitor&&(t.performanceMonitor.update(),t.performanceMonitor.updateSceneStats(t.scene)),t.renderer.render(t.scene,t.camera),t.tooltipsManager&&t.tooltipsManager.render()}},{key:"stopAnimation",value:function(){this.animationId&&(cancelAnimationFrame(this.animationId),this.animationId=null,e.logger.info("Animation loop stopped"))}},{key:"setTargetFPS",value:function(t){this.targetFPS=t,this.frameInterval=1e3/this.targetFPS,e.logger.info("Target FPS set to: ".concat(t))}},{key:"getCurrentFPS",value:function(){var t=this.sceneViewer;return t.performanceMonitor?t.performanceMonitor.getCurrentFPS():null}},{key:"dispose",value:function(){this.stopAnimation(),this.lastFrameTime=0,e.logger.info("AnimationManager disposed")}}])}();exports.AnimationManager=i;
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
6
+ var debugLogger = require('../../core/debugLogger.js');
7
+
8
+ var AnimationManager = /*#__PURE__*/function () {
9
+ function AnimationManager(sceneViewer) {
10
+ _rollupPluginBabelHelpers.classCallCheck(this, AnimationManager);
11
+ this.sceneViewer = sceneViewer;
12
+ this.lastFrameTime = 0;
13
+ this.targetFPS = 60;
14
+ this.frameInterval = 1000 / this.targetFPS;
15
+ this.animationId = null;
16
+ }
17
+
18
+ /**
19
+ * Start the animation loop
20
+ */
21
+ return _rollupPluginBabelHelpers.createClass(AnimationManager, [{
22
+ key: "startAnimation",
23
+ value: function startAnimation() {
24
+ var _this = this;
25
+ var sceneViewer = this.sceneViewer;
26
+ var _loop = function loop(currentTime) {
27
+ // Check if sceneViewer is destroyed to prevent memory leaks
28
+ if (sceneViewer.isDestroyed) {
29
+ return;
30
+ }
31
+ _this.animationId = requestAnimationFrame(_loop);
32
+ if (currentTime - _this.lastFrameTime < _this.frameInterval) {
33
+ return;
34
+ }
35
+ _this.lastFrameTime = currentTime;
36
+
37
+ // Check again before updating in case sceneViewer was destroyed during frame
38
+ if (sceneViewer.isDestroyed || !sceneViewer.controls || !sceneViewer.renderer || !sceneViewer.scene || !sceneViewer.camera) {
39
+ return;
40
+ }
41
+ _this.updateFrame();
42
+ };
43
+ _loop(0);
44
+ debugLogger.logger.info('Animation loop started');
45
+ }
46
+
47
+ /**
48
+ * Update a single frame
49
+ */
50
+ }, {
51
+ key: "updateFrame",
52
+ value: function updateFrame() {
53
+ var sceneViewer = this.sceneViewer;
54
+
55
+ // Update controls
56
+ sceneViewer.controls.update();
57
+
58
+ // Update performance monitoring
59
+ if (sceneViewer.performanceMonitor) {
60
+ sceneViewer.performanceMonitor.update();
61
+ sceneViewer.performanceMonitor.updateSceneStats(sceneViewer.scene);
62
+ }
63
+
64
+ // Render the scene
65
+ sceneViewer.renderer.render(sceneViewer.scene, sceneViewer.camera);
66
+
67
+ // Render tooltips if tooltipsManager exists
68
+ if (sceneViewer.tooltipsManager) {
69
+ sceneViewer.tooltipsManager.render();
70
+ }
71
+ }
72
+
73
+ /**
74
+ * Stop the animation loop
75
+ */
76
+ }, {
77
+ key: "stopAnimation",
78
+ value: function stopAnimation() {
79
+ if (this.animationId) {
80
+ cancelAnimationFrame(this.animationId);
81
+ this.animationId = null;
82
+ debugLogger.logger.info('Animation loop stopped');
83
+ }
84
+ }
85
+
86
+ /**
87
+ * Set target FPS for the animation loop
88
+ */
89
+ }, {
90
+ key: "setTargetFPS",
91
+ value: function setTargetFPS(fps) {
92
+ this.targetFPS = fps;
93
+ this.frameInterval = 1000 / this.targetFPS;
94
+ debugLogger.logger.info("Target FPS set to: ".concat(fps));
95
+ }
96
+
97
+ /**
98
+ * Get current FPS information
99
+ */
100
+ }, {
101
+ key: "getCurrentFPS",
102
+ value: function getCurrentFPS() {
103
+ var sceneViewer = this.sceneViewer;
104
+ if (sceneViewer.performanceMonitor) {
105
+ return sceneViewer.performanceMonitor.getCurrentFPS();
106
+ }
107
+ return null;
108
+ }
109
+
110
+ /**
111
+ * Cleanup animation resources
112
+ */
113
+ }, {
114
+ key: "dispose",
115
+ value: function dispose() {
116
+ this.stopAnimation();
117
+ this.lastFrameTime = 0;
118
+ debugLogger.logger.info('AnimationManager disposed');
119
+ }
120
+ }]);
121
+ }();
122
+
123
+ exports.AnimationManager = AnimationManager;
@@ -1 +1,332 @@
1
- "use strict";Object.defineProperty(exports,"i",{value:!0});var e=require("../../../_virtual/_rollupPluginBabelHelpers.js");require("three");var n=require("../../core/nameUtils.js"),r=require("../../rendering/modelPreloader.js"),i=function(){return e.createClass(function n(r){e.classCallCheck(this,n),this.sceneViewer=r},[{key:"addComponentToScene",value:(i=e.asyncToGenerator(e.regenerator().m(function n(i){var o,t,u,a,l,d,c,s,v,f,m=this;return e.regenerator().w(function(n){for(;;)switch(n.n){case 0:if(n.p=0,i.libraryId&&i.modelKey){n.n=1;break}return n.a(2,!1);case 1:return t=i.libraryId+"-"+Date.now()+"-"+Math.random().toString(36).substr(2,9),u={},n.p=2,n.n=3,fetch("./library/component-dictionary.json");case 3:return a=n.v,n.n=4,a.json();case 4:u=n.v,n.n=6;break;case 5:return n.p=5,n.v,n.a(2,!1);case 6:if(l=u[i.libraryId]){n.n=7;break}return n.a(2,!1);case 7:if(d=i.position||{x:0,y:0,z:0},c=r.default.getCachedModelWithDimensions(l.modelKey,i.libraryId)){n.n=11;break}return n.p=8,n.n=9,new Promise(function(e,n){m.sceneViewer.gltfLoader.load("./library/models/".concat(l.modelKey),e,void 0,n)});case 9:s=n.v,c=s.scene,c=r.default.addDimensionsToModel(c,i.libraryId),n.n=11;break;case 10:return n.p=10,n.v,n.a(2,!1);case 11:return(v=c.clone()).uuid=t,v.name=(i.uuid||i.libraryId)+" Component",v.position.set(d.x,d.y,d.z),v.userData=e.objectSpread2({libraryId:i.libraryId,componentType:"component",forExport:!0,originalUuid:t},(null===(o=c.userData)||void 0===o?void 0:o.dimensions)&&{dimensions:c.userData.dimensions}),l.boundingBox&&(v.userData.dimensions={x:l.boundingBox.x,y:l.boundingBox.y,z:l.boundingBox.z}),l.adaptedBoundingBox&&(v.userData.adaptedBoundingBox={x:l.adaptedBoundingBox.x,y:l.adaptedBoundingBox.y,z:l.adaptedBoundingBox.z}),v.traverse(function(e){e.isMesh&&(e.castShadow=!0,e.receiveShadow=!0,e.material&&(e.material.envMapIntensity=1),e.name&&e.name.toLowerCase().includes("connector")&&(e.userData||(e.userData={}),e.userData.forExport=!0,e.userData.componentType="connector"))}),this.sceneViewer.scene.add(v),"undefined"!=typeof window&&(f=new CustomEvent("componentAdded",{detail:{component:v,libraryId:i.libraryId,uuid:t,position:v.position,dimensions:v.userData.dimensions}}),window.dispatchEvent(f)),this.sceneViewer.enableTransformControls&&this.sceneViewer.enableTransformControls(),n.a(2,!0);case 12:return n.p=12,n.v,n.a(2,!1)}},n,this,[[8,10],[2,5],[0,12]])})),function(e){return i.apply(this,arguments)})},{key:"removeComponentFromScene",value:function(e){try{var r=n.findObjectByHardcodedUuid(this.sceneViewer.scene,e);if(!r)return!1;if(r.traverse(function(e){e.geometry&&e.geometry.dispose(),e.material&&(Array.isArray(e.material)?e.material.forEach(function(e){return e.dispose()}):e.material.dispose())}),this.sceneViewer.scene.remove(r),"undefined"!=typeof window){var i,o=new CustomEvent("componentRemoved",{detail:{uuid:e,name:r.name,libraryId:null===(i=r.userData)||void 0===i?void 0:i.libraryId}});window.dispatchEvent(o)}return!0}catch(e){return!1}}},{key:"getSceneComponents",value:function(){var e=[];return this.sceneViewer.scene.traverse(function(n){var r,i;"component"===(null===(r=n.userData)||void 0===r?void 0:r.componentType)&&e.push({uuid:(null===(i=n.userData)||void 0===i?void 0:i.originalUuid)||n.uuid,name:n.name,libraryId:n.userData.libraryId,position:{x:n.position.x,y:n.position.y,z:n.position.z},rotation:{x:n.rotation.x,y:n.rotation.y,z:n.rotation.z},scale:{x:n.scale.x,y:n.scale.y,z:n.scale.z}})}),e}},{key:"updateComponent",value:function(e,r){try{var i,o,t,u,a,l,d,c,s,v=n.findObjectByHardcodedUuid(this.sceneViewer.scene,e);if(!v)return!1;if(r.position)v.position.set(null!==(i=r.position.x)&&void 0!==i?i:v.position.x,null!==(o=r.position.y)&&void 0!==o?o:v.position.y,null!==(t=r.position.z)&&void 0!==t?t:v.position.z);if(r.rotation)v.rotation.set(null!==(u=r.rotation.x)&&void 0!==u?u:v.rotation.x,null!==(a=r.rotation.y)&&void 0!==a?a:v.rotation.y,null!==(l=r.rotation.z)&&void 0!==l?l:v.rotation.z);if(r.scale)v.scale.set(null!==(d=r.scale.x)&&void 0!==d?d:v.scale.x,null!==(c=r.scale.y)&&void 0!==c?c:v.scale.y,null!==(s=r.scale.z)&&void 0!==s?s:v.scale.z);return r.name&&(v.name=r.name),!0}catch(e){return!1}}}]);var i}();exports.ComponentManager=i;
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
6
+ require('three');
7
+ var nameUtils = require('../../core/nameUtils.js');
8
+ var modelPreloader = require('../../rendering/modelPreloader.js');
9
+
10
+ /**
11
+ * Component Manager Class
12
+ * Handles adding components to the scene
13
+ */
14
+ var ComponentManager = /*#__PURE__*/function () {
15
+ function ComponentManager(sceneViewer) {
16
+ _rollupPluginBabelHelpers.classCallCheck(this, ComponentManager);
17
+ this.sceneViewer = sceneViewer;
18
+ }
19
+
20
+ /**
21
+ * Add a new component to the scene
22
+ */
23
+ return _rollupPluginBabelHelpers.createClass(ComponentManager, [{
24
+ key: "addComponentToScene",
25
+ value: (function () {
26
+ var _addComponentToScene = _rollupPluginBabelHelpers.asyncToGenerator(/*#__PURE__*/_rollupPluginBabelHelpers.regenerator().m(function _callee(componentData) {
27
+ var _this = this;
28
+ var _gltfScene$userData, uuid, componentDictionary, dictResponse, libraryComponent, position, gltfScene, gltf, componentMesh, event, _t, _t2, _t3;
29
+ return _rollupPluginBabelHelpers.regenerator().w(function (_context) {
30
+ while (1) switch (_context.n) {
31
+ case 0:
32
+ _context.p = 0;
33
+ console.log('🎯 Adding component to scene:', componentData);
34
+ if (!(!componentData.libraryId || !componentData.modelKey)) {
35
+ _context.n = 1;
36
+ break;
37
+ }
38
+ console.error('❌ Invalid component data - missing libraryId or modelKey');
39
+ return _context.a(2, false);
40
+ case 1:
41
+ // Generate a unique UUID for the new component
42
+ uuid = componentData.libraryId + '-' + Date.now() + '-' + Math.random().toString(36).substr(2, 9); // Get the component dictionary for model information
43
+ componentDictionary = {};
44
+ _context.p = 2;
45
+ _context.n = 3;
46
+ return fetch('./library/component-dictionary.json');
47
+ case 3:
48
+ dictResponse = _context.v;
49
+ _context.n = 4;
50
+ return dictResponse.json();
51
+ case 4:
52
+ componentDictionary = _context.v;
53
+ _context.n = 6;
54
+ break;
55
+ case 5:
56
+ _context.p = 5;
57
+ _t = _context.v;
58
+ console.warn('⚠️ Could not load component dictionary:', _t);
59
+ return _context.a(2, false);
60
+ case 6:
61
+ libraryComponent = componentDictionary[componentData.libraryId];
62
+ if (libraryComponent) {
63
+ _context.n = 7;
64
+ break;
65
+ }
66
+ console.error('❌ Component not found in library:', componentData.libraryId);
67
+ return _context.a(2, false);
68
+ case 7:
69
+ // Use provided position or default to origin
70
+ position = componentData.position || {
71
+ x: 0,
72
+ y: 0,
73
+ z: 0
74
+ }; // Try to get the model from the preloader cache with dimensions
75
+ gltfScene = modelPreloader["default"].getCachedModelWithDimensions(libraryComponent.modelKey, componentData.libraryId);
76
+ if (gltfScene) {
77
+ _context.n = 11;
78
+ break;
79
+ }
80
+ console.log('⚠️ Model not in cache, loading directly:', libraryComponent.modelKey);
81
+
82
+ // Fallback to direct loading if not in cache
83
+ _context.p = 8;
84
+ _context.n = 9;
85
+ return new Promise(function (resolve, reject) {
86
+ _this.sceneViewer.gltfLoader.load("./library/models/".concat(libraryComponent.modelKey), resolve, undefined, reject);
87
+ });
88
+ case 9:
89
+ gltf = _context.v;
90
+ gltfScene = gltf.scene;
91
+
92
+ // Add dimensions to the directly loaded model
93
+ gltfScene = modelPreloader["default"].addDimensionsToModel(gltfScene, componentData.libraryId);
94
+ _context.n = 11;
95
+ break;
96
+ case 10:
97
+ _context.p = 10;
98
+ _t2 = _context.v;
99
+ console.error('❌ Failed to load component model:', _t2);
100
+ return _context.a(2, false);
101
+ case 11:
102
+ // Clone the model for this instance
103
+ componentMesh = gltfScene.clone(); // Set up the component properties with hardcoded UUID preservation
104
+ componentMesh.uuid = uuid;
105
+ componentMesh.name = (componentData.uuid || componentData.libraryId) + ' Component';
106
+ componentMesh.position.set(position.x, position.y, position.z);
107
+
108
+ // Set userData for the component including dimensions
109
+ componentMesh.userData = _rollupPluginBabelHelpers.objectSpread2({
110
+ libraryId: componentData.libraryId,
111
+ componentType: 'component',
112
+ forExport: true,
113
+ originalUuid: uuid
114
+ }, ((_gltfScene$userData = gltfScene.userData) === null || _gltfScene$userData === void 0 ? void 0 : _gltfScene$userData.dimensions) && {
115
+ dimensions: gltfScene.userData.dimensions
116
+ });
117
+
118
+ // Also ensure dimensions are preserved in the userData
119
+ if (libraryComponent.boundingBox) {
120
+ componentMesh.userData.dimensions = {
121
+ x: libraryComponent.boundingBox.x,
122
+ y: libraryComponent.boundingBox.y,
123
+ z: libraryComponent.boundingBox.z
124
+ };
125
+ console.log("\uD83D\uDCCF Added dimensions to component userData for ".concat(componentData.libraryId, ":"), componentMesh.userData.dimensions);
126
+ }
127
+ if (libraryComponent.adaptedBoundingBox) {
128
+ componentMesh.userData.adaptedBoundingBox = {
129
+ x: libraryComponent.adaptedBoundingBox.x,
130
+ y: libraryComponent.adaptedBoundingBox.y,
131
+ z: libraryComponent.adaptedBoundingBox.z
132
+ };
133
+ console.log("\uD83D\uDCCF Added adaptedBoundingBox to component userData for ".concat(componentData.libraryId, ":"), componentMesh.userData.adaptedBoundingBox);
134
+ }
135
+
136
+ // Enable shadows for all meshes in the component
137
+ componentMesh.traverse(function (child) {
138
+ if (child.isMesh) {
139
+ child.castShadow = true;
140
+ child.receiveShadow = true;
141
+ if (child.material) {
142
+ child.material.envMapIntensity = 1.0;
143
+ }
144
+
145
+ // Set forExport for connectors within the component
146
+ if (child.name && child.name.toLowerCase().includes('connector')) {
147
+ if (!child.userData) {
148
+ child.userData = {};
149
+ }
150
+ child.userData.forExport = true;
151
+ child.userData.componentType = 'connector';
152
+ console.log("\uD83D\uDD27 Set forExport=true for new connector: ".concat(child.name));
153
+ }
154
+ }
155
+ });
156
+
157
+ // Add the component to the scene
158
+ this.sceneViewer.scene.add(componentMesh);
159
+
160
+ // Dispatch custom event for component addition
161
+ if (typeof window !== 'undefined') {
162
+ event = new CustomEvent('componentAdded', {
163
+ detail: {
164
+ component: componentMesh,
165
+ libraryId: componentData.libraryId,
166
+ uuid: uuid,
167
+ position: componentMesh.position,
168
+ dimensions: componentMesh.userData.dimensions
169
+ }
170
+ });
171
+ window.dispatchEvent(event);
172
+ console.log('📡 Dispatched componentAdded event for:', componentMesh.name);
173
+ }
174
+ console.log('✅ Component successfully added to scene:', componentMesh.name);
175
+
176
+ // Enable transform controls now that we have objects in the scene
177
+ if (this.sceneViewer.enableTransformControls) {
178
+ this.sceneViewer.enableTransformControls();
179
+ }
180
+ return _context.a(2, true);
181
+ case 12:
182
+ _context.p = 12;
183
+ _t3 = _context.v;
184
+ console.error('❌ Error adding component to scene:', _t3);
185
+ return _context.a(2, false);
186
+ }
187
+ }, _callee, this, [[8, 10], [2, 5], [0, 12]]);
188
+ }));
189
+ function addComponentToScene(_x) {
190
+ return _addComponentToScene.apply(this, arguments);
191
+ }
192
+ return addComponentToScene;
193
+ }()
194
+ /**
195
+ * Remove a component from the scene
196
+ */
197
+ )
198
+ }, {
199
+ key: "removeComponentFromScene",
200
+ value: function removeComponentFromScene(componentUuid) {
201
+ try {
202
+ // Use the new utility function to find objects by hardcoded UUID
203
+ var object = nameUtils.findObjectByHardcodedUuid(this.sceneViewer.scene, componentUuid);
204
+ if (!object) {
205
+ console.warn('⚠️ Component not found:', componentUuid);
206
+ return false;
207
+ }
208
+
209
+ // Dispose of materials and geometries
210
+ object.traverse(function (child) {
211
+ if (child.geometry) {
212
+ child.geometry.dispose();
213
+ }
214
+ if (child.material) {
215
+ if (Array.isArray(child.material)) {
216
+ child.material.forEach(function (mat) {
217
+ return mat.dispose();
218
+ });
219
+ } else {
220
+ child.material.dispose();
221
+ }
222
+ }
223
+ });
224
+
225
+ // Remove from scene
226
+ this.sceneViewer.scene.remove(object);
227
+
228
+ // Dispatch custom event for component removal
229
+ if (typeof window !== 'undefined') {
230
+ var _object$userData;
231
+ var event = new CustomEvent('componentRemoved', {
232
+ detail: {
233
+ uuid: componentUuid,
234
+ name: object.name,
235
+ libraryId: (_object$userData = object.userData) === null || _object$userData === void 0 ? void 0 : _object$userData.libraryId
236
+ }
237
+ });
238
+ window.dispatchEvent(event);
239
+ console.log('📡 Dispatched componentRemoved event for:', object.name);
240
+ }
241
+ console.log('✅ Component removed from scene:', object.name);
242
+ return true;
243
+ } catch (error) {
244
+ console.error('❌ Error removing component from scene:', error);
245
+ return false;
246
+ }
247
+ }
248
+
249
+ /**
250
+ * Get all components in the scene
251
+ */
252
+ }, {
253
+ key: "getSceneComponents",
254
+ value: function getSceneComponents() {
255
+ var components = [];
256
+ this.sceneViewer.scene.traverse(function (child) {
257
+ var _child$userData;
258
+ if (((_child$userData = child.userData) === null || _child$userData === void 0 ? void 0 : _child$userData.componentType) === 'component') {
259
+ var _child$userData2;
260
+ components.push({
261
+ uuid: ((_child$userData2 = child.userData) === null || _child$userData2 === void 0 ? void 0 : _child$userData2.originalUuid) || child.uuid,
262
+ // Prioritize hardcoded UUID
263
+ name: child.name,
264
+ libraryId: child.userData.libraryId,
265
+ position: {
266
+ x: child.position.x,
267
+ y: child.position.y,
268
+ z: child.position.z
269
+ },
270
+ rotation: {
271
+ x: child.rotation.x,
272
+ y: child.rotation.y,
273
+ z: child.rotation.z
274
+ },
275
+ scale: {
276
+ x: child.scale.x,
277
+ y: child.scale.y,
278
+ z: child.scale.z
279
+ }
280
+ });
281
+ }
282
+ });
283
+ return components;
284
+ }
285
+
286
+ /**
287
+ * Update component properties
288
+ */
289
+ }, {
290
+ key: "updateComponent",
291
+ value: function updateComponent(componentUuid, updates) {
292
+ try {
293
+ // Use the new utility function to find objects by hardcoded UUID
294
+ var object = nameUtils.findObjectByHardcodedUuid(this.sceneViewer.scene, componentUuid);
295
+ if (!object) {
296
+ console.warn('⚠️ Component not found:', componentUuid);
297
+ return false;
298
+ }
299
+
300
+ // Update position
301
+ if (updates.position) {
302
+ var _updates$position$x, _updates$position$y, _updates$position$z;
303
+ object.position.set((_updates$position$x = updates.position.x) !== null && _updates$position$x !== void 0 ? _updates$position$x : object.position.x, (_updates$position$y = updates.position.y) !== null && _updates$position$y !== void 0 ? _updates$position$y : object.position.y, (_updates$position$z = updates.position.z) !== null && _updates$position$z !== void 0 ? _updates$position$z : object.position.z);
304
+ }
305
+
306
+ // Update rotation
307
+ if (updates.rotation) {
308
+ var _updates$rotation$x, _updates$rotation$y, _updates$rotation$z;
309
+ object.rotation.set((_updates$rotation$x = updates.rotation.x) !== null && _updates$rotation$x !== void 0 ? _updates$rotation$x : object.rotation.x, (_updates$rotation$y = updates.rotation.y) !== null && _updates$rotation$y !== void 0 ? _updates$rotation$y : object.rotation.y, (_updates$rotation$z = updates.rotation.z) !== null && _updates$rotation$z !== void 0 ? _updates$rotation$z : object.rotation.z);
310
+ }
311
+
312
+ // Update scale
313
+ if (updates.scale) {
314
+ var _updates$scale$x, _updates$scale$y, _updates$scale$z;
315
+ object.scale.set((_updates$scale$x = updates.scale.x) !== null && _updates$scale$x !== void 0 ? _updates$scale$x : object.scale.x, (_updates$scale$y = updates.scale.y) !== null && _updates$scale$y !== void 0 ? _updates$scale$y : object.scale.y, (_updates$scale$z = updates.scale.z) !== null && _updates$scale$z !== void 0 ? _updates$scale$z : object.scale.z);
316
+ }
317
+
318
+ // Update name
319
+ if (updates.name) {
320
+ object.name = updates.name;
321
+ }
322
+ console.log('✅ Component updated:', object.name);
323
+ return true;
324
+ } catch (error) {
325
+ console.error('❌ Error updating component:', error);
326
+ return false;
327
+ }
328
+ }
329
+ }]);
330
+ }();
331
+
332
+ exports.ComponentManager = ComponentManager;