@crystaldesign/web-planner-logic 26.13.0-beta.9 → 26.14.0-beta.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 (244) hide show
  1. package/build/cjs/{DivaBoxPlanner-006ec070.js → DivaBoxPlanner-7f6bd584.js} +5 -4
  2. package/build/cjs/{DivaStandardPlanner-a428fcb7.js → DivaStandardPlanner-77c603dc.js} +1921 -203
  3. package/build/cjs/{DoorPlanner-40b303c4.js → DoorPlanner-5de2bbf0.js} +4 -3
  4. package/build/cjs/{Host3DSignalR-55f69ca3.js → Host3DSignalR-26b95303.js} +64 -20
  5. package/build/cjs/{LiviqueWWSHandler-4c6f6071.js → LiviqueWWSHandler-1e419862.js} +4 -3
  6. package/build/cjs/{PfisterWWSHandler-55bdb575.js → PfisterWWSHandler-b2f7a5ec.js} +3 -2
  7. package/build/cjs/{PlannerHandler2D-314ce41d.js → PlannerHandler2D-ff734c3e.js} +10 -10
  8. package/build/cjs/{SeriousBasketHandler-1b365a2b.js → SeriousBasketHandler-e54bd31b.js} +4 -3
  9. package/build/cjs/{ShelfPlanner-8e91f830.js → ShelfPlanner-08e15d16.js} +600 -203
  10. package/build/cjs/{StandardWWSHandler-4a2442aa.js → StandardWWSHandler-0e7b20dc.js} +4 -3
  11. package/build/cjs/{index-e08a4789.js → index-5dd5fb4b.js} +9343 -3810
  12. package/build/cjs/index.js +11 -9
  13. package/build/esm/{DivaBoxPlanner-edb41fff.js → DivaBoxPlanner-6ac448b4.js} +5 -4
  14. package/build/esm/{DivaStandardPlanner-20fe9ebf.js → DivaStandardPlanner-abd9609d.js} +1911 -194
  15. package/build/esm/{DoorPlanner-0bf17f1f.js → DoorPlanner-fde32e61.js} +4 -3
  16. package/build/esm/{Host3DSignalR-263f6d3f.js → Host3DSignalR-0f97c7f3.js} +64 -20
  17. package/build/esm/{LiviqueWWSHandler-e80b574f.js → LiviqueWWSHandler-9ee5b7cb.js} +4 -3
  18. package/build/esm/{PfisterWWSHandler-508bb12f.js → PfisterWWSHandler-b9699549.js} +3 -2
  19. package/build/esm/{PlannerHandler2D-e4d80c41.js → PlannerHandler2D-8d963e77.js} +2 -2
  20. package/build/esm/{SeriousBasketHandler-e9ebb195.js → SeriousBasketHandler-40e7e46c.js} +4 -3
  21. package/build/esm/{ShelfPlanner-fbb7d7dd.js → ShelfPlanner-69cbb2c1.js} +600 -203
  22. package/build/esm/{StandardWWSHandler-88f4eb7d.js → StandardWWSHandler-dbf02663.js} +4 -3
  23. package/build/esm/{index-86463de2.js → index-88148ccc.js} +9297 -3798
  24. package/build/esm/index.js +4 -3
  25. package/build/types/web-planner-logic/src/index.d.ts +7 -8
  26. package/build/types/web-planner-logic/src/index.d.ts.map +1 -1
  27. package/build/types/web-planner-logic/src/interface/AdditionalModelInfos.d.ts +4 -2
  28. package/build/types/web-planner-logic/src/interface/AdditionalModelInfos.d.ts.map +1 -1
  29. package/build/types/web-planner-logic/src/interface/Articles/AccessoireItemType.d.ts +6 -2
  30. package/build/types/web-planner-logic/src/interface/Articles/AccessoireItemType.d.ts.map +1 -1
  31. package/build/types/web-planner-logic/src/interface/Articles/CatalogArticleDataType.d.ts +14 -0
  32. package/build/types/web-planner-logic/src/interface/Articles/CatalogArticleDataType.d.ts.map +1 -1
  33. package/build/types/web-planner-logic/src/interface/Articles/PartListArticleToLoadType.d.ts +1 -0
  34. package/build/types/web-planner-logic/src/interface/Articles/PartListArticleToLoadType.d.ts.map +1 -1
  35. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts +7 -0
  36. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts.map +1 -1
  37. package/build/types/web-planner-logic/src/interface/FunctionTypes/index.d.ts +16 -1
  38. package/build/types/web-planner-logic/src/interface/FunctionTypes/index.d.ts.map +1 -1
  39. package/build/types/web-planner-logic/src/interface/IDM/ArticleApi.d.ts +2 -3
  40. package/build/types/web-planner-logic/src/interface/IDM/ArticleApi.d.ts.map +1 -1
  41. package/build/types/web-planner-logic/src/interface/OptionTypes/CatalogOptionDataTypes.d.ts +10 -0
  42. package/build/types/web-planner-logic/src/interface/OptionTypes/CatalogOptionDataTypes.d.ts.map +1 -1
  43. package/build/types/web-planner-logic/src/interface/Planner/IDM3DTranslation.d.ts +20 -0
  44. package/build/types/web-planner-logic/src/interface/Planner/IDM3DTranslation.d.ts.map +1 -0
  45. package/build/types/web-planner-logic/src/interface/Planner/ISaveSetPlanner.d.ts +10 -0
  46. package/build/types/web-planner-logic/src/interface/Planner/ISaveSetPlanner.d.ts.map +1 -1
  47. package/build/types/web-planner-logic/src/interface/Planner/RoomSceneTypes.d.ts +76 -0
  48. package/build/types/web-planner-logic/src/interface/Planner/RoomSceneTypes.d.ts.map +1 -0
  49. package/build/types/web-planner-logic/src/interface/Rendering/AlternativeRendering.d.ts +4 -0
  50. package/build/types/web-planner-logic/src/interface/Rendering/AlternativeRendering.d.ts.map +1 -1
  51. package/build/types/web-planner-logic/src/interface/ShelfPlanner/ShelfAccessoiresView.d.ts +5 -0
  52. package/build/types/web-planner-logic/src/interface/ShelfPlanner/ShelfAccessoiresView.d.ts.map +1 -1
  53. package/build/types/web-planner-logic/src/interface/ShelfPlanner/plannerData.d.ts +3 -0
  54. package/build/types/web-planner-logic/src/interface/ShelfPlanner/plannerData.d.ts.map +1 -1
  55. package/build/types/web-planner-logic/src/interface/webPlannerParams/WebPlannerParamsType.d.ts +1 -1
  56. package/build/types/web-planner-logic/src/interface/webPlannerParams/WebPlannerParamsType.d.ts.map +1 -1
  57. package/build/types/web-planner-logic/src/logic/Article/ArticleOptionState.d.ts.map +1 -1
  58. package/build/types/web-planner-logic/src/logic/Article/DivaArticle.d.ts +30 -0
  59. package/build/types/web-planner-logic/src/logic/Article/DivaArticle.d.ts.map +1 -1
  60. package/build/types/web-planner-logic/src/logic/Article/DivaArticleHandler.d.ts +5 -0
  61. package/build/types/web-planner-logic/src/logic/Article/DivaArticleHandler.d.ts.map +1 -1
  62. package/build/types/web-planner-logic/src/logic/Article/Engine/IDMArticleEngine.d.ts +8 -0
  63. package/build/types/web-planner-logic/src/logic/Article/Engine/IDMArticleEngine.d.ts.map +1 -1
  64. package/build/types/web-planner-logic/src/logic/Article/mandatoryAccessories.d.ts +3 -1
  65. package/build/types/web-planner-logic/src/logic/Article/mandatoryAccessories.d.ts.map +1 -1
  66. package/build/types/web-planner-logic/src/logic/Article/measureUnit.d.ts +2 -0
  67. package/build/types/web-planner-logic/src/logic/Article/measureUnit.d.ts.map +1 -1
  68. package/build/types/web-planner-logic/src/logic/Basket/DivaBasketHandler.d.ts.map +1 -1
  69. package/build/types/web-planner-logic/src/logic/ConfigTree/DivaConfigTree.d.ts.map +1 -1
  70. package/build/types/web-planner-logic/src/logic/ConfigTree/DivaConfigTreeHandler.d.ts +7 -0
  71. package/build/types/web-planner-logic/src/logic/ConfigTree/DivaConfigTreeHandler.d.ts.map +1 -1
  72. package/build/types/web-planner-logic/src/logic/ConfigTree/Shelfplanner/ShelfPlanner.d.ts +77 -7
  73. package/build/types/web-planner-logic/src/logic/ConfigTree/Shelfplanner/ShelfPlanner.d.ts.map +1 -1
  74. package/build/types/web-planner-logic/src/logic/ConfigTree/Shelfplanner/ShelfPlannerGrid.d.ts +14 -2
  75. package/build/types/web-planner-logic/src/logic/ConfigTree/Shelfplanner/ShelfPlannerGrid.d.ts.map +1 -1
  76. package/build/types/web-planner-logic/src/logic/ConfigTree/viewerStateToggles.d.ts +19 -0
  77. package/build/types/web-planner-logic/src/logic/ConfigTree/viewerStateToggles.d.ts.map +1 -0
  78. package/build/types/web-planner-logic/src/logic/ConfigTree/viewerStateToggles.test.d.ts +2 -0
  79. package/build/types/web-planner-logic/src/logic/ConfigTree/viewerStateToggles.test.d.ts.map +1 -0
  80. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts +112 -24
  81. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts.map +1 -1
  82. package/build/types/web-planner-logic/src/logic/Planner/DivaPlannerHandler.d.ts +74 -9
  83. package/build/types/web-planner-logic/src/logic/Planner/DivaPlannerHandler.d.ts.map +1 -1
  84. package/build/types/web-planner-logic/src/logic/Planner/DivaStandardPlanner.d.ts +175 -4
  85. package/build/types/web-planner-logic/src/logic/Planner/DivaStandardPlanner.d.ts.map +1 -1
  86. package/build/types/web-planner-logic/src/logic/Planner/IDM3D/idm3dTranslation.d.ts +32 -0
  87. package/build/types/web-planner-logic/src/logic/Planner/IDM3D/idm3dTranslation.d.ts.map +1 -0
  88. package/build/types/web-planner-logic/src/logic/Planner/IDM3D/idm3dTranslation.test.d.ts +2 -0
  89. package/build/types/web-planner-logic/src/logic/Planner/IDM3D/idm3dTranslation.test.d.ts.map +1 -0
  90. package/build/types/web-planner-logic/src/logic/Planner/Placement/carrierGuests.d.ts +75 -0
  91. package/build/types/web-planner-logic/src/logic/Planner/Placement/carrierGuests.d.ts.map +1 -0
  92. package/build/types/web-planner-logic/src/logic/Planner/Placement/guestPlacement.d.ts +47 -0
  93. package/build/types/web-planner-logic/src/logic/Planner/Placement/guestPlacement.d.ts.map +1 -0
  94. package/build/types/web-planner-logic/src/logic/Planner/Placement/guestPlacement.test.d.ts +2 -0
  95. package/build/types/web-planner-logic/src/logic/Planner/Placement/guestPlacement.test.d.ts.map +1 -0
  96. package/build/types/web-planner-logic/src/logic/Planner/Placement/placementDefaults.d.ts +9 -0
  97. package/build/types/web-planner-logic/src/logic/Planner/Placement/placementDefaults.d.ts.map +1 -0
  98. package/build/types/web-planner-logic/src/logic/Planner/Placement/placementRules.d.ts +78 -0
  99. package/build/types/web-planner-logic/src/logic/Planner/Placement/placementRules.d.ts.map +1 -0
  100. package/build/types/web-planner-logic/src/logic/Planner/Placement/placementRules.test.d.ts +2 -0
  101. package/build/types/web-planner-logic/src/logic/Planner/Placement/placementRules.test.d.ts.map +1 -0
  102. package/build/types/web-planner-logic/src/logic/Planner/Placement/placementSlots.d.ts +81 -0
  103. package/build/types/web-planner-logic/src/logic/Planner/Placement/placementSlots.d.ts.map +1 -0
  104. package/build/types/web-planner-logic/src/logic/Planner/Placement/placementTypes.d.ts +13 -0
  105. package/build/types/web-planner-logic/src/logic/Planner/Placement/placementTypes.d.ts.map +1 -0
  106. package/build/types/web-planner-logic/src/logic/Planner/PlannerUtils/DockingPointHandler.d.ts +1 -1
  107. package/build/types/web-planner-logic/src/logic/Planner/PlannerUtils/DockingPointHandler.d.ts.map +1 -1
  108. package/build/types/web-planner-logic/src/logic/Planner/PlannerUtils/SVGUtils.d.ts +1 -1
  109. package/build/types/web-planner-logic/src/logic/Planner/Rendering/Host3DSignalR.d.ts +1 -0
  110. package/build/types/web-planner-logic/src/logic/Planner/Rendering/Host3DSignalR.d.ts.map +1 -1
  111. package/build/types/web-planner-logic/src/logic/Planner/Rendering/PlannerHandler3D.d.ts +13 -1
  112. package/build/types/web-planner-logic/src/logic/Planner/Rendering/PlannerHandler3D.d.ts.map +1 -1
  113. package/build/types/web-planner-logic/src/logic/Planner/Room/elementShapes.d.ts +56 -0
  114. package/build/types/web-planner-logic/src/logic/Planner/Room/elementShapes.d.ts.map +1 -0
  115. package/build/types/web-planner-logic/src/logic/Planner/Room/elementShapes.test.d.ts +2 -0
  116. package/build/types/web-planner-logic/src/logic/Planner/Room/elementShapes.test.d.ts.map +1 -0
  117. package/build/types/web-planner-logic/src/logic/Planner/Room/roomCollisions.d.ts +90 -0
  118. package/build/types/web-planner-logic/src/logic/Planner/Room/roomCollisions.d.ts.map +1 -0
  119. package/build/types/web-planner-logic/src/logic/Planner/Room/roomCollisions.test.d.ts +2 -0
  120. package/build/types/web-planner-logic/src/logic/Planner/Room/roomCollisions.test.d.ts.map +1 -0
  121. package/build/types/web-planner-logic/src/logic/Planner/Room/roomGroups.d.ts +32 -0
  122. package/build/types/web-planner-logic/src/logic/Planner/Room/roomGroups.d.ts.map +1 -0
  123. package/build/types/web-planner-logic/src/logic/Planner/Room/roomGroups.test.d.ts +2 -0
  124. package/build/types/web-planner-logic/src/logic/Planner/Room/roomGroups.test.d.ts.map +1 -0
  125. package/build/types/web-planner-logic/src/logic/Planner/Room/roomProperties.test.d.ts +2 -0
  126. package/build/types/web-planner-logic/src/logic/Planner/Room/roomProperties.test.d.ts.map +1 -0
  127. package/build/types/web-planner-logic/src/logic/Planner/Room/roomScenes.d.ts +21 -0
  128. package/build/types/web-planner-logic/src/logic/Planner/Room/roomScenes.d.ts.map +1 -0
  129. package/build/types/web-planner-logic/src/logic/Planner/Room/roomScenes.test.d.ts +2 -0
  130. package/build/types/web-planner-logic/src/logic/Planner/Room/roomScenes.test.d.ts.map +1 -0
  131. package/build/types/web-planner-logic/src/logic/Planner/Room/roomValidation.d.ts +13 -0
  132. package/build/types/web-planner-logic/src/logic/Planner/Room/roomValidation.d.ts.map +1 -0
  133. package/build/types/web-planner-logic/src/logic/Planner/Room/roomValidation.test.d.ts +2 -0
  134. package/build/types/web-planner-logic/src/logic/Planner/Room/roomValidation.test.d.ts.map +1 -0
  135. package/build/types/web-planner-logic/src/logic/Planner/Room/rtvFeatures.d.ts +17 -0
  136. package/build/types/web-planner-logic/src/logic/Planner/Room/rtvFeatures.d.ts.map +1 -0
  137. package/build/types/web-planner-logic/src/logic/Planner/Room/rtvFeatures.test.d.ts +2 -0
  138. package/build/types/web-planner-logic/src/logic/Planner/Room/rtvFeatures.test.d.ts.map +1 -0
  139. package/build/types/web-planner-logic/src/logic/Planner/Room/wallBinding.d.ts +72 -0
  140. package/build/types/web-planner-logic/src/logic/Planner/Room/wallBinding.d.ts.map +1 -0
  141. package/build/types/web-planner-logic/src/logic/Planner/Room/wallBinding.test.d.ts +2 -0
  142. package/build/types/web-planner-logic/src/logic/Planner/Room/wallBinding.test.d.ts.map +1 -0
  143. package/build/types/web-planner-logic/src/logic/Planner/Room/wallMode.d.ts +7 -0
  144. package/build/types/web-planner-logic/src/logic/Planner/Room/wallMode.d.ts.map +1 -0
  145. package/build/types/web-planner-logic/src/logic/Planner/plannerSwitch.d.ts +32 -0
  146. package/build/types/web-planner-logic/src/logic/Planner/plannerSwitch.d.ts.map +1 -0
  147. package/build/types/web-planner-logic/src/logic/Planner/plannerSwitch.test.d.ts +2 -0
  148. package/build/types/web-planner-logic/src/logic/Planner/plannerSwitch.test.d.ts.map +1 -0
  149. package/build/types/web-planner-logic/src/logic/Set/DivaSet.d.ts +12 -6
  150. package/build/types/web-planner-logic/src/logic/Set/DivaSet.d.ts.map +1 -1
  151. package/build/types/web-planner-logic/src/logic/Set/DivaSetHandler.d.ts +30 -6
  152. package/build/types/web-planner-logic/src/logic/Set/DivaSetHandler.d.ts.map +1 -1
  153. package/build/types/web-planner-logic/src/model/Articles/Article/CatalogArticleData.d.ts +5 -0
  154. package/build/types/web-planner-logic/src/model/Articles/Article/CatalogArticleData.d.ts.map +1 -1
  155. package/build/types/web-planner-logic/src/model/Articles/Article/DivaCatalogArticle.d.ts.map +1 -1
  156. package/build/types/web-planner-logic/src/model/Articles/Article/IDMCatalogArticle.d.ts.map +1 -1
  157. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts +28 -0
  158. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts.map +1 -1
  159. package/build/types/web-planner-logic/src/model/Catalog/DivaCatalogData.d.ts +3 -0
  160. package/build/types/web-planner-logic/src/model/Catalog/DivaCatalogData.d.ts.map +1 -1
  161. package/build/types/web-planner-logic/src/model/Catalog/IDMCatalogData.d.ts +4 -2
  162. package/build/types/web-planner-logic/src/model/Catalog/IDMCatalogData.d.ts.map +1 -1
  163. package/build/types/web-planner-logic/src/model/Options/ArticleOptionData.d.ts +10 -0
  164. package/build/types/web-planner-logic/src/model/Options/ArticleOptionData.d.ts.map +1 -1
  165. package/build/types/web-planner-logic/src/model/Options/CatalogOptionData.d.ts +6 -4
  166. package/build/types/web-planner-logic/src/model/Options/CatalogOptionData.d.ts.map +1 -1
  167. package/build/types/web-planner-logic/src/model/Options/CatalogOptionValueData.d.ts.map +1 -1
  168. package/build/types/web-planner-logic/src/model/Planner/DockingPoint.d.ts +1 -1
  169. package/build/types/web-planner-logic/src/model/Planner/DockingPoint.d.ts.map +1 -1
  170. package/build/types/web-planner-logic/src/model/Planner/PlannerElementData.d.ts +41 -0
  171. package/build/types/web-planner-logic/src/model/Planner/PlannerElementData.d.ts.map +1 -1
  172. package/build/types/web-planner-logic/src/model/Properties/propertySchemaRegistry.d.ts +23 -11
  173. package/build/types/web-planner-logic/src/model/Properties/propertySchemaRegistry.d.ts.map +1 -1
  174. package/build/types/web-planner-logic/src/model/Properties/propertyValueCodec.d.ts +1 -34
  175. package/build/types/web-planner-logic/src/model/Properties/propertyValueCodec.d.ts.map +1 -1
  176. package/build/types/web-planner-logic/src/model/Properties/propertyValues.d.ts +42 -0
  177. package/build/types/web-planner-logic/src/model/Properties/propertyValues.d.ts.map +1 -0
  178. package/build/types/web-planner-logic/src/test/alternateRenderingToggle.test.d.ts +2 -0
  179. package/build/types/web-planner-logic/src/test/alternateRenderingToggle.test.d.ts.map +1 -0
  180. package/build/types/web-planner-logic/src/test/bundleRulesOwnPartlist.test.d.ts +2 -0
  181. package/build/types/web-planner-logic/src/test/bundleRulesOwnPartlist.test.d.ts.map +1 -0
  182. package/build/types/web-planner-logic/src/test/capturedSetImages.test.d.ts +1 -0
  183. package/build/types/web-planner-logic/src/test/capturedSetImages.test.d.ts.map +1 -1
  184. package/build/types/web-planner-logic/src/test/carrierGuests.test.d.ts +2 -0
  185. package/build/types/web-planner-logic/src/test/carrierGuests.test.d.ts.map +1 -0
  186. package/build/types/web-planner-logic/src/test/classificationRepairFreeText.test.d.ts +2 -0
  187. package/build/types/web-planner-logic/src/test/classificationRepairFreeText.test.d.ts.map +1 -0
  188. package/build/types/web-planner-logic/src/test/copyRestoreConnectors.test.d.ts +2 -0
  189. package/build/types/web-planner-logic/src/test/copyRestoreConnectors.test.d.ts.map +1 -0
  190. package/build/types/web-planner-logic/src/test/decisionFeatureRefOp.test.d.ts +2 -0
  191. package/build/types/web-planner-logic/src/test/decisionFeatureRefOp.test.d.ts.map +1 -0
  192. package/build/types/web-planner-logic/src/test/dragZones.test.d.ts +2 -0
  193. package/build/types/web-planner-logic/src/test/dragZones.test.d.ts.map +1 -0
  194. package/build/types/web-planner-logic/src/test/familySwapInPlace.test.d.ts +2 -0
  195. package/build/types/web-planner-logic/src/test/familySwapInPlace.test.d.ts.map +1 -0
  196. package/build/types/web-planner-logic/src/test/getConfigStepKeyOfAccessoire.test.d.ts +2 -0
  197. package/build/types/web-planner-logic/src/test/getConfigStepKeyOfAccessoire.test.d.ts.map +1 -0
  198. package/build/types/web-planner-logic/src/test/headlessRoomScenes.test.d.ts +2 -0
  199. package/build/types/web-planner-logic/src/test/headlessRoomScenes.test.d.ts.map +1 -0
  200. package/build/types/web-planner-logic/src/test/host3DSignalRReconnect.test.d.ts +2 -0
  201. package/build/types/web-planner-logic/src/test/host3DSignalRReconnect.test.d.ts.map +1 -0
  202. package/build/types/web-planner-logic/src/test/liveArUpdate.test.d.ts +2 -0
  203. package/build/types/web-planner-logic/src/test/liveArUpdate.test.d.ts.map +1 -0
  204. package/build/types/web-planner-logic/src/test/oltRectBody.test.d.ts +2 -0
  205. package/build/types/web-planner-logic/src/test/oltRectBody.test.d.ts.map +1 -0
  206. package/build/types/web-planner-logic/src/test/orderNumberTemplates.test.d.ts +2 -0
  207. package/build/types/web-planner-logic/src/test/orderNumberTemplates.test.d.ts.map +1 -0
  208. package/build/types/web-planner-logic/src/test/partlistChangeReevaluatesOptionTree.test.d.ts +2 -0
  209. package/build/types/web-planner-logic/src/test/partlistChangeReevaluatesOptionTree.test.d.ts.map +1 -0
  210. package/build/types/web-planner-logic/src/test/plannerElementHeightChange.test.d.ts +2 -0
  211. package/build/types/web-planner-logic/src/test/plannerElementHeightChange.test.d.ts.map +1 -0
  212. package/build/types/web-planner-logic/src/test/plannerHandler3DRoomListQueue.test.d.ts +2 -0
  213. package/build/types/web-planner-logic/src/test/plannerHandler3DRoomListQueue.test.d.ts.map +1 -0
  214. package/build/types/web-planner-logic/src/test/plannerRoomScenesSwitch.test.d.ts +2 -0
  215. package/build/types/web-planner-logic/src/test/plannerRoomScenesSwitch.test.d.ts.map +1 -0
  216. package/build/types/web-planner-logic/src/test/planning2DCapture.test.d.ts +2 -0
  217. package/build/types/web-planner-logic/src/test/planning2DCapture.test.d.ts.map +1 -0
  218. package/build/types/web-planner-logic/src/test/planningRoundTrip.test.d.ts +2 -0
  219. package/build/types/web-planner-logic/src/test/planningRoundTrip.test.d.ts.map +1 -0
  220. package/build/types/web-planner-logic/src/test/propertyParsers.test.d.ts +2 -0
  221. package/build/types/web-planner-logic/src/test/propertyParsers.test.d.ts.map +1 -0
  222. package/build/types/web-planner-logic/src/test/propertyValues.test.d.ts +2 -0
  223. package/build/types/web-planner-logic/src/test/propertyValues.test.d.ts.map +1 -0
  224. package/build/types/web-planner-logic/src/test/roomDragContact.test.d.ts +2 -0
  225. package/build/types/web-planner-logic/src/test/roomDragContact.test.d.ts.map +1 -0
  226. package/build/types/web-planner-logic/src/test/roomPlacement.test.d.ts +2 -0
  227. package/build/types/web-planner-logic/src/test/roomPlacement.test.d.ts.map +1 -0
  228. package/build/types/web-planner-logic/src/test/roomScenePlanning.test.d.ts +2 -0
  229. package/build/types/web-planner-logic/src/test/roomScenePlanning.test.d.ts.map +1 -0
  230. package/build/types/web-planner-logic/src/test/rotationSnap.test.d.ts +2 -0
  231. package/build/types/web-planner-logic/src/test/rotationSnap.test.d.ts.map +1 -0
  232. package/build/types/web-planner-logic/src/test/shelfEditNoting.test.d.ts +3 -0
  233. package/build/types/web-planner-logic/src/test/shelfEditNoting.test.d.ts.map +1 -0
  234. package/build/types/web-planner-logic/src/test/shelfGridCarryOver.test.d.ts +2 -0
  235. package/build/types/web-planner-logic/src/test/shelfGridCarryOver.test.d.ts.map +1 -0
  236. package/build/types/web-planner-logic/src/test/shelfMoveLocks.test.d.ts +2 -0
  237. package/build/types/web-planner-logic/src/test/shelfMoveLocks.test.d.ts.map +1 -0
  238. package/build/types/web-planner-logic/src/test/shelfOfferedCells.test.d.ts +2 -0
  239. package/build/types/web-planner-logic/src/test/shelfOfferedCells.test.d.ts.map +1 -0
  240. package/build/types/web-planner-logic/src/test/shelfStashInheritedOptions.test.d.ts +2 -0
  241. package/build/types/web-planner-logic/src/test/shelfStashInheritedOptions.test.d.ts.map +1 -0
  242. package/build/types/web-planner-logic/src/test/sideCopySubstitute.test.d.ts +3 -0
  243. package/build/types/web-planner-logic/src/test/sideCopySubstitute.test.d.ts.map +1 -0
  244. package/package.json +3 -3
