@2112-lab/central-plant 0.1.39 → 0.1.41

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 (45) hide show
  1. package/dist/bundle/index.js +7991 -7054
  2. package/dist/cjs/src/core/centralPlant.js +48 -3
  3. package/dist/cjs/src/core/centralPlantInternals.js +75 -566
  4. package/dist/cjs/src/core/sceneViewer.js +38 -13
  5. package/dist/cjs/src/index.js +6 -4
  6. package/dist/cjs/src/managers/components/pathfindingManager.js +75 -60
  7. package/dist/cjs/src/managers/components/transformOperationsManager.js +929 -0
  8. package/dist/cjs/src/managers/controls/keyboardControlsManager.js +57 -1
  9. package/dist/cjs/src/managers/controls/transformControls.js +11 -3
  10. package/dist/cjs/src/managers/controls/transformControlsManager.js +563 -263
  11. package/dist/cjs/src/managers/pathfinding/ConnectorManager.js +385 -0
  12. package/dist/cjs/src/managers/pathfinding/PathIntersectionDetector.js +387 -0
  13. package/dist/cjs/src/managers/pathfinding/PathRenderingManager.js +401 -0
  14. package/dist/cjs/src/managers/pathfinding/pathfindingManager.js +378 -0
  15. package/dist/cjs/src/managers/pathfinding/sceneDataManager.js +256 -0
  16. package/dist/cjs/src/managers/scene/animationManager.js +145 -0
  17. package/dist/cjs/src/managers/scene/sceneExportManager.js +14 -13
  18. package/dist/cjs/src/managers/scene/sceneOperationsManager.js +516 -21
  19. package/dist/cjs/src/managers/scene/sceneTooltipsManager.js +1 -8
  20. package/dist/cjs/src/managers/system/operationHistoryManager.js +414 -0
  21. package/dist/cjs/src/managers/system/settingsManager.js +2 -1
  22. package/dist/cjs/src/utils/objectTypes.js +5 -7
  23. package/dist/esm/src/core/centralPlant.js +48 -3
  24. package/dist/esm/src/core/centralPlantInternals.js +76 -567
  25. package/dist/esm/src/core/sceneViewer.js +38 -13
  26. package/dist/esm/src/index.js +4 -3
  27. package/dist/esm/src/managers/components/pathfindingManager.js +75 -60
  28. package/dist/esm/src/managers/components/transformOperationsManager.js +904 -0
  29. package/dist/esm/src/managers/controls/keyboardControlsManager.js +57 -1
  30. package/dist/esm/src/managers/controls/transformControls.js +11 -3
  31. package/dist/esm/src/managers/controls/transformControlsManager.js +564 -264
  32. package/dist/esm/src/managers/pathfinding/ConnectorManager.js +361 -0
  33. package/dist/esm/src/managers/pathfinding/PathIntersectionDetector.js +363 -0
  34. package/dist/esm/src/managers/pathfinding/PathRenderingManager.js +377 -0
  35. package/dist/esm/src/managers/pathfinding/pathfindingManager.js +374 -0
  36. package/dist/esm/src/managers/pathfinding/sceneDataManager.js +232 -0
  37. package/dist/esm/src/managers/scene/animationManager.js +141 -0
  38. package/dist/esm/src/managers/scene/sceneExportManager.js +14 -13
  39. package/dist/esm/src/managers/scene/sceneOperationsManager.js +516 -21
  40. package/dist/esm/src/managers/scene/sceneTooltipsManager.js +1 -8
  41. package/dist/esm/src/managers/system/operationHistoryManager.js +409 -0
  42. package/dist/esm/src/managers/system/settingsManager.js +2 -1
  43. package/dist/esm/src/utils/objectTypes.js +5 -7
  44. package/dist/index.d.ts +2 -2
  45. package/package.json +1 -1
