@roomle/embedding-lib 5.31.0-alpha.7 → 5.32.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 (58) hide show
  1. package/docs/md/web/embedding/CHANGELOG.md +62 -7
  2. package/package.json +1 -1
  3. package/packages/embedding-lib/src/examples/hi-single-object-configurator.d.ts +12 -0
  4. package/packages/embedding-lib/src/examples/utils/homag-intelligence/util.d.ts +1 -0
  5. package/packages/web-sdk/packages/common-core/src/configurator-kernel-access.d.ts +1 -2
  6. package/packages/web-sdk/packages/common-core/src/services/hdr-environment-loader.d.ts +2 -1
  7. package/packages/web-sdk/packages/common-core/src/utils/shims.d.ts +11 -0
  8. package/packages/web-sdk/packages/common-core/src/utils/threejs-utils.d.ts +4 -1
  9. package/packages/web-sdk/packages/common-core/src/view-model/configurator-plan-object-view-model.d.ts +1 -0
  10. package/packages/web-sdk/packages/common-core/src/webgl/baked-shadow-plane.d.ts +2 -2
  11. package/packages/web-sdk/packages/common-core/src/webgl/image-renderer.d.ts +1 -0
  12. package/packages/web-sdk/packages/common-core/src/webgl/mesh-generator.d.ts +1 -1
  13. package/packages/web-sdk/packages/common-core/src/webgl/renderer/environment-definition.d.ts +4 -2
  14. package/packages/web-sdk/packages/common-core/src/webgl/renderer/light-source-detection.d.ts +5 -4
  15. package/packages/web-sdk/packages/common-core/src/webgl/renderer/pass/baked-ground-contact-shadow-pass.d.ts +3 -2
  16. package/packages/web-sdk/packages/common-core/src/webgl/renderer/pass/gbuffer-render-pass.d.ts +2 -1
  17. package/packages/web-sdk/packages/common-core/src/webgl/renderer/pass/ground-reflection-pass.d.ts +2 -1
  18. package/packages/web-sdk/packages/common-core/src/webgl/renderer/pass/outline-pass.d.ts +3 -2
  19. package/packages/web-sdk/packages/common-core/src/webgl/renderer/pass/render-pass.d.ts +3 -2
  20. package/packages/web-sdk/packages/common-core/src/webgl/renderer/pass/scene-render-pass.d.ts +2 -1
  21. package/packages/web-sdk/packages/common-core/src/webgl/renderer/pass/screen-space-shadow-map-pass.d.ts +2 -1
  22. package/packages/web-sdk/packages/common-core/src/webgl/renderer/pass/shadow-and-ao-pass.d.ts +2 -1
  23. package/packages/web-sdk/packages/common-core/src/webgl/renderer/pmrem-environment.d.ts +1 -1
  24. package/packages/web-sdk/packages/common-core/src/webgl/renderer/render-pass-manager.d.ts +8 -5
  25. package/packages/web-sdk/packages/common-core/src/webgl/renderer/render-utility.d.ts +8 -7
  26. package/packages/web-sdk/packages/common-core/src/webgl/renderer/scene-renderer.d.ts +5 -2
  27. package/packages/web-sdk/packages/common-core/src/webgl/renderer/shader-utility.d.ts +3 -3
  28. package/packages/web-sdk/packages/common-core/src/webgl/roomle-component-factory.d.ts +1 -1
  29. package/packages/web-sdk/packages/common-core/src/webgl/roomle-webgl-renderer.d.ts +4 -2
  30. package/packages/web-sdk/packages/configurator-core/src/webgl/configurator-scene-manager.d.ts +3 -2
  31. package/packages/web-sdk/packages/homag-intelligence/src/callbacks.d.ts +0 -33
  32. package/packages/web-sdk/packages/homag-intelligence/src/debug-logging.d.ts +9 -3
  33. package/packages/web-sdk/packages/homag-intelligence/src/external-object-api-callbacks.d.ts +10 -1
  34. package/packages/web-sdk/packages/homag-intelligence/src/external-object-api.d.ts +17 -3
  35. package/packages/web-sdk/packages/homag-intelligence/src/glue-logic.d.ts +31 -9
  36. package/packages/web-sdk/packages/homag-intelligence/src/model/oc-scripts-domain.model.d.ts +9 -3
  37. package/packages/web-sdk/packages/material-viewer/src/webgl/material-viewer-scene-manager.d.ts +1 -0
  38. package/packages/web-sdk/packages/planner-core/src/roomle-planner.d.ts +28 -9
  39. package/packages/web-sdk/packages/planner-core/src/services/planner-kernel-access.d.ts +4 -1
  40. package/packages/web-sdk/packages/planner-core/src/view-model/measurement-line-plan-element-view-model.d.ts +2 -2
  41. package/packages/web-sdk/packages/planner-core/src/view-model/plan-view-model.d.ts +2 -0
  42. package/packages/web-sdk/packages/planner-core/src/webgl/planner-mesh-generator.d.ts +1 -1
  43. package/packages/web-sdk/packages/planner-core/src/webgl/planner-scene-manager.d.ts +5 -1
  44. package/packages/web-sdk/packages/typings/kernel.d.ts +24 -14
  45. package/packages/web-sdk/packages/typings/planner.d.ts +6 -0
  46. package/roomle-embedding-lib.es.js +2 -1
  47. package/roomle-embedding-lib.es.min.js +1 -1
  48. package/roomle-embedding-lib.umd.js +3 -3
  49. package/roomle-embedding-lib.umd.min.js +1 -1
  50. package/src/common/components/overlays/PartList.vue.d.ts +54 -3
  51. package/src/common/composables/use-shared-sidebar-setup.d.ts +1 -1
  52. package/src/common/store/index.d.ts +2 -4
  53. package/src/configurator/business-logic/sdk-connector.d.ts +6 -0
  54. package/src/configurator/embedding/exposed-api.d.ts +6 -0
  55. package/src/configurator/store/core-data-store.d.ts +55 -4
  56. package/src/planner/components/overlays/rooms/RoomGeneralSettings.vue.d.ts +4 -0
  57. package/src/planner/utils/planner-sidebar.d.ts +1 -2
  58. package/src/configurator/store/core-state.d.ts +0 -21
