@2112-lab/central-plant 0.1.4 → 0.1.6

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 (88) hide show
  1. package/dist/bundle/index.js +33146 -1
  2. package/dist/cjs/_virtual/_rollupPluginBabelHelpers.js +432 -1
  3. package/dist/cjs/node_modules/@2112-lab/pathfinder/dist/index.esm.js +1448 -1
  4. package/dist/cjs/node_modules/three/examples/jsm/controls/OrbitControls.js +1853 -1
  5. package/dist/cjs/node_modules/three/examples/jsm/exporters/GLTFExporter.js +3537 -1
  6. package/dist/cjs/node_modules/three/examples/jsm/exporters/OBJExporter.js +305 -1
  7. package/dist/cjs/node_modules/three/examples/jsm/exporters/PLYExporter.js +542 -1
  8. package/dist/cjs/node_modules/three/examples/jsm/exporters/STLExporter.js +218 -1
  9. package/dist/cjs/node_modules/three/examples/jsm/loaders/DRACOLoader.js +683 -1
  10. package/dist/cjs/node_modules/three/examples/jsm/loaders/GLTFLoader.js +4811 -1
  11. package/dist/cjs/node_modules/three/examples/jsm/loaders/RGBELoader.js +480 -1
  12. package/dist/cjs/node_modules/three/examples/jsm/renderers/CSS2DRenderer.js +309 -1
  13. package/dist/cjs/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +120 -1
  14. package/dist/cjs/src/analysis/analysis.js +560 -1
  15. package/dist/cjs/src/analysis/testing.js +958 -1
  16. package/dist/cjs/src/core/centralPlant.js +1149 -1
  17. package/dist/cjs/src/core/debugLogger.js +175 -1
  18. package/dist/cjs/src/core/mathUtils.js +574 -1
  19. package/dist/cjs/src/core/nameUtils.js +93 -1
  20. package/dist/cjs/src/data/export.js +716 -1
  21. package/dist/cjs/src/data/import.js +380 -1
  22. package/dist/cjs/src/data/numerics.js +522 -1
  23. package/dist/cjs/src/helpers/sceneHelper.js +572 -1
  24. package/dist/cjs/src/index.js +69 -1
  25. package/dist/cjs/src/managers/components/animationManager.js +123 -1
  26. package/dist/cjs/src/managers/components/componentManager.js +332 -1
  27. package/dist/cjs/src/managers/components/pathfindingManager.js +1441 -1
  28. package/dist/cjs/src/managers/controls/TransformControls.js +1063 -1
  29. package/dist/cjs/src/managers/controls/cameraControlsManager.js +79 -1
  30. package/dist/cjs/src/managers/controls/dragDropManager.js +1026 -1
  31. package/dist/cjs/src/managers/controls/keyboardControlsManager.js +395 -1
  32. package/dist/cjs/src/managers/controls/transformControlsManager.js +1807 -1
  33. package/dist/cjs/src/managers/environment/environmentManager.js +714 -1
  34. package/dist/cjs/src/managers/environment/textureConfig.js +229 -1
  35. package/dist/cjs/src/managers/scene/sceneExportManager.js +264 -1
  36. package/dist/cjs/src/managers/scene/sceneInitializationManager.js +346 -1
  37. package/dist/cjs/src/managers/scene/sceneOperationsManager.js +1509 -1
  38. package/dist/cjs/src/managers/scene/sceneTooltipsManager.js +661 -1
  39. package/dist/cjs/src/managers/system/disposalManager.js +444 -1
  40. package/dist/cjs/src/managers/system/hotReloadManager.js +291 -1
  41. package/dist/cjs/src/managers/system/performanceMonitor.js +863 -1
  42. package/dist/cjs/src/rendering/modelPreloader.js +369 -1
  43. package/dist/cjs/src/rendering/rendering2D.js +631 -1
  44. package/dist/cjs/src/rendering/rendering3D.js +685 -1
  45. package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +396 -1
  46. package/dist/esm/node_modules/@2112-lab/pathfinder/dist/index.esm.js +1444 -1
  47. package/dist/esm/node_modules/three/examples/jsm/controls/OrbitControls.js +1849 -1
  48. package/dist/esm/node_modules/three/examples/jsm/exporters/GLTFExporter.js +3533 -1
  49. package/dist/esm/node_modules/three/examples/jsm/exporters/OBJExporter.js +301 -1
  50. package/dist/esm/node_modules/three/examples/jsm/exporters/PLYExporter.js +538 -1
  51. package/dist/esm/node_modules/three/examples/jsm/exporters/STLExporter.js +214 -1
  52. package/dist/esm/node_modules/three/examples/jsm/loaders/DRACOLoader.js +679 -1
  53. package/dist/esm/node_modules/three/examples/jsm/loaders/GLTFLoader.js +4807 -1
  54. package/dist/esm/node_modules/three/examples/jsm/loaders/RGBELoader.js +476 -1
  55. package/dist/esm/node_modules/three/examples/jsm/renderers/CSS2DRenderer.js +304 -1
  56. package/dist/esm/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +116 -1
  57. package/dist/esm/src/analysis/analysis.js +536 -1
  58. package/dist/esm/src/analysis/testing.js +954 -1
  59. package/dist/esm/src/core/centralPlant.js +1144 -1
  60. package/dist/esm/src/core/debugLogger.js +167 -1
  61. package/dist/esm/src/core/mathUtils.js +570 -1
  62. package/dist/esm/src/core/nameUtils.js +87 -1
  63. package/dist/esm/src/data/export.js +712 -1
  64. package/dist/esm/src/data/import.js +356 -1
  65. package/dist/esm/src/data/numerics.js +518 -1
  66. package/dist/esm/src/helpers/sceneHelper.js +547 -1
  67. package/dist/esm/src/index.js +35 -1
  68. package/dist/esm/src/managers/components/animationManager.js +119 -1
  69. package/dist/esm/src/managers/components/componentManager.js +328 -1
  70. package/dist/esm/src/managers/components/pathfindingManager.js +1417 -1
  71. package/dist/esm/src/managers/controls/TransformControls.js +1057 -1
  72. package/dist/esm/src/managers/controls/cameraControlsManager.js +75 -1
  73. package/dist/esm/src/managers/controls/dragDropManager.js +1002 -1
  74. package/dist/esm/src/managers/controls/keyboardControlsManager.js +371 -1
  75. package/dist/esm/src/managers/controls/transformControlsManager.js +1782 -1
  76. package/dist/esm/src/managers/environment/environmentManager.js +690 -1
  77. package/dist/esm/src/managers/environment/textureConfig.js +202 -1
  78. package/dist/esm/src/managers/scene/sceneExportManager.js +260 -1
  79. package/dist/esm/src/managers/scene/sceneInitializationManager.js +322 -1
  80. package/dist/esm/src/managers/scene/sceneOperationsManager.js +1485 -1
  81. package/dist/esm/src/managers/scene/sceneTooltipsManager.js +637 -1
  82. package/dist/esm/src/managers/system/disposalManager.js +440 -1
  83. package/dist/esm/src/managers/system/hotReloadManager.js +287 -1
  84. package/dist/esm/src/managers/system/performanceMonitor.js +858 -1
  85. package/dist/esm/src/rendering/modelPreloader.js +364 -1
  86. package/dist/esm/src/rendering/rendering2D.js +627 -1
  87. package/dist/esm/src/rendering/rendering3D.js +661 -1
  88. package/package.json +1 -1
