@roomle/embedding-lib 5.29.0 → 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 (46) hide show
  1. package/docs/md/web/embedding/CHANGELOG.md +43 -43
  2. package/index.d.ts +1 -0
  3. package/package.json +1 -1
  4. package/packages/embedding-lib/src/embedding-lib.d.ts +67 -4
  5. package/packages/embedding-lib/src/examples/homag-intelligence-catalog-load-async.d.ts +14 -0
  6. package/packages/embedding-lib/src/examples/utils/homag-intelligence/util.d.ts +1 -0
  7. package/packages/web-sdk/packages/common-core/src/configurator-kernel-access.d.ts +6 -4
  8. package/packages/web-sdk/packages/common-core/src/light/light-source.d.ts +2 -0
  9. package/packages/web-sdk/packages/common-core/src/rapi-access.d.ts +12 -0
  10. package/packages/web-sdk/packages/common-core/src/utils/shims.d.ts +4 -0
  11. package/packages/web-sdk/packages/common-core/src/view-model/configurator-view-model.d.ts +3 -2
  12. package/packages/web-sdk/packages/common-core/src/webgl/roomle-component-factory.d.ts +1 -0
  13. package/packages/web-sdk/packages/configurator-core/src/utils/animation/animation-helper.d.ts +15 -2
  14. package/packages/web-sdk/packages/configurator-core/src/utils/animation/animation-value-map.d.ts +6 -4
  15. package/packages/web-sdk/packages/configurator-core/src/utils/animation/object-animations.d.ts +3 -1
  16. package/packages/web-sdk/packages/configurator-core/src/webgl/configurator-scene-manager.d.ts +4 -2
  17. package/packages/web-sdk/packages/homag-intelligence/src/api.d.ts +5 -2
  18. package/packages/web-sdk/packages/homag-intelligence/src/debug-logging.d.ts +63 -0
  19. package/packages/web-sdk/packages/homag-intelligence/src/emulator.d.ts +43 -12
  20. package/packages/web-sdk/packages/homag-intelligence/src/hi-object-selection.d.ts +39 -0
  21. package/packages/web-sdk/packages/homag-intelligence/src/hi-tag-catalog-callbacks.d.ts +3 -3
  22. package/packages/web-sdk/packages/homag-intelligence/src/homag-intelligence.d.ts +9 -12
  23. package/packages/web-sdk/packages/homag-intelligence/src/loader.d.ts +16 -4
  24. package/packages/web-sdk/packages/homag-intelligence/src/orders.d.ts +3 -7
  25. package/packages/web-sdk/packages/planner-core/src/external-object-api.d.ts +51 -21
  26. package/packages/web-sdk/packages/planner-core/src/roomle-planner.d.ts +44 -6
  27. package/packages/web-sdk/packages/planner-core/src/services/planner-kernel-access.d.ts +3 -1
  28. package/packages/web-sdk/packages/planner-core/src/utils/planner-selection-handler.d.ts +1 -1
  29. package/packages/web-sdk/packages/planner-core/src/webgl/planner-scene-event-handler.d.ts +2 -1
  30. package/packages/web-sdk/packages/planner-core/src/webgl/planner-scene-manager.d.ts +6 -3
  31. package/packages/web-sdk/packages/typings/kernel.d.ts +12 -0
  32. package/packages/web-sdk/packages/typings/planner-kernel-container.d.ts +1 -0
  33. package/packages/web-sdk/packages/typings/planner.d.ts +17 -0
  34. package/roomle-embedding-lib.es.js +52 -28
  35. package/roomle-embedding-lib.es.min.js +1 -1
  36. package/roomle-embedding-lib.umd.js +7 -7
  37. package/roomle-embedding-lib.umd.min.js +1 -1
  38. package/src/common/composables/use-open-close-anim.d.ts +10 -4
  39. package/src/common/composables/use-planner-actions-visibility.d.ts +4 -0
  40. package/src/common/store/common-ui-store.d.ts +4 -1
  41. package/src/common/utils/catalog-builder.d.ts +35 -0
  42. package/src/configurator/business-logic/sdk-connector.d.ts +4 -0
  43. package/src/configurator/embedding/exposed-api.d.ts +5 -0
  44. package/src/planner/business-logic/sdk-connector-planner.d.ts +1 -0
  45. package/src/planner/components/catalog/CatalogNavigation.vue.d.ts +4 -0
  46. package/src/planner/components/overlays/product-settings/ProductRangeControl.vue.d.ts +4 -1