@@ -1,4 +1,5 @@
1
1
  import { BakedGroundContactShadowParameters, GroundReflectionParameters, OutlineParameters, QualityMap, ShadowAndAoPassParameters, QualityLevel, LutImageDefinition, SceneRenderer } from './renderer/scene-renderer';
2
+ import { default as WebGPURenderer } from 'three/src/renderers/webgpu/WebGPURenderer';
2
3
  import { Camera, Object3D, Scene, WebGLRenderer, Box3 } from 'three';
3
4
  import { ScreenSpaceShadowMapParameters } from './renderer/pass/screen-space-shadow-map-pass';
4
5
  import { CustomShadingParameters, SceneShadingType } from './renderer/shading-settings';
@@ -11,6 +12,7 @@ export declare enum RenderMode {
11
12
  }
12
13
  export declare const lutImages: LutImageDefinition[];
13
14
  export declare class RoomleWebGLRenderer {
15
+ _creator_: string;
14
16
  static enableRectAreaLightShadow: boolean;
15
17
  private static rectAreaLightsNeedsUpdate;
16
18
  private static updateNearAndFarPlaneOfPerspectiveCamera;
@@ -30,7 +32,7 @@ export declare class RoomleWebGLRenderer {
30
32
  private _customShadingParametersMoc;
31
33
  private _fpsCounter;
32
34
  private _onQualityLevelChange;
33
- get renderer(): WebGLRenderer;
35
+ get renderer(): WebGLRenderer | WebGPURenderer;
34
36
  get sceneRenderer(): SceneRenderer;
35
37
  get isConfiguring(): boolean;
36
38
  get screenSpaceShadowParameters(): ScreenSpaceShadowMapParameters;
@@ -38,7 +40,7 @@ export declare class RoomleWebGLRenderer {
38
40
  get bakedGroundContactShadowParameters(): BakedGroundContactShadowParameters;
39
41
  get groundReflectionParameters(): GroundReflectionParameters;
40
42
  get outlineParameters(): OutlineParameters;
41
- constructor(renderer: WebGLRenderer, width: number, height: number, linearAoFilter?: boolean);
43
+ constructor(creator: string, renderer: WebGLRenderer | WebGPURenderer, width: number, height: number, linearAoFilter?: boolean);
42
44
  dispose(): void;
43
45
  setSize(width: number, height: number): void;
44
46
  setCameraType(cameraType: Enumify<typeof CAMERA_TYPE>): void;
@@ -66,7 +66,8 @@ export default class ConfiguratorSceneManager extends SceneManager implements Co
66
66
  private _materialLoaded;
67
67
  waitForMaterialQueue(): Promise<void>;
68
68
  pause(): void;
69
- protected _setupScene(offset?: CanvasOffset, transparent?: boolean, skipLightSetup?: boolean): void;
69
+ protected _setupScene(offset?: CanvasOffset, transparent?: boolean, skipLightSetup?: boolean): Promise<void>;
70
+ protected _initializeMeshGeneratorSettings(): void;
70
71
  sceneCleared(shouldHardReset: boolean): void;
71
72
  display(component: RoomleComponent): void;
72
73
  protected setRootComponentId(rootComponentId: number): void;
@@ -130,7 +131,6 @@ export default class ConfiguratorSceneManager extends SceneManager implements Co
130
131
  private _requestDockingsPreviewWithDrag;
131
132
  private _dockComponent;
132
133
  private _dockKernelComponent;
133
- private _dockExternalComponent;
134
134
  private _onSelectedRuntimeComponentsChange;
135
135
  private _onSelectedRuntimeComponentChange;
136
136
  requestDeleteSelectedComponent(): void;
@@ -169,6 +169,7 @@ export default class ConfiguratorSceneManager extends SceneManager implements Co
169
169
  animateElement(elementId: number, parameterName: string, value: string, animationLevel: AnimationLevelType, animate: boolean): void;
170
170
  undo(): Promise<void>;
171
171
  redo(): Promise<void>;
172
+ protected _updateConfigurationFromHistory(configurationString: string): void;
172
173
  clearHistory(): void;
173
174
  private _callOnPartListUpdate;
174
175
  private _showCustomComponentDimensions;
@@ -1,37 +1,4 @@
1
1
  import { GlueLogic } from './glue-logic';
2
2
  import { default as RoomlePlanner } from '../../planner-core/src/roomle-planner';
3
3
 
4
- export interface ExternalObjectSegment {
5
- cmd: string;
6
- x: number;
7
- y: number;
8
- type?: string;
9
- angle?: number;
10
- }
11
- export interface ExternalObjectContour {
12
- level: number;
13
- segments: ExternalObjectSegment[];
14
- }
15
- export interface ExternalObjectGroupPosition {
16
- pos: number[];
17
- rotationY?: number;
18
- contours?: ExternalObjectContour[];
19
- }
20
- export interface ExternalObjectRootModule {
21
- moduleId: string;
22
- pos: number[];
23
- rotationY?: number;
24
- }
25
- export interface ExternalObjectGroup {
26
- groupId: string;
27
- pos: number[];
28
- rotationY?: number;
29
- rootModules?: ExternalObjectRootModule[];
30
- contours?: ExternalObjectContour[];
31
- }
32
- export interface ExternalModuleInformation {
33
- groupId: string;
34
- rootModuleId: string;
35
- subModuleId: string | null;
36
- }
37
4
  export declare const initCallbacks: (roomlePlanner: RoomlePlanner, gluLogic: GlueLogic) => void;
@@ -2,9 +2,10 @@ import { HiCallbacks } from '../../../../embedding-lib/src/embedding-lib';
2
2
  import { GlueLogic, LibraryData, PlanSnapshot, RoomDesignerRequests } from './glue-logic';
3
3
  import { ExternalObjectGroup } from 'roomle-core-hsc/src/embind/plannerCoreInterface';
4
4
  import { ExternalModuleInformation } from '../../typings/kernel';
5
- import { CheckResult, PosGroup, PosSaveData } from './model/oc-scripts-domain.model';
5
+ import { CheckResult, PosArticle, PosGroup, PosSaveData } from './model/oc-scripts-domain.model';
6
6
  import { HiObjectSelection } from './hi-object-selection';
7
7
  import { LoadExternalObjectOptions } from './external-object-api';
8
+ import { ExternalObjectValidContainerModules } from './external-object-api-callbacks';
8
9
 
9
10
  export declare class GlueLayerRequestDebugLogging implements GlueLogic {
10
11
  private _glueLogic;
@@ -26,15 +27,20 @@ export declare class GlueLayerRequestDebugLogging implements GlueLogic {
26
27
  updateAttribute(rootModuleId: string, moduleId: string | null, attributeId: string, attributeValue: string | boolean): void;
27
28
  getVerifiedAttributeOptions(moduleId: string, attributeIds?: string | string[]): Promise<Record<string, CheckResult> | undefined>;
28
29
  updateAdditionalInfo(rootModuleId: string, additionalInfo: string): void;
30
+ findValidSubArticles(posGroupIds: string[] | string): PosArticle[];
31
+ getValidContainerModulesForSubArticle(posGroupIds: string[] | string, subArticleId: string): ExternalObjectValidContainerModules[];
32
+ addSubArticle(articleId: string, rootModuleId: string, parentModuleId: string): void;
29
33
  swapRootModule(groupId: string, rootModuleId: string, articleId: string): void;
30
34
  arrangeRootModulesOfGroup(changedGroup: ExternalObjectGroup): void;
31
35
  changedGroupPlanningSituation(changedGroup: ExternalObjectGroup): void;
32
- changedGroup(posDataJson: PosGroup): void;
36
+ changedGroupFromHistory(posDataJson: PosGroup, reloadGroup: boolean): void;
33
37
  loadedGroup(posDataJson: PosGroup): void;
34
38
  groupsCompletelyLoaded(): void;
35
39
  removedGroup(groupId: string): void;
36
40
  openCloseGroup(groupId: string): void;
37
- newPosDataFromId(id: string): PosGroup | undefined;
41
+ getSaveDataGroups(): Promise<PosGroup[] | null>;
42
+ newPosDataFromId(id: string): Promise<PosGroup>;
43
+ newPosDataFromGroup(posDataJson: PosGroup): Promise<PosGroup>;
38
44
  getGroupDataForOrder(roomlePlannerId?: string): Promise<any>;
39
45
  savePlanSnapshot(): Promise<PlanSnapshot | null>;
40
46
  }
@@ -1,4 +1,3 @@
1
- import { ExternalModuleInformation } from '../../typings/kernel';
2
1
  import { CancelSelectionReasons } from '../../typings/planner';
3
2
 
4
3
  export interface ExternalObjectSegment {
@@ -29,6 +28,16 @@ export interface ExternalObjectGroup {
29
28
  rootModules?: ExternalObjectRootModule[];
30
29
  contours?: ExternalObjectContour[];
31
30
  }
31
+ export interface ExternalModuleInformation {
32
+ groupId: string;
33
+ rootModuleId: string;
34
+ subModuleId: string | null;
35
+ }
36
+ export interface ExternalObjectValidContainerModules {
37
+ rootId: string;
38
+ containerModuleId: string;
39
+ parentModuleId: string;
40
+ }
32
41
  export interface ExternalObjectUiCallback {
33
42
  /** "onMergeExternalObjectGroup" is invoked when a group of root modules is merged into another group of root modules.
34
43
  * The group with the ID "sourceGroupId" is merged into the group with the ID "targetGroup.id".
@@ -1,5 +1,5 @@
1
1
  import { Position3 } from '../../common-core/src/common-interfaces';
2
- import { CheckResult, PosContour } from './model/oc-scripts-domain.model';
2
+ import { CheckResult, PosArticle, PosContour } from './model/oc-scripts-domain.model';
3
3
 
4
4
  export interface ExternalObjectUiSliderRange {
5
5
  min: number;
@@ -61,6 +61,9 @@ export interface LoadExternalObjectOptions {
61
61
  position?: Position3;
62
62
  rotation?: number;
63
63
  }
64
+ export interface LoadExternalObjectGroupResult {
65
+ id: number;
66
+ }
64
67
  export interface ExternalObjectAPI {
65
68
  /**
66
69
  * With "configureExternalObjectApi" the default representation of the objects and UI and
@@ -91,11 +94,11 @@ export interface ExternalObjectAPI {
91
94
  * @param groupJson The group JSON as string or object.
92
95
  * @param options Options for loading the external object groups.
93
96
  */
94
- loadExternalObjectGroups(groupJson: ExternalGroupData, options: LoadExternalObjectOptions): Promise<void>;
97
+ loadExternalObjectGroups(groupJson: ExternalGroupData, options: LoadExternalObjectOptions): Promise<LoadExternalObjectGroupResult[]>;
95
98
  /**
96
99
  * Deprecated API that can be deleted once the new API is fully integrated into the OC.
97
100
  */
98
- loadExternalObjectGroup(groupJson: object | string | string[], findFreeSpaceInPlan: boolean, verifyArrangement?: boolean, mergedGroups?: string[], respondWithPositionInPlan?: boolean, moduleIdMap?: ExternalObjectModuleIdMap[], newAction?: boolean): Promise<void>;
101
+ loadExternalObjectGroup(groupJson: object | string | string[], findFreeSpaceInPlan: boolean, verifyArrangement?: boolean, mergedGroups?: string[], respondWithPositionInPlan?: boolean, moduleIdMap?: ExternalObjectModuleIdMap[], newAction?: boolean): Promise<LoadExternalObjectGroupResult[]>;
99
102
  /**
100
103
  * "updateExternalObjectGroupAttribute" modifies an attribute of a root module or sub module.
101
104
  * The attribute with the ID "attributeId" of the sub module with the ID "moduleId"
@@ -119,6 +122,17 @@ export interface ExternalObjectAPI {
119
122
  * @param additionalInfo The new additional info for the module.
120
123
  */
121
124
  updateExternalObjectAdditionalInfo(rootModuleId: string, additionalInfo: string): void;
125
+ /**
126
+ * "getExternalObjectValidSubArticles" returns the valid sub articles for a given pos group.
127
+ * If no pos group id is provided, the valid sub articles for all loaded pos groups are returned.
128
+ * @param posGroupId The ID of the pos group.
129
+ */
130
+ getExternalObjectValidSubArticles(posGroupId?: string): PosArticle[];
131
+ /**
132
+ * "selectExternalObjectSubArticle" selects a sub article in the planner.
133
+ * @param subArticleId The ID of the sub article to be selected.
134
+ */
135
+ selectExternalObjectSubArticle(subArticleId: string): void;
122
136
  /**
123
137
  * "renderImagesOfExternalObjectGroups" renders images of groups of modules.
124
138
  * @param groupJson The group JSON as string or object.
@@ -1,9 +1,13 @@
1
1
  import { HiCallbacks } from '../../../../embedding-lib/src/embedding-lib';
2
- import { ExternalModuleInformation, ExternalObjectGroup } from './callbacks';
3
- import { MasterData, PosModuleAttribute, PosGroup, PosModuleData, CheckResult, PosSaveData } from './model/oc-scripts-domain.model';
2
+ import { ExternalModuleInformation, ExternalObjectGroup, ExternalObjectValidContainerModules } from './external-object-api-callbacks';
3
+ import { MasterData, PosModuleAttribute, PosGroup, PosModuleData, CheckResult, PosSaveData, PosArticle } from './model/oc-scripts-domain.model';
4
4
  import { HiObjectSelection } from './hi-object-selection';
5
5
  import { LoadExternalObjectOptions } from './external-object-api';
6
6
 
7
+ export interface LibraryIdAndLibraryData {
8
+ libraryId?: string;
9
+ libraryData?: LibraryData;
10
+ }
7
11
  export interface LibraryData {
8
12
  libraryId: string;
9
13
  get masterData(): MasterData | null;
@@ -12,6 +16,9 @@ export interface LibraryData {
12
16
  getOrderData(posGroup: PosGroup[], roomlePlannerId?: string): any;
13
17
  getAttributesDropDownValues(module: PosModuleData, attributeIds?: string | string[]): Promise<Record<string, any[]>>;
14
18
  solveModuleAttributeConflict(module: PosModuleData, attributeName: string, value: string | number | boolean): PosModuleAttribute[] | undefined;
19
+ getValidSubArticles(calculatedPosGroup: PosGroup, articles: PosArticle[], masterData: MasterData): PosArticle[];
20
+ getValidContainerModulesForSubArticle(calculatedPosGroup: PosGroup, subArticle: PosArticle, masterData: MasterData): ExternalObjectValidContainerModules[];
21
+ addSubArticle(targetPosGroup: PosGroup, article: PosArticle, rootId: string, parentModuleId: string): PosGroup;
15
22
  }
16
23
  export interface RoomDesignerRequests {
17
24
  loadMasterData(masterData: MasterData): void;
@@ -48,14 +55,19 @@ export interface GlueLogic {
48
55
  updateAttribute(rootModuleId: string, moduleId: string | null, attributeId: string, attributeValue: string | boolean): void;
49
56
  getVerifiedAttributeOptions(moduleId: string, attributeIds?: string | string[]): Promise<Record<string, CheckResult> | undefined>;
50
57
  updateAdditionalInfo(rootModuleId: string, additionalInfo: string): void;
58
+ findValidSubArticles(posGroupIds: string[] | string): PosArticle[];
59
+ getValidContainerModulesForSubArticle(posGroupIds: string[] | string, subArticleId: string): ExternalObjectValidContainerModules[];
60
+ addSubArticle(articleId: string, rootModuleId: string, parentModuleId: string): void;
51
61
  arrangeRootModulesOfGroup(changedGroup: ExternalObjectGroup): void;
52
62
  changedGroupPlanningSituation(changedGroup: ExternalObjectGroup): void;
53
- changedGroup(posDataJson: PosGroup): void;
63
+ changedGroupFromHistory(historyGroup: PosGroup, reloadGroup: boolean): void;
54
64
  loadedGroup(posDataJson: PosGroup): void;
55
65
  groupsCompletelyLoaded(): void;
56
66
  removedGroup(groupId: string): void;
57
67
  openCloseGroup(groupId: string): void;
58
- newPosDataFromId(id: string): PosGroup | undefined;
68
+ getSaveDataGroups(): Promise<PosGroup[] | null>;
69
+ newPosDataFromId(id: string): Promise<PosGroup>;
70
+ newPosDataFromGroup(posDataJson: PosGroup): Promise<PosGroup>;
59
71
  getGroupDataForOrder(roomlePlannerId?: string): Promise<any>;
60
72
  savePlanSnapshot(): Promise<PlanSnapshot | null>;
61
73
  }
@@ -74,13 +86,14 @@ export declare class GlueLogicImplementation implements GlueLogic {
74
86
  private _designerRequests;
75
87
  private _libraryData;
76
88
  private _posDataForLoading;
77
- private _posDataJsonMap;
89
+ private _posArticleMap;
78
90
  private _groupMap;
79
91
  private _nextPosDataId;
80
92
  private _hiCallbacks;
81
93
  private _hiObjectSelection;
82
94
  private _pendingGroupsToBeLoaded;
83
95
  private _planCompletelyLoaded;
96
+ private _validSubArticles;
84
97
  constructor(designerRequests: RoomDesignerRequests, hiCallbacks?: HiCallbacks | null);
85
98
  get hiCallbacks(): HiCallbacks | null;
86
99
  get hiObjectSelection(): HiObjectSelection;
@@ -90,7 +103,9 @@ export declare class GlueLogicImplementation implements GlueLogic {
90
103
  addLibrary(libraryData: LibraryData): void;
91
104
  loadPosData(articleCatalogJson: any, libraryId: string): void;
92
105
  setPosDataForLoading(posData: PosSaveData | null): void;
93
- newPosDataFromId(id: string): any;
106
+ getSaveDataGroups(): Promise<PosGroup[] | null>;
107
+ newPosDataFromId(id: string): Promise<PosGroup>;
108
+ newPosDataFromGroup(posDataJson: PosGroup): Promise<PosGroup>;
94
109
  selectGroup(groupId: string): Promise<void>;
95
110
  selectRoot(_groupId: any, rootId: string): Promise<void>;
96
111
  deleteRoot(_groupId: any, rootId: string): Promise<void>;
@@ -103,7 +118,7 @@ export declare class GlueLogicImplementation implements GlueLogic {
103
118
  splitRootModuleFromGroup(splitGroup: ExternalObjectGroup, newGroupedRootModules: ExternalObjectGroup[]): void;
104
119
  arrangeRootModulesOfGroup(changedGroup: ExternalObjectGroup): void;
105
120
  removedGroup(groupId: string): void;
106
- changedGroup(posDataJson: PosGroup): void;
121
+ changedGroupFromHistory(historyGroup: PosGroup, reloadGroup: boolean): void;
107
122
  changedGroupPlanningSituation(changedGroup: ExternalObjectGroup): void;
108
123
  loadedGroup(posDataJson: PosGroup): void;
109
124
  private _loadPendingGroup;
@@ -120,7 +135,6 @@ export declare class GlueLogicImplementation implements GlueLogic {
120
135
  private _splitOffRootModulesFromGroup;
121
136
  private _calculateNewGroup;
122
137
  private _getLibraryIdForPosData;
123
- private _calculate;
124
138
  private _populateRootFromMasterData;
125
139
  private _setSubmoduleImages;
126
140
  private _calculateAndUpdateGroupMap;
@@ -130,9 +144,13 @@ export declare class GlueLogicImplementation implements GlueLogic {
130
144
  modifyAttribute(groupId: string, moduleIdObjects: ExternalModuleInformation[], attributeName: string, value: string): void;
131
145
  getVerifiedAttributeOptions(moduleId: string, attributeIds?: string | string[]): Promise<Record<string, CheckResult> | undefined>;
132
146
  updateAdditionalInfo(rootModuleId: string, additionalInfo: string): void;
133
- swapRootModule(groupId: string, rootModuleId: string, articleId: string): void;
147
+ swapRootModule(groupId: string, rootModuleId: string, articleId: string): Promise<void>;
134
148
  _modifyAttributeOfModules(emulatorGroupItem: GroupItem, moduleIds: string[] | string, attributeId: string, value: string | boolean): PosGroup;
135
149
  private _setAttribute;
150
+ findValidSubArticles(posGroupIds: string[] | string): PosArticle[];
151
+ private _getValidSubArticle;
152
+ getValidContainerModulesForSubArticle(posGroupIds: string[] | string, subArticleId: string): ExternalObjectValidContainerModules[];
153
+ addSubArticle(articleId: string, rootModuleId: string, parentModuleId: string): void;
136
154
  savePlanSnapshot(): Promise<PlanSnapshot | null>;
137
155
  private _findRootModuleInAllGroups;
138
156
  private _findModuleInAllGroups;
@@ -142,5 +160,9 @@ export declare class GlueLogicImplementation implements GlueLogic {
142
160
  private _getNextID;
143
161
  private _groupsModified;
144
162
  private _calculatePrice;
163
+ private _calculate;
164
+ private _addSubArticle;
165
+ private _getLibrary;
166
+ private _takeOverPropertiesFromOriginalGroup;
145
167
  }
146
168
  export {};
@@ -9,7 +9,7 @@ export declare const enum UserRightLevel {
9
9
  Master = 2
10
10
  }
11
11
  export declare const getUserRightLevel: (right?: PosUserRight | null) => UserRightLevel;
12
- export interface PosArticleInfo {
12
+ interface PosArticleInfo {
13
13
  /**
14
14
  * Defined the library that is used / must match the MasterData
15
15
  */
@@ -29,6 +29,7 @@ export interface PosArticleInfo {
29
29
  desc?: string;
30
30
  imageUrl?: string;
31
31
  category?: string;
32
+ isConfigDummy?: boolean;
32
33
  }
33
34
  export interface PosPartData {
34
35
  id: string;
@@ -155,8 +156,11 @@ export interface PosContour {
155
156
  level: number;
156
157
  segments: PosContourSegment[];
157
158
  }
159
+ export interface PosRooms {
160
+ rooms: PosContour[];
161
+ }
158
162
  export interface PosGroup {
159
- libraryId: string;
163
+ libraryId?: string;
160
164
  /**
161
165
  * The unique id of the Group
162
166
  */
@@ -199,6 +203,7 @@ export interface PosSaveData {
199
203
  topImageLink?: string;
200
204
  room3dLink?: string;
201
205
  room3dFullLink?: string;
206
+ rooms?: PosContour[];
202
207
  }
203
208
  export interface PosPriceData {
204
209
  Groups: PosPriceGroup[];
@@ -310,6 +315,7 @@ export interface CheckDropDownEntry {
310
315
  }
311
316
  export declare enum CheckDropDownEntryKind {
312
317
  Normal = 0,
313
- Conflicting = 1
318
+ Conflicting = 1,
319
+ Invalid = 2
314
320
  }
315
321
  export {};
@@ -24,6 +24,7 @@ export default class MaterialViewerSceneManager extends SceneManager {
24
24
  private _sceneParams;
25
25
  private _materialParams;
26
26
  constructor(creator: string, offset: CanvasOffset);
27
+ private _initializeRendererSettings;
27
28
  private _initScene;
28
29
  loadMaterialId(materialId: RapiId): Promise<void>;
29
30
  loadMaterial(material: RapiMaterial): Promise<void>;
@@ -9,7 +9,7 @@ import { Context } from '../../common-core/src/di/context';
9
9
  import { KernelAttic, PlanObject, WallSide, CancelSelectionReasons, KernelObject, KernelWall, PlanInteractionHandler, PlanModelViewHelper, PlanOverview } from '../../typings/planner';
10
10
  import { KernelAccessCallbackI } from '../../common-core/src/kernel-access-callback';
11
11
  import { default as InitData } from '../../common-core/src/utils/init-data';
12
- import { CanvasOffset, Position3 } from '../../common-core/src/common-interfaces';
12
+ import { Base64Image, CanvasOffset, Position3 } from '../../common-core/src/common-interfaces';
13
13
  import { PrepareImageOptions } from '../../common-core/src/webgl/image-renderer';
14
14
  import { KernelParameter, KernelPartList, KernelPartListPrice, KernelVector3, RuntimeId, UiPlanObject } from '../../typings/kernel';
15
15
  import { default as UnitFormatter } from '../../configurator-core/src/services/unit-formatter';
@@ -21,7 +21,7 @@ import { default as PlanElementViewModel } from '../../common-core/src/view-mode
21
21
  import { default as WallPlanElementViewModel } from './view-model/wall-plan-element-view-model';
22
22
  import { default as ConfiguratorContext } from '../../common-core/src/webgl/configurator-context';
23
23
  import { default as IdbManager } from '../../common-core/src/services/idb-manager';
24
- import { LoadExternalObjectOptions, ExternalObjectAPI, ExternalObjectApiConfiguration, ExternalObjectModuleIdMap, ExternalRoomInformation, HiContextAction } from '../../homag-intelligence/src/external-object-api';
24
+ import { LoadExternalObjectGroupResult, LoadExternalObjectOptions, ExternalObjectAPI, ExternalObjectApiConfiguration, ExternalObjectModuleIdMap, ExternalRoomInformation, HiContextAction } from '../../homag-intelligence/src/external-object-api';
25
25
  import { GlobalCallback } from '../../common-core/src/services/global-callback';
26
26
  import { ExternalGroupData, ExternalObject, ExtObjId } from '../../typings/external-objects';
27
27
  import { PluginName } from '../../configurator-core/src/utils/plugin-types';
@@ -30,7 +30,7 @@ import { MaybePromise } from '../../common-core/src/utils/common-utils';
30
30
  import { HomagIntelligence } from '../../homag-intelligence/src/homag-intelligence';
31
31
  import { RoomleLightSource } from '../../common-core/src/light/light-source';
32
32
  import { AnimationKeyAndValue } from '../../configurator-core/src/utils/animation/animation-value-map';
33
- import { CheckResult } from '../../homag-intelligence/src/model/oc-scripts-domain.model';
33
+ import { CheckResult, PosArticle, PosGroup } from '../../homag-intelligence/src/model/oc-scripts-domain.model';
34
34
 
35
35
  export type ID_TYPE = 'rml_id' | 'tc_id' | 'rml_serialized' | 'tc_serialized';
36
36
  export declare const EXT_OBJ_EXCEPTION = "Could not retrieve configuration for external object! Did you implement onGetConfigurationForExternalObject?";
@@ -257,13 +257,13 @@ export default class RoomlePlanner<P extends readonly PluginName[] = readonly []
257
257
  * Generates a top image (birds eye view) and returns it as base64
258
258
  * @param options
259
259
  */
260
- prepareTopImage(options?: PrepareImageOptions): Promise<import('../../common-core/src/common-interfaces').Base64Image>;
260
+ prepareTopImage(options?: PrepareImageOptions): Promise<Base64Image>;
261
261
  /**
262
262
  * Generates a perspective image (slightly from the side) and returns it as base64
263
263
  * @param options
264
264
  @param isolationMode - defaults to false. Determines whether to generate a perspective image for the current configuration.
265
265
  */
266
- preparePerspectiveImage(options?: PrepareImageOptions, isolationMode?: boolean): Promise<import('../../common-core/src/common-interfaces').Base64Image>;
266
+ preparePerspectiveImage(options?: PrepareImageOptions, isolationMode?: boolean): Promise<Base64Image>;
267
267
  /**
268
268
  * Enables rotation of selected elements
269
269
  */
@@ -360,6 +360,21 @@ export default class RoomlePlanner<P extends readonly PluginName[] = readonly []
360
360
  * @param sceneEvents
361
361
  */
362
362
  setSceneEvents(sceneEvents: SceneEvents): void;
363
+ /**
364
+ * It generates a snapshot of the external object in the plan without saving any data.
365
+ * The snapshot includes order data, room information, the plan XML, GLBs of the complete scene,
366
+ * and only the objects in the scene, as well as perspective images and a top image.
367
+ * @returns the snapshot of the external objects
368
+ */
369
+ getExternalObjectSnapshot(): Promise<{
370
+ orderData: any;
371
+ planXML: string;
372
+ objectGlb: string;
373
+ perspectiveImage: string;
374
+ topImage: string;
375
+ perspectiveObjectImage: string;
376
+ topObjectImage: string;
377
+ }>;
363
378
  /**
364
379
  * Saves a snapshot of the external objects in the plan without walls and other objects
365
380
  * Also contains the urls to the glb and usdz files
@@ -367,6 +382,7 @@ export default class RoomlePlanner<P extends readonly PluginName[] = readonly []
367
382
  * @returns the snapshot of the external objects if there are no external objects it returns null
368
383
  */
369
384
  saveExternalObjectSnapshot(parentPlanId?: RapiId): Promise<Nullable<RapiPlanSnapshotGetDataWith3dUrls>>;
385
+ private _getExternalObjectGroupsInPlan;
370
386
  private _savePlanSnapshotExternalObjects;
371
387
  saveCurrentPlanSnapshot(parentPlanId?: RapiId, configurationHashOrGroupId?: string | string[]): Promise<RapiPlanSnapshotGetData>;
372
388
  getPlanXmlFrom(plan: RapiPlan | RapiPlanSnapshotGetData): any;
@@ -410,7 +426,7 @@ export default class RoomlePlanner<P extends readonly PluginName[] = readonly []
410
426
  * @param runtimeId runtime-id of the plan element, e.g.: a selected element
411
427
  * @param options PrepareImageOptions
412
428
  */
413
- preparePerspectiveImageOf(runtimeId: RuntimeId, options?: PrepareImageOptions): Promise<import('../../common-core/src/common-interfaces').Base64Image>;
429
+ preparePerspectiveImageOf(runtimeId: RuntimeId, options?: PrepareImageOptions): Promise<Base64Image>;
414
430
  generateTCExport(planObjectIds?: string[]): Promise<any>;
415
431
  enableMeasurementLineDrawing(): void;
416
432
  disableMeasurementLineDrawing(): void;
@@ -435,8 +451,9 @@ export default class RoomlePlanner<P extends readonly PluginName[] = readonly []
435
451
  /**
436
452
  * Deprecated API that can be deleted once the new API is fully integrated into the OC.
437
453
  */
438
- loadExternalObjectGroup(groupData: ExternalGroupData, findFreeSpaceInPlan: boolean, correctArrangement?: boolean, mergedGroups?: string[], respondWithPositionInPlan?: boolean, moduleIdMap?: ExternalObjectModuleIdMap[], newAction?: boolean): Promise<void>;
439
- loadExternalObjectGroups(groupData: ExternalGroupData, options?: LoadExternalObjectOptions): Promise<void>;
454
+ loadExternalObjectGroup(groupData: ExternalGroupData, findFreeSpaceInPlan: boolean, correctArrangement?: boolean, mergedGroups?: string[], respondWithPositionInPlan?: boolean, moduleIdMap?: ExternalObjectModuleIdMap[], newAction?: boolean): Promise<LoadExternalObjectGroupResult[]>;
455
+ getInitialExternalObjectGroup(): Promise<PosGroup | null>;
456
+ loadExternalObjectGroups(groupData: ExternalGroupData, options?: LoadExternalObjectOptions): Promise<LoadExternalObjectGroupResult[]>;
440
457
  private _loadExternalObjectGroup;
441
458
  private _loadExternalObjectGroupInConfigurator;
442
459
  private _loadExternalObjectGroupInPlanner;
@@ -450,6 +467,8 @@ export default class RoomlePlanner<P extends readonly PluginName[] = readonly []
450
467
  renderImagesOfExternalObjectGroup(groups: object): Promise<{
451
468
  [key: string]: string;
452
469
  }>;
470
+ getExternalObjectValidSubArticles(posGroupId?: string): PosArticle[];
471
+ selectExternalObjectSubArticle(subArticleId: string): void;
453
472
  /**
454
473
  * Deprecated API that can be deleted once the new API is fully integrated into the OC.
455
474
  */
@@ -571,7 +590,7 @@ export default class RoomlePlanner<P extends readonly PluginName[] = readonly []
571
590
  */
572
591
  redo(): Promise<void>;
573
592
  setHomagIntelligence(homagIntelligence: HomagIntelligence): void;
574
- newPosDataFromId(id: string): import('../../homag-intelligence/src/model/oc-scripts-domain.model').PosGroup;
593
+ newPosDataFromId(id: string): Promise<PosGroup>;
575
594
  /**
576
595
  * deprecated, use placeOrder() instead
577
596
  */
@@ -31,6 +31,8 @@ export interface PlannerKernelCallbackI {
31
31
  startedDrawing(): void;
32
32
  stoppedDrawing(): void;
33
33
  requestCatalogItem(catalogItemId: string): void;
34
+ externalObjectRequestAddOnContainers(groupId: string, subArticleId: string): void;
35
+ externalObjectAddSubArticle(subArticleId: string, rootModuleId: string, parentModuleId: string): void;
34
36
  }
35
37
  export default class PlannerKernelAccess extends ConfiguratorKernelAccess {
36
38
  private _kernelAccessCallback;
@@ -79,6 +81,8 @@ export default class PlannerKernelAccess extends ConfiguratorKernelAccess {
79
81
  externalObjectConfigurationsMerged(plan: Plan, planObject: PlanObject, mergedGroup: ExternalObjectGroup, idsOfGroupsMerged: string | string[], targetRootModuleId: string): void;
80
82
  externalObjectComponentSplitOff(plan: Plan, planObject: PlanObject, splitGroups: ExternalObjectGroup[]): void;
81
83
  externalObjectArrangementChanged(plan: Plan, planObject: PlanObject, changedGroup: ExternalObjectGroup): void;
84
+ externalObjectRequestAddOnContainers(plan: Plan, planObject: PlanObject, groupId: string, subArticleId: string): void;
85
+ externalObjectAddSubArticle(plan: Plan, planObject: PlanObject, subArticleId: string, rootModuleId: string, parentModuleId: string): void;
82
86
  planObjectConfigurationLoaded(plan: Plan, element: PlanElement, success: boolean): Promise<void>;
83
87
  planObjectConfigurationChanged(plan: Plan, object: PlanObject): void;
84
88
  requestCatalogItem(catalogItemId: string): void;
@@ -113,7 +117,6 @@ export default class PlannerKernelAccess extends ConfiguratorKernelAccess {
113
117
  requestDeleteComponent(componentId: number): void;
114
118
  requestDeletePlanComponent(componentId: number): void;
115
119
  private _externalPlanComponentDeleted;
116
- dockExternalObjectComponent(parentId: number, parentDockId: number, childId: number, childDockId: number): void;
117
120
  configureExternalObjectApi(externalObjectSettings?: ExternalObjectApiConfiguration): Promise<void>;
118
121
  setComponentParameter(componentId: number, interactionKey: string, newValue: any): void;
119
122
  protected _getAnimationLevelForObject(runtimeId: number, _animation: KernelAnimation): AnimationLevelType;
@@ -61,8 +61,8 @@ export default class MeasurementLinePlanElementViewModel extends PlanElementView
61
61
  private updatePointDraggableGeometry;
62
62
  getPoint1Draggable(): DraggableNode;
63
63
  getPoint2Draggable(): DraggableNode;
64
- getPoint1DraggableBoundingBox(): Mesh<BufferGeometry<import('three').NormalBufferAttributes>, Material | Material[], import('three').Object3DEventMap>;
65
- getPoint2DraggableBoundingBox(): Mesh<BufferGeometry<import('three').NormalBufferAttributes>, Material | Material[], import('three').Object3DEventMap>;
64
+ getPoint1DraggableBoundingBox(): Mesh<BufferGeometry<import('three').NormalBufferAttributes, import('three').BufferGeometryEventMap>, Material | Material[], import('three').Object3DEventMap>;
65
+ getPoint2DraggableBoundingBox(): Mesh<BufferGeometry<import('three').NormalBufferAttributes, import('three').BufferGeometryEventMap>, Material | Material[], import('three').Object3DEventMap>;
66
66
  hidePreviewBox(): void;
67
67
  selectPoint1Draggable(): void;
68
68
  selectPoint2Draggable(): void;
@@ -168,4 +168,6 @@ export default class PlanViewModel extends ConfiguratorViewModel implements Plan
168
168
  setNodeZoom(zoom: number): void;
169
169
  planCleared(): void;
170
170
  requestCatalogItem(_catalogItemId: string): void;
171
+ externalObjectRequestAddOnContainers(_groupId: string, _subArticleId: string): void;
172
+ externalObjectAddSubArticle(_subArticleId: string, _rootModuleId: string, _parentModuleId: string): void;
171
173
  }
@@ -19,5 +19,5 @@ export default class PlannerMeshGenerator extends MeshGenerator {
19
19
  private _checkWallMaterial;
20
20
  clear(): void;
21
21
  clearWallMeshes(): void;
22
- get wallMeshes(): Mesh<BufferGeometry<import('three').NormalBufferAttributes>, import('three').Material | import('three').Material[], import('three').Object3DEventMap>[];
22
+ get wallMeshes(): Mesh<BufferGeometry<import('three').NormalBufferAttributes, import('three').BufferGeometryEventMap>, import('three').Material | import('three').Material[], import('three').Object3DEventMap>[];
23
23
  }
@@ -56,6 +56,7 @@ export default class PlannerSceneManager extends ConfiguratorSceneManager implem
56
56
  private _planElementHighlighter;
57
57
  private _debugSpheres;
58
58
  constructor(creator: string, offset: CanvasOffset, plannerCallback: RoomlePlannerCallback, mode: Enumify<typeof CAMERA_TYPE>);
59
+ protected _initializeMeshGeneratorSettings(): void;
59
60
  setHomagIntelligence(homagIntelligence: HomagIntelligence): void;
60
61
  get configuratorContext(): import('../../../common-core/src/webgl/configurator-context').default;
61
62
  get hasSingleRoom(): boolean;
@@ -72,7 +73,7 @@ export default class PlannerSceneManager extends ConfiguratorSceneManager implem
72
73
  private _onSelectionCancel;
73
74
  private _handleMeasurementLineDraggablePoints;
74
75
  resetConfiguratorContext(reason: CancelSelectionReasons): void;
75
- protected _setupScene(offset?: CanvasOffset, transparent?: boolean): void;
76
+ protected _setupScene(offset?: CanvasOffset, transparent?: boolean): Promise<void>;
76
77
  protected onBeforeRender(): void;
77
78
  protected _getInputManager(): InputManager;
78
79
  protected createCameraControl(mode: Enumify<typeof CAMERA_TYPE>, _offset: CanvasOffset): void;
@@ -124,6 +125,7 @@ export default class PlannerSceneManager extends ConfiguratorSceneManager implem
124
125
  protected _onKeyUp(event: KeyboardEvent, cleanup?: boolean): void;
125
126
  undo(): Promise<void>;
126
127
  redo(): Promise<void>;
128
+ protected _updateConfigurationFromHistory(configurationString: string): Promise<void>;
127
129
  setMode(mode: Enumify<typeof CAMERA_TYPE>): void;
128
130
  private _clearHighlighting;
129
131
  highlightPlanElementsById(runtimeIds: number[] | null): void;
@@ -234,5 +236,7 @@ export default class PlannerSceneManager extends ConfiguratorSceneManager implem
234
236
  private _insertRapiItems;
235
237
  insertRapiObjects(rapiIds: InsertItemIdInfo[]): Promise<InsertItemResult[]>;
236
238
  private _saveConfiguration;
239
+ externalObjectRequestAddOnContainers(groupId: string, subArticleId: string): void;
240
+ externalObjectAddSubArticle(subArticleId: string, rootModuleId: string, parentModuleId: string): void;
237
241
  }
238
242
  export {};