@roomle/web-sdk 3.9.0 → 3.10.0-alpha.1

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 (65) hide show
  1. package/lib/ConfiguratorKernel.wasm +0 -0
  2. package/lib/RoomleCore.js +5 -5
  3. package/lib/RoomleCore.wasm +0 -0
  4. package/lib/RoomleToolsCore.wasm +0 -0
  5. package/lib/{api-52cOotqw.mjs → api-DVBX8_mw.mjs} +10 -10
  6. package/lib/{api-52cOotqw.mjs.map → api-DVBX8_mw.mjs.map} +1 -1
  7. package/lib/asset-loader.worker-C911tbNL.mjs.map +1 -1
  8. package/lib/banana-for-scale-B_LIHI9q.mjs.map +1 -1
  9. package/lib/budgeteer.sw-D3VxiASa.mjs.map +1 -1
  10. package/lib/{component-dimensioning-12aJsCzQ.mjs → component-dimensioning-DC1Lxdp-.mjs} +2 -2
  11. package/lib/{component-dimensioning-12aJsCzQ.mjs.map → component-dimensioning-DC1Lxdp-.mjs.map} +1 -1
  12. package/lib/{component-raycast-helper-CcrmOq29.mjs → component-raycast-helper-Wpay-VAg.mjs} +2 -2
  13. package/lib/{component-raycast-helper-CcrmOq29.mjs.map → component-raycast-helper-Wpay-VAg.mjs.map} +1 -1
  14. package/lib/configurator-BRZ1-AQZ.mjs +2 -0
  15. package/lib/configurator-DU1NHt_a.mjs +45 -0
  16. package/lib/{configurator-D3ZKy6bf.mjs.map → configurator-DU1NHt_a.mjs.map} +1 -1
  17. package/lib/{glb-viewer-BJJ9OIlH.mjs → glb-viewer-BPfa4Fz5.mjs} +17 -17
  18. package/lib/{glb-viewer-BJJ9OIlH.mjs.map → glb-viewer-BPfa4Fz5.mjs.map} +1 -1
  19. package/lib/glb-viewer-Bllsu2_m.mjs +2 -0
  20. package/lib/{highlight-coordinator-BuFleG2q.mjs → highlight-coordinator-BcJdy2_o.mjs} +2 -2
  21. package/lib/{highlight-coordinator-BuFleG2q.mjs.map → highlight-coordinator-BcJdy2_o.mjs.map} +1 -1
  22. package/lib/{homag-intelligence-BxpMWKLs.mjs → homag-intelligence-D8Lm2GMZ.mjs} +4 -4
  23. package/lib/homag-intelligence-D8Lm2GMZ.mjs.map +1 -0
  24. package/lib/{main-QTvbXAvy.mjs → main-DXPoPkIG.mjs} +3632 -3159
  25. package/lib/main-DXPoPkIG.mjs.map +1 -0
  26. package/lib/{material-viewer-BPcCfvCC.mjs → material-viewer-CNTiw7G9.mjs} +17 -17
  27. package/lib/{material-viewer-BPcCfvCC.mjs.map → material-viewer-CNTiw7G9.mjs.map} +1 -1
  28. package/lib/packages-D61uTgIK.mjs +4 -0
  29. package/lib/planner-BO7I35KU.mjs +2 -0
  30. package/lib/planner-CWQ8F70q.mjs +44 -0
  31. package/lib/{planner-C1-sOmHY.mjs.map → planner-CWQ8F70q.mjs.map} +1 -1
  32. package/lib/roomle-headless.d.ts +509 -143
  33. package/lib/roomle-headless.js +45 -45
  34. package/lib/roomle-headless.js.map +1 -1
  35. package/lib/roomle-sdk.d.ts +509 -143
  36. package/lib/roomle-sdk.js +8 -8
  37. package/lib/{roomle-webgpu-renderer-BrZZeAGw.mjs → roomle-webgpu-renderer-CmqMWt2K.mjs} +2 -2
  38. package/lib/{roomle-webgpu-renderer-BrZZeAGw.mjs.map → roomle-webgpu-renderer-CmqMWt2K.mjs.map} +1 -1
  39. package/lib/{scene-renderer-3nhM4cEu.mjs → scene-renderer-6t0p4vb4.mjs} +2 -2
  40. package/lib/{scene-renderer-3nhM4cEu.mjs.map → scene-renderer-6t0p4vb4.mjs.map} +1 -1
  41. package/lib/{script-loader-3LiaLeLT.mjs → script-loader-DovMlDVR.mjs} +2 -2
  42. package/lib/{script-loader-3LiaLeLT.mjs.map → script-loader-DovMlDVR.mjs.map} +1 -1
  43. package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/package.json +1 -1
  44. package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/src/embind/plannerCoreInterface.d.ts +36 -24
  45. package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/src/embind/plannerCoreInterface.js.map +1 -1
  46. package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/wasm_modern/ConfiguratorKernel.wasm +0 -0
  47. package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/wasm_modern/RoomleCore.js +5 -5
  48. package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/wasm_modern/RoomleCore.wasm +0 -0
  49. package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/wasm_modern/RoomleToolsCore.wasm +0 -0
  50. package/lib/{stats-helper-COC7Moh0.mjs → stats-helper-B9MDLRpR.mjs} +2 -2
  51. package/lib/{stats-helper-COC7Moh0.mjs.map → stats-helper-B9MDLRpR.mjs.map} +1 -1
  52. package/lib/{threejs-utils-CElderZe.mjs → threejs-utils-ZKvz9Qno.mjs} +61 -57
  53. package/lib/threejs-utils-ZKvz9Qno.mjs.map +1 -0
  54. package/lib/{tools-core-mkA4m80O.mjs → tools-core-Ks33p1cu.mjs} +5 -5
  55. package/lib/{tools-core-mkA4m80O.mjs.map → tools-core-Ks33p1cu.mjs.map} +1 -1
  56. package/package.json +1 -1
  57. package/lib/configurator-CarZpfPv.mjs +0 -2
  58. package/lib/configurator-D3ZKy6bf.mjs +0 -45
  59. package/lib/glb-viewer-CJ7BPqI-.mjs +0 -2
  60. package/lib/homag-intelligence-BxpMWKLs.mjs.map +0 -1
  61. package/lib/main-QTvbXAvy.mjs.map +0 -1
  62. package/lib/packages-JQ2uWInj.mjs +0 -4
  63. package/lib/planner-C1-sOmHY.mjs +0 -44
  64. package/lib/planner-CnRaQM_h.mjs +0 -2
  65. package/lib/threejs-utils-CElderZe.mjs.map +0 -1
@@ -5,7 +5,7 @@ import { Camera } from 'three';
5
5
  import { Color } from 'three';
6
6
  import { ColorRepresentation } from 'three';
7
7
  import { CommunicationInterfaceCallback } from '../../../workers/src/communication-interface';
8
- import { ConstructionObjectDoorArchArray } from 'roomle-core-hsc/src/embind/plannerCoreInterface';
8
+ import { ConstructionObjectDoorArch } from 'roomle-core-hsc/src/embind/plannerCoreInterface';
9
9
  import { createExtObjId } from '../../../../../common/src/utils/external-objects';
10
10
  import { Enumify } from '../../../common/src/utils/types';
11
11
  import { Enumify as Enumify_2 } from '../../../../../../common/src/utils/types';
@@ -33,7 +33,9 @@ import { Object3D } from 'three';
33
33
  import { Object3DEventMap } from 'three';
34
34
  import { OrthographicCamera } from 'three';
35
35
  import { ParametersGroup } from 'three/examples/jsm/inspector/tabs/Parameters.js';
36
+ import { PartList } from 'roomle-core-hsc/src/embind/configuratorCoreInterface';
36
37
  import { PerspectiveCamera } from 'three';
38
+ import { PlanInteractionHandler as PlanInteractionHandler_2 } from 'roomle-core-hsc/src/embind/plannerCoreInterface';
37
39
  import { PointLight } from 'three';
