@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
@@ -14,12 +14,21 @@ var KeyboardControlsManager = /*#__PURE__*/function () {
14
14
  return _createClass(KeyboardControlsManager, [{
15
15
  key: "setupKeyboardControls",
16
16
  value: function setupKeyboardControls() {
17
+ var _this = this;
17
18
  this.handleKeyDown = function (event) {
18
19
  // Sample Ctrl+Z example
19
20
  if (event.ctrlKey && (event.key.toLowerCase() === 'z' || event.code === 'KeyZ')) {
20
21
  // method call here
21
22
  return;
22
23
  }
24
+
25
+ // Shift+D to split selected segment
26
+ if (event.shiftKey && (event.key.toLowerCase() === 'd' || event.code === 'KeyD')) {
27
+ _this.handleSegmentSplit();
28
+ event.preventDefault();
29
+ event.stopPropagation();
30
+ return;
31
+ }
23
32
  switch (event.key.toLowerCase()) {
24
33
  }
25
34
  };
@@ -30,7 +39,54 @@ var KeyboardControlsManager = /*#__PURE__*/function () {
30
39
 
31
40
  // Override transform controls keyboard handling
32
41
  this.overrideTransformControlsKeyboard();
33
- console.log('Keyboard controls initialized with Ctrl+Z undo override');
42
+ console.log('Keyboard controls initialized with Ctrl+Z undo override and Shift+D segment split');
43
+ }
44
+
45
+ /**
46
+ * Handle segment split operation (Shift+D)
47
+ * Splits the currently selected segment in half if it's a pipe segment
48
+ */
49
+ }, {
50
+ key: "handleSegmentSplit",
51
+ value: function handleSegmentSplit() {
52
+ var sceneViewer = this.sceneViewer;
53
+
54
+ // Check if transform controls are active with a selected object
55
+ if (!sceneViewer.transformManager || !sceneViewer.transformManager.selectedObjects || sceneViewer.transformManager.selectedObjects.length === 0) {
56
+ console.log('ℹ️ No object selected for segment split');
57
+ return;
58
+ }
59
+ var selectedObject = sceneViewer.transformManager.selectedObjects[0];
60
+
61
+ // Verify it's a segment
62
+ if (!selectedObject.userData || selectedObject.userData.objectType !== 'segment') {
63
+ console.log('ℹ️ Selected object is not a segment, cannot split');
64
+ return;
65
+ }
66
+ console.log('✂️ Shift+D pressed - splitting segment:', selectedObject.uuid);
67
+
68
+ // Access CentralPlant through sceneViewer
69
+ var centralPlant = sceneViewer.centralPlant;
70
+ if (!centralPlant || typeof centralPlant.splitSegment !== 'function') {
71
+ console.error('❌ CentralPlant or splitSegment method not available');
72
+ return;
73
+ }
74
+
75
+ // Call the public API to split the segment
76
+ var result = centralPlant.splitSegment(selectedObject.uuid);
77
+ if (result) {
78
+ console.log('✅ Segment split successful:', result);
79
+
80
+ // Deselect the original segment (now removed) and optionally select one of the new segments
81
+ sceneViewer.transformManager.deselectObject();
82
+
83
+ // Optionally select the first new segment
84
+ if (result.segment1) {
85
+ sceneViewer.transformManager.selectObject(result.segment1);
86
+ }
87
+ } else {
88
+ console.error('❌ Segment split failed');
89
+ }
34
90
  }
35
91
 
36
92
  /**
@@ -153,6 +153,14 @@ var transformControls = /*#__PURE__*/function (_THREE$Object3D) {
153
153
  }, {
154
154
  key: "_getBoundingBoxCenter",
155
155
  value: function _getBoundingBoxCenter(object) {
156
+ var _object$userData;
157
+ // Special case: if this is a multi-selection group, use its position directly
158
+ // (it's an empty group positioned at the centroid, so no need to calculate bounding box)
159
+ if ((_object$userData = object.userData) !== null && _object$userData !== void 0 && _object$userData.isMultiSelectionGroup) {
160
+ var worldPos = new THREE.Vector3();
161
+ object.getWorldPosition(worldPos);
162
+ return worldPos;
163
+ }
156
164
  var boundingBox = new THREE.Box3();
157
165
 
158
166
  // Set from object, which calculates world bounding box
@@ -161,9 +169,9 @@ var transformControls = /*#__PURE__*/function (_THREE$Object3D) {
161
169
  // If bounding box is empty or invalid, fall back to object position
162
170
  if (boundingBox.isEmpty()) {
163
171
  console.warn('transformControls: Bounding box is empty, using object position');
164
- var worldPos = new THREE.Vector3();
165
- object.getWorldPosition(worldPos);
166
- return worldPos;
172
+ var _worldPos = new THREE.Vector3();
173
+ object.getWorldPosition(_worldPos);
174
+ return _worldPos;
167
175
  }
168
176
  var center = new THREE.Vector3();
169
177
  boundingBox.getCenter(center);