@roomle/embedding-lib 5.30.0-alpha.1 → 5.30.0-alpha.2

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 (37) hide show
  1. package/docs/md/web/embedding/CHANGELOG.md +43 -27
  2. package/index.d.ts +1 -0
  3. package/package.json +1 -1
  4. package/packages/embedding-lib/src/embedding-lib.d.ts +58 -9
  5. package/packages/web-sdk/packages/common-core/src/configurator-kernel-access.d.ts +6 -4
  6. package/packages/web-sdk/packages/common-core/src/light/light-source.d.ts +2 -0
  7. package/packages/web-sdk/packages/common-core/src/rapi-access.d.ts +12 -0
  8. package/packages/web-sdk/packages/common-core/src/utils/shims.d.ts +4 -0
  9. package/packages/web-sdk/packages/common-core/src/view-model/configurator-view-model.d.ts +3 -2
  10. package/packages/web-sdk/packages/common-core/src/webgl/roomle-component-factory.d.ts +1 -0
  11. package/packages/web-sdk/packages/configurator-core/src/utils/animation/animation-helper.d.ts +15 -2
  12. package/packages/web-sdk/packages/configurator-core/src/utils/animation/animation-value-map.d.ts +6 -4
  13. package/packages/web-sdk/packages/configurator-core/src/utils/animation/object-animations.d.ts +3 -1
  14. package/packages/web-sdk/packages/configurator-core/src/webgl/configurator-scene-manager.d.ts +4 -2
  15. package/packages/web-sdk/packages/homag-intelligence/src/api.d.ts +1 -1
  16. package/packages/web-sdk/packages/homag-intelligence/src/debug-logging.d.ts +12 -3
  17. package/packages/web-sdk/packages/homag-intelligence/src/emulator.d.ts +34 -7
  18. package/packages/web-sdk/packages/homag-intelligence/src/hi-object-selection.d.ts +39 -0
  19. package/packages/web-sdk/packages/homag-intelligence/src/homag-intelligence.d.ts +6 -8
  20. package/packages/web-sdk/packages/planner-core/src/external-object-api.d.ts +50 -20
  21. package/packages/web-sdk/packages/planner-core/src/roomle-planner.d.ts +37 -7
  22. package/packages/web-sdk/packages/planner-core/src/services/planner-kernel-access.d.ts +3 -1
  23. package/packages/web-sdk/packages/planner-core/src/webgl/planner-scene-event-handler.d.ts +2 -1
  24. package/packages/web-sdk/packages/planner-core/src/webgl/planner-scene-manager.d.ts +4 -1
  25. package/packages/web-sdk/packages/typings/kernel.d.ts +9 -0
  26. package/packages/web-sdk/packages/typings/planner-kernel-container.d.ts +1 -0
  27. package/packages/web-sdk/packages/typings/planner.d.ts +2 -0
  28. package/roomle-embedding-lib.es.js +34 -29
  29. package/roomle-embedding-lib.es.min.js +1 -1
  30. package/roomle-embedding-lib.umd.js +7 -7
  31. package/roomle-embedding-lib.umd.min.js +1 -1
  32. package/src/common/composables/use-open-close-anim.d.ts +10 -4
  33. package/src/common/utils/catalog-builder.d.ts +35 -0
  34. package/src/common/utils/root-tags.d.ts +0 -6
  35. package/src/configurator/business-logic/sdk-connector.d.ts +3 -0
  36. package/src/planner/business-logic/sdk-connector-planner.d.ts +1 -0
  37. package/src/planner/components/catalog/CatalogNavigation.vue.d.ts +4 -0
@@ -1,35 +1,51 @@
1
- ## [5.30.0-alpha.1](https://github.com/roomle-dev/roomle-ui/compare/embedding-lib-v5.29.0...embedding-lib-v5.30.0-alpha.1) (2025-10-08)
1
+ ## [5.30.0-alpha.2](https://github.com/roomle-dev/roomle-ui/compare/embedding-lib-v5.30.0-alpha.1...embedding-lib-v5.30.0-alpha.2) (2025-10-14)
2
2
 
3
3
 
4
4
  ### Features
5
5
 
