@roomle/embedding-lib 5.30.1 → 5.31.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 (42) hide show
  1. package/docs/md/web/embedding/CHANGELOG.md +44 -2
  2. package/package.json +1 -1
  3. package/packages/embedding-lib/src/examples/homag-intelligence-example.d.ts +11 -0
  4. package/packages/web-sdk/packages/common-core/src/configurator-kernel-access.d.ts +3 -2
  5. package/packages/web-sdk/packages/common-core/src/services/cache-holder.d.ts +5 -2
  6. package/packages/web-sdk/packages/common-core/src/utils/common-utils.d.ts +37 -0
  7. package/packages/web-sdk/packages/common-core/src/utils/init-data.d.ts +1 -1
  8. package/packages/web-sdk/packages/common-core/src/view-model/configurator-view-model.d.ts +1 -4
  9. package/packages/web-sdk/packages/common-core/src/webgl/roomle-component-factory.d.ts +1 -1
  10. package/packages/web-sdk/packages/configurator-core/src/services/configurator-ui-callback.d.ts +4 -0
  11. package/packages/web-sdk/packages/configurator-core/src/utils/animation/animation-helper.d.ts +3 -2
  12. package/packages/web-sdk/packages/configurator-core/src/utils/dimensioning-helper.d.ts +13 -10
  13. package/packages/web-sdk/packages/configurator-core/src/webgl/configurator-scene-event-handler.d.ts +4 -0
  14. package/packages/web-sdk/packages/configurator-core/src/webgl/configurator-scene-manager.d.ts +0 -3
  15. package/packages/web-sdk/packages/homag-intelligence/__tests__/glue-logic-test.d.ts +1 -0
  16. package/packages/web-sdk/packages/homag-intelligence/src/api.d.ts +4 -3
  17. package/packages/web-sdk/packages/homag-intelligence/src/callbacks.d.ts +1 -1
  18. package/packages/web-sdk/packages/homag-intelligence/src/debug-logging.d.ts +3 -3
  19. package/packages/web-sdk/packages/{planner-core → homag-intelligence}/src/external-object-api.d.ts +26 -10
  20. package/packages/web-sdk/packages/homag-intelligence/src/{emulator.d.ts → glue-logic.d.ts} +6 -5
  21. package/packages/web-sdk/packages/homag-intelligence/src/hi-object-selection.d.ts +2 -2
  22. package/packages/web-sdk/packages/homag-intelligence/src/hi-tag-catalog-callbacks.d.ts +1 -1
  23. package/packages/web-sdk/packages/homag-intelligence/src/homag-intelligence.d.ts +1 -1
  24. package/packages/web-sdk/packages/homag-intelligence/src/orders.d.ts +1 -1
  25. package/packages/web-sdk/packages/planner-core/src/roomle-planner-ui-callback.d.ts +1 -1
  26. package/packages/web-sdk/packages/planner-core/src/roomle-planner.d.ts +20 -21
  27. package/packages/web-sdk/packages/planner-core/src/services/planner-kernel-access.d.ts +10 -6
  28. package/packages/web-sdk/packages/planner-core/src/view-model/plan-view-model.d.ts +1 -1
  29. package/packages/web-sdk/packages/planner-core/src/webgl/planner-element-highlighter.d.ts +1 -0
  30. package/packages/web-sdk/packages/planner-core/src/webgl/planner-scene-event-handler.d.ts +4 -4
  31. package/packages/web-sdk/packages/planner-core/src/webgl/planner-scene-manager.d.ts +10 -5
  32. package/packages/web-sdk/packages/typings/kernel.d.ts +2 -1
  33. package/packages/web-sdk/packages/typings/planner-kernel-container.d.ts +1 -1
  34. package/packages/web-sdk/packages/typings/planner.d.ts +10 -6
  35. package/src/common/components/notifications/MaximumLightNotification.vue.d.ts +8 -0
  36. package/src/common/components/notifications/RenderingLightNotification.vue.d.ts +6 -0
  37. package/src/common/components/parameters/ColorParameter.vue.d.ts +2 -2
  38. package/src/common/components/side-bar/utils/configurator-sidebar-components.d.ts +2 -2
  39. package/src/common/components/utils/-utils/notifications.d.ts +4 -0
  40. package/src/common/composables/use-static-item-parameters.d.ts +1 -1
  41. package/src/configurator/embedding/types.d.ts +3 -0
  42. /package/packages/web-sdk/packages/{planner-core → homag-intelligence}/src/external-object-api-callbacks.d.ts +0 -0