@@ -18,12 +18,21 @@ var KeyboardControlsManager = /*#__PURE__*/function () {
18
18
  return _rollupPluginBabelHelpers.createClass(KeyboardControlsManager, [{
19
19
  key: "setupKeyboardControls",
20
20
  value: function setupKeyboardControls() {
21
+ var _this = this;
21
22
  this.handleKeyDown = function (event) {
22
23
  // Sample Ctrl+Z example
23
24
  if (event.ctrlKey && (event.key.toLowerCase() === 'z' || event.code === 'KeyZ')) {
24
25
  // method call here
25
26
  return;
26
27
  }
28
+
29
+ // Shift+D to split selected segment
30
+ if (event.shiftKey && (event.key.toLowerCase() === 'd' || event.code === 'KeyD')) {
31
+ _this.handleSegmentSplit();
32
+ event.preventDefault();
33
+ event.stopPropagation();
34
+ return;
35
+ }
27
36
  switch (event.key.toLowerCase()) {
28
37
  }
29
38
  };
@@ -34,7 +43,54 @@ var KeyboardControlsManager = /*#__PURE__*/function () {
34
43
 
35
44
  // Override transform controls keyboard handling
36
45
  this.overrideTransformControlsKeyboard();
37
- console.log('Keyboard controls initialized with Ctrl+Z undo override');
46
+ console.log('Keyboard controls initialized with Ctrl+Z undo override and Shift+D segment split');
47
+ }
48
+
49
+ /**
50
+ * Handle segment split operation (Shift+D)
51
+ * Splits the currently selected segment in half if it's a pipe segment
52
+ */
53
+ }, {
54
+ key: "handleSegmentSplit",
55
+ value: function handleSegmentSplit() {
56
+ var sceneViewer = this.sceneViewer;
57
+
58
+ // Check if transform controls are active with a selected object
59
+ if (!sceneViewer.transformManager || !sceneViewer.transformManager.selectedObjects || sceneViewer.transformManager.selectedObjects.length === 0) {
60
+ console.log('ℹ️ No object selected for segment split');
61
+ return;
62
+ }
63
+ var selectedObject = sceneViewer.transformManager.selectedObjects[0];
64
+
65
+ // Verify it's a segment
66
+ if (!selectedObject.userData || selectedObject.userData.objectType !== 'segment') {
67
+ console.log('ℹ️ Selected object is not a segment, cannot split');
68
+ return;
69
+ }
70
+ console.log('✂️ Shift+D pressed - splitting segment:', selectedObject.uuid);
71
+
72
+ // Access CentralPlant through sceneViewer
73
+ var centralPlant = sceneViewer.centralPlant;
74
+ if (!centralPlant || typeof centralPlant.splitSegment !== 'function') {
75
+ console.error('❌ CentralPlant or splitSegment method not available');
76
+ return;
77
+ }
78
+
79
+ // Call the public API to split the segment
80
+ var result = centralPlant.splitSegment(selectedObject.uuid);
81
+ if (result) {
82
+ console.log('✅ Segment split successful:', result);
83
+
84
+ // Deselect the original segment (now removed) and optionally select one of the new segments
85
+ sceneViewer.transformManager.deselectObject();
86
+
87
+ // Optionally select the first new segment
88
+ if (result.segment1) {
89
+ sceneViewer.transformManager.selectObject(result.segment1);
90
+ }
91
+ } else {
92
+ console.error('❌ Segment split failed');
93
+ }
38
94
  }
39
95
 
40
96
  /**
@@ -177,6 +177,14 @@ var transformControls = /*#__PURE__*/function (_THREE$Object3D) {
177
177
  }, {
178
178
  key: "_getBoundingBoxCenter",
179
179
  value: function _getBoundingBoxCenter(object) {
180
+ var _object$userData;
181
+ // Special case: if this is a multi-selection group, use its position directly
182
+ // (it's an empty group positioned at the centroid, so no need to calculate bounding box)
183
+ if ((_object$userData = object.userData) !== null && _object$userData !== void 0 && _object$userData.isMultiSelectionGroup) {
184
+ var worldPos = new THREE__namespace.Vector3();
185
+ object.getWorldPosition(worldPos);
186
+ return worldPos;
187
+ }
180
188
  var boundingBox = new THREE__namespace.Box3();
181
189
 
182
190
  // Set from object, which calculates world bounding box
@@ -185,9 +193,9 @@ var transformControls = /*#__PURE__*/function (_THREE$Object3D) {
185
193
  // If bounding box is empty or invalid, fall back to object position
186
194
  if (boundingBox.isEmpty()) {
187
195
  console.warn('transformControls: Bounding box is empty, using object position');
188
- var worldPos = new THREE__namespace.Vector3();
189
- object.getWorldPosition(worldPos);
190
- return worldPos;
196
+ var _worldPos = new THREE__namespace.Vector3();
197
+ object.getWorldPosition(_worldPos);
198
+ return _worldPos;
191
199
  }
192
200
  var center = new THREE__namespace.Vector3();
193
201
  boundingBox.getCenter(center);