6
- * core api - PlanModelViewHelper.getObjectGeometryHelpLines ([d50c692](https://github.com/roomle-dev/roomle-ui/commit/d50c69250c139dcfb1d9d469109b02ae6f359183))
7
- * core api - PlanObjectComponent properties ([4936555](https://github.com/roomle-dev/roomle-ui/commit/493655574ef91136049daa9b5db960018ac89663))
8
- * created onPlaceOrder and onFetchPrice HI callbacks ([4b48864](https://github.com/roomle-dev/roomle-ui/commit/4b48864a4dc71bb9ce14254857caace4a87ebf33))
9
- * hi core api 'providePossibleChildren' ([a1d96c6](https://github.com/roomle-dev/roomle-ui/commit/a1d96c673b1ec7204cab88eb55e3fc4d16f92f13))
10
- * HI example debug logging ([605e63b](https://github.com/roomle-dev/roomle-ui/commit/605e63b344f34d7f35d67cca357b2e1511e61a45))
11
- * initial working implementation ([07ba92c](https://github.com/roomle-dev/roomle-ui/commit/07ba92c20a3a0886afb5abaafdcd24b954e0fd5d))
12
- * reselect object if object mode changes when clicking on the object ([03b1ea4](https://github.com/roomle-dev/roomle-ui/commit/03b1ea4eb6c7f0f2a1a0eb2c6d1bd85230820a01))
13
- * **core:** upgrade to version 2.61.0 ([8468dff](https://github.com/roomle-dev/roomle-ui/commit/8468dff9ae43a224dd563bc53e36543b79211391))
14
- * **core:** upgrade to version 2.62.0-alpha.1 ([e62b7f2](https://github.com/roomle-dev/roomle-ui/commit/e62b7f278ba0cd72e97b3a0de8ad47ac04fa860a))
15
- * **core:** upgrade to version 2.62.0-alpha.2 ([e679883](https://github.com/roomle-dev/roomle-ui/commit/e6798835befcce2e9f8b1749275d1b62aff5d621))
16
- * **core:** upgrade to version 2.62.0-alpha.4 ([788fc83](https://github.com/roomle-dev/roomle-ui/commit/788fc831445b3050b5188f8fa0100d36e377b30d))
17
- * **core:** upgrade to version 2.62.0-alpha.5 ([c2ee7d8](https://github.com/roomle-dev/roomle-ui/commit/c2ee7d8b48e9ecfa7074d4ec88aa4678da209b51))
18
- * upgrade to version 2.62.0-alpha.6 ([5383e89](https://github.com/roomle-dev/roomle-ui/commit/5383e89a1382f8e9599afc920914124d6a85fead))
6
+ * add APIs for fetching sort connections ([ad9a3a8](https://github.com/roomle-dev/roomle-ui/commit/ad9a3a84a44a786d29cf2fe46cf9e4d16d55724c))
7
+ * add sorting for tags according to the sort connection and add API for fetching tags sort connections ([f88443d](https://github.com/roomle-dev/roomle-ui/commit/f88443d6fa1f7b543996eb3d7e5ed26c9a05a99f))
8
+ * animate child components ([ac51699](https://github.com/roomle-dev/roomle-ui/commit/ac51699914c54e0edae5ca93971d9ae4995d712d))
9
+ * catch all errors in external calculation script ([53cac3d](https://github.com/roomle-dev/roomle-ui/commit/53cac3d5478a167a15c375bde2469c9f5a4426a7))
10
+ * core api - component animation transformation ([4018eaf](https://github.com/roomle-dev/roomle-ui/commit/4018eaf13fa379b04ec7712430967670a9d8c789))
11
+ * core api - useCustomColor ([9451e6a](https://github.com/roomle-dev/roomle-ui/commit/9451e6adde09b9d0f6eb41dce61181753a037245))
12
+ * don't show the open close button for objects that cannot be animated ([54bcd88](https://github.com/roomle-dev/roomle-ui/commit/54bcd88516add9fdb00205d1eaf77d2ff1646f74))
13
+ * emit hi selection callbacks ([378d46d](https://github.com/roomle-dev/roomle-ui/commit/378d46de2c421a13f7ed15352f0d0f42f7aa33eb))
14
+ * glue layer - onGroupsCompletelyLoaded callback ([f5ff385](https://github.com/roomle-dev/roomle-ui/commit/f5ff385757214ab8881ab4aad8074bed8e342098))
15
+ * glue layer api - getExternalObjectAttributeOptions ([57e6867](https://github.com/roomle-dev/roomle-ui/commit/57e6867ead57dabb38a9f10f184d53e2c91d0f1f))
16
+ * glue layer api - loadExternalObjectLibrary ([eb84fbc](https://github.com/roomle-dev/roomle-ui/commit/eb84fbc67cb732c116a15b818411586a0a1ff3e8))
17
+ * glue logic selection callback handler ([cf4ca24](https://github.com/roomle-dev/roomle-ui/commit/cf4ca247e848d8a1437394e0e0af064426060d1a))
18
+ * glue-layer api - select and delete ([6a5cdfb](https://github.com/roomle-dev/roomle-ui/commit/6a5cdfb2332211e70944b5b8df7226b5fca3de14))
19
+ * glue-layer api - setPosDataForLoading ([3203cb6](https://github.com/roomle-dev/roomle-ui/commit/3203cb62bcdae01b5191282b76e46d4a8a55f5a1))
20
+ * glue-layer api - updateExternalObjectAdditionalInfo ([fc55f26](https://github.com/roomle-dev/roomle-ui/commit/fc55f26e22cbd565a882e593fd3f953cc242f84c))
21
+ * handle groups loaded from the plan XML before the library is loaded ([abae83d](https://github.com/roomle-dev/roomle-ui/commit/abae83dc533c30610ffea669b6c2cd121c756ff2))
22
+ * hi selection logic ([8ad66a6](https://github.com/roomle-dev/roomle-ui/commit/8ad66a6d4518324ffd4495ca730d8ca7cc067abb))
23
+ * implement featureflag, add tests ([98d57e8](https://github.com/roomle-dev/roomle-ui/commit/98d57e8da4b68a42a37f240a4d647339742fe1e5))
24
+ * notify glue logic on set sidbar ([607d07b](https://github.com/roomle-dev/roomle-ui/commit/607d07bc2dda9a02cf3061911ba944845a2feca9))
25
+ * only emit hi selection callbacks if something has changed ([2a21339](https://github.com/roomle-dev/roomle-ui/commit/2a21339d7d9a48e50c862229af4b7bc4bca9ab54))
26
+ * set component animation information ([da0889a](https://github.com/roomle-dev/roomle-ui/commit/da0889a2d460465bc41e662e4cd455fa03110e4c))
27
+ * **core:** upgrade to version 2.62.0-alpha.7 ([091a1e5](https://github.com/roomle-dev/roomle-ui/commit/091a1e54fe18e5663f13a41240e4b855c9b915cd))
28
+ * **core:** upgrade to version 2.62.0-alpha.8 ([fb17be6](https://github.com/roomle-dev/roomle-ui/commit/fb17be6436a9279b8fd6f2ccf3d6f5b4e20906ea))
19
29
 
20
30
 
21
31
  ### Bug Fixes
22
32
 
23
- * add library id back to HI callbacks ([ea30779](https://github.com/roomle-dev/roomle-ui/commit/ea3077936ef79ee737b551842441358e0365db6d))
24
- * article ID is the fallback label for catalog item ([a5449f0](https://github.com/roomle-dev/roomle-ui/commit/a5449f069485cfb29c07231b11a868cf2c14c9cd))
25
- * catch hi callback exceptions ([f650511](https://github.com/roomle-dev/roomle-ui/commit/f650511d2c8fb82a545ccfa6fb5800b03b843516))
26
- * consider that root module is moved to a new group on undock ([c293ba8](https://github.com/roomle-dev/roomle-ui/commit/c293ba87b9652ee363d98b772fe8640a5cd6f175))
27
- * consider that the object may be merged on drag-end ([b033cbd](https://github.com/roomle-dev/roomle-ui/commit/b033cbd977513cca7d918e5a98d417770e01a484))
28
- * drag-in hi objects by id instead of serialize json ([60df0bd](https://github.com/roomle-dev/roomle-ui/commit/60df0bd3e3fc07c14f9a5aebed4f06895cc6f93e))
29
- * only unmerge objects if advanced docking is enabled ([2679668](https://github.com/roomle-dev/roomle-ui/commit/2679668d803351a04281ac1d7860864e9d950ae4))
30
- * planner external object selection callback ([e631da9](https://github.com/roomle-dev/roomle-ui/commit/e631da99153e1bba809376989af7ea73970956a2))
31
- * remove unused imports ([da6645c](https://github.com/roomle-dev/roomle-ui/commit/da6645c6c1a305341d1d875debbf135f62bd7134))
32
- * remove unused params ([e22e84e](https://github.com/roomle-dev/roomle-ui/commit/e22e84e54861ca9bc37645db09a9f80aeb63859d))
33
- * reset scroll on select catalog item and remove wrong icon and unneeded dark mode ([7e2339d](https://github.com/roomle-dev/roomle-ui/commit/7e2339d58d6d4c8487cec03ac1beeddbe681b433))
34
- * type errors ([a64197f](https://github.com/roomle-dev/roomle-ui/commit/a64197f8a1f7af9003e5b9124ba0467355b6a9a1))
35
- * update outdated version for playwright docker image since we update our playwright version ([58eafba](https://github.com/roomle-dev/roomle-ui/commit/58eafba6d6ae8f294288fd8175a3bf47ba672c2a))
33
+ * check if groups have elements before rendering them in the grid view ([63a2886](https://github.com/roomle-dev/roomle-ui/commit/63a288691a167bf2c4113b24000440749b108da4))
34
+ * consider that an element may already be removed at drag-end ([02d6ced](https://github.com/roomle-dev/roomle-ui/commit/02d6ced085b0927ed5f99f49723d66e442f2974f))
35
+ * do not lint dist folders ([a2b73b1](https://github.com/roomle-dev/roomle-ui/commit/a2b73b19542e2c98e3c26447034f848010dda0ee))
36
+ * failing sdk test ([83202d8](https://github.com/roomle-dev/roomle-ui/commit/83202d8a036e292edc9e390c873ff0e877f4b199))
37
+ * identify the detached component when merging objects ([7520da4](https://github.com/roomle-dev/roomle-ui/commit/7520da4c16f2b0e82c0992055568a31a87848aba))
38
+ * load default library id when loading homag intelligence plugin ([aeb27f3](https://github.com/roomle-dev/roomle-ui/commit/aeb27f33b6c190e4c820ee8ead76561547cee763))
39
+ * missing nullish coalesce ([9af38ed](https://github.com/roomle-dev/roomle-ui/commit/9af38edfee4d44348c5b1ee38ca199edad9f3146))
40
+ * move the lights high into the sky when turning them off instead of hiding them ([d8d9d1e](https://github.com/roomle-dev/roomle-ui/commit/d8d9d1e84bd5ccfd8d06a816c11252d510f2dc90))
41
+ * only apply animations to objects to which they belong ([4401ee9](https://github.com/roomle-dev/roomle-ui/commit/4401ee9f63e8423c766c591466d93c2734761ebd))
42
+ * separate ui event and glue layer notification ([29cfd07](https://github.com/roomle-dev/roomle-ui/commit/29cfd0781230d3e2cf77a671701dcab575056bac))
43
+ * set HomagIntelligence in scene manager ([780c7db](https://github.com/roomle-dev/roomle-ui/commit/780c7db5c903df8c2c0dba581af6e222ede1687d))
44
+ * sort tags in catalog level 2 structure ([f1582f8](https://github.com/roomle-dev/roomle-ui/commit/f1582f8f33cf716161b557b5e55efe2c553d29f2))
45
+ * typing issues ([4ed0904](https://github.com/roomle-dev/roomle-ui/commit/4ed09040e040c50c6fec15f4cf59b2fc9d3de9bc))
46
+ * use labels as a fallback for the saved tabbed nav ([145f6f0](https://github.com/roomle-dev/roomle-ui/commit/145f6f0cfd3da079858d724e3ae29a970b14676d))
47
+
48
+
49
+ ### Reverts
50
+
51
+ * onComponentSelectionCancel, but notify glue logic directly ([06987bd](https://github.com/roomle-dev/roomle-ui/commit/06987bd24a8ef7bbbbb31c7559985748d55e3d07))
package/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
+ export * from './packages/embedding-lib/src/embedding-lib'
1
2
  import _default from './packages/embedding-lib/src/embedding-lib'
2
3
  export default _default
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@roomle/embedding-lib",
3
- "version": "5.30.0-alpha.1",
3
+ "version": "5.30.0-alpha.2",
4
4
  "description": "This is a small library which can be used to communicate with the Roomle Configurator",
5
5
  "type": "module",
6
6
  "main": "./roomle-embedding-lib.umd.js",
@@ -5,21 +5,50 @@ import { default as RoomleGLBViewer } from '@roomle/web-sdk/glb-viewer-core/src/
5
5
  import { default as RoomlePlanner } from '@roomle/web-sdk/planner-core/src/roomle-planner';
6
6
  import { DragIn } from './plugins/drag-in';
7
7
  import { Connector } from './connector';
8
- import { MasterData, PosGroup } from '@roomle/web-sdk/homag-intelligence/src/model/oc-scripts-domain.model';
8
+ import { MasterData, PosGroup, PosSaveData } from '@roomle/web-sdk/homag-intelligence/src/model/oc-scripts-domain.model';
9
9
 
10
10
  interface PluginMap {
11
11
  dragIn: typeof DragIn;
12
12
  }
13
+ export declare const HI_PANEL_ACTION: {
14
+ readonly HIDE: "hide";
15
+ readonly SHOW_ATTRIBUTES: "attributes";
16
+ readonly SHOW_ARTICLES: "articles";
17
+ };
18
+ export type HiPanelActionType = typeof HI_PANEL_ACTION[keyof typeof HI_PANEL_ACTION];
13
19
  export interface HiCallbacks {
20
+ /**
21
+ * Requests the calculation script for the given library ID.
22
+ * @param libraryId the ID of the library for which the calculation script is requested
23
+ * @returns the calculation script as a string
24
+ */
14
25
  onLoadJavascript: (libraryId: string) => Promise<string>;
26
+ /**
27
+ * Requests the master data for the given library ID.
28
+ * @param libraryId the ID of the library for which the master data is requested
29
+ * @returns the master data as a Promise
30
+ */
15
31
  onLoadMasterData: (libraryId: string) => Promise<MasterData>;
32
+ /**
33
+ * Requests the article catalog for the given library ID.
34
+ * @param libraryId the ID of the library for which the article catalog is requested
35
+ * @returns the article catalog as a Promise
36
+ */
16
37
  onLoadArticleCatalog: (libraryId: string) => Promise<any>;
38
+ /**
39
+ * Notifies the host application that a price calculation should be performed.
40
+ * @param posGroups all groups in the plan
41
+ */
17
42
  onPriceCalc?: (posGroups: PosGroup[]) => Promise<void>;
18
43
  /**
19
- * "onLoadPosGroup" is invoked when a group is loaded from a plan.
20
- * @param groupData The new group data JSON.
44
+ * Retrieves the current external load data which has to be used to replace the existing groups in the plan.
45
+ * @returns load data or null if no replacement is needed
21
46
  */
22
- onLoadPosGroup?: (posGroup: PosGroup) => Promise<boolean>;
47
+ onGetSavedPosGroupData?: () => Promise<PosSaveData | null>;
48
+ /**
49
+ * "onCompletelyLoaded" is invoked when the groups in the plan are completely loaded.
50
+ */
51
+ onPosGroupsCompletelyLoaded?: () => void;
23
52
  /**
24
53
  * "onPosGroupAdded" is invoked when a new group was created. (e.g. duplicate object)
25
54
  * @param groupData The new group data JSON.
@@ -37,12 +66,25 @@ export interface HiCallbacks {
37
66
  */
38
67
  onPosGroupDeleted?: (posGroupIds: string[]) => Promise<void>;
39
68
  /**
40
- * "onLogMessage" is invoked when the Homag Intelligence library wants to log a message.
41
- * You can use this to log messages in your own UI.
42
- * @param area
43
- * @param message
69
+ * "onShowHidePanel" is invoked when a the content of the side panel should be changed or hidden.
70
+ * @param panel The panel to show or hide.
71
+ * @param posGroupId Optional ID of the selected group in case of SHOW_ATTRIBUTES.
72
+ * @param rootModuleId Optional ID of the selected root module in case of SHOW_ATTRIBUTES.
73
+ * @param subModuleId Optional ID of the selected sub module in case of SHOW_ATTRIBUTES.
74
+ */
75
+ onShowHidePanel?: (panel: HiPanelActionType, posGroupId?: string, rootModuleId?: string, subModuleId?: string) => void;
76
+ /**
77
+ * "onSelectModule" is invoked when a the selected object in the scene was changed.
78
+ * @param posGroupId ID of the selected group
79
+ * @param rootModuleId ID of the selected root module
80
+ * @param subModuleId Optional id of the selected sub module
81
+ */
82
+ onSelectModule?: (posGroupId: string, rootModuleId: string, subModuleId?: string) => void;
83
+ /**
84
+ * Request the price for the given order data.
85
+ * @param orderData order data
86
+ * @returns price data
44
87
  */
45
- onLogMessage?: (area: string, message: string) => void;
46
88
  onFetchPrice?: (orderData: any) => Promise<any>;
47
89
  /**
48
90
  * "onPlaceOrder" is invoked when the user wants to place an order.
@@ -50,6 +92,13 @@ export interface HiCallbacks {
50
92
  * @param orderData
51
93
  */
52
94
  onPlaceOrder?: (orderData: any) => Promise<void>;
95
+ /**
96
+ * "onLogMessage" is invoked when the Homag Intelligence library wants to log a message.
97
+ * You can use this to log messages in your own UI.
98
+ * @param area
99
+ * @param message
100
+ */
101
+ onLogMessage?: (area: string, message: string) => void;
53
102
  }
54
103
  export type AvailablePlugins = {
55
104
  [K in keyof PluginMap]?: InstanceType<PluginMap[K]>;
@@ -1,11 +1,12 @@
1
1
  import { default as ConfiguratorContext } from './webgl/configurator-context';
2
- import { DebugClient, KernelDockPairToLine, KernelDockPairToPoint, EmscriptenString, KernelComponent, KernelParameter, KernelParameterGroup, KernelVector3, PlanObject, VariantsList } from '../../typings/kernel';
2
+ import { DebugClient, KernelDockPairToLine, KernelDockPairToPoint, EmscriptenString, KernelAnimation, KernelComponent, KernelParameter, KernelParameterGroup, KernelVector3, PlanObject, VariantsList } from '../../typings/kernel';
3
3
  import { default as CommonKernelAccess, KERNEL_TYPE } from './services/common-kernel-access';
4
4
  import { ArticleNumber, ConfigurationHash, ConfigurationString, RapiId, RapiPrice } from '../../typings/rapi-types';
5
5
  import { CommonConfiguratorKernelCallbackI } from './common-configurator-kernel-callback';
6
6
  import { PromiseQueue } from './utils/promise-queue';
7
7
  import { default as InitData } from './utils/init-data';
8
8
  import { ExternalObjectApiConfiguration } from '../../planner-core/src/external-object-api';
9
+ import { AnimationLevelType } from '../../configurator-core/src/utils/animation/animation-helper';
9
10
 
10
11
  export interface ConfiguratorKernelCallbackI extends CommonConfiguratorKernelCallbackI {
11
12
  planObjectCreated(conversationId: number, planObjectId: number): void;
@@ -20,7 +21,7 @@ export interface ConfiguratorKernelCallbackI extends CommonConfiguratorKernelCal
20
21
  Editor3dComponentDocked(componentId: number, isRootComponent: boolean, parentObjectRuntimeId: number, componentPosition: KernelVector3, componentRotation: KernelVector3): void;
21
22
  finishParameterChange(resolve: () => void, reject: () => void): void;
22
23
  updateAnimationParameters(elementId: number | number[], parameters: KernelParameter[]): void;
23
- changeAnimationValue(elementId: number, parameterKey: string, value: string, level: number, applyToChildren: boolean, animate: boolean): void;
24
+ changeAnimationValue(elementId: number, parameterKey: string, value: string, level: number, animationLevel: AnimationLevelType, animate: boolean): void;
24
25
  }
25
26
  export default class ConfiguratorKernelAccess extends CommonKernelAccess {
26
27
  private _memoryManager;
@@ -62,9 +63,10 @@ export default class ConfiguratorKernelAccess extends CommonKernelAccess {
62
63
  loadConfiguration(configuration: ConfigurationString): void;
63
64
  changeCommonComponentParameter(componentIds: number[], parameterKey: string, type: string, value: string, resolve: () => void, reject: () => void): void;
64
65
  changeComponentParameter(componentId: number, parameterKey: string, type: string, value: string, resolve: () => void, reject: () => void): void;
65
- changePlanObjectParameter(planObjectId: number, parameterKey: string, type: string, value: string, resolve: () => void, reject: () => void): void;
66
+ changePlanObjectParameter(runtimeId: number, parameterKey: string, type: string, value: string, resolve: () => void, reject: () => void): void;
67
+ protected _getAnimationLevelForObject(_runtimeId: number, animation: KernelAnimation): AnimationLevelType;
66
68
  updateAnimationParameters(elementId: number | number[], parameters: KernelParameter[]): void;
67
- changeAnimationValue(elementId: number, parameterKey: string, value: string, level: number, applyToChildren: boolean, animate: boolean): void;
69
+ changeAnimationValue(elementId: number, parameterKey: string, value: string, level: number, animationLevel: AnimationLevelType, animate: boolean): void;
68
70
  private _finishParameterChange;
69
71
  requestDeleteComponents(componentIds: number[]): void;
70
72
  requestDeletePlanComponent(componentId: number): void;
@@ -1,10 +1,12 @@
1
1
  import { Light, Object3D } from 'three';
2
2
  import { KernelLightSourceAttributes } from '../../../typings/kernel';
3
3
 
4
+ export declare const LIGHT_OFF_POSITION = 999;
4
5
  export declare const generateLightSource: (lightSourceAttributes: KernelLightSourceAttributes) => Light | null;
5
6
  export declare class RoomleLightSource {
6
7
  private _lightSourceId;
7
8
  private _light;
9
+ private _savedPosition;
8
10
  constructor(lightSourceId: number, lightSource?: Light);
9
11
  get light(): Light;
10
12
  set light(light: Light);
@@ -106,6 +106,18 @@ export default class RapiAccess implements Context {
106
106
  getMaterialsOf(rapiJson: RapiJson): Promise<RapiMaterial[]>;
107
107
  getComponentsOf(rapiJson: RapiJson): Promise<RapiComponent[]>;
108
108
  getAdditionalContentsOfItems(rapiItems: RapiItem[]): Promise<RapiAdditionalContent[]>;
109
+ /**
110
+ * Fetches item connections for a specific tag and returns a map of itemId -> sort
111
+ * @param tagId - The tag ID to fetch connections for
112
+ * @returns Promise resolving to a Map of itemId to sort value
113
+ */
114
+ getItemConnectionsForTag(tagId: RapiId): Promise<Map<string, number>>;
115
+ /**
116
+ * Fetches tag connections for a specific parent tag and returns a map of tagId -> sort
117
+ * @param parentTagId - The parent tag ID to fetch connections for
118
+ * @returns Promise resolving to a Map of tagId to sort value
119
+ */
120
+ getTagConnectionsForTag(parentTagId: RapiId): Promise<Map<string, number>>;
109
121
  getMaterial(id: RapiId): Promise<RapiMaterial>;
110
122
  peekMaterial(id: RapiId): RapiMaterial;
111
123
  peekComponent(id: RapiId): RapiComponent;
@@ -81,6 +81,10 @@ export interface GlobalInitDataDefinition {
81
81
  export interface FeatureFlags {
82
82
  pulsePreview?: boolean;
83
83
  reDock?: boolean;
84
+ /**
85
+ * @description Sets whether the snapping behavior of objects in the planner is initially enabled.
86
+ */
87
+ enableSnapping?: boolean;
84
88
  /**
85
89
  * @description If set to true we will not hide other items while configuring in the planner
86
90
  */
@@ -9,6 +9,7 @@ import { default as InitData } from '../utils/init-data';
9
9
  import { default as MeshGenerator } from '../webgl/mesh-generator';
10
10
  import { default as PlannerKernelAccess } from '../../../planner-core/src/services/planner-kernel-access';
11
11
  import { Box3, Mesh } from 'three';
12
+ import { AnimationLevelType } from '../../../configurator-core/src/utils/animation/animation-helper';
12
13
  import { ExternalConfiguration } from '../../../typings/external-objects';
13
14
 
14
15
  export interface ConfiguratorViewModelCallbackI {
@@ -51,10 +52,10 @@ export default class ConfiguratorViewModel implements ConfiguratorKernelCallback
51
52
  private _applyMeshTransform;
52
53
  private _applyMeshUVTransform;
53
54
  updateAnimationParameters(elementId: number | number[], parameters: KernelParameter[]): void;
54
- changeAnimationValue(elementId: number, parameterKey: string, value: string, level: number, applyToChildren: boolean, animate: boolean): void;
55
+ changeAnimationValue(elementId: number, parameterKey: string, value: string, level: number, animationLevel: AnimationLevelType, animate: boolean): void;
55
56
  saveExternalConfiguration(externalConfiguration: ExternalConfiguration): void;
56
57
  getExternalConfigurationById(id: string): ExternalConfiguration;
57
- private getComponentFromElementId;
58
+ getComponentFromRuntimeId(elementId: number): RoomleComponent | null;
58
59
  private _addMeshToSubPart;
59
60
  private _addMeshToComponent;
60
61
  private _changeMeshOfComponent;
@@ -22,6 +22,7 @@ export interface RoomleComponent extends RoomleEventedObject3D {
22
22
  hash: string;
23
23
  geometryChanged: boolean;
24
24
  animationValueMap?: AnimationValueMap;
25
+ get childComponents(): RoomleComponent[];
25
26
  replaceMeshes(meshes: Mesh[]): void;
26
27
  addMesh(mesh: Mesh, transform?: Float32Array): void;
27
28
  removeMesh(mesh: Mesh): void;
@@ -1,5 +1,18 @@
1
+ import { default as ConfiguratorPlanObjectViewModel } from '../../../../common-core/src/view-model/configurator-plan-object-view-model';
1
2
  import { RoomleComponent } from '../../../../common-core/src/webgl/roomle-component-factory';
2
- import { KernelParameter } from '../../../../typings/kernel';
3
+ import { default as PlannerSceneManager } from '../../../../planner-core/src/webgl/planner-scene-manager';
4
+ import { AnimationKeyAndValue } from './animation-value-map';
5
+ import { ComponentAnimationTransformation, KernelParameter } from '../../../../typings/kernel';
3
6
 
7
+ export declare const ANIMATION_LEVEL: {
8
+ readonly COMPONENT: 0;
9
+ readonly OBJECT_COMPONENT: 1;
10
+ readonly OBJECT: 2;
11
+ };
12
+ export type AnimationLevelType = (typeof ANIMATION_LEVEL)[keyof typeof ANIMATION_LEVEL];
4
13
  export declare const updateComponentAnimationParameters: (components: RoomleComponent[], parameters: KernelParameter[]) => void;
5
- export declare const changeComponentAnimationValueAndAnimate: (component: RoomleComponent, parameterKey: string, value: string, level: number, animate: boolean, invalidateRenderCallback: () => void) => void;
14
+ export declare const getObjectAnimationValue: (component: RoomleComponent, animationName: string, onlyChildObject: boolean) => AnimationKeyAndValue | null;
15
+ export declare const changeObjectAnimationValueAndAnimate: (component: RoomleComponent, parameterKey: string, value: string, level: number, animationLevel: AnimationLevelType, animate: boolean, invalidateRenderCallback: () => void) => void;
16
+ export declare const hasObjectOpenCloseAnimation: (sceneManager: PlannerSceneManager, planObject: ConfiguratorPlanObjectViewModel) => boolean;
17
+ export declare const getObjectOpenCloseAnimationValue: (sceneManager: PlannerSceneManager, planObject: ConfiguratorPlanObjectViewModel) => AnimationKeyAndValue | null;
18
+ export declare const updateChildObjectAnimations: (component: RoomleComponent, childAnimationTransformations?: ComponentAnimationTransformation[]) => void;
@@ -1,15 +1,17 @@
1
1
  import { KernelParameter } from '../../../../typings/kernel';
2
2
 
3
3
  export declare const ANIMATION_PARAMETER_PREFIX = "animation:";
4
+ export interface AnimationKeyAndValue {
5
+ key: string;
6
+ value: string;
7
+ }
4
8
  export declare class AnimationValueMap {
5
9
  private valueMap;
6
10
  static filterAnimationParameters(parameters: KernelParameter[]): KernelParameter[];
7
11
  static getAnimationName(parameterKey: string): string;
8
- static getKeyAndValue(animationName: string): {
9
- key: string;
10
- value: string;
11
- };
12
+ static getKeyAndValue(animationName: string): AnimationKeyAndValue;
12
13
  hasKeyAndValue(animationKeyAndValue: string): boolean;
14
+ getParameterValue(animationName: string): AnimationKeyAndValue | null;
13
15
  updateParameterValue(parameter: KernelParameter): void;
14
16
  setValue(animationName: string, value: string, level: number): void;
15
17
  setValueAndGetOldValue(animationName: string, value: string, level: number): string;
@@ -13,8 +13,10 @@ export declare class ObjectAnimations {
13
13
  static setObjectAnimations(object3d: Object3D, animations?: Record<string, KernelMeshAnimation>, component?: RoomleComponent): void;
14
14
  static addObjectAnimations(object3d: Object3D, animations?: AnimationTransformationMap, component?: RoomleComponent): void;
15
15
  static removeObjectAnimations(object3d: Object3D, animationName: string): void;
16
- static animateObject(object3d: Object3D, animationName: string, animationTransition: AnimationTransition, animate?: boolean, onProgressUpdate?: () => void): import('@tweenjs/tween.js').Tween<any>;
16
+ static removeAllObjectAnimations(object3d: Object3D): void;
17
+ static animateObject(object3d: Object3D, animationName: string, animationTransition: AnimationTransition, subsequentAnimation?: boolean, animate?: boolean, onProgressUpdate?: () => void): import('@tweenjs/tween.js').Tween<any>;
17
18
  private _animate;
19
+ private _makePriorTransformation;
18
20
  private _calculateCombinedAnimationMatrix;
19
21
  private _calculateAnimationTransformation;
20
22
  private _animateMesh;
@@ -23,6 +23,7 @@ import { default as GlobalInitData } from '../../../common-core/src/utils/global
23
23
  import { CancelSelectionReasons } from '../../../typings/planner';
24
24
  import { ExternalConfiguration } from '../../../typings/external-objects';
25
25
  import { default as UnitFormatter } from '../services/unit-formatter';
26
+ import { AnimationLevelType } from '../utils/animation/animation-helper';
26
27
 
27
28
  export default class ConfiguratorSceneManager extends SceneManager implements ConfiguratorViewModelCallbackI {
28
29
  _creator_: string;
@@ -136,7 +137,7 @@ export default class ConfiguratorSceneManager extends SceneManager implements Co
136
137
  private _onSelectedRuntimeComponentsChange;
137
138
  private _onSelectedRuntimeComponentChange;
138
139
  requestDeleteSelectedComponent(): void;
139
- componentUpdated(component: RoomleComponent, _kernelComponent: KernelComponent): void;
140
+ componentUpdated(component: RoomleComponent, kernelComponent: KernelComponent): void;
140
141
  planObjectUpdated(planObject: PlanObject, geometryChanged: boolean, pendingDocking: boolean): void;
141
142
  componentDeleted(component: RoomleComponent): void;
142
143
  previewConstructionDone(_component: RoomleComponent, hasPreviews: boolean): void;
@@ -167,7 +168,8 @@ export default class ConfiguratorSceneManager extends SceneManager implements Co
167
168
  protected _shouldRenderUi(): boolean;
168
169
  protected setEventHandlerObject(object: Object3D): void;
169
170
  protected _readyForRender(): void;
170
- animateElement(elementId: number, parameterName: string, value: string, applyToChildren: boolean, animate: boolean): void;
171
+ getComponentFromRuntimeId(elementId: number): RoomleComponent | null;
172
+ animateElement(elementId: number, parameterName: string, value: string, animationLevel: AnimationLevelType, animate: boolean): void;
171
173
  undo(): Promise<void>;
172
174
  redo(): Promise<void>;
173
175
  clearHistory(): void;
@@ -15,7 +15,7 @@ export declare class RoomDesignerApi implements RoomDesignerRequests {
15
15
  selectRoot(rootModuleId: string): Promise<void>;
16
16
  selectModule(rootModuleId: string, subModuleId: string): Promise<void>;
17
17
  openCloseGroup(groupOrRootModuleId: string, subModuleId: string | null, open: boolean, animate: boolean): Promise<void>;
18
- deleteGroup(groupId: string, wasMerged?: boolean): void;
18
+ deleteGroup(groupId: string): void;
19
19
  deleteRootModule(rootModuleId: string): void;
20
20
  getPosDataOfAllGroups(): Promise<PosGroup[]>;
21
21
  getRoomInformation(): Promise<import('../../planner-core/src/external-object-api').ExternalRoomInformation>;
@@ -1,16 +1,22 @@
1
1
  import { HiCallbacks } from '../../../../embedding-lib/src/embedding-lib';
2
- import { GlueLogic, RoomDesignerRequests } from './emulator';
2
+ import { GlueLogic, LibraryData, RoomDesignerRequests } from './emulator';
3
3
  import { ExternalObjectGroup } from 'roomle-core-hsc/src/embind/plannerCoreInterface';
4
4
  import { ExternalModuleInformation } from '../../typings/kernel';
5
- import { PosGroup } from './model/oc-scripts-domain.model';
5
+ import { CheckResult, PosGroup, PosSaveData } from './model/oc-scripts-domain.model';
6
6
  import { ExternalObjectModuleIdMap } from './api';
7
+ import { HiObjectSelection } from './hi-object-selection';
7
8
 
8
9
  export declare class GlueLayerRequestDebugLogging implements GlueLogic {
9
10
  private _glueLogic;
10
11
  private _hiCallbacks;
11
12
  constructor(glueLogic: GlueLogic, hiCallbacks: HiCallbacks);
12
13
  get hiCallbacks(): HiCallbacks | null;
14
+ get hiObjectSelection(): HiObjectSelection;
13
15
  private _logRequest;
16
+ isLibraryLoaded(libraryId: string): boolean;
17
+ getLibraryData(libraryId: string): LibraryData | null;
18
+ addLibrary(libraryData: LibraryData): void;
19
+ setPosDataForLoading(posData: PosSaveData | null): void;
14
20
  loadPosData(articleCatalogJson: any, libraryId: string): void;
15
21
  mergeGroups(targetGroup: ExternalObjectGroup, idsOfGroupsMerged: string | string[], idOfTargetRootModule: string): void;
16
22
  deleteRootModule(remainingGroup: ExternalObjectGroup, rootModuleIdToDelete: string, splitOffGroups: ExternalObjectGroup[]): void;
@@ -18,12 +24,15 @@ export declare class GlueLayerRequestDebugLogging implements GlueLogic {
18
24
  duplicateGroup(sourceGroupId: string, duplicatedGroup: ExternalObjectGroup): void;
19
25
  modifyAttribute(groupId: string, moduleIdObjects: ExternalModuleInformation[], attributeName: string, value: string): void;
20
26
  updateAttribute(rootModuleId: string, moduleId: string, attributeId: string, attributeValue: string | boolean): void;
27
+ getVerifiedAttributeOptions(moduleId: string, attributeIds?: string | string[]): Promise<Record<string, CheckResult> | undefined>;
28
+ updateAdditionalInfo(rootModuleId: string, additionalInfo: string): void;
21
29
  swapRootModule(groupId: string, rootModuleId: string, articleId: string): void;
22
30
  arrangeRootModulesOfGroup(changedGroup: ExternalObjectGroup): void;
23
31
  changedGroupPlanningSituation(changedGroup: ExternalObjectGroup): void;
24
32
  deleteGroup(groupId: string): Promise<void>;
25
33
  changedGroup(posDataJson: PosGroup): void;
26
34
  loadedGroup(posDataJson: PosGroup): void;
35
+ groupsCompletelyLoaded(): void;
27
36
  removedGroup(groupId: string): void;
28
37
  openCloseGroup(groupId: string): void;
29
38
  newPosDataFromId(id: string): PosGroup | undefined;
@@ -41,7 +50,7 @@ export declare class GlueLayerResponseDebugLogging implements RoomDesignerReques
41
50
  selectRoot(rootModuleId: string): Promise<void>;
42
51
  selectModule(rootModuleId: string, subModuleId: string): Promise<void>;
43
52
  openCloseGroup(groupOrRootModuleId: string, subModuleId: string | null, open: boolean, animate: boolean): Promise<void>;
44
- deleteGroup(groupId: string, wasMerged?: boolean): void;
53
+ deleteGroup(groupId: string): void;
45
54
  deleteRootModule(rootModuleId: string): void;
46
55
  getPosDataOfAllGroups(): Promise<PosGroup[]>;
47
56
  getRoomInformation(): Promise<any>;
@@ -1,7 +1,8 @@
1
1
  import { HiCallbacks } from '../../../../embedding-lib/src/embedding-lib';
2
2
  import { ExternalModuleInformation, ExternalObjectGroup } from './callbacks';
3
- import { MasterData, PosModuleAttribute, PosGroup, PosModuleData, PosModuleRootData } from './model/oc-scripts-domain.model';
3
+ import { MasterData, PosModuleAttribute, PosGroup, PosModuleData, CheckResult, PosSaveData } from './model/oc-scripts-domain.model';
4
4
  import { ExternalObjectModuleIdMap } from './api';
5
+ import { HiObjectSelection } from './hi-object-selection';
5
6
 
6
7
  export interface LibraryData {
7
8
  libraryId: string;
@@ -9,7 +10,7 @@ export interface LibraryData {
9
10
  get posGroupVersion(): number;
10
11
  calculateGroup(posGroup: PosGroup): PosGroup;
11
12
  getOrderData(posGroup: PosGroup[], roomlePlannerId?: string): any;
12
- getAttributesDropDownValues(module: PosModuleRootData): Promise<any>;
13
+ getAttributesDropDownValues(module: PosModuleData, attributeIds?: string | string[]): Promise<Record<string, any[]>>;
13
14
  solveModuleAttributeConflict(module: PosModuleData, attributeName: string, value: string | number | boolean): PosModuleAttribute[] | undefined;
14
15
  }
15
16
  export interface RoomDesignerRequests {
@@ -19,7 +20,7 @@ export interface RoomDesignerRequests {
19
20
  selectRoot(rootModuleId: string): Promise<void>;
20
21
  selectModule(rootModuleId: string, subModuleId: string): Promise<void>;
21
22
  openCloseGroup(groupOrRootModuleId: string, subModuleId: string | null, open: boolean, animate: boolean): void;
22
- deleteGroup(groupId: string, wasMerged?: boolean): void;
23
+ deleteGroup(groupId: string): void;
23
24
  deleteRootModule(rootModuleId: string): void;
24
25
  getPosDataOfAllGroups(): Promise<PosGroup[]>;
25
26
  getRoomInformation(): Promise<any>;
@@ -32,6 +33,11 @@ export interface RoomDesignerRequests {
32
33
  }
33
34
  export interface GlueLogic {
34
35
  hiCallbacks: HiCallbacks | null;
36
+ hiObjectSelection: HiObjectSelection;
37
+ isLibraryLoaded(libraryId: string): boolean;
38
+ getLibraryData(libraryId: string): LibraryData | null;
39
+ addLibrary(libraryData: LibraryData): void;
40
+ setPosDataForLoading(posData: PosSaveData | null): void;
35
41
  loadPosData(articleCatalogJson: any, libraryId: string): void;
36
42
  mergeGroups(targetGroup: ExternalObjectGroup, idsOfGroupsMerged: string | string[], idOfTargetRootModule: string): void;
37
43
  deleteRootModule(remainingGroup: ExternalObjectGroup, rootModuleIdToDelete: string, splitOffGroups: ExternalObjectGroup[]): void;
@@ -39,12 +45,15 @@ export interface GlueLogic {
39
45
  duplicateGroup(sourceGroupId: string, duplicatedGroup: ExternalObjectGroup): void;
40
46
  modifyAttribute(groupId: string, moduleIdObjects: ExternalModuleInformation[], attributeName: string, value: string): void;
41
47
  updateAttribute(rootModuleId: string, moduleId: string, attributeId: string, attributeValue: string | boolean): void;
48
+ getVerifiedAttributeOptions(moduleId: string, attributeIds?: string | string[]): Promise<Record<string, CheckResult> | undefined>;
49
+ updateAdditionalInfo(rootModuleId: string, additionalInfo: string): void;
42
50
  swapRootModule(groupId: string, rootModuleId: string, articleId: string): void;
43
51
  arrangeRootModulesOfGroup(changedGroup: ExternalObjectGroup): void;
44
52
  changedGroupPlanningSituation(changedGroup: ExternalObjectGroup): void;
45
53
  deleteGroup(groupId: string): Promise<void>;
46
54
  changedGroup(posDataJson: PosGroup): void;
47
55
  loadedGroup(posDataJson: PosGroup): void;
56
+ groupsCompletelyLoaded(): void;
48
57
  removedGroup(groupId: string): void;
49
58
  openCloseGroup(groupId: string): void;
50
59
  newPosDataFromId(id: string): PosGroup | undefined;
@@ -65,19 +74,25 @@ interface GroupItem {
65
74
  export declare class Emulator implements GlueLogic {
66
75
  private _designerRequests;
67
76
  private _libraryData;
77
+ private _posDataForLoading;
68
78
  private _posDataJsonMap;
69
79
  private _groupMap;
70
80
  private _nextPosDataId;
71
81
  private _hiCallbacks;
72
- constructor(designerRequests: RoomDesignerRequests, libraryData: LibraryData, hiCallbacks?: HiCallbacks | null);
82
+ private _hiObjectSelection;
83
+ private _pendingGroupsToBeLoaded;
84
+ private _planCompletelyLoaded;
85
+ constructor(designerRequests: RoomDesignerRequests, hiCallbacks?: HiCallbacks | null);
73
86
  get hiCallbacks(): HiCallbacks | null;
74
- getLibraryData(libraryId: string): LibraryData | null;
87
+ get hiObjectSelection(): HiObjectSelection;
88
+ getLibraryData(data: string | PosGroup): LibraryData | null;
89
+ isLibraryLoaded(libraryId: string): boolean;
75
90
  addLibrary(libraryData: LibraryData): void;
76
91
  loadPosData(articleCatalogJson: any, libraryId: string): void;
92
+ setPosDataForLoading(posData: PosSaveData | null): void;
77
93
  newPosDataFromId(id: string): any;
78
94
  deleteGroup(groupId: string): Promise<void>;
79
95
  selectGroup(groupId: string): Promise<void>;
80
- selectCheckAttributes(libraryId: string, root: PosModuleRootData): Promise<void>;
81
96
  selectRoot(_groupId: any, rootId: string): Promise<void>;
82
97
  deleteRoot(_groupId: any, rootId: string): Promise<void>;
83
98
  selectSubModule(_groupId: any, rootId: string, moduleId: string): Promise<void>;
@@ -91,7 +106,12 @@ export declare class Emulator implements GlueLogic {
91
106
  removedGroup(groupId: string): void;
92
107
  changedGroup(posDataJson: PosGroup): void;
93
108
  changedGroupPlanningSituation(changedGroup: ExternalObjectGroup): void;
94
- loadedGroup(posDataJson: PosGroup): Promise<void>;
109
+ loadedGroup(posDataJson: PosGroup): void;
110
+ private _loadPendingGroup;
111
+ private _loadedGroup;
112
+ _recalculateLoadedGroup(posDataJson: PosGroup): void;
113
+ groupsCompletelyLoaded(): void;
114
+ private _groupsCompletelyLoaded;
95
115
  getGroupDataForOrder(roomlePlannerId?: string): Promise<any>;
96
116
  private _setGroupContour;
97
117
  private _setGroupPosition;
@@ -100,16 +120,23 @@ export declare class Emulator implements GlueLogic {
100
120
  private _splitOffGroupsFromGroups;
101
121
  private _splitOffRootModulesFromGroup;
102
122
  private _calculateNewGroup;
123
+ private _getLibraryIdForPosData;
103
124
  private _calculate;
125
+ private _populateRootFromMasterData;
126
+ private _setSubmoduleImages;
104
127
  private _calculateAndUpdateGroupMap;
105
128
  private _addNewGroup;
106
129
  private _addGroupToMap;
107
130
  updateAttribute(rootModuleId: string, moduleId: string, attributeId: string, attributeValue: string | boolean): void;
108
131
  modifyAttribute(groupId: string, moduleIdObjects: ExternalModuleInformation[], attributeName: string, value: string): void;
132
+ getVerifiedAttributeOptions(moduleId: string, attributeIds?: string | string[]): Promise<Record<string, CheckResult> | undefined>;
133
+ updateAdditionalInfo(rootModuleId: string, additionalInfo: string): void;
109
134
  swapRootModule(groupId: string, rootModuleId: string, articleId: string): void;
110
135
  _modifyAttributeOfModules(emulatorGroupItem: GroupItem, moduleIds: string[] | string, attributeName: string, value: string | boolean): PosGroup;
111
136
  private _setAttribute;
112
137
  savePlanSnapshot(): Promise<PlanSnapshot>;
138
+ private _findRootModuleInAllGroups;
139
+ private _findModuleInAllGroups;
113
140
  private _findModule;
114
141
  private _replacesIDs;
115
142
  private _replacesModuleIDs;