@@ -10,7 +10,15 @@ import { ReturnParamUpdatePlanner } from '../../interface/ReturnTypes';
10
10
  import { DockingType, PlannerBoundingBox } from '../../interface/Planner/DockingPointDataType';
11
11
  import DivaCatalogData from '../../model/Catalog/CatalogData';
12
12
  import { GeneralPlanningState, PlannerInteractionInformation } from '../../model/Planner/PlannerInteractionData';
13
+ import { ElementFootprint, RoomDefinition } from '../../interface/Planner/RoomSceneTypes';
14
+ import { FloorPose } from './Room/elementShapes';
15
+ import { SlotMember } from './Placement/placementSlots';
16
+ import { GuestPlacement } from './Placement/guestPlacement';
17
+ import { CollisionSet, DragPreview } from './Room/roomCollisions';
13
18
  export default class DivaStandardPlanner {
19
+ /** The other sets as collisions see them, without the guests that go with the elements `carrierIds` of this set. */
20
+ private readonly getOtherCollisionSets;
21
+ private readonly findCarrier?;
14
22
  private static readonly plannerType;
15
23
  private plannerID;
16
24
  private set;
@@ -22,8 +30,20 @@ export default class DivaStandardPlanner {
22
30
  private IDM3DCatCodex;
23
31
  private IDM3DEnvironment;
24
32
  private nextElementId;
33
+ private room;
34
+ private roomDrag;
35
+ /** Elements whose group a room rule placed (insert, resize, drag, scene switch, …): a measurement re-binds them. */
36
+ private roomPlaced;
37
+ /** The elements the current drag moves (ids): the grabbed one, those the viewer moves with it, a room drag's group, their guests. */
38
+ private dragUnit;
39
+ /** Of the current drag's elements, the guests it carries along (ids, see `getFollowers`). */
40
+ private dragFollowers;
41
+ /** The free slot places the grabbed element may snap into (see `findSlotSnap`), found when the drag starts where it stood. */
42
+ private dragSlots;
25
43
  private collisionHandler;
26
- constructor(set: DivaSet, updatePlannerMsgContainer: any, plannerId: number, globalBoundingBox: BoundingBox, doDisablePlanner2D: boolean, plannerHasStaticBackground: boolean);
44
+ constructor(set: DivaSet, updatePlannerMsgContainer: any, plannerId: number, globalBoundingBox: BoundingBox, doDisablePlanner2D: boolean, plannerHasStaticBackground: boolean,
45
+ /** The other sets as collisions see them, without the guests that go with the elements `carrierIds` of this set. */
46
+ getOtherCollisionSets?: (carrierIds?: number[]) => CollisionSet[], findCarrier?: ((placement: GuestPlacement) => PlannerElementData | undefined) | undefined);
27
47
  /**
28
48
  * This function updates all position numbers of all planner elements.
29
49
  * The sorting of the position number depends on element chains. When Elements are docked via AVR and AVL - this is one chain.
@@ -51,13 +71,158 @@ export default class DivaStandardPlanner {
51
71
  * {@link applyDockTransform} (apply → read → restore, no docking relations touched). Returns the
52
72
  * delta from the element's current transform (cm / deg), or null if nothing is in snapping range.
53
73
  * `excludeElementIds` skips the element's own move-group so it doesn't "snap" to siblings that
54
- * are translating with it.
74
+ * are translating with it. In a room drag it is the room pose instead, with what blocks it at contact.
55
75
  */
56
- getDockSnapPreview(elementId: number, autoDockingDistance: number, excludeElementIds?: number[]): {
76
+ getDockSnapPreview(elementId: number, autoDockingDistance: number, excludeElementIds?: number[]): DragPreview | null;
77
+ /**
78
+ * The move (cm / deg, about the element's centre) into the nearest free slot place found when its drag started (see
79
+ * `findDragSlotPlaces`), within SLOT_SNAP_DISTANCE: lined up and turned as the place says, at its own distance to the
80
+ * carrier as far as the slot's band allows. Null when no place is that near, the element is not the one dragged or it
81
+ * is back where the drag started (a cancel ends there exactly).
82
+ */
83
+ private findSlotSnap;
84
+ private getSlotSnapPose;
85
+ /**
86
+ * The free places of the slots that take the grabbed element, at carriers outside the dragged unit in this and the
87
+ * other sets, for a unit of one main element; free where the element stands clear of every body and zone there (its
88
+ * carrier's zone and a slot's reach under its carrier allowed). Found once when the drag starts.
89
+ */
90
+ private findDragSlotPlaces;
91
+ private cutBandToRoom;
92
+ private placeIsFree;
93
+ private findDockSnap;
94
+ /**
95
+ * The rigid move from where the planner holds a dragged element's group to where a viewer shows it with `preview` (see
96
+ * {@link getDockSnapPreview}): none in a room drag, which holds the group where it shows; else the dock snap, turning
97
+ * about the element's centre.
98
+ */
99
+ getPreviewMove(elementId: number, preview: {
57
100
  dx: number;
58
101
  dz: number;
59
102
  dRotDeg: number;
60
- } | null;
103
+ } | null): {
104
+ from: FloorPose;
105
+ to: FloorPose;
106
+ } | undefined;
107
+ private snapMove;
108
+ /**
109
+ * Activates (or clears) the room the elements are bound to. With `bindGroups` every docking group of main elements
110
+ * gets the room rule once: a forced group goes to its nearest wall pose, any other is pushed inside the room. A group
111
+ * the rules leave on other furniture or in a door's clearance (swing or doorway), where it did not stand so before, then
112
+ * goes to the nearest free pose (see {@link moveClearOfObstacles}). Returns false when a forced group fits on no wall
113
+ * (it stays where it is).
114
+ */
115
+ setRoom(room: RoomDefinition | undefined, bindGroups: boolean): boolean;
116
+ private placeGroupsInRoom;
117
+ private getBlockedGroupKeys;
118
+ private clearNewlyBlockedGroups;
119
+ private placeAddedInRoom;
120
+ private updateRoomNoFitMsg;
121
+ /**
122
+ * Whether every docking group of the set has its place in the active room: a forced group stands on its wall pose, any other
123
+ * (but guests at their carrier) room within the footprint as it stands turned, with its followers (no room: true). Until the
124
+ * viewer measured its main elements a group that has a wall pose counts as standing on it: an opened one was saved
125
+ * with their measured extents, which reach at least as far as the outline, a placed one goes there once measured (see
126
+ * setElementFootprints).
127
+ */
128
+ groupsFitInRoom(): boolean;
129
+ private fitsInside;
130
+ private placeGroupInRoom;
131
+ private getRoomFrame;
132
+ private bindGroupToWalls;
133
+ /**
134
+ * The group as one block, and its wall pose (null: it fits on no wall), in the frame it is bound in: `preferred`'s,
135
+ * else the rotation of a main element in which it already stands on its wall pose (a group released by a turned
136
+ * element keeps that frame), else the oldest main element's (see getRoomFrame).
137
+ */
138
+ private getWallBinding;
139
+ /**
140
+ * Takes the 3D extents the viewer measured for this set's main elements, so a part reaching beyond the 2D outline
141
+ * stays out of the walls. A forced group a room rule placed goes to its wall pose with them (it was placed before its
142
+ * model was measured); a group as the planning was opened moves only with the next user action. Returns whether an
143
+ * element moved.
144
+ */
145
+ setElementFootprints(footprints: ElementFootprint[]): boolean;
146
+ /** Whether the element's docking group is bound to the walls of the active room. */
147
+ isElementWallBound(elementId: number): boolean;
148
+ /**
149
+ * A group's wall mode: forced when a main element is forced or a corner element, else snap when one snaps, else free. A
150
+ * guest's own wall rule rests while it stands at its carrier.
151
+ */
152
+ private getGroupWallMode;
153
+ private isWallBound;
154
+ private getRoomBlock;
155
+ /** A group collides unless all its main elements are NO_COLLISION (e.g. rugs). */
156
+ private collides;
157
+ private hasNoCollision;
158
+ /** The article's placement types, primary first (PLACEMENT_TYPE, else palette group); empty without one. */
159
+ private getPlacementTypes;
160
+ private getSlotMembers;
161
+ private toCollisionShape;
162
+ private getCollidingShapes;
163
+ private getObstacles;
164
+ private getDockingGroupOf;
165
+ /** The element whose article has the basket id; undefined when the set has none. */
166
+ getElementByBasketId(basketId: string): PlannerElementData | undefined;
167
+ private getCarrierOf;
168
+ private followsCarrier;
169
+ /**
170
+ * The guests of this set that go with `members`: those standing at one of them, and the guests of those (at most
171
+ * MAX_GUEST_DEPTH carriers deep), each with its docking group; never one of `members`.
172
+ */
173
+ private getFollowers;
174
+ /** The ids of the element's docking group, the element included. */
175
+ getDockingGroupIds(elementId: number): number[];
176
+ /** The element's first placement type; undefined for an accessory or an article without one. */
177
+ getGuestType(elementId: number): string | undefined;
178
+ /** The main elements of every docking group as slot carriers (see `getSlotMembers`), but groups holding one of `excludeIds`. */
179
+ getSlotCarriers(excludeIds: number[]): SlotMember[][];
180
+ /** Moves the element's docking group rigidly so the element stands at `pose` (a guest following its carrier). */
181
+ moveGuest(elementId: number, pose: FloorPose): void;
182
+ /** After guests moved: position numbers, the collision warning and the bounding box follow. */
183
+ refreshAfterGuestMoves(): void;
184
+ /**
185
+ * Whether the element's docking group, moved so the element stands at `pose`, runs a body into another body of this set
186
+ * or of `otherSets` (a zone does not count, a slot guest at its carrier as everywhere); the group stays where it is.
187
+ */
188
+ isBodyBlockedAt(elementId: number, pose: FloorPose, otherSets: CollisionSet[]): boolean;
189
+ private startRoomDrag;
190
+ /**
191
+ * The element's group as one block where it stands, with its followers (see `getFollowers`): the members' and the
192
+ * followers' shapes and every obstacle but them; not started. A forced group's block is its own, any other group's
193
+ * takes in the followers, so the room rule keeps them inside too.
194
+ */
195
+ private createRoomDrag;
196
+ /**
197
+ * A group placed beside the planning, or by the room rules, that stands on another group (of this set or another set in
198
+ * the room) or in a door's clearance goes to the nearest free pose, by the room rule of its wall mode, and slides back
199
+ * until it touches what it was cleared of. It stays where it is when the room has no free pose for it.
200
+ */
201
+ private moveClearOfObstacles;
202
+ private nearestFreePose;
203
+ /**
204
+ * Puts a new element at the first free place a slot of the `isCarrier` groups suggests (lowest PosNr first, planner
205
+ * data only), numbers it last (PosNrAtEnd) and makes it a guest of the carrier (see `attachToSlot`); false, the element
206
+ * unmoved, when no place is free.
207
+ */
208
+ private placeAtSuggestedPlace;
209
+ private attachToSlot;
210
+ private getGuestDepth;
211
+ private fitsAt;
212
+ private getKeptPose;
213
+ private movedShapes;
214
+ private overlapsAny;
215
+ private isBlocked;
216
+ private blockersAt;
217
+ private slideToContact;
218
+ private updateRoomDrag;
219
+ private snapToDock;
220
+ private startDragUnit;
221
+ private getRoomDragPreview;
222
+ private getRoomTurnPreview;
223
+ private findTurnPlace;
224
+ private getTurnedPose;
225
+ private withDragBlock;
61
226
  /**
62
227
  * This function updates the position information of all elements. It is called after updating the SVG of 1 element.
63
228
  * The position is updated based on the posNr.
@@ -147,6 +312,12 @@ export default class DivaStandardPlanner {
147
312
  * @param checkSingleElementId If this parameter is set, the collision is only detected with this element
148
313
  */
149
314
  private checkCollision;
315
+ /**
316
+ * The set's elements for the planning's collision warning (`ROOM_COLLISION_MSG`): every element of a colliding docking
317
+ * group but the NO_COLLISION ones, with its outline (never the viewer's measures). None while the 2D planner is off.
318
+ */
319
+ getCollisionSet(): CollisionSet;
320
+ private toCollisionSet;
150
321
  /**
151
322
  * Updates the overall set posNr
152
323
  * @param startSetPosNr Indicates the start PosNr for the planner
@@ -1 +1 @@
1
- {"version":3,"file":"DivaStandardPlanner.d.ts","sourceRoot":"","sources":["../../../../../../src/logic/Planner/DivaStandardPlanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DivaStandardPlanner.d.ts","sourceRoot":"","sources":["../../../../../../src/logic/Planner/DivaStandardPlanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { MetaData } from '../../../interface/AdditionalModelInfos';
2
+ import { IDM3DTranslation } from '../../../interface/Planner/IDM3DTranslation';
3
+ /**
4
+ * Option value property: either the value sent to every target of the feature (`96`), explicit
5
+ * `<target>=<value>` pairs separated by `;` that replace the feature's targets for this value (`65=7428.0XXXXXXXXXXXX`),
6
+ * or `SKIP` for a value the supplier's 3D catalog does not know (nothing is sent instead of our own key).
7
+ */
8
+ export declare const IDM3D_VALUE = "IDM3D_VALUE";
9
+ export declare const IDM3D_SKIP = "SKIP";
10
+ /** One selected value of the article tree together with its feature's targets and its raw value properties. */
11
+ export interface IDM3DSource {
12
+ /**
13
+ * The Diomex properties the feature feeds (`IDM3D_TARGET`), e.g. `13`, `15/L2`; `<group>@@<property>` scopes a
14
+ * property to one partlist group of the set, e.g. `PrRef_Füsse@@13` for the wood of the feet only.
15
+ */
16
+ targets?: string[];
17
+ value: string;
18
+ valueProperties: MetaData[];
19
+ /** A value of a step the customer cannot see; it only fills Diomex properties no visible value feeds. */
20
+ hidden?: boolean;
21
+ }
22
+ /**
23
+ * Translates the selected values of an article tree into the flat configuration the supplier's IDM3D engine
24
+ * expects: only values with a target are sent and every supplier feature at most once (Unity adds them to a
25
+ * dictionary). Visible values win over hidden ones; within each, explicit `<target>=<value>` pairs of an option value
26
+ * win over the generic targets of a feature; otherwise the first source wins, so pass the preferred values first.
27
+ */
28
+ export declare function translateToIDM3DConfig(sources: IDM3DSource[], model: string | undefined, translation: IDM3DTranslation): {
29
+ OPT: string;
30
+ OPV: string;
31
+ }[];
32
+ //# sourceMappingURL=idm3dTranslation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idm3dTranslation.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/IDM3D/idm3dTranslation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAG/E;;;;GAIG;AACH,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,UAAU,SAAS,CAAC;AAEjC,+GAA+G;AAC/G,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,QAAQ,EAAE,CAAC;IAC5B,yGAAyG;IACzG,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AA2BD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,WAAW,EAAE,gBAAgB;;;IA6BtH"}
@@ -0,0 +1,2 @@
1
+ import '../../../test/logger';
2
+ //# sourceMappingURL=idm3dTranslation.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idm3dTranslation.test.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/IDM3D/idm3dTranslation.test.ts"],"names":[],"mappings":"AACA,OAAO,sBAAsB,CAAC"}
@@ -0,0 +1,75 @@
1
+ import type PlannerElementData from '../../../model/Planner/PlannerElementData';
2
+ import type DivaStandardPlanner from '../DivaStandardPlanner';
3
+ import type { SwitchedGuest } from '../../../interface/FunctionTypes';
4
+ import { FloorPose } from '../Room/elementShapes';
5
+ import type { CollisionMember, CollisionSet } from '../Room/roomCollisions';
6
+ import { CarrierExtent, GuestPlacement } from './guestPlacement';
7
+ /** The standard planners of a planning by set id: where guests and carriers live. */
8
+ export type GuestPlanners = Map<string, DivaStandardPlanner>;
9
+ /** A guest of the planning: its set, its element and its placement. */
10
+ export interface PlannedGuest {
11
+ setId: string;
12
+ element: PlannerElementData;
13
+ placement: GuestPlacement;
14
+ }
15
+ /** The carrier a placement names, in whichever set has its basket; undefined while that set is not loaded, or when none has it. */
16
+ export declare function findCarrier(planners: GuestPlanners, placement: GuestPlacement): PlannerElementData | undefined;
17
+ /** Every element of the planning that stands as a guest at a carrier, loaded or not. */
18
+ export declare function getGuests(planners: GuestPlanners): PlannedGuest[];
19
+ /** The guests standing at the element. */
20
+ export declare function getGuestsOf(planners: GuestPlanners, carrier: PlannerElementData): PlannedGuest[];
21
+ /** The extent of the carrier's body in its own frame (see `getCarrierExtent`), from its outline. */
22
+ export declare function getExtentOf(carrier: PlannerElementData): CarrierExtent;
23
+ /**
24
+ * The guests that go with the docking group `groupIds` of set `setId`, in every set: those standing at one of its
25
+ * elements, and theirs, at most MAX_GUEST_DEPTH carriers deep, each with its docking group; never one of the group.
26
+ */
27
+ export declare function getFollowerMembers(planners: GuestPlanners, setId: string, groupIds: number[]): CollisionMember[];
28
+ /**
29
+ * Puts every guest where its placement says at its carrier, when it stands elsewhere: its carrier moved or turned. Depth
30
+ * by depth, so a guest's guest goes with it. Not the guests `skip` names (the unit a live drag moves itself), not those
31
+ * whose carrier's set is not loaded. Returns the sets whose guests moved.
32
+ */
33
+ export declare function followCarriers(planners: GuestPlanners, skip?: (setId: string, elementId: number) => boolean): Set<string>;
34
+ /**
35
+ * Decides where the element of set `setId` stands after its drag ended: in a slot of its own carrier it stays its guest
36
+ * with its new offset; else in a slot of another carrier (any set, not the dragged unit `unit`) that takes its type it
37
+ * becomes that one's guest (the nearest such place wins, never closing a circle or going deeper than MAX_GUEST_DEPTH);
38
+ * else it stands on its own. Returns whether it is a guest now.
39
+ */
40
+ export declare function settleDroppedGuest(planners: GuestPlanners, setId: string, elementId: number, unit: CollisionMember[]): boolean;
41
+ /** A guest carried along by a drag, as it stood when the drag started: where, and whether a body blocked it there already. */
42
+ export interface CarriedGuest extends PlannedGuest {
43
+ pose: FloorPose;
44
+ blocked: boolean;
45
+ }
46
+ /**
47
+ * The guests that go with the docking group `groupIds` of set `setId` (see `getFollowerMembers`), as they stand: what a
48
+ * turn of the carrier is checked against on release (see `returnBlockedGuests`).
49
+ */
50
+ export declare function takeCarriedGuests(planners: GuestPlanners, setId: string, groupIds: number[], otherSets: (setId: string) => CollisionSet[]): CarriedGuest[];
51
+ /**
52
+ * After a carrier turned with its guests `carried`: a guest that runs into a body where it now stands (and did not where
53
+ * it stood) goes back there and stands on its own; its own guests go back with it (they follow it, see
54
+ * `followCarriers`). Which ones is decided where they all stand now, so one going back blocks no other. Returns how
55
+ * many came loose.
56
+ */
57
+ export declare function returnBlockedGuests(planners: GuestPlanners, carried: CarriedGuest[], otherSets: (setId: string) => CollisionSet[]): number;
58
+ /** The extent of each carrier with guests (see `getExtentOf`), by guest: what a change of the carriers is measured against. */
59
+ export declare function measureCarriers(planners: GuestPlanners): Map<PlannerElementData, CarrierExtent>;
60
+ /**
61
+ * After a change of carriers (a resize, a new configuration), the guests whose carrier's body changed against `before`
62
+ * (see `measureCarriers`) move with the edge they stand at; one that would run into a body stays and stands on its own.
63
+ * Never adds or removes an element. Returns how many came loose.
64
+ */
65
+ export declare function shiftWithChangedCarriers(planners: GuestPlanners, before: Map<PlannerElementData, CarrierExtent>, otherSets: (setId: string) => CollisionSet[]): number;
66
+ /** The guests of a carrier about to be switched, with its extent, as a switch hands them on (see `handOverGuests`). */
67
+ export declare function takeGuestsOf(planners: GuestPlanners, carrier: PlannerElementData): SwitchedGuest[];
68
+ /**
69
+ * Gives the guests a switched carrier had to the element that took its place, each moved with the edge it stands at;
70
+ * one that would run into a body stays on its own. Returns how many came loose.
71
+ */
72
+ export declare function handOverGuests(planners: GuestPlanners, carrier: PlannerElementData, guests: SwitchedGuest[], otherSets: (setId: string) => CollisionSet[]): number;
73
+ /** Leaves every guest whose carrier is in set `setId` on its own, where it stands (the set is removed). */
74
+ export declare function detachGuestsOf(planners: GuestPlanners, setId: string): void;
75
+ //# sourceMappingURL=carrierGuests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"carrierGuests.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/Placement/carrierGuests.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import type PlannerElementData from '../../../model/Planner/PlannerElementData';
2
+ import { Vector2 } from '../../../model/Planner/wcVectors';
3
+ import { FloorPose } from '../Room/elementShapes';
4
+ /**
5
+ * Where a guest stands at its carrier, saved with the guest: the carrier's basket id (unique in the planning), the slot,
6
+ * and its pose in the carrier's frame. The carrier's moves and turns carry it along; nothing else moves it.
7
+ */
8
+ export interface GuestPlacement {
9
+ carrierBasketId: string;
10
+ /** `<carrier type>.<relation>`, e.g. `SOFA.front`. */
11
+ slotId: string;
12
+ /** Its centre (cm) in the carrier's frame, from the carrier's centre, and its rotation on top of the carrier's (deg, 0 … 360). */
13
+ offset: {
14
+ x: number;
15
+ z: number;
16
+ rot: number;
17
+ };
18
+ }
19
+ /** A carrier's body in its own frame (cm from its centre, unrotated): how far it reaches along its local x and z. */
20
+ export interface CarrierExtent {
21
+ minX: number;
22
+ maxX: number;
23
+ minZ: number;
24
+ maxZ: number;
25
+ }
26
+ /** How many carriers deep guests go: a guest's guests follow too, theirs not. */
27
+ export declare const MAX_GUEST_DEPTH = 2;
28
+ /** Where an element stands: its centre on the floor and its rotation. */
29
+ export declare const poseOf: (element: PlannerElementData) => FloorPose;
30
+ /** The guest's pose in its carrier's frame (see {@link GuestPlacement.offset}). */
31
+ export declare function toPlacementOffset(carrier: FloorPose, guest: FloorPose): GuestPlacement['offset'];
32
+ /** Where the offset puts a guest of the carrier standing at `carrier`. */
33
+ export declare function fromPlacementOffset(carrier: FloorPose, offset: GuestPlacement['offset']): FloorPose;
34
+ /** Whether two poses are the same within a thousandth of a cm and degree. */
35
+ export declare function samePose(a: FloorPose, b: FloorPose): boolean;
36
+ /** The extent of a carrier's body (world points) in its own frame around its pose's centre. */
37
+ export declare function getCarrierExtent(body: Vector2[], pose: FloorPose): CarrierExtent;
38
+ /** Whether two extents are the same within a thousandth of a cm. */
39
+ export declare function sameExtent(a: CarrierExtent, b: CarrierExtent): boolean;
40
+ /**
41
+ * The guest's offset after its carrier's body changed from `before` to `after` (a resize, a swap): moved with the point
42
+ * of the carrier it stands at (see `anchorOf`), so it keeps its distance to that edge and its place along it.
43
+ */
44
+ export declare function shiftForCarrierChange(placement: GuestPlacement, before: CarrierExtent, after: CarrierExtent): GuestPlacement['offset'];
45
+ /** A saved placement as the planner keeps it; undefined for anything else (a planning without one, a broken entry). */
46
+ export declare function parseGuestPlacement(value: unknown): GuestPlacement | undefined;
47
+ //# sourceMappingURL=guestPlacement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guestPlacement.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/Placement/guestPlacement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,kBAAkB,MAAM,2CAA2C,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIlD;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,kIAAkI;IAClI,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C;AAED,qHAAqH;AACrH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,iFAAiF;AACjF,eAAO,MAAM,eAAe,IAAI,CAAC;AAMjC,yEAAyE;AACzE,eAAO,MAAM,MAAM,YAAa,kBAAkB,KAAG,SAGnD,CAAC;AAEH,mFAAmF;AACnF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,CAGhG;AAED,0EAA0E;AAC1E,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,SAAS,CAGnG;AAED,6EAA6E;AAC7E,wBAAgB,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,CAG5D;AAED,+FAA+F;AAC/F,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,GAAG,aAAa,CAKhF;AAED,oEAAoE;AACpE,wBAAgB,UAAU,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,OAAO,CAEtE;AAkBD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,GAAG,cAAc,CAAC,QAAQ,CAAC,CAMtI;AAID,uHAAuH;AACvH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS,CAO9E"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=guestPlacement.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guestPlacement.test.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/Placement/guestPlacement.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import type { PlacementRulesSpec, PlacementTypeDefinition } from './placementRules';
2
+ /** The central vocabulary of placement types with their parents: a slot that accepts a parent takes its descendants. */
3
+ export declare const PLACEMENT_TYPES: Record<string, PlacementTypeDefinition>;
4
+ /**
5
+ * The default slots per carrier type (slot id `<carrier>.<relation>`, e.g. `SOFA.front`): the types each takes, their
6
+ * gap (cm) to the carrier's edge and where they look. The planner suggests places in `front`, `side` and `around` slots.
7
+ */
8
+ export declare const DEFAULT_PLACEMENT_RULES: PlacementRulesSpec;
9
+ //# sourceMappingURL=placementDefaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"placementDefaults.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/Placement/placementDefaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAEpF,wHAAwH;AACxH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAoBnE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,kBAqBrC,CAAC"}
@@ -0,0 +1,78 @@
1
+ /** Where a carrier takes another element: in front of it, beside it, at its foot end, around it or under it. */
2
+ export type PlacementRelation = 'front' | 'side' | 'foot' | 'around' | 'under';
3
+ /**
4
+ * Where a guest looks in its slot (its front is the front of its planner SVG): at the carrier edge it stands at, away
5
+ * from it, the carrier's own rotation, or at the carrier's centre (`toCenter`, for round carriers; a straight edge
6
+ * treats it as `toCarrier`).
7
+ */
8
+ export type SlotFacing = 'toCarrier' | 'awayFromCarrier' | 'parallel' | 'toCenter';
9
+ /** A type of the vocabulary: its parent, whose slots' `accepts` also match it. */
10
+ export interface PlacementTypeDefinition {
11
+ parent?: string;
12
+ }
13
+ /** How a guest stands in a slot, as written in rules: per accepted type or for the whole slot. */
14
+ export interface SlotGuestSpec {
15
+ /** cm to the carrier's edge, allowed range; below 0 the guest reaches under the carrier (a chair's seat under the top). */
16
+ distance?: [number, number];
17
+ /** cm to the carrier's edge a suggested place uses. */
18
+ ideal?: number;
19
+ facing?: SlotFacing;
20
+ /** deg the guest may turn further (data only). */
21
+ turn?: [number, number];
22
+ }
23
+ /** A slot as written in the default rules and in RTV_PRESET `placement.rules`. */
24
+ export interface PlacementSlotSpec extends SlotGuestSpec {
25
+ /** The accepted types, as a list (the slot's values for all) or with values per type; replaces the default's whole. */
26
+ accepts: string[] | Record<string, SlotGuestSpec>;
27
+ /** `around`: the least seat pitch (cm). */
28
+ pitch?: number;
29
+ /** `around`: gap (cm) added to a guest's width when that gives a wider pitch. */
30
+ spacing?: number;
31
+ /** `around`: the carrier depth (cm) from which its ends take guests too. */
32
+ endSeatsMinDepth?: number;
33
+ }
34
+ /** The slots of one carrier type as written, per relation. */
35
+ export type CarrierRulesSpec = Partial<Record<PlacementRelation, PlacementSlotSpec>>;
36
+ /** Rules per carrier type as written. */
37
+ export interface PlacementRulesSpec {
38
+ [carrierType: string]: CarrierRulesSpec;
39
+ }
40
+ /** How a guest stands in a slot: its gap (cm) to the carrier's edge, allowed and suggested, and where it looks. */
41
+ export interface SlotGuest {
42
+ distance: [number, number];
43
+ ideal: number;
44
+ facing: SlotFacing;
45
+ turn?: [number, number];
46
+ }
47
+ /** A slot: the guest types it takes with their gaps, and the `around` layout numbers. */
48
+ export interface PlacementSlot {
49
+ accepts: Record<string, SlotGuest>;
50
+ pitch?: number;
51
+ spacing?: number;
52
+ endSeatsMinDepth?: number;
53
+ }
54
+ /** The slots of one carrier type, per relation. */
55
+ export type CarrierRules = Partial<Record<PlacementRelation, PlacementSlot>>;
56
+ /** Slots per carrier type. */
57
+ export interface PlacementRules {
58
+ [carrierType: string]: CarrierRules;
59
+ }
60
+ /** A catalog's placement settings: its RTV_PRESET `placement` block over the central defaults. */
61
+ export interface PlacementOptions {
62
+ /** Palette group name → placement types (`placement.paletteGroups`). */
63
+ paletteGroups: Record<string, string[]>;
64
+ /** The default rules with the catalog's `placement.rules` merged over them. */
65
+ rules: PlacementRules;
66
+ }
67
+ /** Placement types as the rules compare them: a `;` list or an array, each trimmed and upper case, empties dropped. */
68
+ export declare function normalizePlacementTypes(value: unknown): string[];
69
+ /** The type and its ancestors in the vocabulary, the type first. */
70
+ export declare function getTypeLineage(type: string): string[];
71
+ /** The gap the slot gives `guestType`: its own entry, else the nearest ancestor's; undefined when the slot does not take it. */
72
+ export declare function getSlotGuest(slot: PlacementSlot | undefined, guestType: string | undefined): SlotGuest | undefined;
73
+ /**
74
+ * The placement settings of an RTV_PRESET: `placement.paletteGroups` (palette group → types) and `placement.rules`
75
+ * merged field by field over {@link DEFAULT_PLACEMENT_RULES}. Unknown keys and values of the wrong type are ignored.
76
+ */
77
+ export declare function resolvePlacementOptions(rtvPreset: Record<string, unknown> | undefined): PlacementOptions;
78
+ //# sourceMappingURL=placementRules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"placementRules.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/Placement/placementRules.ts"],"names":[],"mappings":"AAGA,gHAAgH;AAChH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAI/E;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,iBAAiB,GAAG,UAAU,GAAG,UAAU,CAAC;AAInF,kFAAkF;AAClF,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,kGAAkG;AAClG,MAAM,WAAW,aAAa;IAC5B,2HAA2H;IAC3H,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,kDAAkD;IAClD,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzB;AAED,kFAAkF;AAClF,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,uHAAuH;IACvH,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAClD,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,8DAA8D;AAC9D,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAErF,yCAAyC;AACzC,MAAM,WAAW,kBAAkB;IACjC,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,CAAC;CACzC;AAED,mHAAmH;AACnH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzB;AAED,yFAAyF;AACzF,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,mDAAmD;AACnD,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC,CAAC;AAE7E,8BAA8B;AAC9B,MAAM,WAAW,cAAc;IAC7B,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,CAAC;CACrC;AAED,kGAAkG;AAClG,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACxC,+EAA+E;IAC/E,KAAK,EAAE,cAAc,CAAC;CACvB;AAED,uHAAuH;AACvH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAIhE;AAED,oEAAoE;AACpE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAMrD;AAED,gIAAgI;AAChI,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAIlH;AA6FD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,gBAAgB,CAcxG"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=placementRules.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"placementRules.test.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/Placement/placementRules.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,81 @@
1
+ import { Vector2 } from '../../../model/Planner/wcVectors';
2
+ import { FloorPose } from '../Room/elementShapes';
3
+ import { FloorPoint } from '../Room/wallBinding';
4
+ import { PlacementRules, SlotGuest } from './placementRules';
5
+ /** A main element of a docking group as a carrier: its placement types, rotation and body outline (world). */
6
+ export interface SlotMember {
7
+ types: string[];
8
+ rotDeg: number;
9
+ body: Vector2[];
10
+ /** Its article's basket id, the carrier a guest names. */
11
+ basketId?: string;
12
+ }
13
+ /** The carrier member moved rigidly from pose `from` to pose `to` (see `movePoints`). */
14
+ export declare function moveSlotMember(member: SlotMember, from: FloorPose, to: FloorPose): SlotMember;
15
+ /**
16
+ * The members of a carrier with one rotation (an arm of an L, or a straight group): rotation and body points. In an
17
+ * `around` slot one edge of a member, turned so its front is that edge.
18
+ */
19
+ export interface CarrierArm {
20
+ rotDeg: number;
21
+ points: Vector2[];
22
+ }
23
+ /** The relations whose places the planner lays out: in front of a carrier, beside its ends, all round it. */
24
+ export type SlotRelation = 'front' | 'side' | 'around';
25
+ /** Where a carrier group takes a guest type: in front of, beside or round the arms of the members with that slot. */
26
+ export interface CarrierSlot {
27
+ /** `<carrier type>.<relation>`, e.g. `SOFA.front`. */
28
+ id: string;
29
+ relation: SlotRelation;
30
+ arms: CarrierArm[];
31
+ guest: SlotGuest;
32
+ /** The members that offer the slot. */
33
+ members: SlotMember[];
34
+ /** `around`: the least seat pitch (cm). */
35
+ pitch?: number;
36
+ /** `around`: gap (cm) added to a guest's width when that gives a wider pitch. */
37
+ spacing?: number;
38
+ }
39
+ /**
40
+ * A place a slot offers a guest: its pose at the slot's ideal gap, and the way it may stand off that gap and still be in
41
+ * the slot: along `normal` (away from the carrier's edge) by `band` cm (min, max; the slot's distance range).
42
+ */
43
+ export interface SlotPlace extends FloorPose {
44
+ normal: FloorPoint;
45
+ band: [number, number];
46
+ /** The least offset along `normal` from which a guest snaps to the place: closer it runs into the carrier's body. */
47
+ snapFrom: number;
48
+ }
49
+ /** The guest's body points around its centre when it is turned to `rotDeg`. */
50
+ export type GuestOutline = (rotDeg: number) => Vector2[];
51
+ /** The slots a carrier group offers a guest type (front, side, then around), from the slots of its members' types. */
52
+ export declare function getCarrierSlots(rules: PlacementRules, carrier: SlotMember[], guestType: string | undefined): CarrierSlot[];
53
+ /** The places a slot suggests for the guest, at its ideal gap and turned as it faces, in the order they are tried. */
54
+ export declare function getSlotPlaces(slot: CarrierSlot, guest: GuestOutline): SlotPlace[];
55
+ /**
56
+ * The first of the slots the guest's body stands in: `front` and `around`, in front of an arm (an edge) within its run
57
+ * at a gap in the slot's distance; `side`, beside an open end of an arm at such a gap, not reaching past the arm's back
58
+ * or front. Undefined when it stands in none.
59
+ */
60
+ export declare function getStandingSlot(slots: CarrierSlot[], guestBody: Vector2[]): CarrierSlot | undefined;
61
+ /** Whether the guest's body stands in one of the slots (see {@link getStandingSlot}). */
62
+ export declare function standsInSlot(slots: CarrierSlot[], guestBody: Vector2[]): boolean;
63
+ /**
64
+ * The place nearest to a guest centred at `center` and where it would stand there, keeping its distance to the carrier
65
+ * within the place's band: index into `places` and centre. Undefined without places.
66
+ */
67
+ export declare function getNearestPlace(places: SlotPlace[], center: FloorPoint): {
68
+ index: number;
69
+ center: FloorPoint;
70
+ } | undefined;
71
+ /**
72
+ * The place a dragged guest centred at `center` snaps to (see {@link getNearestPlace}): the nearest within `reach` cm,
73
+ * but none the guest is pushed into its carrier's body at (`snapFrom`): contact holds it there, not the slot.
74
+ */
75
+ export declare function getSnapPlace(places: SlotPlace[], center: FloorPoint, reach: number): {
76
+ index: number;
77
+ center: FloorPoint;
78
+ } | undefined;
79
+ /** Of the members that offer `slot`, the one whose body lies nearest to `point`: the carrier a guest there names. */
80
+ export declare function getNearestMember(slot: CarrierSlot, point: FloorPoint): SlotMember | undefined;
81
+ //# sourceMappingURL=placementSlots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"placementSlots.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/Placement/placementSlots.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAc,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAqB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEpE,OAAO,EAAgB,cAAc,EAA6B,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEtG,8GAA8G;AAC9G,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,yFAAyF;AACzF,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,UAAU,CAE7F;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,EAAE,CAAC;CACnB;AAED,6GAA6G;AAC7G,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEvD,qHAAqH;AACrH,MAAM,WAAW,WAAW;IAC1B,sDAAsD;IACtD,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,YAAY,CAAC;IACvB,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;IACjB,uCAAuC;IACvC,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvB,qHAAqH;IACrH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,+EAA+E;AAC/E,MAAM,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,EAAE,CAAC;AAqEzD,sHAAsH;AACtH,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,EAAE,CAuB1H;AAkID,sHAAsH;AACtH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,GAAG,SAAS,EAAE,CAGjF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,WAAW,GAAG,SAAS,CAmBnG;AAED,yFAAyF;AACzF,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,CAEhF;AAuBD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GAAG,SAAS,CAE1H;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GAAG,SAAS,CAEtI;AAED,qHAAqH;AACrH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAQ7F"}