@@ -1,51 +1,51 @@
1
- ## [5.29.0](https://github.com/roomle-dev/roomle-ui/compare/embedding-lib-v5.28.0...embedding-lib-v5.29.0) (2025-10-07)
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
- * add the external object prefix to the ID if the object type is “tc_id” ([fa5188c](https://github.com/roomle-dev/roomle-ui/commit/fa5188cd5213fe7def41d5011231234df5eb4011))
7
- * added "respondWithPositionInPlan" argument to "loadExternalObjectGroup" ([a3fceb3](https://github.com/roomle-dev/roomle-ui/commit/a3fceb3f9449ae35372721278cac95f640dbaf28))
8
- * await group modification before calculating price ([8ce27c5](https://github.com/roomle-dev/roomle-ui/commit/8ce27c5e070cb75a7c1e112ebf47ffdee50f301e))
9
- * core api - external configuration module id map ([039de3f](https://github.com/roomle-dev/roomle-ui/commit/039de3f6ee9aaddca28f3a5ca57214f3f86cd7ba))
10
- * core api - external object update ([2dea816](https://github.com/roomle-dev/roomle-ui/commit/2dea81694e0257b6b2fb742d25cd5b0190ed3c23))
11
- * core api - object component ([bc8adfe](https://github.com/roomle-dev/roomle-ui/commit/bc8adfe0ccb6c926a083613ccc862846f7c9dcbc))
12
- * core api - return object when child mode is changed ([0001b31](https://github.com/roomle-dev/roomle-ui/commit/0001b31bafcb4f9085e4faf7aa1090a79dd382e1))
13
- * correct arrangement when swapping root modules ([6da5ed6](https://github.com/roomle-dev/roomle-ui/commit/6da5ed6c26d9524718f950ea9180b21564f7e5fa))
14
- * first implementation of exporters ([e1b4538](https://github.com/roomle-dev/roomle-ui/commit/e1b4538e979d03aa9966737f0b71e6b949347748))
15
- * glue layer - handle multiple libraries ([b91ff11](https://github.com/roomle-dev/roomle-ui/commit/b91ff11c14aa94765f6e216ccbe116acb2995bc7))
16
- * glue-layer group modification callback ([3437dfa](https://github.com/roomle-dev/roomle-ui/commit/3437dfa2474bfce6a06e450c8476ae4401919dda))
17
- * HI api - update attribute ([51d1a91](https://github.com/roomle-dev/roomle-ui/commit/51d1a91756fef48f9f1e31f4abf1c516bd876d84))
18
- * HI api - update attribute ([2106e97](https://github.com/roomle-dev/roomle-ui/commit/2106e9789547dab91d330715c0d1c2c2d66d5d41))
19
- * HI callback when group is laded from plan ([0e6392d](https://github.com/roomle-dev/roomle-ui/commit/0e6392da9989a05e744cee4afa7f981ced78a047))
20
- * HI group callbacks ([9e500af](https://github.com/roomle-dev/roomle-ui/commit/9e500afef9bc67db9be957f75a7bf0483f9161c5))
21
- * invoke HI group callbacks ([a72ddd5](https://github.com/roomle-dev/roomle-ui/commit/a72ddd5bec712b6b638df404914f7d78203fa1d7))
22
- * keep selection when swapping root modules ([a3cb518](https://github.com/roomle-dev/roomle-ui/commit/a3cb518466d67296f8ed73cdd3d22ada32d7f766))
23
- * keep the child selection when clicking on a sibling ([a2f6e1f](https://github.com/roomle-dev/roomle-ui/commit/a2f6e1f40a408075d21284b18cbbe359bccdf8f0))
24
- * make hi group callbacks optional ([589310e](https://github.com/roomle-dev/roomle-ui/commit/589310eb863fe9e6ecbe34443d276995e1e03afd))
25
- * Merge product in RD scene UI v2 (Double click to un-merge component and click to select the entire configuration) ([831e298](https://github.com/roomle-dev/roomle-ui/commit/831e298b8ebc8255ee92e3339c1c5b921af0cdd7))
26
- * onExternalObjectSwapRootModule request ([baafa95](https://github.com/roomle-dev/roomle-ui/commit/baafa95a89203427970b10a3ad89f3773161bd92))
27
- * show "swap product" button in hi example ([99c7820](https://github.com/roomle-dev/roomle-ui/commit/99c782006a191462b44a3d52a29aaea9d719a825))
28
- * show "undo" and "redo" buttons in hi example ([52dcda9](https://github.com/roomle-dev/roomle-ui/commit/52dcda958c82b0fc07cfa7c3342dc4f93f11c974))
29
- * start new interaction when parameter is changed ([176d0ac](https://github.com/roomle-dev/roomle-ui/commit/176d0ac9c2b439a08135d20a2c895ff25b499830))
30
- * swap root module in group ([45c3fea](https://github.com/roomle-dev/roomle-ui/commit/45c3fead5224417e22bc01f535d3da07b31c0596))
31
- * **core:** upgrade to version 2.61.0-alpha.1 ([540c602](https://github.com/roomle-dev/roomle-ui/commit/540c6025f6834a34b5167a6ed01e59a8ca8bdcfa))
32
- * **core:** upgrade to version 2.61.0-alpha.2 ([d364aff](https://github.com/roomle-dev/roomle-ui/commit/d364aff10df8e67b47900be7a7ef249546200a10))
33
- * **core:** upgrade to version 2.61.0-alpha.3 ([ecb1cf3](https://github.com/roomle-dev/roomle-ui/commit/ecb1cf3e8204fd74dbf11e9796978f08b61d5048))
34
- * **core:** upgrade to version 2.61.0-alpha.4 ([999ef76](https://github.com/roomle-dev/roomle-ui/commit/999ef767b46fbe80cbeb49aaef6d41e2b60cb3ff))
35
- * **core:** upgrade to version 2.61.0-alpha.6 ([101f9a8](https://github.com/roomle-dev/roomle-ui/commit/101f9a877603ef7b431145327a9d331ac8e11032))
36
- * **core:** upgrade to version 2.61.0-alpha.7 ([c9419cc](https://github.com/roomle-dev/roomle-ui/commit/c9419ccf703f74e87ba2184113c82ba175dae2db))
37
- * **core:** upgrade to version 2.61.0-alpha.8 ([03f3711](https://github.com/roomle-dev/roomle-ui/commit/03f37119298db55275bdd69e0e22534e6f7cfbbb))
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))
38
29
 
39
30
 
40
31
  ### Bug Fixes
41
32
 
42
- * addons trigger should close open gridviews ([3fc7ba2](https://github.com/roomle-dev/roomle-ui/commit/3fc7ba2187a72f879eb468cbd0aca250fba09f48))
43
- * close open gridViews when selection changes in configurator ([f23c8c6](https://github.com/roomle-dev/roomle-ui/commit/f23c8c6e2f9627038d2c937db58b7edd3be4eacc))
44
- * configurator idb check not working ([702eb3b](https://github.com/roomle-dev/roomle-ui/commit/702eb3b0497d767853da672c9d2c5a5b078be2a6))
45
- * discard textures with identical mapping and keep only the first occurrence ([5f34165](https://github.com/roomle-dev/roomle-ui/commit/5f34165da80cb2d93ce095eafe4ab30ef6ff5982))
46
- * incorrect import ([674831f](https://github.com/roomle-dev/roomle-ui/commit/674831fd4961a69f001bf2a81a82cfd3c22da9b0))
47
- * new icon versions ([e1381a9](https://github.com/roomle-dev/roomle-ui/commit/e1381a922e4c6e6bad8bac01026245cd3165b0d1))
48
- * only allow child selection if advanced docking is enabled ([8daeb5b](https://github.com/roomle-dev/roomle-ui/commit/8daeb5bba7ce591fed4c3a5c77341cb7a61f9a84))
49
- * only select child if object is already selected ([e05e69b](https://github.com/roomle-dev/roomle-ui/commit/e05e69b15478fac67b6e6a980227e7c4a49dbffe))
50
- * remove double click handler and make merge and un-merge based on toggle the click event ([ffc7e3a](https://github.com/roomle-dev/roomle-ui/commit/ffc7e3a6aa48f8541ccaf4e0c634f78cb9cc1e17))
51
- * request the planning situation when a group is loaded from the plan ([f535c65](https://github.com/roomle-dev/roomle-ui/commit/f535c650dec30bcf0ab07a6a8f508382e3150072))
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.29.0",
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
46
+ */
47
+ onGetSavedPosGroupData?: () => Promise<PosSaveData | null>;
48
+ /**
49
+ * "onCompletelyLoaded" is invoked when the groups in the plan are completely loaded.
21
50
  */
22
- onLoadPosGroup?: (posGroup: PosGroup) => Promise<boolean>;
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.
@@ -36,6 +65,40 @@ export interface HiCallbacks {
36
65
  * @param groupData The ID of the group which was deleted.
37
66
  */
38
67
  onPosGroupDeleted?: (posGroupIds: string[]) => Promise<void>;
68
+ /**
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
87
+ */
88
+ onFetchPrice?: (orderData: any) => Promise<any>;
89
+ /**
90
+ * "onPlaceOrder" is invoked when the user wants to place an order.
91
+ * You can use this to send the order data to Order Manager or to a 3rd party service.
92
+ * @param orderData
93
+ */
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;
39
102
  }
40
103
  export type AvailablePlugins = {
41
104
  [K in keyof PluginMap]?: InstanceType<PluginMap[K]>;
@@ -0,0 +1,14 @@
1
+ import { Example } from '../example';
2
+ import { RoomDesignerApiType } from './utils/homag-intelligence/overlay';
3
+
4
+ export default class DragInExample implements Example {
5
+ private _abortController;
6
+ private _roomDesignerApi;
7
+ setupHtml(parent: HTMLElement): Promise<void>;
8
+ closeExample(): Promise<void>;
9
+ private start;
10
+ loadHiCatalogAsync(roomDesignerApi: RoomDesignerApiType): Promise<void>;
11
+ onRequestPlan(roomDesignerApi: RoomDesignerApiType): Promise<void>;
12
+ doPriceCalculation(roomDesignerApi: RoomDesignerApiType): Promise<void>;
13
+ runExample(): Promise<void>;
14
+ }
@@ -1,5 +1,6 @@
1
1
  export declare const fetchJSONData: (url: string) => Promise<any>;
2
2
  export declare const fetchDataWithAuthorization: (url: string, type: string, property: string) => Promise<Response>;
3
+ export declare const logInUi: (area: string, message: string, args?: (string | null)[]) => void;
3
4
  export declare const logMessage: (message: string, ...args: (string | null)[]) => void;
4
5
  export declare const logApiCall: (message: string) => void;
5
6
  export declare const logApiCallback: (message: string, ...args: (string | null)[]) => void;
@@ -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,11 +15,14 @@ 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>;
22
- generatePlanSnapshot(): Promise<void>;
22
+ generatePlanSnapshot(): Promise<{
23
+ objectId: string;
24
+ planId: string;
25
+ }>;
23
26
  saveExternalObjectSnapshot(): Promise<import('../../typings/rapi-types').RapiPlanSnapshotGetDataWith3dUrls>;
24
27
  saveCurrentPlanSnapshot(): Promise<import('../../typings/rapi-types').RapiPlanSnapshotGetData>;
25
28
  renderPosDataImage(posDataJson: object): Promise<void>;
@@ -0,0 +1,63 @@
1
+ import { HiCallbacks } from '../../../../embedding-lib/src/embedding-lib';
2
+ import { GlueLogic, LibraryData, RoomDesignerRequests } from './emulator';
3
+ import { ExternalObjectGroup } from 'roomle-core-hsc/src/embind/plannerCoreInterface';
4
+ import { ExternalModuleInformation } from '../../typings/kernel';
5
+ import { CheckResult, PosGroup, PosSaveData } from './model/oc-scripts-domain.model';
6
+ import { ExternalObjectModuleIdMap } from './api';
7
+ import { HiObjectSelection } from './hi-object-selection';
8
+
9
+ export declare class GlueLayerRequestDebugLogging implements GlueLogic {
10
+ private _glueLogic;
11
+ private _hiCallbacks;
12
+ constructor(glueLogic: GlueLogic, hiCallbacks: HiCallbacks);
13
+ get hiCallbacks(): HiCallbacks | null;
14
+ get hiObjectSelection(): HiObjectSelection;
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;
20
+ loadPosData(articleCatalogJson: any, libraryId: string): void;
21
+ mergeGroups(targetGroup: ExternalObjectGroup, idsOfGroupsMerged: string | string[], idOfTargetRootModule: string): void;
22
+ deleteRootModule(remainingGroup: ExternalObjectGroup, rootModuleIdToDelete: string, splitOffGroups: ExternalObjectGroup[]): void;
23
+ splitRootModuleFromGroup(splitGroup: ExternalObjectGroup, newGroupedRootModules: ExternalObjectGroup[]): void;
24
+ duplicateGroup(sourceGroupId: string, duplicatedGroup: ExternalObjectGroup): void;
25
+ modifyAttribute(groupId: string, moduleIdObjects: ExternalModuleInformation[], attributeName: string, value: string): void;
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;
29
+ swapRootModule(groupId: string, rootModuleId: string, articleId: string): void;
30
+ arrangeRootModulesOfGroup(changedGroup: ExternalObjectGroup): void;
31
+ changedGroupPlanningSituation(changedGroup: ExternalObjectGroup): void;
32
+ deleteGroup(groupId: string): Promise<void>;
33
+ changedGroup(posDataJson: PosGroup): void;
34
+ loadedGroup(posDataJson: PosGroup): void;
35
+ groupsCompletelyLoaded(): void;
36
+ removedGroup(groupId: string): void;
37
+ openCloseGroup(groupId: string): void;
38
+ newPosDataFromId(id: string): PosGroup | undefined;
39
+ getGroupDataForOrder(roomlePlannerId?: string): Promise<any>;
40
+ savePlanSnapshot(): Promise<any>;
41
+ }
42
+ export declare class GlueLayerResponseDebugLogging implements RoomDesignerRequests {
43
+ private _roomDesignerRequests;
44
+ private _hiCallbacks;
45
+ constructor(roomDesignerRequests: RoomDesignerRequests, hiCallbacks: HiCallbacks);
46
+ private _logResponse;
47
+ loadMasterData(masterData: any): void;
48
+ loadPosGroups(posDataJson: PosGroup | PosGroup[], findFreeSpaceInPlan: boolean, verifyArrangement: boolean, mergedGroups?: string[], respondWithPositionInPlan?: boolean, moduleIdMap?: ExternalObjectModuleIdMap[]): Promise<void>;
49
+ selectGroup(groupId: string): Promise<void>;
50
+ selectRoot(rootModuleId: string): Promise<void>;
51
+ selectModule(rootModuleId: string, subModuleId: string): Promise<void>;
52
+ openCloseGroup(groupOrRootModuleId: string, subModuleId: string | null, open: boolean, animate: boolean): Promise<void>;
53
+ deleteGroup(groupId: string): void;
54
+ deleteRootModule(rootModuleId: string): void;
55
+ getPosDataOfAllGroups(): Promise<PosGroup[]>;
56
+ getRoomInformation(): Promise<any>;
57
+ generatePlanSnapshot(): Promise<{
58
+ objectId: string;
59
+ planId: string;
60
+ }>;
61
+ saveExternalObjectSnapshot(): Promise<any>;
62
+ saveCurrentPlanSnapshot(): Promise<any>;
63
+ }