@@ -1,6 +1,48 @@
1
- ## [5.30.1](https://github.com/roomle-dev/roomle-ui/compare/embedding-lib-v5.30.0...embedding-lib-v5.30.1) (2025-10-22)
1
+ ## [5.31.0-alpha.1](https://github.com/roomle-dev/roomle-ui/compare/embedding-lib-v5.30.1...embedding-lib-v5.31.0-alpha.1) (2025-10-23)
2
+
3
+
4
+ ### Features
5
+
6
+ * core api - isChildObjectRootComponent ([027e033](https://github.com/roomle-dev/roomle-ui/commit/027e0335af12b5c59a0c42a9403ed94ed3589291))
7
+ * core api - plan object children ([33259e1](https://github.com/roomle-dev/roomle-ui/commit/33259e158b40cb0136d5a60a9a41f992666420e5))
8
+ * core api - setObjectCustomColor ([70ce529](https://github.com/roomle-dev/roomle-ui/commit/70ce52925dc36824beb895b16cf686c5e93496c5))
9
+ * custom color picker on static items ([1942a7d](https://github.com/roomle-dev/roomle-ui/commit/1942a7d15af8f8d6af3bf9b786c05da4737faefa))
10
+ * do not allow dragging of modules in configurator ([adcd12a](https://github.com/roomle-dev/roomle-ui/commit/adcd12a44bd2d50018e05bedc1bf4b848e15b380))
11
+ * hi example - article image ([996dca9](https://github.com/roomle-dev/roomle-ui/commit/996dca93850096c5560a24a8ec94dc5326a267d3))
12
+ * homag intelligence example - debug ui ([47d635d](https://github.com/roomle-dev/roomle-ui/commit/47d635d55347bcb2da57f3672597db7cc086cd7d))
13
+ * Implement html measurements for "normal" measurements ([60bccbb](https://github.com/roomle-dev/roomle-ui/commit/60bccbbe940cd1c03f434e22895d8ce7edaf84d1))
14
+ * initial light working ([a8ed3eb](https://github.com/roomle-dev/roomle-ui/commit/a8ed3ebdf9ad5b9c2f5ea8f216cbb7a78b1f694c))
15
+ * lock camera state when switching object in configurator ([ce4bd0c](https://github.com/roomle-dev/roomle-ui/commit/ce4bd0ce3f2acc19f06ff933a9d511508dfa6a34))
16
+ * module selection logic in isolation mode ([b6736e1](https://github.com/roomle-dev/roomle-ui/commit/b6736e1e7bd846c5aa82a8435608e3756390f2ab))
17
+ * save configuration on planObjectConfigurationChanged ([0a4a57e](https://github.com/roomle-dev/roomle-ui/commit/0a4a57e87db6759039f64373873a4fb4990f8b5c))
18
+ * select the component of the child object on start configuring ([c7b7ed6](https://github.com/roomle-dev/roomle-ui/commit/c7b7ed656a538617efd0dee6de0c617518774aba))
19
+ * setting maximum lights based on max anisotrophy ([f0aa240](https://github.com/roomle-dev/roomle-ui/commit/f0aa240c0bebe9ef11138a78bde9f993e262d2f5))
20
+ * **core:** upgrade to version 2.63.0-alpha.1 ([f2301cc](https://github.com/roomle-dev/roomle-ui/commit/f2301cc82ea02d5d83da0df183a1b6a04c641123))
21
+ * **core:** upgrade to version 2.63.0-alpha.2 ([eae6240](https://github.com/roomle-dev/roomle-ui/commit/eae62407b3116734a17271d3a687cf556326ede6))
22
+ * **core:** upgrade to version 2.63.0-alpha.3 ([45ff1eb](https://github.com/roomle-dev/roomle-ui/commit/45ff1eb7067807299d93df40bd10d8fead846b3b))
23
+ * **core:** upgrade to version 2.63.0-alpha.4 ([fc48712](https://github.com/roomle-dev/roomle-ui/commit/fc48712bd5de99b90197ba7cd91ee07b71f46079))
24
+ * web api - disableChildObjectsOfAllPlanObjects ([b4a006b](https://github.com/roomle-dev/roomle-ui/commit/b4a006bbed50927869342a0c0d7348573d9dd1e9))
2
25
 
3
26
 
4
27
  ### Bug Fixes
5
28
 
6
- * loading of multiple catalogs via init data url ([a8e816e](https://github.com/roomle-dev/roomle-ui/commit/a8e816eb2373830e750cc0f5c878bdb7c062c45d))
29
+ * add a copy of the generated root modules to the split-off group for attribute transfer ([88e21b2](https://github.com/roomle-dev/roomle-ui/commit/88e21b2090109c8af157030dcc822ea2153863db))
30
+ * check if added or removed plan elements are children of plan object ([75cec14](https://github.com/roomle-dev/roomle-ui/commit/75cec14ee29bb8d3fa7f5038514a5593284d40e1))
31
+ * create a single undo/redo step for "swap" object ([52bb02d](https://github.com/roomle-dev/roomle-ui/commit/52bb02d98ae1da1440345fad6bdfd14a72933522))
32
+ * exception - calculateTotalSum ([7a84c34](https://github.com/roomle-dev/roomle-ui/commit/7a84c349915ea7bcc71470024f901eb0c3deaec4))
33
+ * exception when executing object animation in standalone configurator ([f72c382](https://github.com/roomle-dev/roomle-ui/commit/f72c38233e830890e243da7b4be74c9573d2ba70))
34
+ * failing playwright test case ([700a286](https://github.com/roomle-dev/roomle-ui/commit/700a2867b3a8646ce96a12717cd09c1a0fcbee63))
35
+ * failing sdk test ([d148883](https://github.com/roomle-dev/roomle-ui/commit/d148883d15dae4b80d4c3767ef0c4578366f32ab))
36
+ * glue-layer attribute value assignment ([33803f9](https://github.com/roomle-dev/roomle-ui/commit/33803f96d8580b742990f480f9be3c2475bf0407))
37
+ * glue-layer group modification callbacks ([5fd2854](https://github.com/roomle-dev/roomle-ui/commit/5fd28549d2a35d0cd67ad354d3429da388a44754))
38
+ * HF hi compatibility - load master data ([d5e8f1d](https://github.com/roomle-dev/roomle-ui/commit/d5e8f1d1ac93f949e66460312006f3820c689be0))
39
+ * hi object undo/redo action steps ([1c0457a](https://github.com/roomle-dev/roomle-ui/commit/1c0457ab2e6dedaf6c507e6ee668c3c5c17e3c40))
40
+ * highlighting of plan objects after merging ([0c05222](https://github.com/roomle-dev/roomle-ui/commit/0c05222e5fa2ea83194ea0d0e3acefced6105921))
41
+ * linting issues ([8d6d4fc](https://github.com/roomle-dev/roomle-ui/commit/8d6d4fc8566e1db24131e5e2703fc2fbb39cb1b6))
42
+ * make sure onPosGroupsCompletelyLoaded is sent when loading plan prior to library ([4bd834d](https://github.com/roomle-dev/roomle-ui/commit/4bd834d58b50c68f84a4febd0b94b55b57e8a846))
43
+ * only check for children on configurable plan objects ([2667c18](https://github.com/roomle-dev/roomle-ui/commit/2667c184f96de47a1d8b6633ea60fb4cb804ef0a))
44
+ * set "id" property in the external material's parameter value payload ([2adf311](https://github.com/roomle-dev/roomle-ui/commit/2adf31115aa2ab2c0cce42206f9e2d51b00f359c))
45
+ * transfer attributes when root module of group is swapped ([3ae226a](https://github.com/roomle-dev/roomle-ui/commit/3ae226a65a6fdfb0e4ec803d4864efb3fb26ca88))
46
+ * ts lint ([33b20c5](https://github.com/roomle-dev/roomle-ui/commit/33b20c5a18e4d27cbc0e50c60f41312aec942635))
47
+ * update groups already loaded when PosSaveData is assigned ([6bf3943](https://github.com/roomle-dev/roomle-ui/commit/6bf39439b99b64b7af01c1322055035d9a3444ca))
48
+ * wrong links in README in web-SDK package ([677a3c8](https://github.com/roomle-dev/roomle-ui/commit/677a3c807e2ba1f72175241c2704c798dba0ca6e))
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@roomle/embedding-lib",
3
- "version": "5.30.1",
3
+ "version": "5.31.0-alpha.1",
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",
@@ -2,8 +2,19 @@ import { Example } from '../example';
2
2
 
3
3
  export default class HomagIntelligenceExample implements Example {
4
4
  private _abortController;
5
+ private _masterDataJson;
6
+ private _groupMap;
7
+ private _uiContainer;
8
+ private _uiMap;
9
+ private _roomDesignerApi;
5
10
  setupHtml(parent: HTMLElement): Promise<void>;
6
11
  closeExample(): Promise<void>;
7
12
  private start;
8
13
  runExample(): Promise<void>;
14
+ private _clearUiELements;
15
+ private _createUiElements;
16
+ private _getThumbnailUrl;
17
+ private _addUiElements;
18
+ private _removeUiElements;
19
+ private _addButton;
9
20
  }
@@ -1,11 +1,11 @@
1
1
  import { default as ConfiguratorContext } from './webgl/configurator-context';
2
- import { DebugClient, KernelDockPairToLine, KernelDockPairToPoint, EmscriptenString, KernelAnimation, KernelComponent, KernelParameter, KernelParameterGroup, KernelVector3, PlanObject, VariantsList } from '../../typings/kernel';
2
+ import { DebugClient, KernelDockPairToLine, KernelDockPairToPoint, KernelObjectInformation, 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
- import { ExternalObjectApiConfiguration } from '../../planner-core/src/external-object-api';
8
+ import { ExternalObjectApiConfiguration } from '../../homag-intelligence/src/external-object-api';
9
9
  import { AnimationLevelType } from '../../configurator-core/src/utils/animation/animation-helper';
10
10
 
11
11
  export interface ConfiguratorKernelCallbackI extends CommonConfiguratorKernelCallbackI {
@@ -142,6 +142,7 @@ export default class ConfiguratorKernelAccess extends CommonKernelAccess {
142
142
  createNewSerializedConfiguration(configurationRuntimeId: number): string;
143
143
  getCurrentConfigurationHash(planObjectId: number): ConfigurationHash;
144
144
  isExternalObjectOrComponent(planObjectOrComponentId: number): boolean;
145
+ getComponentOrModuleInformation(planObjectOrComponentId: number): KernelObjectInformation | null;
145
146
  listOfVariants: (_componentId: RapiId, _list: VariantsList) => void;
146
147
  listOfVariantsError(dbId: RapiId, error: string): void;
147
148
  addDebugClient(debugClient: DebugClient): void;
@@ -6,12 +6,15 @@ declare class LightCache {
6
6
  private _scene;
7
7
  availableLights: Light[];
8
8
  activeLights: Map<string, Light>;
9
+ maximumLights: number;
9
10
  private readonly _inactivePosition;
10
- constructor(scene: Scene);
11
+ constructor(scene: Scene, maxAnisotropy: number);
12
+ allowedToSpawnMoreLights(): boolean;
11
13
  addActiveLight(light: Light): void;
12
14
  cacheLight(light: Light): void;
13
15
  getLightFromCache(type: KernelLightSourceType): Light<import('three').LightShadow<import('three').Camera>>;
14
16
  clear(): void;
17
+ private _setMaximumLights;
15
18
  }
16
19
  export default class CacheHolder {
17
20
  private _componentCache;
@@ -23,6 +26,6 @@ export default class CacheHolder {
23
26
  get geometryCache(): Map<string, BufferGeometry>;
24
27
  get materialCache(): Map<string, Material>;
25
28
  clear(): void;
26
- setupLightCache(scene: Scene): void;
29
+ setupLightCache(scene: Scene, maxAnisotropy: number): void;
27
30
  }
28
31
  export {};
@@ -49,6 +49,42 @@ export declare const throttle: <T extends (...args: any[]) => any>(func: T, dela
49
49
  */
50
50
  export declare const callAgainAfter: <T extends (...args: any[]) => any>(func: T, after?: number) => (...funcArgs: Parameters<T>) => void;
51
51
  export declare const debounce: <Params extends any[]>(func: (...args: Params) => any, timeout: number) => (...args: Params) => void;
52
+ /**
53
+ * A generic type for a function.
54
+ */
55
+ type AnyFunction = (...args: any[]) => any;
56
+ /**
57
+ * Creates a debounced function that delays invoking `func` until after `delay`
58
+ * milliseconds have elapsed since the last time the debounced function was
59
+ * invoked with the same key. The debounced function comes with a `cancel`
60
+ * method to cancel delayed `func` invocations and a `flush` method to
61
+ * immediately invoke them.
62
+ *
63
+ * T The type of the function to debounce.
64
+ * @param {T} func The function to debounce.
65
+ * @param {number} delay The number of milliseconds to delay.
66
+ * @param {(...args: Parameters<T>) => unknown} [keyResolver]
67
+ * Optional. A function to resolve the key from the arguments.
68
+ * Defaults to using the first argument as the key.
69
+ * @returns {((...args: Parameters<T>) => void)} The new debounced function.
70
+ */
71
+ export declare const debounceByKey: <T extends AnyFunction>(func: T, delay: number, keyResolver?: (...args: Parameters<T>) => unknown) => (this: ThisParameterType<T>, ...args: Parameters<T>) => void;
72
+ /**
73
+ * Creates a debounced function that delays invoking `func` until after `delay`
74
+ * milliseconds have elapsed since the last time the debounced function was
75
+ * invoked with the same key. All calls made with the same key during the
76
+ * delay period will have their returned promises resolved with the result
77
+ * of the single final invocation.
78
+ *
79
+ * T The type of the function to debounce.
80
+ * @param {T} func The function to debounce. This function can be synchronous or asynchronous.
81
+ * @param {number} delay The number of milliseconds to delay.
82
+ * @param {(...args: Parameters<T>) => unknown} [keyResolver]
83
+ * Optional. A function to resolve the key from the arguments.
84
+ * Defaults to using the first argument as the key.
85
+ * @returns {((...args: Parameters<T>) => Promise<ReturnType<T>>)} The new debounced function.
86
+ */
87
+ export declare const debounceByKeyAsync: <T extends AnyFunction>(func: T, delay: number, keyResolver?: (...args: Parameters<T>) => unknown) => (this: ThisParameterType<T>, ...args: Parameters<T>) => Promise<ReturnType<T>>;
52
88
  export declare const wait: (delay: number) => Promise<void>;
53
89
  export declare const nextTick: () => Promise<void>;
54
90
  export declare const roundWithPrecision: (float: number, precision: number) => number;
@@ -117,3 +153,4 @@ export declare const getIdQueryParam: (urlString: string) => string | null;
117
153
  export declare const isCtrlOrCmd: (event: KeyboardEvent) => boolean;
118
154
  export declare const ctrlOrCmd: (event: KeyboardEvent, checkIfItIsTheOnlyKey?: boolean) => boolean;
119
155
  export declare const runIfNotEmpty: <T extends any[]>(ids: string[], executor: () => Promise<T>) => Promise<T>;
156
+ export {};
@@ -8,7 +8,7 @@ import { DefaultEnvironmentSceneType } from '../webgl/renderer/environment-scene
8
8
  import { CustomShadingParameters, SceneShadingType } from '../webgl/renderer/shading-settings';
9
9
  import { RapiId } from '../../../typings/rapi-types';
10
10
  import { CanvasOffset } from '../common-interfaces';
11
- import { ExternalObjectApiConfiguration } from '../../../planner-core/src/external-object-api';
11
+ import { ExternalObjectApiConfiguration } from '../../../homag-intelligence/src/external-object-api';
12
12
  import { HomagIntelligenceInitData } from '../../../homag-intelligence/src/loader';
13
13
 
14
14
  export declare const DEFAULT_ENV_MAP_INTENSITY = 1.5;
@@ -10,7 +10,6 @@ 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
12
  import { AnimationLevelType } from '../../../configurator-core/src/utils/animation/animation-helper';
13
- import { ExternalConfiguration } from '../../../typings/external-objects';
14
13
 
15
14
  export interface ConfiguratorViewModelCallbackI {
16
15
  componentUpdated(component: RoomleComponent, kernelComponent: KernelComponent): void;
@@ -31,6 +30,7 @@ export default class ConfiguratorViewModel implements ConfiguratorKernelCallback
31
30
  protected _configuratorContext: ConfiguratorContext;
32
31
  private _cacheHolder;
33
32
  protected _initData: InitData;
33
+ private _configuratorUiCallbacks;
34
34
  private _listener;
35
35
  private _mergeThreshold;
36
36
  private _componentsToMerge;
@@ -38,7 +38,6 @@ export default class ConfiguratorViewModel implements ConfiguratorKernelCallback
38
38
  private _geometriesMerged;
39
39
  private _subPartObject;
40
40
  private _subPartGuard;
41
- private _externalConfigurations;
42
41
  protected _components: Map<number, RoomleComponent>;
43
42
  private _previews;
44
43
  protected _componentNumberOfPossibleChildren: Map<number, number>;
@@ -53,8 +52,6 @@ export default class ConfiguratorViewModel implements ConfiguratorKernelCallback
53
52
  private _applyMeshUVTransform;
54
53
  updateAnimationParameters(elementId: number | number[], parameters: KernelParameter[]): void;
55
54
  changeAnimationValue(elementId: number, parameterKey: string, value: string, level: number, animationLevel: AnimationLevelType, animate: boolean): void;
56
- saveExternalConfiguration(externalConfiguration: ExternalConfiguration): void;
57
- getExternalConfigurationById(id: string): ExternalConfiguration;
58
55
  getComponentFromRuntimeId(elementId: number): RoomleComponent | null;
59
56
  private _addMeshToSubPart;
60
57
  private _addMeshToComponent;
@@ -12,7 +12,6 @@ export interface RoomleComponent extends RoomleEventedObject3D {
12
12
  runtimeId: number;
13
13
  parentObjectId: number;
14
14
  isRootComponent: boolean;
15
- isChildPlanObject: boolean;
16
15
  meshes: RoomleEventedMesh[];
17
16
  boundingBox: Box3;
18
17
  boundingBoxMesh: RoomleEventedMesh;
@@ -23,6 +22,7 @@ export interface RoomleComponent extends RoomleEventedObject3D {
23
22
  geometryChanged: boolean;
24
23
  animationValueMap?: AnimationValueMap;
25
24
  get childComponents(): RoomleComponent[];
25
+ get parentComponent(): RoomleComponent | null;
26
26
  replaceMeshes(meshes: Mesh[]): void;
27
27
  addMesh(mesh: Mesh, transform?: Float32Array): void;
28
28
  removeMesh(mesh: Mesh): void;
@@ -299,5 +299,9 @@ export default class ConfiguratorUiCallbacks extends UiCallback implements Confi
299
299
  * is called when the external configuration should be saved
300
300
  */
301
301
  onExternalConfigurationSaved: (configuration: ExternalConfiguration) => void;
302
+ /**
303
+ * Is run when the maximum amount of lights the user's hardware can handle have been spawned into the scene.
304
+ */
305
+ onMaximumLightsReached: (maximumLights: number) => void;
302
306
  constructor(creator: string);
303
307
  }
@@ -3,6 +3,7 @@ import { RoomleComponent } from '../../../../common-core/src/webgl/roomle-compon
3
3
  import { default as PlannerSceneManager } from '../../../../planner-core/src/webgl/planner-scene-manager';
4
4
  import { AnimationKeyAndValue } from './animation-value-map';
5
5
  import { ComponentAnimationTransformation, KernelParameter } from '../../../../typings/kernel';
6
+ import { default as PlannerKernelAccess } from '../../../../planner-core/src/services/planner-kernel-access';
6
7
 
7
8
  export declare const ANIMATION_LEVEL: {
8
9
  readonly COMPONENT: 0;
@@ -11,8 +12,8 @@ export declare const ANIMATION_LEVEL: {
11
12
  };
12
13
  export type AnimationLevelType = (typeof ANIMATION_LEVEL)[keyof typeof ANIMATION_LEVEL];
13
14
  export declare const updateComponentAnimationParameters: (components: RoomleComponent[], parameters: KernelParameter[]) => 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;
15
+ export declare const getObjectAnimationValue: (component: RoomleComponent, animationName: string, onlyChildObject: boolean, plannerKernelAccess?: PlannerKernelAccess) => AnimationKeyAndValue | null;
16
+ export declare const changeObjectAnimationValueAndAnimate: (component: RoomleComponent, parameterKey: string, value: string, level: number, animationLevel: AnimationLevelType, animate: boolean, invalidateRenderCallback: () => void, plannerKernelAccess?: PlannerKernelAccess) => void;
16
17
  export declare const hasObjectOpenCloseAnimation: (sceneManager: PlannerSceneManager, planObject: ConfiguratorPlanObjectViewModel) => boolean;
17
18
  export declare const getObjectOpenCloseAnimationValue: (sceneManager: PlannerSceneManager, planObject: ConfiguratorPlanObjectViewModel) => AnimationKeyAndValue | null;
18
19
  export declare const updateChildObjectAnimations: (component: RoomleComponent, childAnimationTransformations?: ComponentAnimationTransformation[]) => void;
@@ -2,33 +2,39 @@ import { Object3D, Scene, Box3, Vector3 } from 'three';
2
2
  import { KernelCube } from '../../../typings/kernel';
3
3
 
4
4
  export declare const DIMENSIONING_GEOMETRY = "dimensioning";
5
+ /**
6
+ * @interface DimensionLabelUIData
7
+ * Defines the structure for a single dimension label's data that will be sent to the UI.
8
+ */
9
+ export interface DimensionLabelUIData {
10
+ id: 'width' | 'height' | 'depth';
11
+ text: string;
12
+ worldPosition: Vector3;
13
+ visible: boolean;
14
+ }
5
15
  export default class DimensioningHelper {
6
16
  _creator_: string;
7
17
  private _unitFormatter;
8
- private _uiScene;
9
18
  private _object;
10
19
  private _objectRotation;
11
20
  private _cameraPosition;
12
21
  private _font;
13
- private _onChange;
22
+ private _onVisibilityChange;
14
23
  private _topDimensions;
15
24
  private _initialized;
16
25
  private _origin;
17
26
  private _dimensions;
18
27
  private _lineMaterial;
19
- private _planeMaterial;
20
28
  private _widthLine;
21
29
  private _heightLine;
22
30
  private _depthLine;
23
- private _widthText;
24
- private _heightText;
25
- private _depthText;
26
31
  private _enabled;
27
32
  private _dimensionsVisible;
28
33
  private _dimensionLineGroup;
29
- private _dimensionTextGroup;
34
+ private _onLabelsUpdate;
30
35
  constructor(creator: string);
31
36
  private _loaded;
37
+ onLabelsUpdate(callback: (labels: DimensionLabelUIData[]) => void): void;
32
38
  private _performUpdate;
33
39
  private _updateWidth;
34
40
  private _updateHeight;
@@ -37,8 +43,6 @@ export default class DimensioningHelper {
37
43
  update(force?: boolean): void;
38
44
  addToObject(object: Object3D): void;
39
45
  removeFromObject(object: Object3D): void;
40
- addToUiScene(uiScene: Scene): void;
41
- removeFromUiScene(uiScene: Scene): void;
42
46
  private _isCameraInsideOrTooClose;
43
47
  private _getWidthEdge;
44
48
  private _getDepthEdge;
@@ -56,7 +60,6 @@ export default class DimensioningHelper {
56
60
  moveCameraEnd(position: Vector3): void;
57
61
  clearScene(_scene: Scene): void;
58
62
  setObject(object: Object3D, rotation?: number): void;
59
- setUiScene(uiScene: Scene): void;
60
63
  isInitialized(): Promise<void>;
61
64
  areDimensionsEnabled(): boolean;
62
65
  private _getRotation;
@@ -46,6 +46,7 @@ export default class ConfiguratorSceneEventHandler extends SceneEventHandler<Sce
46
46
  _creator_: string;
47
47
  private _selectionHandler;
48
48
  private _configuratorUiCallbacks;
49
+ private _plannerKernelAccess;
49
50
  private _cameraMoving;
50
51
  private _hoveredComponent;
51
52
  private _hoveredPreview;
@@ -75,6 +76,7 @@ export default class ConfiguratorSceneEventHandler extends SceneEventHandler<Sce
75
76
  private _updatePositionForPreviewLine;
76
77
  private _hoverOffPreviewLine;
77
78
  private _setDragComponentShadow;
79
+ private _isDraggingPossible;
78
80
  private _dragStart;
79
81
  private _drag;
80
82
  private _dragEnd;
@@ -91,4 +93,6 @@ export default class ConfiguratorSceneEventHandler extends SceneEventHandler<Sce
91
93
  setCameraMoving(cameraMoving: boolean): void;
92
94
  setCamera(camera: Camera): void;
93
95
  setObject(object: Object3D): void;
96
+ private _findComponentToBeSelected;
97
+ private isSiblingSelected;
94
98
  }
@@ -21,7 +21,6 @@ import { default as CameraBehaviour } from '../../../common-core/src/cameracontr
21
21
  import { default as CameraBehaviour3d } from '../../../common-core/src/cameracontrol/camera-behaviour-3d';
22
22
  import { default as GlobalInitData } from '../../../common-core/src/utils/global-init-data';
23
23
  import { CancelSelectionReasons } from '../../../typings/planner';
24
- import { ExternalConfiguration } from '../../../typings/external-objects';
25
24
  import { default as UnitFormatter } from '../services/unit-formatter';
26
25
  import { AnimationLevelType } from '../utils/animation/animation-helper';
27
26
 
@@ -53,8 +52,6 @@ export default class ConfiguratorSceneManager extends SceneManager implements Co
53
52
  enableEvents(): void;
54
53
  enableConfiguratorEvents(): void;
55
54
  disableConfiguratorEvents(): void;
56
- saveExternalConfiguration(externalConfiguration: ExternalConfiguration): void;
57
- getExternalConfigurationById(id: string): ExternalConfiguration;
58
55
  protected _getViewModel(): ConfiguratorViewModel;
59
56
  protected _getKernelAccess(): PlannerKernelAccess;
60
57
  private _showDockings;
@@ -1,6 +1,7 @@
1
- import { RoomDesignerRequests } from './emulator';
1
+ import { RoomDesignerRequests } from './glue-logic';
2
2
  import { MasterData, PosGroup } from './model/oc-scripts-domain.model';
3
3
  import { RoomlePlannerType } from '../../typings/external-objects';
4
+ import { LoadExternalObjectOptions } from './external-object-api';
4
5
 
5
6
  export interface ExternalObjectModuleIdMap {
6
7
  originalModuleId: string;
@@ -10,7 +11,7 @@ export declare class RoomDesignerApi implements RoomDesignerRequests {
10
11
  private _roomlePlanner;
11
12
  constructor(roomlePlanner: RoomlePlannerType);
12
13
  loadMasterData(masterData: MasterData): void;
13
- loadPosGroups(posDataJson: PosGroup | PosGroup[], findFreeSpaceInPlan: boolean, verifyArrangement: boolean, mergedGroups?: string[], respondWithPositionInPlan?: boolean, moduleIdMap?: ExternalObjectModuleIdMap[]): Promise<void>;
14
+ loadPosGroups(posDataJson: PosGroup | PosGroup[], options: LoadExternalObjectOptions): Promise<void>;
14
15
  selectGroup(groupId: string): Promise<void>;
15
16
  selectRoot(rootModuleId: string): Promise<void>;
16
17
  selectModule(rootModuleId: string, subModuleId: string): Promise<void>;
@@ -18,7 +19,7 @@ export declare class RoomDesignerApi implements RoomDesignerRequests {
18
19
  deleteGroup(groupId: string): void;
19
20
  deleteRootModule(rootModuleId: string): void;
20
21
  getPosDataOfAllGroups(): Promise<PosGroup[]>;
21
- getRoomInformation(): Promise<import('../../planner-core/src/external-object-api').ExternalRoomInformation>;
22
+ getRoomInformation(): Promise<import('./external-object-api').ExternalRoomInformation>;
22
23
  generatePlanSnapshot(): Promise<{
23
24
  objectId: string;
24
25
  planId: string;
@@ -1,4 +1,4 @@
1
- import { GlueLogic } from './emulator';
1
+ import { GlueLogic } from './glue-logic';
2
2
  import { default as RoomlePlanner } from '../../planner-core/src/roomle-planner';
3
3
 
4
4
  export interface ExternalObjectSegment {
@@ -1,10 +1,10 @@
1
1
  import { HiCallbacks } from '../../../../embedding-lib/src/embedding-lib';
2
- import { GlueLogic, LibraryData, RoomDesignerRequests } from './emulator';
2
+ import { GlueLogic, LibraryData, RoomDesignerRequests } from './glue-logic';
3
3
  import { ExternalObjectGroup } from 'roomle-core-hsc/src/embind/plannerCoreInterface';
4
4
  import { ExternalModuleInformation } from '../../typings/kernel';
5
5
  import { CheckResult, PosGroup, PosSaveData } from './model/oc-scripts-domain.model';
6
- import { ExternalObjectModuleIdMap } from './api';
7
6
  import { HiObjectSelection } from './hi-object-selection';
7
+ import { LoadExternalObjectOptions } from './external-object-api';
8
8
 
9
9
  export declare class GlueLayerRequestDebugLogging implements GlueLogic {
10
10
  private _glueLogic;
@@ -45,7 +45,7 @@ export declare class GlueLayerResponseDebugLogging implements RoomDesignerReques
45
45
  constructor(roomDesignerRequests: RoomDesignerRequests, hiCallbacks: HiCallbacks);
46
46
  private _logResponse;
47
47
  loadMasterData(masterData: any): void;
48
- loadPosGroups(posDataJson: PosGroup | PosGroup[], findFreeSpaceInPlan: boolean, verifyArrangement: boolean, mergedGroups?: string[], respondWithPositionInPlan?: boolean, moduleIdMap?: ExternalObjectModuleIdMap[]): Promise<void>;
48
+ loadPosGroups(posDataJson: PosGroup | PosGroup[], options: LoadExternalObjectOptions): Promise<void>;
49
49
  selectGroup(groupId: string): Promise<void>;
50
50
  selectRoot(rootModuleId: string): Promise<void>;
51
51
  selectModule(rootModuleId: string, subModuleId: string): Promise<void>;
@@ -1,4 +1,5 @@
1
- import { CheckResult, PosContour } from '../../homag-intelligence/src/model/oc-scripts-domain.model';
1
+ import { Position3 } from '../../common-core/src/common-interfaces';
2
+ import { CheckResult, PosContour } from './model/oc-scripts-domain.model';
2
3
 
3
4
  export interface ExternalObjectUiSliderRange {
4
5
  min: number;
@@ -44,7 +45,22 @@ export declare const HI_CONTEXT_ACTION: {
44
45
  readonly ROOM: "room";
45
46
  readonly ISOLATION: "isolation";
46
47
  };
47
- export type HiContextAction = typeof HI_CONTEXT_ACTION[keyof typeof HI_CONTEXT_ACTION];
48
+ export type HiContextAction = (typeof HI_CONTEXT_ACTION)[keyof typeof HI_CONTEXT_ACTION];
49
+ export type ExternalGroupData = object | object[] | string | string[];
50
+ export interface LoadExternalObjectOptions {
51
+ dragIn?: boolean;
52
+ newAction?: boolean;
53
+ findFreeSpaceInPlan?: boolean;
54
+ correctArrangement?: boolean;
55
+ moduleIdMap?: Array<{
56
+ originalModuleId: string;
57
+ newModuleId: string;
58
+ }>;
59
+ respondWithPositionInPlan?: boolean;
60
+ mergedGroups?: string[];
61
+ position?: Position3;
62
+ rotation?: number;
63
+ }
48
64
  export interface ExternalObjectAPI {
49
65
  /**
50
66
  * With "configureExternalObjectApi" the default representation of the objects and UI and
@@ -66,20 +82,20 @@ export interface ExternalObjectAPI {
66
82
  */
67
83
  loadExternalObjectMasterData(masterDataJson: string | object): void;
68
84
  /**
69
- * "loadExternalObjectGroup" loads a group of modules and places them in the plan.
85
+ * "loadExternalObjectGroups" loads groups of modules and places them in the plan.
70
86
  * If the group has already been loaded, it is completely replaced by the new group.
71
87
  * This function therefore has 2 use cases:
72
88
  * 1. Load a new group of modules
73
89
  * 2. Update or modify an existing group of modules
74
90
  * The initial location of the group and the IDs of the modules are defined in the group JSON.
75
91
  * @param groupJson The group JSON as string or object.
76
- * @param findFreeSpaceInPlan A free space is automatically searched for in the plane.
77
- * @param verifyArrangement Verify whether the root modules of the group need to be rearranged as they have changed in size.
78
- * @param mergedGroups Groups that were merged into another group and have to be delete (this is required to generate correct undo/redo steps).
79
- * @param respondWithPositionInPlan If true, loading the group is responded with the new planning situation of the group (`onChangedExternalObjectGroupPlan`).
80
- * @param moduleIdMap Optional mapping of module IDs that associates original module IDs with new module IDs (required for the correction of the arrangement of root modules).
92
+ * @param options Options for loading the external object groups.
93
+ */
94
+ loadExternalObjectGroups(groupJson: ExternalGroupData, options: LoadExternalObjectOptions): Promise<void>;
95
+ /**
96
+ * Deprecated API that can be deleted once the new API is fully integrated into the OC.
81
97
  */
82
- loadExternalObjectGroup(groupJson: object | string | string[], findFreeSpaceInPlan: boolean, verifyArrangement?: boolean, mergedGroups?: string[], respondWithPositionInPlan?: boolean, moduleIdMap?: ExternalObjectModuleIdMap[]): Promise<void>;
98
+ loadExternalObjectGroup(groupJson: object | string | string[], findFreeSpaceInPlan: boolean, verifyArrangement?: boolean, mergedGroups?: string[], respondWithPositionInPlan?: boolean, moduleIdMap?: ExternalObjectModuleIdMap[], newAction?: boolean): Promise<void>;
83
99
  /**
84
100
  * "updateExternalObjectGroupAttribute" modifies an attribute of a root module or sub module.
85
101
  * The attribute with the ID "attributeId" of the sub module with the ID "moduleId"
@@ -146,7 +162,7 @@ export interface ExternalObjectAPI {
146
162
  * @param groupOrRootModuleId The ID of the group or root module that should be selected.
147
163
  * @param subModuleId The optional ID of the sub module that should be selected.
148
164
  * @param contextAction The context action defines whether the selection is done in room context or isolation context or no context change is done.
149
- */
165
+ */
150
166
  selectExternalObject(groupOrRootModuleId: string, subModuleId: string | null, contextAction: HiContextAction): Promise<void>;
151
167
  /**
152
168
  * "openOrCloseGeometryOfExternalObject" switches the geometry of the modules between closed and open representation.
@@ -1,8 +1,8 @@
1
1
  import { HiCallbacks } from '../../../../embedding-lib/src/embedding-lib';
2
2
  import { ExternalModuleInformation, ExternalObjectGroup } from './callbacks';
3
3
  import { MasterData, PosModuleAttribute, PosGroup, PosModuleData, CheckResult, PosSaveData } from './model/oc-scripts-domain.model';
4
- import { ExternalObjectModuleIdMap } from './api';
5
4
  import { HiObjectSelection } from './hi-object-selection';
5
+ import { LoadExternalObjectOptions } from './external-object-api';
6
6
 
7
7
  export interface LibraryData {
8
8
  libraryId: string;
@@ -15,7 +15,7 @@ export interface LibraryData {
15
15
  }
16
16
  export interface RoomDesignerRequests {
17
17
  loadMasterData(masterData: MasterData): void;
18
- loadPosGroups(posDataJson: PosGroup | PosGroup[], findFreeSpaceInPlan: boolean, verifyArrangement: boolean, mergedGroups?: string[], respondWithPositionInPlan?: boolean, moduleIdMap?: ExternalObjectModuleIdMap[]): Promise<void>;
18
+ loadPosGroups(posDataJson: PosGroup | PosGroup[], options: LoadExternalObjectOptions): Promise<void>;
19
19
  selectGroup(groupId: string): Promise<void>;
20
20
  selectRoot(rootModuleId: string): Promise<void>;
21
21
  selectModule(rootModuleId: string, subModuleId: string): Promise<void>;
@@ -71,7 +71,7 @@ interface GroupItem {
71
71
  posDataJson: PosGroup;
72
72
  opened: boolean;
73
73
  }
74
- export declare class Emulator implements GlueLogic {
74
+ export declare class GlueLogicImplementation implements GlueLogic {
75
75
  private _designerRequests;
76
76
  private _libraryData;
77
77
  private _posDataForLoading;
@@ -85,6 +85,7 @@ export declare class Emulator implements GlueLogic {
85
85
  constructor(designerRequests: RoomDesignerRequests, hiCallbacks?: HiCallbacks | null);
86
86
  get hiCallbacks(): HiCallbacks | null;
87
87
  get hiObjectSelection(): HiObjectSelection;
88
+ private _getGroup;
88
89
  getLibraryData(data: string | PosGroup): LibraryData | null;
89
90
  isLibraryLoaded(libraryId: string): boolean;
90
91
  addLibrary(libraryData: LibraryData): void;
@@ -99,7 +100,7 @@ export declare class Emulator implements GlueLogic {
99
100
  openCloseGroup(groupId: string): Promise<void>;
100
101
  deleteRootModule(remainingGroup: ExternalObjectGroup, rootModuleIdToDelete: string, splitOffGroups: ExternalObjectGroup[]): void;
101
102
  duplicateGroup(_sourceGroupId: string, duplicatedGroup: ExternalObjectGroup): Promise<void>;
102
- mergeGroups(targetGroup: ExternalObjectGroup, idsOfGroupsMerged: string | string[], idOfTargetRootModule: string): void;
103
+ mergeGroups(targetGroup: ExternalObjectGroup, idsOfGroupsMerged: string | string[], idOfTargetRootModule: string): Promise<void>;
103
104
  private _applyImplicitRelevantAttributes;
104
105
  splitRootModuleFromGroup(splitGroup: ExternalObjectGroup, newGroupedRootModules: ExternalObjectGroup[]): void;
105
106
  arrangeRootModulesOfGroup(changedGroup: ExternalObjectGroup): void;
@@ -132,7 +133,7 @@ export declare class Emulator implements GlueLogic {
132
133
  getVerifiedAttributeOptions(moduleId: string, attributeIds?: string | string[]): Promise<Record<string, CheckResult> | undefined>;
133
134
  updateAdditionalInfo(rootModuleId: string, additionalInfo: string): void;
134
135
  swapRootModule(groupId: string, rootModuleId: string, articleId: string): void;
135
- _modifyAttributeOfModules(emulatorGroupItem: GroupItem, moduleIds: string[] | string, attributeName: string, value: string | boolean): PosGroup;
136
+ _modifyAttributeOfModules(emulatorGroupItem: GroupItem, moduleIds: string[] | string, attributeId: string, value: string | boolean): PosGroup;
136
137
  private _setAttribute;
137
138
  savePlanSnapshot(): Promise<PlanSnapshot>;
138
139
  private _findRootModuleInAllGroups;
@@ -12,13 +12,13 @@ export declare const HI_SELECTION_TYPE: {
12
12
  readonly ROOT_MODULE: "rootModule";
13
13
  readonly SUB_MODULE: "subModule";
14
14
  };
15
- export type HiSelectionType = typeof HI_SELECTION_TYPE[keyof typeof HI_SELECTION_TYPE];
15
+ export type HiSelectionType = (typeof HI_SELECTION_TYPE)[keyof typeof HI_SELECTION_TYPE];
16
16
  export declare const HI_SELECTION_MODE: {
17
17
  readonly MULTI_SELECT: "multiselect";
18
18
  readonly TC_CONFIG: "tc-config";
19
19
  readonly RML_OBJECT: "rml-object";
20
20
  };
21
- export type HiSelectionMode = typeof HI_SELECTION_MODE[keyof typeof HI_SELECTION_MODE];
21
+ export type HiSelectionMode = (typeof HI_SELECTION_MODE)[keyof typeof HI_SELECTION_MODE];
22
22
  export declare class HiObjectSelection {
23
23
  private _callbacks;
24
24
  private _contextType;
@@ -1,4 +1,4 @@
1
- import { GlueLogic } from './emulator';
1
+ import { GlueLogic } from './glue-logic';
2
2
  import { Context } from '../../common-core/src/di/context';
3
3
 
4
4
  export declare const FAKE_ROOT_TAG = "external:root-tag";
@@ -1,5 +1,5 @@
1
1
  import { RmlPlugin } from './rml-plugin';
2
- import { GlueLogic } from './emulator';
2
+ import { GlueLogic } from './glue-logic';
3
3
  import { HomagIntelligenceInitData } from './loader';
4
4
  import { MasterData } from './model/oc-scripts-domain.model';
5
5
  import { default as RoomlePlanner } from '../../planner-core/src/roomle-planner';
@@ -1,5 +1,5 @@
1
1
  import { default as RoomlePlanner } from '../../planner-core/src/roomle-planner';
2
- import { GlueLogic } from './emulator';
2
+ import { GlueLogic } from './glue-logic';
3
3
 
4
4
  export declare const createEmptyOrder: () => {
5
5
  id: any;
@@ -14,7 +14,7 @@ import { MeasurementLineDimension, MeasurementLineDimensionTransferable } from '
14
14
  import { ConstructionMeasurementsTransferable } from './utils/measurements';
15
15
  import { FloorAreaDataTransferable } from './view-model/floor-plan-element-view-model';
16
16
  import { BASE_CONTEXT } from '../../common-core/src/main';
17
- import { ExternalObjectGroup, ExternalObjectUiCallback } from './external-object-api-callbacks';
17
+ import { ExternalObjectGroup, ExternalObjectUiCallback } from '../../homag-intelligence/src/external-object-api-callbacks';
18
18
 
19
19
  export interface SelectionPayload {
20
20
  item?: RapiItem;
@@ -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 { ExternalObjectAPI, ExternalObjectApiConfiguration, ExternalObjectModuleIdMap, ExternalRoomInformation, HiContextAction } from './external-object-api';
24
+ import { 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';
@@ -78,17 +78,10 @@ export interface InsertItemResult {
78
78
  runtimeId: RuntimeId;
79
79
  originalIndex: number;
80
80
  }
81
- export interface LoadExternalObjectOptions {
82
- dragIn?: boolean;
83
- findFreeSpaceInPlan?: boolean;
84
- correctArrangement?: boolean;
85
- moduleIdMap?: Array<{
86
- originalModuleId: string;
87
- newModuleId: string;
88
- }>;
89
- respondWithPositionInPlan?: boolean;
90
- position?: Position3;
91
- rotation?: number;
81
+ export interface LightCacheInfo {
82
+ activeLights: number;
83
+ availableLights: number;
84
+ maximumLights: number;
92
85
  }
93
86
  export default class RoomlePlanner<P extends readonly PluginName[] = readonly []> implements KernelAccessCallbackI, RoomlePlannerCallback, GlobalAPI, Context, KernelUtilityForUi, ExternalEmbeddable<RoomlePlannerUiCallback>, RubensAPI, ExternalObjectAPI {
94
87
  _creator_: string;
@@ -167,7 +160,8 @@ export default class RoomlePlanner<P extends readonly PluginName[] = readonly []
167
160
  showBenchmarks(): void;
168
161
  getConfiguratorApi(): RoomleConfigurator<P>;
169
162
  startViewing(): void;
170
- startConfiguring(): void;
163
+ startConfiguring(): Promise<void>;
164
+ private _getObjectComponentForStartConfiguring;
171
165
  /**
172
166
  * select an object in the scene based on its runtime id
173
167
  * @param runtimeId
@@ -234,6 +228,7 @@ export default class RoomlePlanner<P extends readonly PluginName[] = readonly []
234
228
  * @param rotation in radians
235
229
  */
236
230
  insertObject(id: RapiId | ExtObjId, position?: Position3, rotation?: number): Promise<RuntimeId>;
231
+ _insertObject(id: RapiId | ExtObjId, newUndoRedoStep: boolean, position?: Position3, rotation?: number): Promise<RuntimeId>;
237
232
  insertItemList(ids: Array<RapiId | ExtObjId>): Promise<RuntimeId[]>;
238
233
  /**
239
234
  * Inserts all of the items in the array into current plan
@@ -312,15 +307,15 @@ export default class RoomlePlanner<P extends readonly PluginName[] = readonly []
312
307
  /**
313
308
  * returns true if interaction with the child components of a configuration object is enabled, and flashes otherwise
314
309
  */
315
- showsChildrenOfPlanObject(planElementViewModel: PlanElementViewModel): boolean;
310
+ isEnabledChildObjectMode(planElementViewModel: PlanElementViewModel): boolean;
316
311
  /**
317
312
  * enable interaction with child components of configurable objects in the plan
318
313
  */
319
- enableShowChildrenOfPlanObject(planElementViewModel: PlanElementViewModel): KernelObject;
314
+ enableChildObjects(planElementViewModel: PlanElementViewModel): KernelObject;
320
315
  /**
321
316
  * disable interaction with child components of configurable objects in the plan
322
317
  */
323
- disableShowChildrenOfPlanObject(planElementViewModel: PlanElementViewModel): KernelObject;
318
+ disableChildObjects(planElementViewModel: PlanElementViewModel): KernelObject;
324
319
  /**
325
320
  * get the Partlist of certain runtimeID
326
321
  * can be used if partlist of a selected Item is needed
@@ -437,7 +432,11 @@ export default class RoomlePlanner<P extends readonly PluginName[] = readonly []
437
432
  configureExternalObjectApi(configurationJson: string | ExternalObjectApiConfiguration): Promise<void>;
438
433
  loadExternalObjectLibrary(libraryId: string): Promise<void>;
439
434
  loadExternalObjectMasterData(masterDataJson: string | object): void;
440
- loadExternalObjectGroup(groupData: ExternalGroupData, findFreeSpaceInPlan: boolean, correctArrangement?: boolean, mergedGroups?: string[], respondWithPositionInPlan?: boolean, moduleIdMap?: ExternalObjectModuleIdMap[]): Promise<void>;
435
+ /**
436
+ * Deprecated API that can be deleted once the new API is fully integrated into the OC.
437
+ */
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>;
441
440
  private _loadExternalObjectGroup;
442
441
  private _loadExternalObjectGroupInConfigurator;
443
442
  private _loadExternalObjectGroupInPlanner;
@@ -473,12 +472,8 @@ export default class RoomlePlanner<P extends readonly PluginName[] = readonly []
473
472
  */
474
473
  selectExternalObjectSubModule(rootModuleId: string, subModuleId: string): Promise<void>;
475
474
  selectExternalObject(groupOrRootModuleId: string, subModuleId: string | null, contextAction: HiContextAction): Promise<void>;
476
- private _switchExternalObjectMode;
477
475
  openOrCloseGeometryOfExternalObject(groupIdOrRootModuleId: string, _subModuleId: string | null, open: boolean, animate: boolean): void;
478
476
  _selectExternalObjectGroup(groupId: string, switchToPlanner: boolean): Promise<void>;
479
- _selectExternalObjectModule(rootModuleId: string, subModuleId: string | null, selectPlanObject: boolean, switchToConfigurator: boolean, selectComponent: boolean, highlightSelection: boolean): Promise<void>;
480
- private _selectPlanObject;
481
- private _getSelectedPlanObjectComponent;
482
477
  getExternalObjectGroups(): Promise<object[]>;
483
478
  getExternalRoomInformation(): Promise<ExternalRoomInformation>;
484
479
  /**
@@ -558,6 +553,10 @@ export default class RoomlePlanner<P extends readonly PluginName[] = readonly []
558
553
  * @param ids array of light IDs, see type interface RoomleLightSource._lightSourceId
559
554
  */
560
555
  setElementLightsOnOff(planElementViewModel: PlanElementViewModel, state: boolean): void;
556
+ /**
557
+ * Returns an object containing the amount of active, available and maximum lights for the scene.
558
+ */
559
+ getLightCache(): LightCacheInfo;
561
560
  getPlanObjectForRuntimeId(runtimeId: number): Promise<PlanElementViewModel | null>;
562
561
  rotateByRuntimeId(runtimeId: number, rotateBy: number): Promise<void>;
563
562
  deleteByRuntimeId(runtimeId: number): Promise<void>;
@@ -1,14 +1,16 @@
1
- import { KernelAnimation, KernelComponent, KernelEnum, RuntimeId, PlanObject as ConfiguratorPlanObject } from '../../../typings/kernel';
1
+ import { KernelAnimation, KernelPlanObjectComponent, KernelComponent, KernelEnum, RuntimeId, PlanObject as ConfiguratorPlanObject } from '../../../typings/kernel';
2
2
  import { default as PlanObjectViewModel } from '../../../common-core/src/view-model/plan-object-view-model';
3
- import { KernelObject, Plan, PlanElement, PlanInteractionHandler, PlanModelViewHelper, PlanObject } from '../../../typings/planner';
3
+ import { KernelObject, Plan, PlanElement, PlanInteractionHandler, PlanModelViewHelper, PlanObject, CORE_TYPE_OF_CORE_ID } from '../../../typings/planner';
4
4
  import { RapiConfiguration, RapiItem, RapiPlanSnapshotPostData } from '../../../typings/rapi-types';
5
5
  import { default as RoomlePlannerUiCallback } from '../roomle-planner-ui-callback';
6
6
  import { default as PlanElementViewModel } from '../../../common-core/src/view-model/plan-element-view-model';
7
7
  import { Position3 } from '../../../common-core/src/common-interfaces';
8
8
  import { default as ConfiguratorKernelAccess } from '../../../common-core/src/configurator-kernel-access';
9
- import { ExternalObjectApiConfiguration } from '../external-object-api';
10
- import { ExternalObjectGroup } from '../external-object-api-callbacks';
9
+ import { RoomleComponent } from '../../../common-core/src/webgl/roomle-component-factory';
10
+ import { ExternalObjectApiConfiguration } from '../../../homag-intelligence/src/external-object-api';
11
+ import { ExternalObjectGroup } from '../../../homag-intelligence/src/external-object-api-callbacks';
11
12
  import { AnimationLevelType } from '../../../configurator-core/src/utils/animation/animation-helper';
13
+ import { Enumify } from '../../../common-core/src/types';
12
14
 
13
15
  export interface PlannerKernelCallbackI {
14
16
  handlerSwitchedPlans(fromPlan: Plan, toPlan: Plan): void;
@@ -48,7 +50,7 @@ export default class PlannerKernelAccess extends ConfiguratorKernelAccess {
48
50
  get planInteractionHandler(): PlanInteractionHandler;
49
51
  get planModelViewHelper(): PlanModelViewHelper;
50
52
  catalogItemLoaded(catalogItem: RapiItem): void;
51
- insertItems(itemList: Array<RapiItem | RapiConfiguration>): Promise<RuntimeId[]>;
53
+ insertItems(itemList: Array<RapiItem | RapiConfiguration>, newUndoRedoStep?: boolean): Promise<RuntimeId[]>;
52
54
  duplicateItems(planObjects: PlanObject[]): PlanObject[];
53
55
  private _rapiItemToKernelItem;
54
56
  planObjectDeleted(): void;
@@ -90,7 +92,7 @@ export default class PlannerKernelAccess extends ConfiguratorKernelAccess {
90
92
  addPlanMesh(plan: Plan, material: any, vertices: Float32Array, indices: Int32Array, uvCoords: Float32Array, normals: Float32Array, type: KernelEnum): void;
91
93
  endPlanConstruction(plan: Plan): void;
92
94
  createPlanFromObject(rapiElement: RapiItem | RapiConfiguration, position?: Position3, rotation?: number): Plan;
93
- addPlanObjectFromItem(rapiElement: RapiItem | RapiConfiguration, position?: Position3, rotation?: number): Promise<RuntimeId>;
95
+ addPlanObjectFromItem(rapiElement: RapiItem | RapiConfiguration, newUndoRedoStep: boolean, position?: Position3, rotation?: number): Promise<RuntimeId>;
94
96
  coupleReferences(jsObject: any, coreReference: KernelObject): void;
95
97
  private _decoupleReferences;
96
98
  isConstructionPlanElement(planElement: PlanElement): boolean;
@@ -115,4 +117,6 @@ export default class PlannerKernelAccess extends ConfiguratorKernelAccess {
115
117
  configureExternalObjectApi(externalObjectSettings?: ExternalObjectApiConfiguration): Promise<void>;
116
118
  setComponentParameter(componentId: number, interactionKey: string, newValue: any): void;
117
119
  protected _getAnimationLevelForObject(runtimeId: number, _animation: KernelAnimation): AnimationLevelType;
120
+ getObjectComponent(runtimeId: number, typeOfId: Enumify<typeof CORE_TYPE_OF_CORE_ID>): KernelPlanObjectComponent | null;
121
+ isChildObjectRootComponent(roomleComponent: RoomleComponent): boolean;
118
122
  }
@@ -64,7 +64,6 @@ export default class PlanViewModel extends ConfiguratorViewModel implements Plan
64
64
  addPlanElementViewModel(planElementViewModel: PlanElementViewModel): void;
65
65
  private _handleConfiguratorPlanObjectViewModel;
66
66
  private _linkPlanObjectViewModelAndComponent;
67
- private _detachPlanObjectViewModelFromComponent;
68
67
  private _handleConfiguratorConstructionPlanObjectViewModel;
69
68
  private _handleConstructionPlanObjectViewModel;
70
69
  private _handleStaticPlanObjectViewModel;
@@ -97,6 +96,7 @@ export default class PlanViewModel extends ConfiguratorViewModel implements Plan
97
96
  }): void;
98
97
  toggleCeilingLights(on: boolean): void;
99
98
  private commonHandlerForEditableAndTopView;
99
+ isChildObjectRootComponent(roomleComponent: RoomleComponent): boolean;
100
100
  protected dockComponent(componentId: number, isRootComponent: boolean, parentId: number, componentPosition: KernelVector3, componentRotation: KernelVector3): void;
101
101
  protected _addComponent(component: RoomleComponent): void;
102
102
  private _getPlanObjectViewModelForRuntimeId;
@@ -9,6 +9,7 @@ export default class PlanElementHighlighter {
9
9
  private _planViewModel;
10
10
  constructor(sceneEventHandler: PlannerSceneEventHandler, roomleRenderer: RoomleWebGLRenderer, planViewModel: PlanViewModel);
11
11
  private _processViewModel;
12
+ private _isChildObjectRootComponent;
12
13
  private _processSelectedPlanElementIds;
13
14
  private _highlightPlanElementsBase;
14
15
  highlightPlanElements(runtimeIds?: number[]): void;
@@ -141,10 +141,10 @@ export default class PlannerSceneEventHandler extends SceneEventHandler<SceneEve
141
141
  disableSnapping(): void;
142
142
  enableAdvancedDocking(): void;
143
143
  disableAdvancedDocking(): void;
144
- showsChildrenOfPlanObject(object: KernelObject): boolean;
145
- enableShowChildrenOfPlanObject(object: KernelObject, switchChildModeOffForAllOtherObjects?: boolean): KernelObject | null;
146
- disableShowChildrenOfPlanObject(object: KernelObject): KernelObject | null;
147
- disableShowChildrenOfAllPlanObjects(): void;
144
+ isEnabledChildObjectMode(object: KernelObject): boolean;
145
+ enableChildObjects(object: KernelObject, switchChildModeOffForAllOtherObjects?: boolean): KernelObject | null;
146
+ disableChildObjects(object: KernelObject): KernelObject | null;
147
+ disableChildObjectsOfAllPlanObjects(): void;
148
148
  private _checkRaycasterSnapping;
149
149
  enableWallDrawing(): Group;
150
150
  cancelWallDrawing(): Group;
@@ -52,6 +52,7 @@ export default class PlannerSceneManager extends ConfiguratorSceneManager implem
52
52
  currentSelection: SelectionPayload | null;
53
53
  private _paperBackground;
54
54
  private _cameraState;
55
+ private _cameraStateLocked;
55
56
  private _planElementHighlighter;
56
57
  private _debugSpheres;
57
58
  constructor(creator: string, offset: CanvasOffset, plannerCallback: RoomlePlannerCallback, mode: Enumify<typeof CAMERA_TYPE>);
@@ -159,9 +160,9 @@ export default class PlannerSceneManager extends ConfiguratorSceneManager implem
159
160
  disableSnapping(): void;
160
161
  enableAdvancedDocking(): void;
161
162
  disableAdvancedDocking(): void;
162
- showsChildrenOfPlanObject(planElementViewModel: PlanElementViewModel): boolean;
163
- enableShowChildrenOfPlanObject(planElementViewModel: PlanElementViewModel): import('../../../typings/planner').KernelObject;
164
- disableShowChildrenOfPlanObject(planElementViewModel: PlanElementViewModel): import('../../../typings/planner').KernelObject;
163
+ isEnabledChildObjectMode(planElementViewModel: PlanElementViewModel): boolean;
164
+ enableChildObjects(planElementViewModel: PlanElementViewModel): import('../../../typings/planner').KernelObject;
165
+ disableChildObjects(planElementViewModel: PlanElementViewModel): import('../../../typings/planner').KernelObject;
165
166
  dragIn(dragEvent: DragEvent): void;
166
167
  getPlannerSceneEventHandler(): PlannerSceneEventHandler;
167
168
  disablePlannerEvents(): void;
@@ -221,13 +222,17 @@ export default class PlannerSceneManager extends ConfiguratorSceneManager implem
221
222
  protected notifyPlannerOnComponentSelectionCancel(isExternalObject: boolean, reason: CancelSelectionReasons): void;
222
223
  private _externalPlanObjectSelectionChanged;
223
224
  highlightExternalObject(planObjectComponent: KernelPlanObjectComponent): void;
224
- private _selectExternalObjectModule;
225
- getObjectComponent(id: number, typeOfId: Enumify<typeof CORE_TYPE_OF_CORE_ID>): KernelPlanObjectComponent;
225
+ private _selectExternalObjectComponent;
226
+ private _getSelectedPlanObjectComponent;
227
+ selectObjectComponent(planObjectComponent: KernelPlanObjectComponent, switchToConfigurator: boolean, selectComponent: boolean): Promise<void>;
228
+ _swapObjectInConfigurator(planObjectComponent: KernelPlanObjectComponent): Promise<void>;
229
+ getObjectComponent(id: number, typeOfId: Enumify<typeof CORE_TYPE_OF_CORE_ID>): KernelPlanObjectComponent | null;
226
230
  getExternalObjectComponent(groupOrRootModuleId: string, subModuleId: string): KernelPlanObjectComponent;
227
231
  getCameraParameters3d(): NonNullable<CameraParameter>;
228
232
  private _createCeilingLightGroup;
229
233
  toggleInteriorLightsSceneSettings(on: boolean): void;
230
234
  private _insertRapiItems;
231
235
  insertRapiObjects(rapiIds: InsertItemIdInfo[]): Promise<InsertItemResult[]>;
236
+ private _saveConfiguration;
232
237
  }
233
238
  export {};
@@ -234,7 +234,8 @@ export interface KernelPlanObjectBase {
234
234
  center: KernelVector3;
235
235
  rootComponentCenter: KernelVector3;
236
236
  rotation: number;
237
- customColor: number;
237
+ rgbValue: number;
238
+ useCustomColor?: boolean;
238
239
  customLabel: string;
239
240
  catalogItemId: string;
240
241
  runtimeId: number;
@@ -83,7 +83,7 @@ declare class PlanObjectPtrVector extends EmsArray<PlanObjectPtr> {
83
83
  }
84
84
  declare abstract class PlanObjectPtr extends AbstractModelWrapper {
85
85
  rotation: KernelVector3f;
86
- customColor: number;
86
+ rgbColor: number;
87
87
  level: number;
88
88
  flipX: boolean;
89
89
  flipY: boolean;
@@ -76,7 +76,8 @@ export interface ObjectFrontRotation {
76
76
  export interface PlanObject extends PlanElement {
77
77
  size: KernelVector3;
78
78
  rotation: number;
79
- customColor: number;
79
+ rgbColor: number;
80
+ useCustomColor?: boolean;
80
81
  flipX: boolean;
81
82
  flipY: boolean;
82
83
  fixedZ: boolean;
@@ -264,18 +265,21 @@ export interface PlanInteractionHandler {
264
265
  getContinuousDrawingManager(): ContinuousDrawingManager;
265
266
  setSnapFeedbackWhileDrawing(enabled: boolean): void;
266
267
  consistsOfMergedComponents(object: KernelObject): boolean;
267
- getShowChildrenOfPlanObject(object: KernelObject): ChildEntityMode;
268
- setShowChildrenOfPlanObject(object: KernelObject, mode: ChildEntityMode, switchChildModeOffForAllOtherObjects: boolean): KernelObject;
269
- setShowChildrenOfExternalObject(objectId: string, mode: ChildEntityMode, switchChildModeOffForAllOtherObjects: boolean): KernelObject;
270
268
  setObjectSize(anObject: KernelObject, aNewSize: KernelVector3, anAnchor: Anchor): void;
271
269
  setObjectFlipX(anObject: KernelObject, shouldFlipX: boolean): void;
272
270
  setObjectFlipY(anObject: KernelObject, shouldFlipY: boolean): void;
273
- setObjectCustomColor(anObject: KernelObject, aCustomColor: number): void;
271
+ setObjectCustomColor(object: PlanObject, rgbColor: number, useCustomColor: boolean): void;
274
272
  setObjectFixedZ(anObject: KernelObject, shouldFlipZ: boolean): void;
275
273
  setMeasurePoint1(measure: PlanMeasure, point: KernelVector3f, snapToWalls: boolean, snapToObjects: boolean): void;
276
274
  setMeasurePoint2(measure: PlanMeasure, point: KernelVector3f, snapToWalls: boolean, snapToObjects: boolean): void;
277
275
  addMeasure(startPosition: KernelVector3f, endPosition: KernelVector3f): PlanMeasure;
278
276
  setDiscardExternalObjectsOnLoad(discard: boolean): void;
277
+ isEnabledChildObjectMode(object: KernelObject): boolean;
278
+ enableChildObjects(object: KernelObject, switchChildModeOffForAllOtherObjects: boolean): KernelObject;
279
+ disableChildObjects(object: KernelObject): KernelObject;
280
+ enableChildObjectsOfExternalObject(objectId: string, switchChildModeOffForAllOtherObjects: boolean): KernelObject;
281
+ disableChildObjectsOfExternalObject(objectId: string): KernelObject;
282
+ disableChildObjectsOfAllPlanObjects(): void;
279
283
  unit: string;
280
284
  enableRaster: boolean;
281
285
  customRaster: number;
@@ -285,7 +289,6 @@ export interface PlanInteractionHandler {
285
289
  objectToObjectSnapMode: SnapMode;
286
290
  dockWhenSnap: boolean;
287
291
  unDockOnMove: boolean;
288
- showChildrenOfPlanObjects: ChildEntityMode;
289
292
  }
290
293
  export interface PlanOverview {
291
294
  area: number;
@@ -336,6 +339,7 @@ declare class GeometryHelpLineArray extends EmsArray<GeometryHelpLine> {
336
339
  export interface PlanModelViewHelper {
337
340
  getPlanOverview(planObject: KernelObject): PlanOverview;
338
341
  getPlanObject(plan: Plan, aRuntimeId: number): KernelPlanObject;
342
+ isChildObjectRootComponent(plan: Plan, componentRuntimeId: number): boolean;
339
343
  getRootPlanObjectId(plan: Plan, aRuntimeId: number): number;
340
344
  getObjectComponent(plan: Plan, typeOfId: TypeOfCoreId, anId: number): KernelPlanObjectComponent;
341
345
  getExternalObjectComponent(plan: Plan, groupId: string, moduleId: string): KernelPlanObjectComponent;
@@ -0,0 +1,8 @@
1
+ declare const _default: import('vue').DefineComponent<{
2
+ close: () => void;
3
+ payload: number;
4
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
5
+ close: () => void;
6
+ payload: number;
7
+ }> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
8
+ export default _default;
@@ -0,0 +1,6 @@
1
+ declare const _default: import('vue').DefineComponent<{
2
+ close: () => void;
3
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
4
+ close: () => void;
5
+ }> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
6
+ export default _default;
@@ -1114,7 +1114,7 @@ declare const _default: import('vue').DefineComponent<{
1114
1114
  isExpanded?: boolean;
1115
1115
  onExpand?: () => void;
1116
1116
  onCollapse?: (_payload: MouseEvent) => void;
1117
- onSetColor?: (element: GridViewElement<any>, key?: string) => void | Promise<void>;
1117
+ onSetColor?: (element: GridViewElement<any>, key?: string, isCustomColor?: boolean) => void | Promise<void>;
1118
1118
  value?: MinimalBoundValue<any>;
1119
1119
  label?: string;
1120
1120
  originalPayload?: any;
@@ -2224,7 +2224,7 @@ declare const _default: import('vue').DefineComponent<{
2224
2224
  isExpanded?: boolean;
2225
2225
  onExpand?: () => void;
2226
2226
  onCollapse?: (_payload: MouseEvent) => void;
2227
- onSetColor?: (element: GridViewElement<any>, key?: string) => void | Promise<void>;
2227
+ onSetColor?: (element: GridViewElement<any>, key?: string, isCustomColor?: boolean) => void | Promise<void>;
2228
2228
  value?: MinimalBoundValue<any>;
2229
2229
  label?: string;
2230
2230
  originalPayload?: any;
@@ -1382,7 +1382,7 @@ declare const dynamicComponents: {
1382
1382
  isExpanded?: boolean;
1383
1383
  onExpand?: () => void;
1384
1384
  onCollapse?: (_payload: MouseEvent) => void;
1385
- onSetColor?: (element: import('../../../../configurator/components/grid-view/-utils/GridViewHelper').GridViewElement<any>, key?: string) => void | Promise<void>;
1385
+ onSetColor?: (element: import('../../../../configurator/components/grid-view/-utils/GridViewHelper').GridViewElement<any>, key?: string, isCustomColor?: boolean) => void | Promise<void>;
1386
1386
  value?: import('../../../composables/use-core-bound-value').MinimalBoundValue<any>;
1387
1387
  label?: string;
1388
1388
  originalPayload?: any;
@@ -2492,7 +2492,7 @@ declare const dynamicComponents: {
2492
2492
  isExpanded?: boolean;
2493
2493
  onExpand?: () => void;
2494
2494
  onCollapse?: (_payload: MouseEvent) => void;
2495
- onSetColor?: (element: import('../../../../configurator/components/grid-view/-utils/GridViewHelper').GridViewElement<any>, key?: string) => void | Promise<void>;
2495
+ onSetColor?: (element: import('../../../../configurator/components/grid-view/-utils/GridViewHelper').GridViewElement<any>, key?: string, isCustomColor?: boolean) => void | Promise<void>;
2496
2496
  value?: import('../../../composables/use-core-bound-value').MinimalBoundValue<any>;
2497
2497
  label?: string;
2498
2498
  originalPayload?: any;
@@ -13,6 +13,8 @@ export declare const NOTIFICATION_SHOW_TIMEOUTS: {
13
13
  readonly LONG: 8000;
14
14
  };
15
15
  export declare const NOTIFICATIONS: {
16
+ readonly RENDERING_LIGHT: "rendering-light-notification";
17
+ readonly MAXIMUM_LIGHTS: "maximum-lights-notification";
16
18
  readonly LOAD_IDB_CONFIG: "load-idb-config";
17
19
  readonly FIRST_PERSON_CONTROLS: "first-person-controls";
18
20
  readonly STOP_CONFIGURE_HINT: "stop-configure-hint";
@@ -43,8 +45,10 @@ export type InteractionNotificationStore = Record<InteractionTypes, Notification
43
45
  message: string;
44
46
  }>>;
45
47
  export interface NotificationsStore {
48
+ [NOTIFICATIONS.MAXIMUM_LIGHTS]: NotificationData<number>;
46
49
  [NOTIFICATIONS.LOAD_IDB_CONFIG]: NotificationData<SavedIdbData<string>>;
47
50
  [NOTIFICATIONS.FIRST_PERSON_CONTROLS]: NotificationData<null>;
51
+ [NOTIFICATIONS.RENDERING_LIGHT]: NotificationData<null>;
48
52
  [NOTIFICATIONS.INTERACTION_NOTE]: InteractionNotificationStore;
49
53
  }
50
54
  export {};
@@ -1109,5 +1109,5 @@ export declare const useStaticItemParameters: (api: RoomlePlannerWithExtObjs, ma
1109
1109
  readonly __IS_SAMPLE_COLOR__: 1;
1110
1110
  }];
1111
1111
  }] | RapiMaterialGroup[]>;
1112
- onMaterialSelection: (element: GridViewElement<MaterialsForObjects>) => Promise<void>;
1112
+ onMaterialSelection: (element: GridViewElement<MaterialsForObjects>, _key?: string, isCustomColor?: boolean) => Promise<void>;
1113
1113
  };
@@ -153,6 +153,9 @@ export interface UiInitData extends InitDataDefinition, GlobalInitDataDefinition
153
153
  [INTERACTION_NOTIFICATIONS.ADD_ELEMENT]?: boolean;
154
154
  [INTERACTION_NOTIFICATIONS.PARAMETER_CHANGED]?: boolean;
155
155
  };
156
+ [key: string]: boolean | {
157
+ [key: string]: boolean | undefined;
158
+ } | undefined;
156
159
  };
157
160
  /**
158
161
  * @description skin the embedding instance