@@ -1 +1,395 @@
1
- "use strict";Object.defineProperty(exports,"t",{value:!0});var e=require("../../../_virtual/_rollupPluginBabelHelpers.js"),n=require("three"),t=require("../../core/debugLogger.js");function i(e){if(e&&e.t)return e;var n=Object.create(null);return e&&Object.keys(e).forEach(function(t){if("default"!==t){var i=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,i.get?i:{enumerable:!0,get:function(){return e[t]}})}}),n.default=e,Object.freeze(n)}var r=i(n),a=function(){return e.createClass(function n(t){e.classCallCheck(this,n),this.sceneViewer=t,this.handleKeyDown=null},[{key:"setupKeyboardControls",value:function(){var e=this;this.handleKeyDown=function(n){if(n.ctrlKey&&("z"===n.key.toLowerCase()||"KeyZ"===n.code))return n.preventDefault(),n.stopPropagation(),void e.undoTransform();if(n.altKey&&("r"===n.key.toLowerCase()||"KeyR"===n.code))return n.preventDefault(),n.stopPropagation(),void e.toggleShouldUpdatePaths();switch(n.key.toLowerCase()){case"p":e.togglePerformanceUI();break;case"l":e.logPerformanceSummary();break;case"r":e.resetPerformanceStats();break;case"a":e.toggleAutoRotation();break;case"e":e.cycleToneMapping();break;case"=":case"+":e.increaseExposure();break;case"-":e.decreaseExposure();break;case"h":e.showHelpInfo()}},window.addEventListener("keydown",this.handleKeyDown,!0),window._performanceKeyHandler=this.handleKeyDown,this.overrideTransformControlsKeyboard(),t.logger.info("Keyboard controls initialized with Ctrl+Z undo override")}},{key:"togglePerformanceUI",value:function(){var e=this.sceneViewer;e.performanceUI&&(e.performanceUI.isVisible?e.performanceUI.hide():e.performanceUI.show())}},{key:"logPerformanceSummary",value:function(){var e=this.sceneViewer;e.performanceMonitor&&e.performanceMonitor.logSummary()}},{key:"resetPerformanceStats",value:function(){var e=this.sceneViewer;e.performanceMonitor&&e.performanceMonitor.reset()}},{key:"cycleToneMapping",value:function(){var e=this.sceneViewer;if(e.renderer){var n=[{type:r.NoToneMapping,name:"None"},{type:r.LinearToneMapping,name:"Linear"},{type:r.ReinhardToneMapping,name:"Reinhard"},{type:r.CineonToneMapping,name:"Cineon"},{type:r.ACESFilmicToneMapping,name:"ACES Filmic"}],t=n.findIndex(function(n){return n.type===e.renderer.toneMapping}),i=(t+1)%n.length,a=(n[t],n[i]);e.renderer.toneMapping=a.type}}},{key:"increaseExposure",value:function(){var e=this.sceneViewer;e.renderer&&(e.renderer.toneMappingExposure=Math.min(e.renderer.toneMappingExposure+.1,3))}},{key:"decreaseExposure",value:function(){var e=this.sceneViewer;e.renderer&&(e.renderer.toneMappingExposure=Math.max(e.renderer.toneMappingExposure-.1,.1))}},{key:"showHelpInfo",value:function(){}},{key:"toggleShouldUpdatePaths",value:function(){var e=this.sceneViewer;e&&"function"==typeof e.toggleShouldUpdatePaths&&e.toggleShouldUpdatePaths()}},{key:"toggleAutoRotation",value:function(){var e=this.sceneViewer;if(e.sceneInitializationManager){var n=e.sceneInitializationManager.toggleAutoRotation();void 0!==e.isAutoRotating&&(e.isAutoRotating=n)}}},{key:"setupResizeHandler",value:function(){var e=this.sceneViewer;e.handleResize=function(){if(e.$refs.container&&e.camera&&e.renderer){var n=e.$refs.container.getBoundingClientRect(),t=n.width,i=n.height;e.camera.aspect=t/i,e.camera.updateProjectionMatrix(),e.renderer.setSize(t,i),e.composer&&(e.composer.setSize(t,i),e.ssaoPass&&e.ssaoPass.setSize(t,i),e.bloomPass&&e.bloomPass.resolution.set(t,i)),e.tooltipsManager&&e.tooltipsManager.resize()}},e.resizeObserver=new ResizeObserver(e.handleResize),e.resizeObserver.observe(e.$refs.container),window.addEventListener("resize",e.handleResize),t.logger.info("Resize handler initialized")}},{key:"cleanup",value:function(){this.handleKeyDown&&(window.removeEventListener("keydown",this.handleKeyDown,!0),this.handleKeyDown=null),window._performanceKeyHandler&&(window.removeEventListener("keydown",window._performanceKeyHandler,!0),delete window._performanceKeyHandler);var e=this.sceneViewer;e.handleResize&&(window.removeEventListener("resize",e.handleResize),e.handleResize=null),e.resizeObserver&&(e.resizeObserver.disconnect(),e.resizeObserver=null),t.logger.info("Keyboard controls cleanup completed")}},{key:"undoTransform",value:function(){var e=this.sceneViewer;e.centralPlant&&("function"==typeof e.centralPlant.undoTransform&&e.centralPlant.undoTransform()&&(e.sceneHelper&&"function"==typeof e.sceneHelper.requestRender&&e.sceneHelper.requestRender(),e.renderer&&e.renderer.render(e.scene,e.camera),e.updateComponentPositions&&"function"==typeof e.updateComponentPositions&&e.updateComponentPositions()))}},{key:"overrideTransformControlsKeyboard",value:function(){var e=this.sceneViewer;if(e.transformManager&&e.transformManager.eventHandlers&&e.transformManager.eventHandlers.keydown){var n=e.transformManager.eventHandlers.keydown;e.transformManager.eventHandlers.keydown=function(e){(!e.ctrlKey||"z"!==e.key.toLowerCase()&&"KeyZ"!==e.code)&&n(e)}}}}])}();exports.KeyboardControlsManager=a;
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
6
+ var THREE = require('three');
7
+ var debugLogger = require('../../core/debugLogger.js');
8
+
9
+ function _interopNamespace(e) {
10
+ if (e && e.__esModule) return e;
11
+ var n = Object.create(null);
12
+ if (e) {
13
+ Object.keys(e).forEach(function (k) {
14
+ if (k !== 'default') {
15
+ var d = Object.getOwnPropertyDescriptor(e, k);
16
+ Object.defineProperty(n, k, d.get ? d : {
17
+ enumerable: true,
18
+ get: function () { return e[k]; }
19
+ });
20
+ }
21
+ });
22
+ }
23
+ n["default"] = e;
24
+ return Object.freeze(n);
25
+ }
26
+
27
+ var THREE__namespace = /*#__PURE__*/_interopNamespace(THREE);
28
+
29
+ var KeyboardControlsManager = /*#__PURE__*/function () {
30
+ function KeyboardControlsManager(sceneViewer) {
31
+ _rollupPluginBabelHelpers.classCallCheck(this, KeyboardControlsManager);
32
+ this.sceneViewer = sceneViewer;
33
+ this.handleKeyDown = null;
34
+ }
35
+
36
+ /**
37
+ * Setup keyboard event handlers
38
+ */
39
+ return _rollupPluginBabelHelpers.createClass(KeyboardControlsManager, [{
40
+ key: "setupKeyboardControls",
41
+ value: function setupKeyboardControls() {
42
+ var _this = this;
43
+ this.handleKeyDown = function (event) {
44
+ // Handle Ctrl+Z for undo with high priority
45
+ if (event.ctrlKey && (event.key.toLowerCase() === 'z' || event.code === 'KeyZ')) {
46
+ event.preventDefault();
47
+ event.stopPropagation();
48
+ _this.undoTransform();
49
+ return;
50
+ }
51
+
52
+ // Handle Alt+R for toggling auto-repathing
53
+ if (event.altKey && (event.key.toLowerCase() === 'r' || event.code === 'KeyR')) {
54
+ event.preventDefault();
55
+ event.stopPropagation();
56
+ _this.toggleShouldUpdatePaths();
57
+ return;
58
+ }
59
+ switch (event.key.toLowerCase()) {
60
+ case 'p':
61
+ _this.togglePerformanceUI();
62
+ break;
63
+ case 'l':
64
+ _this.logPerformanceSummary();
65
+ break;
66
+ case 'r':
67
+ _this.resetPerformanceStats();
68
+ break;
69
+ case 'a':
70
+ _this.toggleAutoRotation();
71
+ break;
72
+ case 'e':
73
+ _this.cycleToneMapping();
74
+ break;
75
+ case '=':
76
+ case '+':
77
+ _this.increaseExposure();
78
+ break;
79
+ case '-':
80
+ _this.decreaseExposure();
81
+ break;
82
+ case 'h':
83
+ _this.showHelpInfo();
84
+ break;
85
+ }
86
+ };
87
+
88
+ // Add with capture phase for higher priority
89
+ window.addEventListener('keydown', this.handleKeyDown, true);
90
+ window._performanceKeyHandler = this.handleKeyDown;
91
+
92
+ // Override transform controls keyboard handling
93
+ this.overrideTransformControlsKeyboard();
94
+ debugLogger.logger.info('Keyboard controls initialized with Ctrl+Z undo override');
95
+ }
96
+
97
+ /**
98
+ * Toggle performance UI visibility
99
+ */
100
+ }, {
101
+ key: "togglePerformanceUI",
102
+ value: function togglePerformanceUI() {
103
+ var component = this.sceneViewer;
104
+ if (component.performanceUI) {
105
+ if (component.performanceUI.isVisible) {
106
+ component.performanceUI.hide();
107
+ console.log('📊 Performance UI hidden');
108
+ } else {
109
+ component.performanceUI.show();
110
+ console.log('📊 Performance UI shown');
111
+ }
112
+ }
113
+ }
114
+
115
+ /**
116
+ * Log performance summary to console
117
+ */
118
+ }, {
119
+ key: "logPerformanceSummary",
120
+ value: function logPerformanceSummary() {
121
+ var component = this.sceneViewer;
122
+ if (component.performanceMonitor) {
123
+ component.performanceMonitor.logSummary();
124
+ }
125
+ }
126
+
127
+ /**
128
+ * Reset performance statistics
129
+ */
130
+ }, {
131
+ key: "resetPerformanceStats",
132
+ value: function resetPerformanceStats() {
133
+ var component = this.sceneViewer;
134
+ if (component.performanceMonitor) {
135
+ component.performanceMonitor.reset();
136
+ }
137
+ }
138
+
139
+ /**
140
+ * Cycle through different tone mapping types
141
+ */
142
+ }, {
143
+ key: "cycleToneMapping",
144
+ value: function cycleToneMapping() {
145
+ var component = this.sceneViewer;
146
+ if (!component.renderer) {
147
+ console.warn('⚠️ Renderer not initialized yet');
148
+ return;
149
+ }
150
+ var toneMappings = [{
151
+ type: THREE__namespace.NoToneMapping,
152
+ name: 'None'
153
+ }, {
154
+ type: THREE__namespace.LinearToneMapping,
155
+ name: 'Linear'
156
+ }, {
157
+ type: THREE__namespace.ReinhardToneMapping,
158
+ name: 'Reinhard'
159
+ }, {
160
+ type: THREE__namespace.CineonToneMapping,
161
+ name: 'Cineon'
162
+ }, {
163
+ type: THREE__namespace.ACESFilmicToneMapping,
164
+ name: 'ACES Filmic'
165
+ }];
166
+ var currentIndex = toneMappings.findIndex(function (tm) {
167
+ return tm.type === component.renderer.toneMapping;
168
+ });
169
+ var nextIndex = (currentIndex + 1) % toneMappings.length;
170
+ var previousMapping = toneMappings[currentIndex] || {
171
+ name: 'Unknown'
172
+ };
173
+ var newMapping = toneMappings[nextIndex];
174
+ component.renderer.toneMapping = newMapping.type;
175
+ console.group('🎨 Tone Mapping Changed');
176
+ console.log("Previous: ".concat(previousMapping.name));
177
+ console.log("Current: ".concat(newMapping.name));
178
+ console.log("Exposure: ".concat(component.renderer.toneMappingExposure.toFixed(1)));
179
+ console.groupEnd();
180
+ }
181
+
182
+ /**
183
+ * Increase renderer exposure
184
+ */
185
+ }, {
186
+ key: "increaseExposure",
187
+ value: function increaseExposure() {
188
+ var component = this.sceneViewer;
189
+ if (component.renderer) {
190
+ component.renderer.toneMappingExposure = Math.min(component.renderer.toneMappingExposure + 0.1, 3.0);
191
+ console.log("\u2600\uFE0F Exposure increased to: ".concat(component.renderer.toneMappingExposure.toFixed(1)));
192
+ }
193
+ }
194
+
195
+ /**
196
+ * Decrease renderer exposure
197
+ */
198
+ }, {
199
+ key: "decreaseExposure",
200
+ value: function decreaseExposure() {
201
+ var component = this.sceneViewer;
202
+ if (component.renderer) {
203
+ component.renderer.toneMappingExposure = Math.max(component.renderer.toneMappingExposure - 0.1, 0.1);
204
+ console.log("\uD83C\uDF19 Exposure decreased to: ".concat(component.renderer.toneMappingExposure.toFixed(1)));
205
+ }
206
+ }
207
+
208
+ /**
209
+ * Show help information for keyboard controls
210
+ */
211
+ }, {
212
+ key: "showHelpInfo",
213
+ value: function showHelpInfo() {
214
+ console.group('🎮 3D Scene Controls');
215
+ console.log('↩️ Ctrl+Z - Undo last transform');
216
+ console.log('🔄 Alt+R - Toggle auto-repathing after transforms');
217
+ console.log('📊 P - Toggle performance UI');
218
+ console.log('📝 L - Log performance summary');
219
+ console.log('🔄 R - Reset performance statistics');
220
+ console.log('🔄 A - Toggle auto-rotation');
221
+ console.log('🎨 E - Cycle tone mapping types');
222
+ console.log('☀️ + / = - Increase exposure');
223
+ console.log('🌙 - - Decrease exposure');
224
+ console.log('❓ H - Show this help');
225
+ console.groupEnd();
226
+ }
227
+ /**
228
+ * Toggle shouldRepath setting in the scene viewer
229
+ */
230
+ }, {
231
+ key: "toggleShouldUpdatePaths",
232
+ value: function toggleShouldUpdatePaths() {
233
+ var component = this.sceneViewer;
234
+ if (component && typeof component.toggleShouldUpdatePaths === 'function') {
235
+ component.toggleShouldUpdatePaths();
236
+ } else {
237
+ console.warn('⚠️ toggleShouldUpdatePaths method not available on scene viewer');
238
+ }
239
+ }
240
+
241
+ /**
242
+ * Toggle auto-rotation of the camera
243
+ */
244
+ }, {
245
+ key: "toggleAutoRotation",
246
+ value: function toggleAutoRotation() {
247
+ var component = this.sceneViewer;
248
+ if (component.sceneInitializationManager) {
249
+ var isEnabled = component.sceneInitializationManager.toggleAutoRotation();
250
+ console.log("\uD83D\uDD04 Auto-rotation ".concat(isEnabled ? 'enabled' : 'disabled'));
251
+
252
+ // Update the component's isAutoRotating state for UI sync
253
+ if (component.isAutoRotating !== undefined) {
254
+ component.isAutoRotating = isEnabled;
255
+ }
256
+ } else {
257
+ console.warn('⚠️ Scene initialization manager not available, cannot toggle auto-rotation');
258
+ }
259
+ }
260
+
261
+ /**
262
+ * Setup resize handler for responsive design
263
+ */
264
+ }, {
265
+ key: "setupResizeHandler",
266
+ value: function setupResizeHandler() {
267
+ var component = this.sceneViewer;
268
+ component.handleResize = function () {
269
+ if (!component.$refs.container || !component.camera || !component.renderer) return;
270
+ var containerRect = component.$refs.container.getBoundingClientRect();
271
+ var containerWidth = containerRect.width;
272
+ var containerHeight = containerRect.height;
273
+ component.camera.aspect = containerWidth / containerHeight;
274
+ component.camera.updateProjectionMatrix();
275
+ component.renderer.setSize(containerWidth, containerHeight);
276
+ if (component.composer) {
277
+ component.composer.setSize(containerWidth, containerHeight);
278
+ if (component.ssaoPass) {
279
+ component.ssaoPass.setSize(containerWidth, containerHeight);
280
+ }
281
+ if (component.bloomPass) {
282
+ component.bloomPass.resolution.set(containerWidth, containerHeight);
283
+ }
284
+ }
285
+
286
+ // Update tooltip renderer if it exists
287
+ if (component.tooltipsManager) {
288
+ component.tooltipsManager.resize();
289
+ }
290
+ };
291
+
292
+ // Set up ResizeObserver for better container size tracking
293
+ component.resizeObserver = new ResizeObserver(component.handleResize);
294
+ component.resizeObserver.observe(component.$refs.container);
295
+
296
+ // Also listen for window resize as fallback
297
+ window.addEventListener('resize', component.handleResize);
298
+ debugLogger.logger.info('Resize handler initialized');
299
+ }
300
+
301
+ /**
302
+ * Cleanup event listeners
303
+ */
304
+ }, {
305
+ key: "cleanup",
306
+ value: function cleanup() {
307
+ if (this.handleKeyDown) {
308
+ window.removeEventListener('keydown', this.handleKeyDown, true);
309
+ this.handleKeyDown = null;
310
+ }
311
+ if (window._performanceKeyHandler) {
312
+ window.removeEventListener('keydown', window._performanceKeyHandler, true);
313
+ delete window._performanceKeyHandler;
314
+ }
315
+ var component = this.sceneViewer;
316
+ if (component.handleResize) {
317
+ window.removeEventListener('resize', component.handleResize);
318
+ component.handleResize = null;
319
+ }
320
+ if (component.resizeObserver) {
321
+ component.resizeObserver.disconnect();
322
+ component.resizeObserver = null;
323
+ }
324
+ debugLogger.logger.info('Keyboard controls cleanup completed');
325
+ }
326
+
327
+ /**
328
+ * Undo the last transform operation
329
+ */
330
+ }, {
331
+ key: "undoTransform",
332
+ value: function undoTransform() {
333
+ var component = this.sceneViewer;
334
+
335
+ // Check if CentralPlant instance exists and has the undoTransform method
336
+ if (!component.centralPlant) {
337
+ console.warn('⚠️ CentralPlant instance not available for undo operation');
338
+ return;
339
+ }
340
+ if (typeof component.centralPlant.undoTransform !== 'function') {
341
+ console.warn('⚠️ undoTransform method not available on CentralPlant instance');
342
+ return;
343
+ }
344
+ var success = component.centralPlant.undoTransform();
345
+ if (success) {
346
+ console.log('✅ Transform undone via keyboard shortcut (Ctrl+Z)');
347
+
348
+ // If there's a scene helper, trigger a render update
349
+ if (component.sceneHelper && typeof component.sceneHelper.requestRender === 'function') {
350
+ component.sceneHelper.requestRender();
351
+ }
352
+
353
+ // If there's a renderer, trigger a render
354
+ if (component.renderer) {
355
+ component.renderer.render(component.scene, component.camera);
356
+ }
357
+
358
+ // Update any UI elements that might be affected
359
+ if (component.updateComponentPositions && typeof component.updateComponentPositions === 'function') {
360
+ component.updateComponentPositions();
361
+ }
362
+ } else {
363
+ console.log('⚠️ No transform to undo');
364
+ }
365
+ }
366
+
367
+ /**
368
+ * Override transform controls keyboard handling to ensure Ctrl+Z undo works
369
+ */
370
+ }, {
371
+ key: "overrideTransformControlsKeyboard",
372
+ value: function overrideTransformControlsKeyboard() {
373
+ var component = this.sceneViewer;
374
+
375
+ // If transform controls manager exists, ensure it doesn't interfere with Ctrl+Z
376
+ if (component.transformManager && component.transformManager.eventHandlers && component.transformManager.eventHandlers.keydown) {
377
+ var originalHandler = component.transformManager.eventHandlers.keydown;
378
+
379
+ // Create a new handler that checks for Ctrl+Z first
380
+ component.transformManager.eventHandlers.keydown = function (event) {
381
+ // If it's Ctrl+Z, don't handle it in transform controls
382
+ if (event.ctrlKey && (event.key.toLowerCase() === 'z' || event.code === 'KeyZ')) {
383
+ return; // Let our undo handler take care of it
384
+ }
385
+
386
+ // Otherwise, use the original handler
387
+ originalHandler(event);
388
+ };
389
+ console.log('✅ Transform controls keyboard handling overridden for Ctrl+Z');
390
+ }
391
+ }
392
+ }]);
393
+ }();
394
+
395
+ exports.KeyboardControlsManager = KeyboardControlsManager;