38
40
  import { Scene } from 'three';
39
41
  import { Texture } from 'three';
@@ -1292,6 +1294,7 @@ export declare class ConfiguratorKernelAccess extends CommonKernelAccess {
1292
1294
  changeCommonComponentParameter(componentIds: number[], parameterKey: string, type: string, value: string, resolve: () => void, reject: () => void): void;
1293
1295
  changeComponentParameter(componentId: number, parameterKey: string, type: string, value: string, resolve: () => void, reject: () => void): void;
1294
1296
  changePlanObjectParameter(runtimeId: number, parameterKey: string, type: string, value: string, resolve: () => void, reject: () => void): void;
1297
+ changePlanObjectsParameter(runtimeIds: number[], parameterKey: string, type: string, value: string, resolve: () => void, reject: () => void): void;
1295
1298
  protected _getAnimationLevelForObject(_runtimeId: number, animation: KernelAnimation | undefined): AnimationLevelType;
1296
1299
  updateAnimationParameters(elementId: number | number[], parameters: KernelParameter[]): void;
1297
1300
  changeAnimationValue(elementId: number, parameterKey: string, value: string, level: number, animationLevel: AnimationLevelType, animate: boolean): void;
@@ -2174,6 +2177,11 @@ export declare abstract class ConstructionObject extends PlanObjectPtr {
2174
2177
  export declare class ConstructionObjectSet extends EmsSet<ConstructionObject> {
2175
2178
  }
2176
2179
 
2180
+ export declare interface ConstructionOverview {
2181
+ objects: KernelPlanObjectList;
2182
+ parts: PartList;
2183
+ }
2184
+
2177
2185
  export declare interface ConstructionPlanObject extends PlanObject {
2178
2186
  getAttachedWall(): WallPlanObject;
2179
2187
  getPreferredSide(): LeftOrRightWallSide;
@@ -2181,7 +2189,7 @@ export declare interface ConstructionPlanObject extends PlanObject {
2181
2189
  getCornerFromRight(): KernelVector3;
2182
2190
  getCornerToLeft(): KernelVector3;
2183
2191
  getCornerToRight(): KernelVector3;
2184
- getDoorArches(): ConstructionObjectDoorArchArray;
2192
+ getDoorArches(): EmsArray<ConstructionObjectDoorArch>;
2185
2193
  }
2186
2194
 
2187
2195
  export declare class ConstructionPlanObjectViewModel extends StaticPlanObjectViewModel {
@@ -3106,6 +3114,8 @@ export declare interface ExternalObjectDockedRootModule {
3106
3114
  dockingVector: string;
3107
3115
  dockingVectorIndex: number;
3108
3116
  id: string;
3117
+ mode: string;
3118
+ offset: number[];
3109
3119
  }
3110
3120
 
3111
3121
  export declare interface ExternalObjectGroup {
@@ -3155,6 +3165,7 @@ export declare interface ExternalObjectGroupLayoutSide {
3155
3165
  export declare interface ExternalObjectLoadConfiguration {
3156
3166
  applyGlobalChildMode: boolean;
3157
3167
  correctArrangement: boolean;
3168
+ applyGroupPosition: boolean;
3158
3169
  findFreeSpaceInPlan: boolean;
3159
3170
  isVisible: boolean;
3160
3171
  respondWithPositionInPlan: boolean;
@@ -3335,6 +3346,8 @@ export declare interface FetchOptions {
3335
3346
  embed?: RAPI_PATHS[];
3336
3347
  }
3337
3348
 
3349
+ export declare type FinalizeMode = 'immediate' | 'on-signal';
3350
+
3338
3351
  export declare abstract class Floor extends PlanElement {
3339
3352
  area: number;
3340
3353
  material: FloorMaterial;
@@ -3355,6 +3368,12 @@ export declare interface FloorAreaData<Vector2Type = Vector3, Vector3Type = Vect
3355
3368
 
3356
3369
  export declare type FloorAreaDataTransferable = FloorAreaData<Position2, Position3>;
3357
3370
 
3371
+ export declare interface FloorCluster {
3372
+ floors: Floor[];
3373
+ area: number;
3374
+ labelPosition: KernelVector3f;
3375
+ }
3376
+
3358
3377
  export declare class FloorMaterial extends BaseMaterial {
3359
3378
  uvScale(): KernelVector3f;
3360
3379
  rotation(): KernelVector3f;
@@ -3624,6 +3643,140 @@ export declare interface GlueLogic {
3624
3643
  getMaterialUrl(materialId: string, groupOrModuleId?: string): string | null;
3625
3644
  }
3626
3645
 
3646
+ /**
3647
+ * Hand-typed overrides of core handler methods, re-typed against our model types
3648
+ * (PlanObject, KernelObject, …) which differ from core's. Everything not listed here
3649
+ * is inherited from the real core type — see PlanInteractionHandler below.
3650
+ */
3651
+ export declare interface HandWrittenPlanInteractionHandler {
3652
+ /** embind cleanup — frees the underlying C++ instance. */
3653
+ delete(): void;
3654
+ init(reference: HandWrittenPlanInteractionHandler, zoomFactor: number, viewSnapDist: number, wallSnapMode: any, objectSnapMode: any, shouldSnap: boolean, drawingType: any): void;
3655
+ getConfiguratorKernel(): ConfiguratorKernelClass;
3656
+ loadPlanXML(xml: string): Plan_2;
3657
+ createPlanWithObjectFromItem(object: KernelObject, position: KernelVector3, rotationInRad: number): Plan_2;
3658
+ getPlan(): Plan_2;
3659
+ moveElementTo(planObject: KernelObject, targetPosition: KernelVector3, dragging: boolean, cameraPosition?: KernelVector3): void;
3660
+ moveElementToIn2d(planObject: KernelObject, targetPosition: KernelVector3, dragging: boolean): void;
3661
+ moveElementBy(planObject: KernelObject, distance: KernelVector3, dragging: boolean): void;
3662
+ duplicatePlanObject(object: PlanObject, count: number, findFreeSpaceInPlan: boolean): PlanObject[];
3663
+ duplicatePlanObjects(objects: PlanObjectList, count: number, findFreeSpaceInPlan: boolean): PlanObject[];
3664
+ setElementVisibility(element: PlanElement_2, isVisible: boolean): void;
3665
+ moveObjectsBy(planObjects: KernelObjectPtrList, distance: KernelVector3): void;
3666
+ rotateObjectTo(planObject: KernelObject, angleInRad: number): void;
3667
+ setObjectRotation(planObject: KernelObject, angleInRad: number): void;
3668
+ addPlanObjects(list: KernelObjectPtrList, findFreeSpaceInPlan: boolean): PlanObject[];
3669
+ addPlanObjectFromItem(object: KernelObject, position: KernelVector3, type: number, findFreeSpaceInPlan: boolean): PlanObject;
3670
+ addOrUpdateExternalPlanObjects(serializedConfiguration: string | string[], position: KernelVector3, rotationInRad: number, updateConfiguration: ExternalObjectLoadConfiguration, mergedGroupIds: string | string[]): PlanObject[];
3671
+ createPreviewGeometryForAddOn(objectId: string, objectConfiguration: string, articleId: string, groupDefinitions: string, validContainerModules: ExternalValidContainerModule[]): void;
3672
+ catalogItemLoaded(catalogItem: KernelCatalogItem): void;
3673
+ removeElement(planObject: KernelObject): void;
3674
+ removeObjectWithId(objectId: string): void;
3675
+ mergeObjects(objects: PlanObjectList): void;
3676
+ groupObjects(planObjectPtrList: PlanObjectList): ObjectGroupPtr;
3677
+ rotateObjectsBy(planObjectPtrList: PlanObjectList, anAngleInRad: number, aroundPoint: KernelVector3): void;
3678
+ rotateGroupBy(group: ObjectGroupPtr, anAngleInRad: number, aroundPoint: KernelVector3): void;
3679
+ deactivateAllSnappingActivity(): void;
3680
+ reactivateAllSnappingActivity(): void;
3681
+ isUndoPossible(): boolean;
3682
+ isRedoPossible(): boolean;
3683
+ clearHistory(): void;
3684
+ startInteraction(): void;
3685
+ resumeInteraction(): void;
3686
+ endInteraction(): void;
3687
+ undo(): void;
3688
+ redo(): void;
3689
+ isVectorPreviewModeEnabled(): boolean;
3690
+ getDrawingMode(): DrawingMode;
3691
+ beginDrawing(point: {
3692
+ x: number;
3693
+ y: number;
3694
+ z: number;
3695
+ }, drawingMode: DrawingMode, createUnclosedSpace: boolean): void;
3696
+ endDrawing(point: {
3697
+ x: number;
3698
+ y: number;
3699
+ z: number;
3700
+ }): void;
3701
+ cancelDrawing(): void;
3702
+ addNode(point: {
3703
+ x: number;
3704
+ y: number;
3705
+ z: number;
3706
+ }): PlanNode;
3707
+ addWall(from: PlanNode, to: PlanNode): KernelWall;
3708
+ setWallHeight(wall: KernelWall, height: number): void;
3709
+ setLengthOfEdge2D(wall: KernelWall, length: number, preferredSide: WallSide, direction: EMSConstant, moveOrthogonalWalls: boolean): void;
3710
+ setLengthOfSlopingEdge(wall: KernelWall, slopingLength: number, preferredSide: WallSide, direction: EMSConstant, moveOrthogonalWalls: boolean): void;
3711
+ setWallThickness(wall: KernelWall, thickness: number): void;
3712
+ addAttic(wall: KernelWall, kneeHeight: number, width: number, side: WallSide | null | undefined): KernelAttic;
3713
+ setAtticSide(attic: KernelAttic, side: WallSide): void;
3714
+ setAtticKneeHeight(attic: KernelAttic, kneeHeight: number): void;
3715
+ setAtticWidth(attic: KernelAttic, width: number): void;
3716
+ currentDrawingPosition(point: {
3717
+ x: number;
3718
+ y: number;
3719
+ z: number;
3720
+ }): void;
3721
+ forceNode(point: {
3722
+ x: number;
3723
+ y: number;
3724
+ z: number;
3725
+ }): void;
3726
+ setDrawingType(aNewDrawingType: DrawingType): void;
3727
+ setZoomFactor(pxPerMM: number): void;
3728
+ setViewSnapDist(aDist: number): void;
3729
+ setRotationSnapAngle(angleInRadians: number): void;
3730
+ setDefaultWallThickness(wallThickness: number, applyToAll: boolean): void;
3731
+ setDefaultWallHeight(wallHeight: number, applyToAll: boolean): void;
3732
+ setDefaultParapetHeight(parapetHeight: number, applyToAll: boolean): void;
3733
+ setRoomParapetHeight(floor: KernelFloor, parapetHeight: number): void;
3734
+ getDefaultExteriorWallMaterial(): KernelWallMaterial;
3735
+ setDefaultExteriorWallMaterial(wallMaterial: KernelWallMaterial): void;
3736
+ getDefaultInteriorWallMaterial(): KernelWallMaterial;
3737
+ setDefaultInteriorWallMaterial(wallMaterial: KernelWallMaterial): void;
3738
+ getDefaultFloorMaterial(): KernelFloorMaterial;
3739
+ setDefaultFloorMaterial(floorMaterial: KernelFloorMaterial): void;
3740
+ setElementCustomDataJson(element: PlanElement_2, customDataJson: string): void;
3741
+ setWallLeftMaterial(wall: KernelWall, material: KernelWallMaterial): void;
3742
+ setWallRightMaterial(wall: KernelWall, material: KernelWallMaterial): void;
3743
+ setFloorMaterial(floor: KernelFloor, material: KernelFloorMaterial): void;
3744
+ setFloorLabelObject(floor: KernelFloor, serializedLabelObject: string): void;
3745
+ setFloorType(floor: KernelFloor, floorType: FloorType): void;
3746
+ setEdgeType(wall: KernelWall, edgeType: EdgeType): void;
3747
+ getContinuousDrawingManager(): ContinuousDrawingManager;
3748
+ setSnapFeedbackWhileDrawing(enabled: boolean): void;
3749
+ consistsOfMergedComponents(object: KernelObject): boolean;
3750
+ setObjectSize(anObject: KernelObject, aNewSize: KernelVector3, anAnchor: Anchor): void;
3751
+ setObjectFlipX(anObject: KernelObject, shouldFlipX: boolean): void;
3752
+ setObjectFlipY(anObject: KernelObject, shouldFlipY: boolean): void;
3753
+ setObjectCustomColor(object: PlanObject, rgbColor: number, useCustomColor: boolean): void;
3754
+ setObjectCustomLabel(object: PlanObject, label: string): void;
3755
+ setObjectFixedZ(anObject: KernelObject, shouldFlipZ: boolean): void;
3756
+ setMeasurePoint1(measure: PlanMeasure_2, point: KernelVector3f, snapToWalls: boolean, snapToObjects: boolean): void;
3757
+ setMeasurePoint2(measure: PlanMeasure_2, point: KernelVector3f, snapToWalls: boolean, snapToObjects: boolean): void;
3758
+ addMeasure(startPosition: KernelVector3f, endPosition: KernelVector3f): PlanMeasure_2;
3759
+ setDiscardExternalObjectsOnLoad(discard: boolean): void;
3760
+ isChildObjectModePossible(object: KernelObject): boolean;
3761
+ isEnabledChildObjectMode(object: KernelObject): boolean;
3762
+ enableChildObjects(object: KernelObject, switchChildModeOffForAllOtherObjects: boolean): KernelObject;
3763
+ disableChildObjects(object: KernelObject): KernelObject;
3764
+ enableChildObjectsOfExternalObject(objectId: string, switchChildModeOffForAllOtherObjects: boolean): KernelObject;
3765
+ disableChildObjectsOfExternalObject(objectId: string): KernelObject;
3766
+ disableChildObjectsOfAllPlanObjects(): void;
3767
+ setAutomatedWallHeight(wall: KernelWall, value: boolean): void;
3768
+ unit: string;
3769
+ enableRaster: boolean;
3770
+ customRaster: number;
3771
+ enableSnap: boolean;
3772
+ enableDrawingSnap: boolean;
3773
+ objectToWallSnapMode: SnapMode;
3774
+ objectToObjectSnapMode: SnapMode;
3775
+ dockWhenSnap: boolean;
3776
+ unDockOnMove: boolean;
3777
+ enableTerrain: boolean;
3778
+ }
3779
+
3627
3780
  export declare class HdrEnvironmentLoader implements Context {
3628
3781
  _creator_: string;
3629
3782
  private _environmentMap;
@@ -3685,6 +3838,14 @@ export declare type HiAttributeOptionsResult = CheckDropDownResult | CheckDropDo
3685
3838
 
3686
3839
  export declare type HiContextAction = (typeof HI_CONTEXT_ACTION)[keyof typeof HI_CONTEXT_ACTION];
3687
3840
 
3841
+ /**
3842
+ * Lifecycle methods internal to PlanInteractionManager — it drives them itself,
3843
+ * external code must not. Single source for both the runtime guard (HIDDEN_LIFECYCLE)
3844
+ * and the compile-time Omit in the PlanInteractionManager type. `satisfies` keeps
3845
+ * every entry a real handler method.
3846
+ */
3847
+ export declare const HIDDEN_INTERACTION_LIFECYCLE_METHODS: readonly ["startInteraction", "resumeInteraction", "endInteraction"];
3848
+
3688
3849
  export declare interface HighlightHelper {
3689
3850
  init(object: Object3D, camera: PerspectiveCamera): void;
3690
3851
  setCamera(camera: PerspectiveCamera): void;
@@ -4094,6 +4255,8 @@ export declare class IntArray extends EmsArray<number> {
4094
4255
  export declare class IntArray_2 extends EmsArray<number> {
4095
4256
  }
4096
4257
 
4258
+ export declare type InteractionMethodName = Exclude<keyof PlanInteractionManager, keyof UndoRedoHandler>;
4259
+
4097
4260
  export declare interface InteractionOptions {
4098
4261
  keepInteractionOpen?: boolean;
4099
4262
  }
@@ -4107,6 +4270,8 @@ export declare const isExternalObject: (someThing: unknown) => someThing is Exte
4107
4270
 
4108
4271
  export declare const isExtObjId: (id: unknown) => id is ExtObjId_2;
4109
4272
 
4273
+ export declare const isFirefox: () => boolean;
4274
+
4110
4275
  export declare const isSafari: () => boolean;
4111
4276
 
4112
4277
  export declare const KERNEL_MESSAGE_TYPE: {
@@ -5412,133 +5577,33 @@ export declare abstract class PlanImage extends PlanElement {
5412
5577
  center: KernelVector3f;
5413
5578
  }
5414
5579
 
5415
- export declare interface PlanInteractionHandler {
5416
- init(reference: PlanInteractionHandler, zoomFactor: number, viewSnapDist: number, wallSnapMode: any, objectSnapMode: any, shouldSnap: boolean, drawingType: any): PlanInteractionHandler;
5417
- getConfiguratorKernel(): ConfiguratorKernelClass;
5418
- loadPlanXML(xml: string): Plan_2;
5419
- createPlanWithObjectFromItem(object: KernelObject, position: KernelVector3, rotationInRad: number): Plan_2;
5420
- getPlan(): Plan_2;
5421
- moveElementTo(planObject: KernelObject, targetPosition: KernelVector3, dragging: boolean, cameraPosition?: KernelVector3): void;
5422
- moveElementToIn2d(planObject: KernelObject, targetPosition: KernelVector3, dragging: boolean): void;
5423
- moveElementBy(planObject: KernelObject, distance: KernelVector3, dragging: boolean): void;
5424
- duplicatePlanObject(object: PlanObject, count: number, findFreeSpaceInPlan: boolean): PlanObject[];
5425
- duplicatePlanObjects(objects: PlanObjectList, count: number, findFreeSpaceInPlan: boolean): PlanObject[];
5426
- setElementVisibility(element: PlanElement_2, isVisible: boolean): void;
5427
- moveObjectsBy(planObjects: KernelObjectPtrList, distance: KernelVector3): void;
5428
- rotateObjectTo(planObject: KernelObject, angleInRad: number): void;
5429
- setObjectRotation(planObject: KernelObject, angleInRad: number): void;
5430
- addPlanObjects(list: KernelObjectPtrList, findFreeSpaceInPlan: boolean): PlanObject[];
5431
- addPlanObjectFromItem(object: KernelObject, position: KernelVector3, type: number, findFreeSpaceInPlan: boolean): PlanObject;
5432
- addOrUpdateExternalPlanObjects(serialzedConfiguration: string | string[], position: KernelVector3, rotationInRad: number, updateConfiguration: ExternalObjectLoadConfiguration, mergedGroupIds: string | string[]): PlanObject[];
5433
- createPreviewGeometryForAddOn(objectId: string, objectConfiguration: string, articleId: string, groupDefinitions: string, validContainerModules: ExternalValidContainerModule[]): void;
5434
- catalogItemLoaded(catalogItem: KernelCatalogItem): void;
5435
- removeElement(planObject: KernelObject): void;
5436
- removeObjectWithId(objectId: string): void;
5437
- mergeObjects(objects: PlanObjectList): void;
5438
- groupObjects(planObjectPtrList: PlanObjectList): ObjectGroupPtr;
5439
- rotateObjectsBy(planObjectPtrList: PlanObjectList, anAngleInRad: number, aroundPoint: KernelVector3): void;
5440
- rotateGroupBy(group: ObjectGroupPtr, anAngleInRad: number, aroundPoint: KernelVector3): void;
5441
- deactivateAllSnappingActivity(): void;
5442
- reactivateAllSnappingActivity(): void;
5443
- isUndoPossible(): boolean;
5444
- isRedoPossible(): boolean;
5445
- clearHistory(): void;
5446
- startInteraction(): void;
5447
- resumeInteraction(): void;
5448
- endInteraction(): void;
5449
- undo(): void;
5450
- redo(): void;
5451
- isVectorPreviewModeEnabled(): boolean;
5452
- getDrawingMode(): DrawingMode;
5453
- sCreateUnclosedSpaceEnabled(): boolean;
5454
- beginDrawing(point: {
5455
- x: number;
5456
- y: number;
5457
- z: number;
5458
- }, drawingMode: DrawingMode, createUnclosedSpace: boolean): void;
5459
- endDrawing(point: {
5460
- x: number;
5461
- y: number;
5462
- z: number;
5463
- }): void;
5464
- cancelDrawing(): void;
5465
- addNode(point: {
5466
- x: number;
5467
- y: number;
5468
- z: number;
5469
- }): PlanNode;
5470
- addWall(from: PlanNode, to: PlanNode): KernelWall;
5471
- setWallHeight(wall: KernelWall, height: number): void;
5472
- setLengthOfEdge2D(wall: KernelWall, length: number, preferredSide: WallSide, direction: EMSConstant, moveOrthogonalWalls: boolean): void;
5473
- setLengthOfSlopingEdge(wall: KernelWall, slopingLength: number, preferredSide: WallSide, direction: EMSConstant, moveOrthogonalWalls: boolean): void;
5474
- setWallThickness(wall: KernelWall, thickness: number): void;
5475
- addAttic(wall: KernelWall, kneeHeight: number, width: number, side: WallSide | null | undefined): KernelAttic;
5476
- setAtticSide(attic: KernelAttic, side: WallSide): void;
5477
- setAtticKneeHeight(attic: KernelAttic, kneeHeight: number): void;
5478
- setAtticWidth(attic: KernelAttic, width: number): void;
5479
- currentDrawingPosition(point: {
5480
- x: number;
5481
- y: number;
5482
- z: number;
5483
- }): void;
5484
- forceNode(point: {
5485
- x: number;
5486
- y: number;
5487
- z: number;
5488
- }): void;
5489
- setDrawingType(aNewDrawingType: DrawingType): void;
5490
- setZoomFactor(pxPerMM: number): void;
5491
- setViewSnapDist(aDist: number): void;
5492
- setRotationSnapAngle(angleInRadians: number): void;
5493
- setDefaultWallThickness(wallThickness: number, applyToAll: boolean): void;
5494
- setDefaultWallHeight(wallHeight: number, applyToAll: boolean): void;
5495
- setDefaultParapetHeight(parapetHeight: number, applyToAll: boolean): void;
5496
- setRoomParapetHeight(floor: KernelFloor, parapetHeight: number): void;
5497
- getDefaultExteriorWallMaterial(): KernelWallMaterial;
5498
- setDefaultExteriorWallMaterial(wallMaterial: KernelWallMaterial): void;
5499
- getDefaultInteriorWallMaterial(): KernelWallMaterial;
5500
- setDefaultInteriorWallMaterial(wallMaterial: KernelWallMaterial): void;
5501
- getDefaultFloorMaterial(): KernelFloorMaterial;
5502
- setDefaultFloorMaterial(floorMaterial: KernelFloorMaterial): void;
5503
- setElementCustomDataJson(element: PlanElement_2, customDataJson: string): void;
5504
- setWallLeftMaterial(wall: KernelWall, material: KernelWallMaterial): void;
5505
- setWallRightMaterial(wall: KernelWall, material: KernelWallMaterial): void;
5506
- setFloorMaterial(floor: KernelFloor, material: KernelFloorMaterial): void;
5507
- setFloorLabelObject(floor: KernelFloor, serializedLabelObject: string): void;
5508
- setFloorType(floor: KernelFloor, floorType: FloorType): void;
5509
- setEdgeType(wall: KernelWall, edgeType: EdgeType): void;
5510
- getContinuousDrawingManager(): ContinuousDrawingManager;
5511
- setSnapFeedbackWhileDrawing(enabled: boolean): void;
5512
- consistsOfMergedComponents(object: KernelObject): boolean;
5513
- setObjectSize(anObject: KernelObject, aNewSize: KernelVector3, anAnchor: Anchor): void;
5514
- setObjectFlipX(anObject: KernelObject, shouldFlipX: boolean): void;
5515
- setObjectFlipY(anObject: KernelObject, shouldFlipY: boolean): void;
5516
- setObjectCustomColor(object: PlanObject, rgbColor: number, useCustomColor: boolean): void;
5517
- setObjectCustomLabel(object: PlanObject, label: string): void;
5518
- setObjectFixedZ(anObject: KernelObject, shouldFlipZ: boolean): void;
5519
- setMeasurePoint1(measure: PlanMeasure_2, point: KernelVector3f, snapToWalls: boolean, snapToObjects: boolean): void;
5520
- setMeasurePoint2(measure: PlanMeasure_2, point: KernelVector3f, snapToWalls: boolean, snapToObjects: boolean): void;
5521
- addMeasure(startPosition: KernelVector3f, endPosition: KernelVector3f): PlanMeasure_2;
5522
- setDiscardExternalObjectsOnLoad(discard: boolean): void;
5523
- isChildObjectModePossible(object: KernelObject): boolean;
5524
- isEnabledChildObjectMode(object: KernelObject): boolean;
5525
- enableChildObjects(object: KernelObject, switchChildModeOffForAllOtherObjects: boolean): KernelObject;
5526
- disableChildObjects(object: KernelObject): KernelObject;
5527
- enableChildObjectsOfExternalObject(objectId: string, switchChildModeOffForAllOtherObjects: boolean): KernelObject;
5528
- disableChildObjectsOfExternalObject(objectId: string): KernelObject;
5529
- disableChildObjectsOfAllPlanObjects(): void;
5530
- unit: string;
5531
- enableRaster: boolean;
5532
- customRaster: number;
5533
- enableSnap: boolean;
5534
- enableDrawingSnap: boolean;
5535
- objectToWallSnapMode: SnapMode;
5536
- objectToObjectSnapMode: SnapMode;
5537
- dockWhenSnap: boolean;
5538
- unDockOnMove: boolean;
5539
- enableTerrain: boolean;
5580
+ export declare type PlanInteractionHandler = Omit<PlanInteractionHandler_2, keyof HandWrittenPlanInteractionHandler> & HandWrittenPlanInteractionHandler;
5581
+
5582
+ export declare class PlanInteractionHandlerExtension extends UndoRedoHandler {
5583
+ addOrUpdateExternalPlanObjects(serializedConfiguration: string | string[], position: KernelVector3, rotationInRad: number, updateConfiguration: any, mergedGroupIds: string | string[]): PlanObject[];
5584
+ applyKernelParameterChange<T>(callback: () => T, parameterKey: string, elementId?: string | number): T;
5585
+ /**
5586
+ * Track a construction element position adjustment from bubble/dimension editing.
5587
+ * Creates an immediate undo/redo step. Used when users edit dimension bubbles
5588
+ * attached to construction elements (doors, windows, etc.) in walls.
5589
+ */
5590
+ adjustConstructionElementPosition(element: KernelObject, offset: any): void;
5591
+ /**
5592
+ * Track an object position adjustment from bubble/dimension editing on the floor.
5593
+ * Creates an immediate undo/redo step. Used when users edit dimension bubbles
5594
+ * for floor objects.
5595
+ */
5596
+ adjustObjectPosition(element: KernelObject, offset: any): void;
5597
+ /**
5598
+ * Track an object-to-wall distance adjustment from bubble/dimension editing.
5599
+ * Creates an immediate undo/redo step. Used when users edit object-to-wall
5600
+ * dimension bubbles on the floor.
5601
+ */
5602
+ adjustObjectToWallDistance(element: KernelObject, position: any, dragging: boolean): void;
5540
5603
  }
5541
5604
 
5605
+ export declare type PlanInteractionManager = Omit<Omit<PlanInteractionHandler, keyof PlanInteractionHandlerExtension> & PlanInteractionHandlerExtension, (typeof HIDDEN_INTERACTION_LIFECYCLE_METHODS)[number]>;
5606
+
5542
5607
  export declare abstract class PlanMeasure extends PlanElement {
5543
5608
  getPoint1(): KernelVector3f;
5544
5609
  getPoint2(): KernelVector3f;
@@ -5555,6 +5620,7 @@ export declare abstract class PlanModelViewHelper {
5555
5620
  static requestWallMesh2d(aWall: Wall): void;
5556
5621
  static requestFloorMesh2d(aFloor: Floor): void;
5557
5622
  static getCeilingHeight(aFloor: Floor): number;
5623
+ static getFloorClusters(plan: Plan): FloorCluster[];
5558
5624
  static getMaxDistToBorderForPlanObject(aPlanObject: PlanObjectPtr): number;
5559
5625
  static getDistToNextWallOnSide(anObject: PlanObjectPtr, aSide: PlanObjectSide, maxDist: number): number;
5560
5626
  static getDistAlongWallOnSide(anObject: ConstructionObject, aSide: PlanObjectSide, aWallSide: WallSide): number;
@@ -5562,7 +5628,8 @@ export declare abstract class PlanModelViewHelper {
5562
5628
  }
5563
5629
 
5564
5630
  export declare interface PlanModelViewHelper_2 {
5565
- getPlanOverview(planObject: KernelObject): PlanOverview;
5631
+ getPlanOverview(plan: Plan_2): PlanOverview;
5632
+ getConstructionOverview(plan: Plan_2): ConstructionOverview;
5566
5633
  getPlanObject(plan: Plan_2, aRuntimeId: number): KernelPlanObject;
5567
5634
  isChildObjectRootComponent(plan: Plan_2, componentRuntimeId: number): boolean;
5568
5635
  isAnimationRootComponent(plan: Plan_2, componentRuntimeId: number): boolean;
@@ -5690,7 +5757,12 @@ export declare interface PlannerInitData {
5690
5757
 
5691
5758
  export declare class PlannerKernelAccess extends ConfiguratorKernelAccess {
5692
5759
  private _roomlePlannerUiCallback;
5693
- private _planInteractionHandler;
5760
+ /**
5761
+ * Stores the PlanInteractionManager — NOT typed as PlanInteractionHandler.
5762
+ * This is a manager that composes and enhances the kernel handler with
5763
+ * smart action grouping, NOT a 1:1 implementation of the handler interface.
5764
+ */
5765
+ private _planInteractionManager;
5694
5766
  private _plannerKernelCallbackListener;
5695
5767
  private _plannerReadyListeners;
5696
5768
  private _plannerReady;
@@ -5704,19 +5776,25 @@ export declare class PlannerKernelAccess extends ConfiguratorKernelAccess {
5704
5776
  get homagIntelligence(): HomagIntelligence | null;
5705
5777
  setHomagIntelligence(homagIntelligence: HomagIntelligence | null): void;
5706
5778
  get isDockingInPlannerEnabled(): boolean;
5779
+ /**
5780
+ * Returns the PlanInteractionManager — a composition-based wrapper that adds
5781
+ * smart action grouping to kernel interactions. NOT a strict implementation
5782
+ * of PlanInteractionHandler, but compatible with it for backward compatibility.
5783
+ */
5784
+ get planInteractionManager(): PlanInteractionManager;
5707
5785
  private _createPlanInteractionHandler;
5708
5786
  addPlannerListener(listener: PlannerKernelCallbackI): void;
5709
5787
  removePlannerListener(listener: PlannerKernelCallbackI): void;
5710
5788
  isReady(): void;
5711
5789
  protected _setupKernel(): void;
5712
5790
  get callbacks(): RoomlePlannerUiCallback;
5713
- get planInteractionHandler(): PlanInteractionHandler;
5714
5791
  get planModelViewHelper(): PlanModelViewHelper_2;
5715
5792
  protected _validateParameters(parameters: KernelParameter[], getVerifiedOptions: (keys: string[]) => Promise<Record<string, CheckDropDownResult> | undefined>, errorMessage: string): Promise<KernelParameter[]>;
5716
5793
  protected _validateExternalComponentParameters(componentId: number, parameters: KernelParameter[]): Promise<KernelParameter[]>;
5717
5794
  protected _validateExternalPlanObjectParameters(objectId: number, parameters: KernelParameter[]): Promise<KernelParameter[]>;
5718
5795
  catalogItemLoaded(catalogItem: RapiItem): void;
5719
5796
  insertItems(itemList: Array<RapiItem | RapiConfiguration>, newUndoRedoStep?: boolean): Promise<RuntimeId[]>;
5797
+ private _performInsertItems;
5720
5798
  duplicateItems(planObjects: PlanObject[]): PlanObject[];
5721
5799
  mergeItems(planObjects: PlanObject[]): void;
5722
5800
  private _rapiItemToKernelItem;
@@ -5763,7 +5841,8 @@ export declare class PlannerKernelAccess extends ConfiguratorKernelAccess {
5763
5841
  addPlanMesh(plan: Plan_2, material: any, vertices: Float32Array, indices: Int32Array, uvCoords: Float32Array, normals: Float32Array, type: KernelEnum): void;
5764
5842
  endPlanConstruction(plan: Plan_2): void;
5765
5843
  createPlanFromObject(rapiElement: RapiItem | RapiConfiguration, position?: Position3, rotation?: number): Plan_2;
5766
- addPlanObjectFromItem(rapiElement: RapiItem | RapiConfiguration, newUndoRedoStep: boolean, position?: Position3, rotation?: number): Promise<RuntimeId>;
5844
+ addPlanObjectFromItem(rapiElement: RapiItem | RapiConfiguration, newUndoRedoStep: boolean, position?: Position3, rotation?: number, keepInteractionOpen?: boolean): Promise<RuntimeId>;
5845
+ private _performAddPlanObjectFromItem;
5767
5846
  coupleReferences(jsObject: any, coreReference: KernelObject): void;
5768
5847
  private _decoupleReferences;
5769
5848
  isConstructionPlanElement(planElement: PlanElement_2): boolean;
@@ -5790,6 +5869,9 @@ export declare class PlannerKernelAccess extends ConfiguratorKernelAccess {
5790
5869
  getObjectComponent(runtimeId: number, typeOfId: Enumify_3<typeof CORE_TYPE_OF_CORE_ID>): KernelPlanObjectComponent | null;
5791
5870
  isChildObjectRootComponent(roomleComponent: RoomleComponent): boolean;
5792
5871
  isAnimationRootComponent(roomleComponent: RoomleComponent): boolean;
5872
+ changePlanObjectParameter(runtimeId: number, parameterKey: string, type: string, value: string, resolve: () => void, reject: () => void): void;
5873
+ changePlanObjectsParameter(runtimeIds: number[], parameterKey: string, type: string, value: string, resolve: () => void, reject: () => void): void;
5874
+ changeComponentParameter(componentId: number, parameterKey: string, type: string, value: string, resolve: () => void, reject: () => void): void;
5793
5875
  }
5794
5876
 
5795
5877
  export declare interface PlannerKernelCallbackI {
@@ -5912,7 +5994,7 @@ export declare class PlannerSceneEventHandler extends SceneEventHandler<SceneEve
5912
5994
  private _currentPlanMeasure;
5913
5995
  constructor(creator: string, scene: Scene, camera: Camera, inputManager: InputManager);
5914
5996
  disable(): void;
5915
- get planInteractionHandler(): PlanInteractionHandler;
5997
+ get planInteractionManager(): PlanInteractionManager;
5916
5998
  get planModelViewHelper(): PlanModelViewHelper_2;
5917
5999
  get hoveredObjectId(): number | null;
5918
6000
  get isCurrentlyDrawing(): boolean;
@@ -6479,6 +6561,7 @@ export declare class PlanViewModel extends ConfiguratorViewModel implements Plan
6479
6561
  private commonHandlerForEditableAndTopView;
6480
6562
  isChildObjectRootComponent(roomleComponent: RoomleComponent): boolean;
6481
6563
  protected dockComponent(componentDocking: KernelComponentDocking): void;
6564
+ private _isConstructionElement;
6482
6565
  protected _addComponent(component: RoomleComponent): void;
6483
6566
  private _getPlanObjectViewModelForRuntimeId;
6484
6567
  getConfigurablePlanObjectForId(id: number): ConfiguratorPlanObjectViewModel | null;
@@ -6656,6 +6739,8 @@ export declare interface PosDockedContextRoot {
6656
6739
  id: string;
6657
6740
  dockingVector: PosDock | string;
6658
6741
  dockingVectorIndex: number;
6742
+ mode?: PosDockMode | string;
6743
+ offset?: number[];
6659
6744
  }
6660
6745
 
6661
6746
  export declare interface PosDockInfo {
@@ -6664,6 +6749,8 @@ export declare interface PosDockInfo {
6664
6749
  end: number[];
6665
6750
  }
6666
6751
 
6752
+ export declare type PosDockMode = 'StartStart' | 'EndEnd' | 'StartEnd' | 'EndStart';
6753
+
6667
6754
  export declare interface PosErrorMsg {
6668
6755
  category: LogMessageCategoryType;
6669
6756
  msg: string;
@@ -6728,6 +6815,19 @@ export declare interface PosGroup {
6728
6815
  * Optional the attributes of this group
6729
6816
  */
6730
6817
  attributes?: PosModuleAttribute[];
6818
+ /**
6819
+ * Optional repositioning data created by the group orchestrator's
6820
+ * groupAdjust; used to recalculate pos/rotationY after arranging
6821
+ */
6822
+ repositioningData?: PosGroupPositioningData;
6823
+ }
6824
+
6825
+ export declare interface PosGroupPositioningData {
6826
+ posGroup: number[];
6827
+ posRotationY?: number;
6828
+ rootId: string;
6829
+ rootRelPos?: number[];
6830
+ rootRelRotationY?: number;
6731
6831
  }
6732
6832
 
6733
6833
  export declare interface PosInsertLevelInfo {
@@ -8788,8 +8888,8 @@ export declare class RoomlePlanner<P extends readonly PluginName[] = readonly []
8788
8888
  private _globalInitData;
8789
8889
  private _globalCallback;
8790
8890
  private _unitFormatter;
8891
+ private _planInteractionManager;
8791
8892
  private _elevationPlan2dGenerator;
8792
- private _planInteractionHandler;
8793
8893
  private _sceneManager;
8794
8894
  private _plan;
8795
8895
  private _preloadPlanId;
@@ -8911,7 +9011,7 @@ export declare class RoomlePlanner<P extends readonly PluginName[] = readonly []
8911
9011
  pauseTest(): void;
8912
9012
  syncCatalog(catalogId: string): Promise<void>;
8913
9013
  loadError(error?: any): void;
8914
- getPlanInteractionHandler(): Promise<PlanInteractionHandler>;
9014
+ getPlanInteractionManager(): Promise<PlanInteractionManager>;
8915
9015
  getPlanModelViewHelper(): Promise<PlanModelViewHelper_2>;
8916
9016
  /**
8917
9017
  * Inserts the object into the scene (at a given position and rotation)
@@ -8956,6 +9056,12 @@ export declare class RoomlePlanner<P extends readonly PluginName[] = readonly []
8956
9056
  * get all info available for the current plan, including objects, rooms and walls
8957
9057
  */
8958
9058
  getPlanOverview(): Promise<PlanOverview>;
9059
+ /**
9060
+ * get the construction overview of the current plan, including the
9061
+ * construction objects (construction, doors and windows) and their combined
9062
+ * bill of materials
9063
+ */
9064
+ getConstructionOverview(): Promise<ConstructionOverview>;
8959
9065
  /**
8960
9066
  * Generates a top image (birds eye view) and returns it as base64
8961
9067
  * @param options
@@ -9196,12 +9302,6 @@ export declare class RoomlePlanner<P extends readonly PluginName[] = readonly []
9196
9302
  */
9197
9303
  selectProduct(planElementId: number, configurationId: number | null, contextAction: HiContextAction): Promise<void>;
9198
9304
  /* Excluded from this release type: globalCallbacks */
9199
- /**
9200
- * Handles interaction with the planner kernel, ensuring start and end interaction are tracked.
9201
- * @param action A function representing the action to perform.
9202
- * @returns The result of the action, if any.
9203
- */
9204
- private _executeWithInteraction;
9205
9305
  /**
9206
9306
  * Creates a sloping roof attic on a given wall.
9207
9307
  * @param wall The wall to add an attic to.
@@ -9240,8 +9340,7 @@ export declare class RoomlePlanner<P extends readonly PluginName[] = readonly []
9240
9340
  */
9241
9341
  updateAtticWidth(attic: KernelAttic, width: number): void;
9242
9342
  /**
9243
- * Runs a given function with a call to start and end interaction in the planInteractionHandler,
9244
- * this should be used when you want to add a history step after interacting with the plan.
9343
+ * Runs a callback as one atomic interaction step.
9245
9344
  * @param callback any function.
9246
9345
  */
9247
9346
  executeWithInteraction<T>(callback: MaybePromise<T>): Promise<T>;
@@ -9342,7 +9441,7 @@ export declare class RoomlePlannerUiCallback extends UiCallback implements Exter
9342
9441
  onCameraChanged: (type: Enumify_4<typeof CAMERA_TYPE>) => void;
9343
9442
  onCameraIdle: () => void;
9344
9443
  onTotalFloorAreaChanged: (totalFloorArea: number) => void;
9345
- onPlanInteractionHandlerCreated: (planInteractionHandler: PlanInteractionHandler) => void;
9444
+ onPlanInteractionManagerCreated: (planInteractionManager: PlanInteractionManager) => void;
9346
9445
  /**
9347
9446
  * is called when the planner kernel is ready. It returns the container and the instance
9348
9447
  * @param kernelContainer
@@ -9992,6 +10091,197 @@ export declare class StaticPlanObjectViewModel extends PlanObjectViewModel {
9992
10091
  update(): void;
9993
10092
  }
9994
10093
 
10094
+ export declare const STEP_GROUPS: {
10095
+ readonly move: {
10096
+ readonly finalize: "on-signal";
10097
+ readonly methods: ["moveElementTo", "moveElementToIn2d", "moveElementBy", "moveObjectsBy"];
10098
+ };
10099
+ readonly rotate: {
10100
+ readonly finalize: "immediate";
10101
+ readonly methods: ["rotateObjectTo", "setObjectRotation", "rotateObjectsBy", "rotateGroupBy"];
10102
+ };
10103
+ readonly wallHeight: {
10104
+ readonly finalize: "on-signal";
10105
+ readonly methods: ["setWallHeight"];
10106
+ };
10107
+ readonly wallLength: {
10108
+ readonly finalize: "on-signal";
10109
+ readonly methods: ["setLengthOfEdge2D"];
10110
+ };
10111
+ readonly wallThickness: {
10112
+ readonly finalize: "on-signal";
10113
+ readonly methods: ["setWallThickness"];
10114
+ };
10115
+ readonly objectSize: {
10116
+ readonly finalize: "immediate";
10117
+ readonly methods: ["setObjectSize"];
10118
+ };
10119
+ readonly floorLabelObject: {
10120
+ readonly finalize: "immediate";
10121
+ readonly methods: ["setFloorLabelObject"];
10122
+ };
10123
+ readonly roomParapetHeight: {
10124
+ readonly finalize: "on-signal";
10125
+ readonly methods: ["setRoomParapetHeight"];
10126
+ };
10127
+ readonly measure: {
10128
+ readonly finalize: "on-signal";
10129
+ readonly methods: ["setMeasurePoint1", "setMeasurePoint2"];
10130
+ };
10131
+ readonly remove: {
10132
+ readonly finalize: "immediate";
10133
+ readonly methods: ["removeElement", "removeObjectWithId"];
10134
+ };
10135
+ readonly duplicate: {
10136
+ readonly finalize: "immediate";
10137
+ readonly methods: ["duplicatePlanObject", "duplicatePlanObjects"];
10138
+ };
10139
+ readonly visibility: {
10140
+ readonly finalize: "immediate";
10141
+ readonly methods: ["setElementVisibility"];
10142
+ };
10143
+ readonly addObjects: {
10144
+ readonly finalize: "immediate";
10145
+ readonly methods: ["addPlanObjects"];
10146
+ };
10147
+ readonly addObjectFromItem: {
10148
+ readonly finalize: "immediate";
10149
+ readonly methods: ["addPlanObjectFromItem"];
10150
+ };
10151
+ readonly merge: {
10152
+ readonly finalize: "immediate";
10153
+ readonly methods: ["mergeObjects"];
10154
+ };
10155
+ readonly group: {
10156
+ readonly finalize: "immediate";
10157
+ readonly methods: ["groupObjects"];
10158
+ };
10159
+ readonly drawing: {
10160
+ readonly finalize: "on-signal";
10161
+ readonly methods: ["beginDrawing", "addNode", "addWall"];
10162
+ };
10163
+ readonly addAttic: {
10164
+ readonly finalize: "immediate";
10165
+ readonly methods: ["addAttic"];
10166
+ };
10167
+ readonly atticSide: {
10168
+ readonly finalize: "immediate";
10169
+ readonly methods: ["setAtticSide"];
10170
+ };
10171
+ readonly atticKneeHeight: {
10172
+ readonly finalize: "immediate";
10173
+ readonly methods: ["setAtticKneeHeight"];
10174
+ };
10175
+ readonly atticWidth: {
10176
+ readonly finalize: "immediate";
10177
+ readonly methods: ["setAtticWidth"];
10178
+ };
10179
+ readonly defaultWallThickness: {
10180
+ readonly finalize: "on-signal";
10181
+ readonly methods: ["setDefaultWallThickness"];
10182
+ };
10183
+ readonly defaultWallHeight: {
10184
+ readonly finalize: "on-signal";
10185
+ readonly methods: ["setDefaultWallHeight"];
10186
+ };
10187
+ readonly defaultParapetHeight: {
10188
+ readonly finalize: "on-signal";
10189
+ readonly methods: ["setDefaultParapetHeight"];
10190
+ };
10191
+ readonly defaultExteriorWallMaterial: {
10192
+ readonly finalize: "on-signal";
10193
+ readonly idleCommitMs: 3000;
10194
+ readonly methods: ["setDefaultExteriorWallMaterial"];
10195
+ };
10196
+ readonly defaultInteriorWallMaterial: {
10197
+ readonly finalize: "on-signal";
10198
+ readonly idleCommitMs: 3000;
10199
+ readonly methods: ["setDefaultInteriorWallMaterial"];
10200
+ };
10201
+ readonly defaultFloorMaterial: {
10202
+ readonly finalize: "on-signal";
10203
+ readonly idleCommitMs: 3000;
10204
+ readonly methods: ["setDefaultFloorMaterial"];
10205
+ };
10206
+ readonly customDataJson: {
10207
+ readonly finalize: "immediate";
10208
+ readonly methods: ["setElementCustomDataJson"];
10209
+ };
10210
+ readonly wallLeftMaterial: {
10211
+ readonly finalize: "on-signal";
10212
+ readonly idleCommitMs: 3000;
10213
+ readonly methods: ["setWallLeftMaterial"];
10214
+ };
10215
+ readonly wallRightMaterial: {
10216
+ readonly finalize: "on-signal";
10217
+ readonly idleCommitMs: 3000;
10218
+ readonly methods: ["setWallRightMaterial"];
10219
+ };
10220
+ readonly floorMaterial: {
10221
+ readonly finalize: "on-signal";
10222
+ readonly idleCommitMs: 3000;
10223
+ readonly methods: ["setFloorMaterial"];
10224
+ };
10225
+ readonly floorType: {
10226
+ readonly finalize: "immediate";
10227
+ readonly methods: ["setFloorType"];
10228
+ };
10229
+ readonly edgeType: {
10230
+ readonly finalize: "immediate";
10231
+ readonly methods: ["setEdgeType"];
10232
+ };
10233
+ readonly objectFlipX: {
10234
+ readonly finalize: "immediate";
10235
+ readonly methods: ["setObjectFlipX"];
10236
+ };
10237
+ readonly objectFlipY: {
10238
+ readonly finalize: "immediate";
10239
+ readonly methods: ["setObjectFlipY"];
10240
+ };
10241
+ readonly objectCustomColor: {
10242
+ readonly finalize: "immediate";
10243
+ readonly methods: ["setObjectCustomColor"];
10244
+ };
10245
+ readonly objectCustomLabel: {
10246
+ readonly finalize: "immediate";
10247
+ readonly methods: ["setObjectCustomLabel"];
10248
+ };
10249
+ readonly objectFixedZ: {
10250
+ readonly finalize: "immediate";
10251
+ readonly methods: ["setObjectFixedZ"];
10252
+ };
10253
+ readonly addMeasure: {
10254
+ readonly finalize: "immediate";
10255
+ readonly methods: ["addMeasure"];
10256
+ };
10257
+ readonly parameterChange: {
10258
+ readonly finalize: "on-signal";
10259
+ readonly idleCommitMs: 3000;
10260
+ readonly methods: ["applyKernelParameterChange"];
10261
+ };
10262
+ readonly addOrUpdateExternal: {
10263
+ readonly finalize: "immediate";
10264
+ readonly methods: ["addOrUpdateExternalPlanObjects"];
10265
+ };
10266
+ readonly constructionBubbleEdit: {
10267
+ readonly finalize: "immediate";
10268
+ readonly methods: ["adjustConstructionElementPosition"];
10269
+ };
10270
+ readonly objectBubbleEdit: {
10271
+ readonly finalize: "immediate";
10272
+ readonly methods: ["adjustObjectPosition"];
10273
+ };
10274
+ readonly objectToWallDistanceBubbleEdit: {
10275
+ readonly finalize: "immediate";
10276
+ readonly methods: ["adjustObjectToWallDistance"];
10277
+ };
10278
+ };
10279
+
10280
+ /** The label recorded for an open/held step — what the policy compares. A step-group
10281
+ * name (from run()/transaction()) or a synthetic label. Method names are dispatch
10282
+ * INPUT, not labels; run() maps them to a group (buildDispatchTable). */
10283
+ export declare type StepLabel = keyof typeof STEP_GROUPS | SyntheticStepLabel;
10284
+
9995
10285
  export declare class StringArray extends EmsArray<string> {
9996
10286
  }
9997
10287
 
@@ -10000,6 +10290,10 @@ export declare interface SubComponentWaiter {
10000
10290
  partId: number;
10001
10291
  }
10002
10292
 
10293
+ /** Step labels not derived from a dispatched method: held-phase / transaction labels
10294
+ * plus 'adhoc' (the run() fallback). Recorded only, never called on the handler. */
10295
+ export declare type SyntheticStepLabel = 'txn' | 'drawingMode' | 'configuratorMode' | 'externalObjectLoadStart' | 'insertItems' | 'replaceObject' | 'wallHeightBatch' | 'wallThicknessBatch' | 'wallMaterialBatch' | 'adhoc';
10296
+
10003
10297
  export declare type ThreeJsColorsIn3dScene = Record<keyof typeof ROOMLE_COLORS, Color>;
10004
10298
 
10005
10299
  /**
@@ -10112,6 +10406,78 @@ export declare interface UiPossibleChildTag extends RapiTag {
10112
10406
  possibleChildren: UiPossibleChild[];
10113
10407
  }
10114
10408
 
10409
+ /**
10410
+ * Two-class split, and the source of truth for `InteractionMethodName`: everything on
10411
+ * UndoRedoHandler is Excluded from it (see types.ts).
10412
+ *
10413
+ * Where does a method go? Does its body wrap a core call in `this.run(...)`?
10414
+ * • Yes → PlanInteractionHandlerExtension (subclass): opens a tracked step, so it
10415
+ * may be classified in STEP_GROUPS and dispatched (adjust*,
10416
+ * applyKernelParameterChange, addOrUpdateExternalPlanObjects).
10417
+ * • No → UndoRedoHandler (here): step machinery (run, commit, transaction, held-
10418
+ * phase controls, dispose) and boundary ops that only reset/commit around a core
10419
+ * call (undo/redo, loadPlanXML, endDrawing, …). Never dispatched.
10420
+ */
10421
+ export declare class UndoRedoHandler {
10422
+ private _disposed;
10423
+ protected _handler: PlanInteractionHandler;
10424
+ private _state;
10425
+ private _pendingContinuations;
10426
+ private _commitWhenSettled;
10427
+ private _idleCommitTimer;
10428
+ constructor(handler: PlanInteractionHandler);
10429
+ dispose(): void;
10430
+ private _scheduleIdleCommit;
10431
+ private _clearIdleCommit;
10432
+ get isDisposed(): boolean;
10433
+ run<T>(methodName: InteractionMethodName, args: unknown[], apply: () => T): T;
10434
+ commit(): void;
10435
+ clearHistory(): void;
10436
+ private reset;
10437
+ undo(): void;
10438
+ redo(): void;
10439
+ loadPlanXML(xml: string): Plan_2;
10440
+ createPlanWithObjectFromItem(object: KernelObject, position: KernelVector3, rotationInRad: number): Plan_2;
10441
+ endDrawing(point: {
10442
+ x: number;
10443
+ y: number;
10444
+ z: number;
10445
+ }): void;
10446
+ cancelDrawing(): void;
10447
+ private _hold;
10448
+ private _release;
10449
+ manageExternalObjectLoadingStart(reason?: string): void;
10450
+ resumeExternalObjectLoading(reason?: string): void;
10451
+ manageExternalObjectLoadingEnd(shouldEnd?: boolean): void;
10452
+ startConfiguringMode(): void;
10453
+ endConfiguringMode(): void;
10454
+ beginContinuousOperation(): void;
10455
+ endContinuousOperation(): void;
10456
+ endContinuousOperationIfHeld(): void;
10457
+ transaction<T>(fn: () => T | Promise<T>, opts?: {
10458
+ newStep?: boolean;
10459
+ label?: StepLabel;
10460
+ id?: string | number;
10461
+ finalize?: FinalizeMode;
10462
+ idleCommitMs?: number;
10463
+ }): Promise<T>;
10464
+ manageItemInsertion<T>(callback: () => T | Promise<T>, newUndoRedoStep?: boolean, finalize?: FinalizeMode): Promise<T>;
10465
+ /**
10466
+ * Explicit product-swap primitive: pins one interaction across a remove
10467
+ * followed by an add so the pair always lands as a single undo/redo step,
10468
+ * regardless of either half's own finalize policy. `perform` is expected to
10469
+ * end with an operation that owns its own release (e.g. the catalog flow's
10470
+ * `manageItemInsertion`, or the HI flow's reason-driven
10471
+ * `manageExternalObjectLoadingEnd`) — that release performs the actual
10472
+ * commit. The `finally` below is a safety net: it only fires if `perform`
10473
+ * never reached that release (it threw, or simply never triggered one),
10474
+ * so the manager can't get stuck held.
10475
+ */
10476
+ replaceObject<T>(elementId: string | number, perform: () => T | Promise<T>): Promise<T>;
10477
+ expectContinuation(): void;
10478
+ onCoreLoad(reason: HiLoadObjectReason): void;
10479
+ }
10480
+
10115
10481
  export declare const enum Unit {
10116
10482
  InchFeet = 0,
10117
10483
  MM = 1,