@crystaldesign/diva-web-planner-react 26.13.0-beta.32 → 26.13.0-beta.34

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 (622) hide show
  1. package/build/esm/ArLaunchButton-ec44292e.js +477 -0
  2. package/build/esm/DrawerSwipeHint-6c16e4dd.js +130 -0
  3. package/build/esm/{Planner2DGrid-22f870a6.js → Planner2DGrid-52572805.js} +1 -1
  4. package/build/esm/{Planner3DImage-1d43b023.js → Planner3DImage-c975a601.js} +1 -1
  5. package/build/esm/RoundToggle-df1d64a1.js +84 -0
  6. package/build/esm/{UnlockCard-14c4eddd.js → UnlockCard-ec68ec95.js} +1 -1
  7. package/build/esm/{accessoryPlacementMode-c8256443.js → accessoryPlacementMode-80e0ec4d.js} +1 -1
  8. package/build/esm/doorSwap-7221fbe0.js +145 -0
  9. package/build/esm/{index-3baf9628.js → index-0174e1ab.js} +2 -2
  10. package/build/esm/{index-338c65ad.js → index-045d129c.js} +4 -4
  11. package/build/esm/{index-2aa2b66e.js → index-04d6ea43.js} +2 -2
  12. package/build/esm/{index-8641aeab.js → index-05b8722d.js} +78 -77
  13. package/build/esm/{index-c70ef227.js → index-06afdd17.js} +4 -4
  14. package/build/esm/{index-7704c449.js → index-0788018f.js} +3 -3
  15. package/build/esm/{index-a2f11e80.js → index-08ecdf41.js} +3 -3
  16. package/build/esm/{index-cfc5b372.js → index-0b47bc99.js} +2 -2
  17. package/build/esm/{index-b676179b.js → index-0b716c14.js} +2 -2
  18. package/build/esm/{index-752670c7.js → index-0e2dce8b.js} +48 -11
  19. package/build/esm/{index-262483a3.js → index-0ee98131.js} +2 -2
  20. package/build/esm/{index-56427db4.js → index-110d12e2.js} +2 -2
  21. package/build/esm/{index-2beca59c.js → index-12ec4a04.js} +2 -2
  22. package/build/esm/{index-726b4740.js → index-1371dc20.js} +2 -2
  23. package/build/esm/{index-838d5326.js → index-13e5d4d8.js} +2 -2
  24. package/build/esm/{index-64547950.js → index-14a0cb55.js} +7 -7
  25. package/build/esm/{index-09edd776.js → index-14cc08ce.js} +3 -3
  26. package/build/esm/{index-f299a845.js → index-1555b7f7.js} +24 -55
  27. package/build/esm/{index-37012998.js → index-15d996ee.js} +2 -2
  28. package/build/esm/{index-45b6f101.js → index-160d0263.js} +2 -2
  29. package/build/esm/{index-d64f66ac.js → index-165beb03.js} +3 -3
  30. package/build/esm/{index-23ff8156.js → index-17d9e652.js} +2 -2
  31. package/build/esm/{index-2e070af8.js → index-1842d5d1.js} +2 -2
  32. package/build/esm/{index-7cd75287.js → index-18827d08.js} +3 -3
  33. package/build/esm/{index-afda6f0b.js → index-18e4049a.js} +5 -5
  34. package/build/esm/{index-8656d4f0.js → index-1949dddc.js} +2 -2
  35. package/build/esm/{index-7febd15f.js → index-1986b66d.js} +2 -2
  36. package/build/esm/{index-3fbdea2e.js → index-19bd6f1f.js} +2 -2
  37. package/build/esm/{index-4fb5f532.js → index-1a7073a3.js} +2 -2
  38. package/build/esm/{index-0e52ee35.js → index-1a8f1a0f.js} +18 -18
  39. package/build/esm/{index-e0e86180.js → index-1bbf345f.js} +19 -19
  40. package/build/esm/{index-79c75ab0.js → index-1c7cf9a7.js} +143 -111
  41. package/build/esm/{index-da611df9.js → index-1c905193.js} +3 -3
  42. package/build/esm/{index-9c25d2ce.js → index-1e30b052.js} +2 -2
  43. package/build/esm/{index-532e9d9f.js → index-1e65b56c.js} +92 -90
  44. package/build/esm/{index-174c4dba.js → index-2183820d.js} +2 -2
  45. package/build/esm/{index-1c5fa5c5.js → index-2346258d.js} +30 -23
  46. package/build/esm/{index-391dd91a.js → index-2379ec51.js} +23 -23
  47. package/build/esm/{index-1ac52a4a.js → index-256bb698.js} +2 -2
  48. package/build/esm/{index-e00499bf.js → index-29816f98.js} +3 -3
  49. package/build/esm/{index-28d7b18b.js → index-2a1a332c.js} +86 -85
  50. package/build/esm/{index-ef985539.js → index-2a4ce18e.js} +2 -2
  51. package/build/esm/{index-8a67fa91.js → index-2af206ae.js} +2 -2
  52. package/build/esm/{index-ea5e69cc.js → index-2b1cee27.js} +3 -3
  53. package/build/esm/{index-c3f114d9.js → index-2c4cedb6.js} +2 -2
  54. package/build/esm/{index-42d1035d.js → index-2c7ce1c9.js} +1 -1
  55. package/build/esm/{index-bd14271a.js → index-2cf775cb.js} +2 -2
  56. package/build/esm/{index-b3a7741f.js → index-2ee1bdef.js} +6 -6
  57. package/build/esm/index-2f585084.js +36 -0
  58. package/build/esm/{index-ffe75ab4.js → index-31cd4c6a.js} +2 -2
  59. package/build/esm/{index-cd479865.js → index-320781f9.js} +3 -3
  60. package/build/esm/index-327cca2a.js +285 -0
  61. package/build/esm/{index-fb9118cd.js → index-3453801b.js} +6 -6
  62. package/build/esm/{index-6a35b2b5.js → index-347a2782.js} +6 -6
  63. package/build/esm/{index-21c3f3d8.js → index-348a4897.js} +3 -3
  64. package/build/esm/{index-32e16d31.js → index-35bcd664.js} +2 -2
  65. package/build/esm/{index-583d7573.js → index-365dddcd.js} +8 -8
  66. package/build/esm/{index-b31f75b3.js → index-36a27a09.js} +4 -4
  67. package/build/esm/{index-ba9cc19a.js → index-36b3c69a.js} +3 -3
  68. package/build/esm/{index-5da15353.js → index-373ecbf7.js} +6 -6
  69. package/build/esm/{index-8a3a2346.js → index-374700af.js} +2 -2
  70. package/build/esm/{index-183460c3.js → index-391984e3.js} +2 -2
  71. package/build/esm/{index-345a63da.js → index-39ab648c.js} +2 -2
  72. package/build/esm/{index-88ac5390.js → index-3a38dffb.js} +72 -72
  73. package/build/esm/{index-9bc78e81.js → index-3b485c37.js} +2170 -1240
  74. package/build/esm/{index-2afee278.js → index-3c1f9e03.js} +3 -3
  75. package/build/esm/{index-5d99df86.js → index-3eb9cbd0.js} +2 -2
  76. package/build/esm/{index-c9d26ba2.js → index-411039ff.js} +26 -6
  77. package/build/esm/{index-2684abca.js → index-41ac16cb.js} +3 -3
  78. package/build/esm/{index-c6aeb2b7.js → index-42b18bd3.js} +6 -6
  79. package/build/esm/{index-d66004b3.js → index-42fb67ad.js} +29 -24
  80. package/build/esm/{index-76b116ef.js → index-432cc5c2.js} +2 -2
  81. package/build/esm/{index-00690638.js → index-43370042.js} +113 -86
  82. package/build/esm/{index-3753e285.js → index-48e0a719.js} +2 -2
  83. package/build/esm/{index-c2d32a33.js → index-49d7ef12.js} +19 -19
  84. package/build/esm/{index-507f01c7.js → index-4a20693e.js} +92 -91
  85. package/build/esm/{index-a4467fa2.js → index-4bd0e745.js} +3 -3
  86. package/build/esm/{index-8b663b30.js → index-4be45ccf.js} +3 -3
  87. package/build/esm/{index-238f337d.js → index-4c5f604d.js} +2 -2
  88. package/build/esm/{index-87da6e15.js → index-4d5f6d24.js} +6 -6
  89. package/build/esm/{index-707c3b25.js → index-4f20300f.js} +2 -2
  90. package/build/esm/{index-88edc84c.js → index-510caf9a.js} +2 -2
  91. package/build/esm/{index-5caf9693.js → index-518dceca.js} +5 -5
  92. package/build/esm/{index-26ec1fe2.js → index-51c82470.js} +3 -3
  93. package/build/esm/{index-c9e218d7.js → index-52c55f3e.js} +2 -2
  94. package/build/esm/{index-1c3d719f.js → index-5742db43.js} +3 -3
  95. package/build/esm/{index-b61d98b3.js → index-57829ee8.js} +4 -4
  96. package/build/esm/{index-74b8196f.js → index-579f3ab2.js} +3 -3
  97. package/build/esm/{index-1268f97f.js → index-57d33669.js} +4 -4
  98. package/build/esm/{index-85cdc43a.js → index-584cfc59.js} +6 -6
  99. package/build/esm/{index-798071a0.js → index-58e816ac.js} +26 -20
  100. package/build/esm/{index-5a0e9327.js → index-594715c6.js} +2 -2
  101. package/build/esm/{index-a47b50b4.js → index-5d0c3352.js} +70 -70
  102. package/build/esm/{index-0d1d96de.js → index-6036d9a6.js} +2 -2
  103. package/build/esm/{index-91b99c16.js → index-60a250ee.js} +2 -2
  104. package/build/esm/{index-b1e2aa52.js → index-60da2886.js} +2 -2
  105. package/build/esm/{index-99ec1eeb.js → index-6103a34a.js} +67 -67
  106. package/build/esm/{index-11279735.js → index-61477368.js} +4 -4
  107. package/build/esm/{index-415ba7ea.js → index-61db0ae9.js} +69 -69
  108. package/build/esm/{index-aadc900e.js → index-67706603.js} +2 -2
  109. package/build/esm/{index-fbe6285c.js → index-68048857.js} +10 -4
  110. package/build/esm/{index-650f4da5.js → index-6923ca63.js} +2 -2
  111. package/build/esm/{index-f5cd22cf.js → index-6ae00b15.js} +26 -26
  112. package/build/esm/{index-49814de8.js → index-6bcb8bde.js} +9 -7
  113. package/build/esm/{index-749b4235.js → index-6be231e6.js} +3 -3
  114. package/build/esm/index-6c33ea39.js +109 -0
  115. package/build/esm/{index-61ddd670.js → index-6c491b5e.js} +2 -2
  116. package/build/esm/{index-66272241.js → index-6deb8866.js} +2 -2
  117. package/build/esm/{index-c5705bfb.js → index-7058ee83.js} +93 -92
  118. package/build/esm/{index-71c079b6.js → index-74e7073c.js} +9 -9
  119. package/build/esm/{index-59a3cafa.js → index-7726efaa.js} +2 -2
  120. package/build/esm/{index-d72e2302.js → index-7a76bd25.js} +2 -2
  121. package/build/esm/{index-35117017.js → index-7cb3b346.js} +20 -9
  122. package/build/esm/{index-ab4c1e6f.js → index-7d8dffbf.js} +2 -2
  123. package/build/esm/{index-bd2c413f.js → index-7f0caa25.js} +4 -4
  124. package/build/esm/{index-27876384.js → index-805fed75.js} +83 -72
  125. package/build/esm/{index-2d33ec85.js → index-809cb36a.js} +6 -6
  126. package/build/esm/{index-ac79b4bd.js → index-8238ef4e.js} +3 -3
  127. package/build/esm/{index-b3b2fa56.js → index-830eec5e.js} +4 -4
  128. package/build/esm/{index-bbad6235.js → index-83f4a38a.js} +2 -2
  129. package/build/esm/{index-8d5d6463.js → index-848bb111.js} +67 -67
  130. package/build/esm/{index-4f1283e7.js → index-854142cf.js} +7 -7
  131. package/build/esm/{index-f16e8f18.js → index-85771a1c.js} +2 -2
  132. package/build/esm/{index-41dda40c.js → index-85ea695c.js} +97 -89
  133. package/build/esm/{index-5b721550.js → index-877b96ae.js} +66 -66
  134. package/build/esm/{index-2cc58034.js → index-8c0408ed.js} +2 -2
  135. package/build/esm/{index-6b291fcd.js → index-8ca77a51.js} +2 -2
  136. package/build/esm/{index-9ba090b1.js → index-8d651370.js} +2 -2
  137. package/build/esm/{index-3a00677e.js → index-8ddbb7f3.js} +4 -4
  138. package/build/esm/{index-d279e7d7.js → index-8e855288.js} +2 -2
  139. package/build/esm/{index-f4b1b4ca.js → index-8fcc3384.js} +2 -2
  140. package/build/esm/{index-fa6d9921.js → index-90b6fed5.js} +2 -2
  141. package/build/esm/{index-ce9e1736.js → index-90f95aee.js} +9 -9
  142. package/build/esm/{index-bca1d026.js → index-922a6f8f.js} +3 -3
  143. package/build/esm/{index-60639f7a.js → index-92957f40.js} +3 -3
  144. package/build/esm/{index-798b1140.js → index-934fc408.js} +6 -6
  145. package/build/esm/{index-fc472f67.js → index-948f48f0.js} +2 -2
  146. package/build/esm/{index-2eea7937.js → index-9572f4b3.js} +2 -2
  147. package/build/esm/{index-c455c7c7.js → index-9661e65e.js} +71 -71
  148. package/build/esm/{index-74cf6eff.js → index-981cdc4c.js} +2 -2
  149. package/build/esm/{index-a2a89621.js → index-98e759c7.js} +3 -3
  150. package/build/esm/{index-21251b3a.js → index-99006a8f.js} +2 -2
  151. package/build/esm/{index-b9c2a4fa.js → index-99699ab2.js} +2 -2
  152. package/build/esm/{index-7ef075bc.js → index-99b93855.js} +2 -2
  153. package/build/esm/{index-3f7f4605.js → index-99d836d5.js} +4 -4
  154. package/build/esm/{index-d445c2ca.js → index-9a88f1b6.js} +4 -4
  155. package/build/esm/{index-a43e8cd3.js → index-9e936e0d.js} +2 -2
  156. package/build/esm/{index-7769c011.js → index-9f4db1c0.js} +2 -2
  157. package/build/esm/{index-fb72d936.js → index-9fc98bd1.js} +2 -2
  158. package/build/esm/{index-92595150.js → index-9fd78577.js} +2 -2
  159. package/build/esm/{index-b636fb93.js → index-a0ebeefe.js} +2 -2
  160. package/build/esm/{index-2cd15903.js → index-a2f686d5.js} +3 -3
  161. package/build/esm/{index-62756f3c.js → index-a4a5b9d8.js} +66 -66
  162. package/build/esm/{index-57fbea81.js → index-aa84890c.js} +2 -2
  163. package/build/esm/{index-ab5a664f.js → index-aa8740af.js} +289 -166
  164. package/build/esm/{index-a3f35aff.js → index-abaea594.js} +2 -2
  165. package/build/esm/{index-2683fc93.js → index-acdd8b4a.js} +4 -3
  166. package/build/esm/{index-2d6f9949.js → index-ad6979c8.js} +3 -3
  167. package/build/esm/{index-5b02211c.js → index-aebbf77c.js} +2 -2
  168. package/build/esm/{index-5ecc9ce8.js → index-b0237cc6.js} +2 -2
  169. package/build/esm/{index-e6cf3b27.js → index-b08227ec.js} +13 -13
  170. package/build/esm/{index-473f0e1f.js → index-b0fb4371.js} +6 -6
  171. package/build/esm/{index-d72f50e3.js → index-b0fd1232.js} +2 -2
  172. package/build/esm/index-b1f0598b.js +47 -0
  173. package/build/esm/{index-37f0f093.js → index-b2342b3b.js} +5 -5
  174. package/build/esm/{index-8a2c0f61.js → index-b237cf6a.js} +2 -2
  175. package/build/esm/{index-578abab3.js → index-b38b0a37.js} +19 -19
  176. package/build/esm/{index-d3b4172a.js → index-b45b140d.js} +2 -2
  177. package/build/esm/{index-fa389034.js → index-b603f0c2.js} +2 -2
  178. package/build/esm/{index-ed92f45d.js → index-b6d85849.js} +2 -2
  179. package/build/esm/{index-05452f91.js → index-b72d1304.js} +50 -4
  180. package/build/esm/{index-7133ee9a.js → index-b7416692.js} +2 -2
  181. package/build/esm/{index-a2722c39.js → index-b824e3c2.js} +2 -2
  182. package/build/esm/{index-32ae30ba.js → index-b862359d.js} +9 -7
  183. package/build/esm/{index-52645a94.js → index-b8b029eb.js} +108 -101
  184. package/build/esm/{index-d2c9d037.js → index-b8b78934.js} +22 -22
  185. package/build/esm/{index-be8badf9.js → index-b8e66bb8.js} +4 -4
  186. package/build/esm/{index-fc0b3d56.js → index-b9102efa.js} +2 -2
  187. package/build/esm/{index-3bf4071a.js → index-b922a24b.js} +109 -102
  188. package/build/esm/{index-05b340d5.js → index-bc68f216.js} +1 -1
  189. package/build/esm/{index-3c7af566.js → index-bc992185.js} +3 -3
  190. package/build/esm/{index-e3322f33.js → index-bef6eea2.js} +6 -6
  191. package/build/esm/{index-8a298ca1.js → index-c0bc6b72.js} +6 -6
  192. package/build/esm/{index-5424b98c.js → index-c13244ac.js} +2 -2
  193. package/build/esm/{index-41167e54.js → index-c2676711.js} +3 -3
  194. package/build/esm/{index-691e9af9.js → index-c4550e5f.js} +2 -2
  195. package/build/esm/{index-63809bac.js → index-c66a0e85.js} +2 -2
  196. package/build/esm/{index-57528dba.js → index-c8dbc46a.js} +2 -2
  197. package/build/esm/{index-1a5a7f1c.js → index-c950f011.js} +4 -4
  198. package/build/esm/{index-8e4596e3.js → index-ce3e4dab.js} +2 -2
  199. package/build/esm/{index-a8277dc6.js → index-d400ee38.js} +3 -3
  200. package/build/esm/{index-2dd37a09.js → index-d4a4310e.js} +16 -16
  201. package/build/esm/{index-0557e789.js → index-d505842e.js} +2 -2
  202. package/build/esm/{index-5f9284b1.js → index-d644fba2.js} +2 -2
  203. package/build/esm/{index-908c80b7.js → index-d66cb7b7.js} +4 -4
  204. package/build/esm/{index-2755cd16.js → index-d7c11fb3.js} +2 -2
  205. package/build/esm/{index-7ae01951.js → index-d898d73f.js} +2 -2
  206. package/build/esm/{index-111222b9.js → index-d91c5913.js} +69 -69
  207. package/build/esm/{index-ba665341.js → index-d98585f5.js} +4 -4
  208. package/build/esm/{index-31103b90.js → index-dab6cd67.js} +2 -2
  209. package/build/esm/{index-ad4e779b.js → index-dd9de8c1.js} +9 -9
  210. package/build/esm/index-e0130cb1.js +160 -0
  211. package/build/esm/{index-f9402231.js → index-e0e01d41.js} +68 -68
  212. package/build/esm/{index-b70292f4.js → index-e16a229f.js} +2 -2
  213. package/build/esm/{index-3b18fa4f.js → index-e66d1a66.js} +3 -3
  214. package/build/esm/{index-cdf3148d.js → index-e83df305.js} +3 -3
  215. package/build/esm/{index-e4d09f0f.js → index-e98bd1d1.js} +2 -2
  216. package/build/esm/{index-7e28e9e4.js → index-eb331edc.js} +4 -4
  217. package/build/esm/{index-182dc5d6.js → index-ec308d89.js} +92 -91
  218. package/build/esm/{index-f5ccf9c6.js → index-ed729790.js} +2 -2
  219. package/build/esm/{index-563fdc3f.js → index-edbaaff3.js} +5 -5
  220. package/build/esm/{index-bd1a711a.js → index-eeceb19b.js} +3 -3
  221. package/build/esm/{index-a34e2c6b.js → index-efbe0065.js} +2 -2
  222. package/build/esm/{index-7abb11f1.js → index-f1d9738f.js} +2 -2
  223. package/build/esm/{index-a3b01e6c.js → index-f207c27b.js} +1 -1
  224. package/build/esm/{index-d821d22e.js → index-f24bbb61.js} +2 -2
  225. package/build/esm/{index-d42f2640.js → index-f5230397.js} +2 -2
  226. package/build/esm/{index-6b0d0288.js → index-f54810a9.js} +2 -2
  227. package/build/esm/{index-0f442033.js → index-f678f242.js} +4 -4
  228. package/build/esm/{index-3b3ba6dc.js → index-f9ca707a.js} +2 -2
  229. package/build/esm/index-f9f58742.js +375 -0
  230. package/build/esm/{index-0d87e18d.js → index-fa86fa7e.js} +2 -2
  231. package/build/esm/{index-5a38a65c.js → index-fa962844.js} +8 -8
  232. package/build/esm/{index-06675274.js → index-ff8dba58.js} +2 -2
  233. package/build/esm/index.js +2 -2
  234. package/build/esm/{index.module-dd224fc7.js → index.module-368226e3.js} +1 -1
  235. package/build/esm/{index.module-f69e57fe.js → index.module-40faa7fd.js} +1 -1
  236. package/build/esm/{index.module-10369712.js → index.module-467e6989.js} +1 -1
  237. package/build/esm/{index.module-6adda0b3.js → index.module-4cbf75b7.js} +1 -1
  238. package/build/esm/{index.module-943c3c89.js → index.module-77f29b1f.js} +1 -1
  239. package/build/esm/{index.module-f8039cb8.js → index.module-7aa72761.js} +1 -1
  240. package/build/esm/{index.module-d2581dbc.js → index.module-bac37b1e.js} +1 -1
  241. package/build/esm/{index.module-3383a38a.js → index.module-cfdd27f5.js} +1 -1
  242. package/build/esm/{useCustomDimensions-c30d3202.js → useCustomDimensions-b04e6464.js} +1 -1
  243. package/build/esm/useSteppedWithoutSwipe-4d19eadb.js +37 -0
  244. package/build/esm/{ussIsSticky-7316ebaf.js → ussIsSticky-ab3be522.js} +1 -1
  245. package/build/types/web-planner-react/src/components/GlobalElements/ArticleOverviewSlider/index.d.ts.map +1 -1
  246. package/build/types/web-planner-react/src/components/Product/ContentItemWrapper/index.d.ts.map +1 -1
  247. package/build/types/web-planner-react/src/components/Product/Product/catalog/Sidebar/index.d.ts +4 -2
  248. package/build/types/web-planner-react/src/components/Product/Product/catalog/Sidebar/index.d.ts.map +1 -1
  249. package/build/types/web-planner-react/src/components/Product/Product/catalog/index.d.ts +1 -1
  250. package/build/types/web-planner-react/src/components/Product/Product/catalog/index.d.ts.map +1 -1
  251. package/build/types/web-planner-react/src/components/Product/Product/standard/index.d.ts.map +1 -1
  252. package/build/types/web-planner-react/src/components/Product/ProductCenter/ArLaunch/ArLaunchButton.d.ts +6 -0
  253. package/build/types/web-planner-react/src/components/Product/ProductCenter/ArLaunch/ArLaunchButton.d.ts.map +1 -0
  254. package/build/types/web-planner-react/src/components/Product/ProductCenter/ArLaunch/arIframe.d.ts +11 -0
  255. package/build/types/web-planner-react/src/components/Product/ProductCenter/ArLaunch/arIframe.d.ts.map +1 -0
  256. package/build/types/web-planner-react/src/components/Product/ProductCenter/ArLaunch/arIframe.test.d.ts +2 -0
  257. package/build/types/web-planner-react/src/components/Product/ProductCenter/ArLaunch/arIframe.test.d.ts.map +1 -0
  258. package/build/types/web-planner-react/src/components/Product/ProductCenter/ArLaunch/index.d.ts +6 -0
  259. package/build/types/web-planner-react/src/components/Product/ProductCenter/ArLaunch/index.d.ts.map +1 -0
  260. package/build/types/web-planner-react/src/components/Product/ProductCenter/ArLaunch/webXrModel.d.ts +14 -0
  261. package/build/types/web-planner-react/src/components/Product/ProductCenter/ArLaunch/webXrModel.d.ts.map +1 -0
  262. package/build/types/web-planner-react/src/components/Product/ProductCenter/ArLaunch/webXrModel.test.d.ts +2 -0
  263. package/build/types/web-planner-react/src/components/Product/ProductCenter/ArLaunch/webXrModel.test.d.ts.map +1 -0
  264. package/build/types/web-planner-react/src/components/Product/ProductCenter/DimensionLinesToggle/useDimensionLinesToggle.d.ts +15 -0
  265. package/build/types/web-planner-react/src/components/Product/ProductCenter/DimensionLinesToggle/useDimensionLinesToggle.d.ts.map +1 -0
  266. package/build/types/web-planner-react/src/components/Product/ProductCenter/DimensionLinesToggle/useDimensionLinesToggle.test.d.ts +2 -0
  267. package/build/types/web-planner-react/src/components/Product/ProductCenter/DimensionLinesToggle/useDimensionLinesToggle.test.d.ts.map +1 -0
  268. package/build/types/web-planner-react/src/components/Product/ProductCenter/MobileNavIcons/index.d.ts.map +1 -1
  269. package/build/types/web-planner-react/src/components/Product/ProductCenter/Planner3DImage/NavBar/gold/index.d.ts.map +1 -1
  270. package/build/types/web-planner-react/src/components/Product/ProductCenter/Planner3DImage/NavBar/standard/index.d.ts.map +1 -1
  271. package/build/types/web-planner-react/src/components/Product/ProductCenter/PlannerRTVNext/cameraStep.d.ts +7 -0
  272. package/build/types/web-planner-react/src/components/Product/ProductCenter/PlannerRTVNext/cameraStep.d.ts.map +1 -0
  273. package/build/types/web-planner-react/src/components/Product/ProductCenter/PlannerRTVNext/doorSwap.d.ts +54 -0
  274. package/build/types/web-planner-react/src/components/Product/ProductCenter/PlannerRTVNext/doorSwap.d.ts.map +1 -0
  275. package/build/types/web-planner-react/src/components/Product/ProductCenter/PlannerRTVNext/doorSwapScene.d.ts +8 -0
  276. package/build/types/web-planner-react/src/components/Product/ProductCenter/PlannerRTVNext/doorSwapScene.d.ts.map +1 -0
  277. package/build/types/web-planner-react/src/components/Product/ProductCenter/PlannerRTVNext/index.d.ts.map +1 -1
  278. package/build/types/web-planner-react/src/components/Product/ProductCenter/SceneSelection/index.d.ts +6 -0
  279. package/build/types/web-planner-react/src/components/Product/ProductCenter/SceneSelection/index.d.ts.map +1 -0
  280. package/build/types/web-planner-react/src/components/Product/ProductCenter/ViewerButtonColumn/index.d.ts +8 -0
  281. package/build/types/web-planner-react/src/components/Product/ProductCenter/ViewerButtonColumn/index.d.ts.map +1 -0
  282. package/build/types/web-planner-react/src/components/Product/ProductCenter/ViewerToggles/RoundToggle.d.ts +29 -0
  283. package/build/types/web-planner-react/src/components/Product/ProductCenter/ViewerToggles/RoundToggle.d.ts.map +1 -0
  284. package/build/types/web-planner-react/src/components/Product/ProductCenter/ViewerToggles/index.d.ts +24 -0
  285. package/build/types/web-planner-react/src/components/Product/ProductCenter/ViewerToggles/index.d.ts.map +1 -0
  286. package/build/types/web-planner-react/src/components/Product/ProductCenter/ViewerToggles/useViewSwitcher.d.ts +16 -0
  287. package/build/types/web-planner-react/src/components/Product/ProductCenter/ViewerToggles/useViewSwitcher.d.ts.map +1 -0
  288. package/build/types/web-planner-react/src/components/Product/ProductCenter/ViewerToggles/useViewSwitcher.test.d.ts +2 -0
  289. package/build/types/web-planner-react/src/components/Product/ProductCenter/ViewerToggles/useViewSwitcher.test.d.ts.map +1 -0
  290. package/build/types/web-planner-react/src/components/Product/ProductHeader/ProductHeader/standard/index.d.ts.map +1 -1
  291. package/build/types/web-planner-react/src/components/Settings/SettingsScroller/SettingsItem/ItemPalette/DoorPlanner/index.d.ts.map +1 -1
  292. package/build/types/web-planner-react/src/components/Settings/SettingsScroller/SettingsItem/ItemPalette/ShelfPlanner/ShelfAccessoires/index.d.ts +5 -1
  293. package/build/types/web-planner-react/src/components/Settings/SettingsScroller/SettingsItem/ItemPalette/ShelfPlanner/ShelfAccessoires/index.d.ts.map +1 -1
  294. package/build/types/web-planner-react/src/components/Settings/SettingsScroller/SettingsItem/ItemPalette/ShelfPlanner/index.d.ts.map +1 -1
  295. package/build/types/web-planner-react/src/components/Settings/SettingsScroller/SettingsItem/index.d.ts +2 -0
  296. package/build/types/web-planner-react/src/components/Settings/SettingsScroller/SettingsItem/index.d.ts.map +1 -1
  297. package/build/types/web-planner-react/src/components/Settings/SettingsScroller/index.d.ts.map +1 -1
  298. package/build/types/web-planner-react/src/components/Settings/SettingsSwiper/DrawerSwipeHint.d.ts +11 -0
  299. package/build/types/web-planner-react/src/components/Settings/SettingsSwiper/DrawerSwipeHint.d.ts.map +1 -0
  300. package/build/types/web-planner-react/src/components/Settings/SettingsSwiper/index.d.ts.map +1 -1
  301. package/build/types/web-planner-react/src/components/Settings/SettingsSwiper/swipeCoach.d.ts +14 -0
  302. package/build/types/web-planner-react/src/components/Settings/SettingsSwiper/swipeCoach.d.ts.map +1 -0
  303. package/build/types/web-planner-react/src/components/Settings/SettingsSwiper/swipeCoach.test.d.ts +5 -0
  304. package/build/types/web-planner-react/src/components/Settings/SettingsSwiper/swipeCoach.test.d.ts.map +1 -0
  305. package/build/types/web-planner-react/src/components/Settings/SettingsSwiper/useSteppedWithoutSwipe.d.ts +11 -0
  306. package/build/types/web-planner-react/src/components/Settings/SettingsSwiper/useSteppedWithoutSwipe.d.ts.map +1 -0
  307. package/build/types/web-planner-react/src/components/Settings/SettingsSwiper/useSteppedWithoutSwipe.test.d.ts +2 -0
  308. package/build/types/web-planner-react/src/components/Settings/SettingsSwiper/useSteppedWithoutSwipe.test.d.ts.map +1 -0
  309. package/build/types/web-planner-react/src/components/Settings/SettingsSwiper/useSwiperHook.d.ts +2 -1
  310. package/build/types/web-planner-react/src/components/Settings/SettingsSwiper/useSwiperHook.d.ts.map +1 -1
  311. package/build/types/web-planner-react/src/components/TabGroup/index.d.ts.map +1 -1
  312. package/build/types/web-planner-react/src/index.d.ts +1 -1
  313. package/build/types/web-planner-react/src/index.d.ts.map +1 -1
  314. package/build/types/web-planner-react/src/model/DivaViewHandler.d.ts +28 -9
  315. package/build/types/web-planner-react/src/model/DivaViewHandler.d.ts.map +1 -1
  316. package/build/types/web-planner-react/src/model/Palette/PaletteViewHandler.d.ts +6 -4
  317. package/build/types/web-planner-react/src/model/Palette/PaletteViewHandler.d.ts.map +1 -1
  318. package/build/types/web-planner-react/src/model/Palette/Steps/PlannerStep/PlannerItems.d.ts +0 -6
  319. package/build/types/web-planner-react/src/model/Palette/Steps/PlannerStep/PlannerItems.d.ts.map +1 -1
  320. package/build/types/web-planner-react/src/model/Planner/ViewPlannerHandler.d.ts +8 -1
  321. package/build/types/web-planner-react/src/model/Planner/ViewPlannerHandler.d.ts.map +1 -1
  322. package/build/types/web-planner-react/src/model/Planner/captureSetImages.d.ts +38 -7
  323. package/build/types/web-planner-react/src/model/Planner/captureSetImages.d.ts.map +1 -1
  324. package/build/types/web-planner-react/src/model/Planner/exportSetGlb.d.ts +8 -3
  325. package/build/types/web-planner-react/src/model/Planner/exportSetGlb.d.ts.map +1 -1
  326. package/build/types/web-planner-react/src/model/Planner/loadRtvStore.d.ts +3 -0
  327. package/build/types/web-planner-react/src/model/Planner/loadRtvStore.d.ts.map +1 -1
  328. package/build/types/web-planner-react/src/model/Planner/plannerScene2D.d.ts +17 -0
  329. package/build/types/web-planner-react/src/model/Planner/plannerScene2D.d.ts.map +1 -0
  330. package/build/types/web-planner-react/src/model/States/UIState/Product/index.d.ts +42 -8
  331. package/build/types/web-planner-react/src/model/States/UIState/Product/index.d.ts.map +1 -1
  332. package/build/types/web-planner-react/src/model/States/UIState/Settings/index.d.ts +9 -2
  333. package/build/types/web-planner-react/src/model/States/UIState/Settings/index.d.ts.map +1 -1
  334. package/build/types/web-planner-react/src/model/States/UIState/Tabgroups/index.d.ts +2 -0
  335. package/build/types/web-planner-react/src/model/States/UIState/Tabgroups/index.d.ts.map +1 -1
  336. package/build/types/web-planner-react/src/model/States/UIState/index.d.ts +4 -1
  337. package/build/types/web-planner-react/src/model/States/UIState/index.d.ts.map +1 -1
  338. package/build/types/web-planner-react/src/model/TabGroup/ConfiguratorStructureHandler.d.ts.map +1 -1
  339. package/build/types/web-planner-react/src/model/doorsToggle.d.ts +44 -0
  340. package/build/types/web-planner-react/src/model/doorsToggle.d.ts.map +1 -0
  341. package/build/types/web-planner-react/src/model/doorsToggle.test.d.ts +2 -0
  342. package/build/types/web-planner-react/src/model/doorsToggle.test.d.ts.map +1 -0
  343. package/build/types/web-planner-react/src/model/stateToggles.d.ts +28 -0
  344. package/build/types/web-planner-react/src/model/stateToggles.d.ts.map +1 -0
  345. package/build/types/web-planner-react/src/model/stateToggles.test.d.ts +2 -0
  346. package/build/types/web-planner-react/src/model/stateToggles.test.d.ts.map +1 -0
  347. package/build/types/web-planner-react/src/model/types.d.ts +16 -0
  348. package/build/types/web-planner-react/src/model/types.d.ts.map +1 -1
  349. package/build/types/web-planner-react/src/tests/ArLaunchButton.whenExportable.test.d.ts +2 -0
  350. package/build/types/web-planner-react/src/tests/ArLaunchButton.whenExportable.test.d.ts.map +1 -0
  351. package/build/types/web-planner-react/src/tests/ArticleOverviewSlider.arEntry.test.d.ts +2 -0
  352. package/build/types/web-planner-react/src/tests/ArticleOverviewSlider.arEntry.test.d.ts.map +1 -0
  353. package/build/types/web-planner-react/src/tests/ContentItemWrapper.outsideClick.test.d.ts +2 -0
  354. package/build/types/web-planner-react/src/tests/ContentItemWrapper.outsideClick.test.d.ts.map +1 -0
  355. package/build/types/web-planner-react/src/tests/DivaViewHandler.roomScenes.test.d.ts +2 -0
  356. package/build/types/web-planner-react/src/tests/DivaViewHandler.roomScenes.test.d.ts.map +1 -0
  357. package/build/types/web-planner-react/src/tests/PaletteViewHandler.shelfPlacement.test.d.ts +2 -0
  358. package/build/types/web-planner-react/src/tests/PaletteViewHandler.shelfPlacement.test.d.ts.map +1 -0
  359. package/build/types/web-planner-react/src/tests/ProductState.analyzerErrors.test.d.ts +2 -0
  360. package/build/types/web-planner-react/src/tests/ProductState.analyzerErrors.test.d.ts.map +1 -0
  361. package/build/types/web-planner-react/src/tests/ProductState.sceneDimensionLines.test.d.ts +2 -0
  362. package/build/types/web-planner-react/src/tests/ProductState.sceneDimensionLines.test.d.ts.map +1 -0
  363. package/build/types/web-planner-react/src/tests/ProductState.summaryRenderings.test.d.ts +2 -0
  364. package/build/types/web-planner-react/src/tests/ProductState.summaryRenderings.test.d.ts.map +1 -0
  365. package/build/types/web-planner-react/src/tests/ShelfAccessoires.touchDrag.test.d.ts +2 -0
  366. package/build/types/web-planner-react/src/tests/ShelfAccessoires.touchDrag.test.d.ts.map +1 -0
  367. package/build/types/web-planner-react/src/tests/TabGroupState.exitSummary.test.d.ts +2 -0
  368. package/build/types/web-planner-react/src/tests/TabGroupState.exitSummary.test.d.ts.map +1 -0
  369. package/build/types/web-planner-react/src/tests/UIState.mobileView.test.d.ts +2 -0
  370. package/build/types/web-planner-react/src/tests/UIState.mobileView.test.d.ts.map +1 -0
  371. package/build/types/web-planner-react/src/tests/ViewPlannerHandler.shownSelection.test.d.ts +2 -0
  372. package/build/types/web-planner-react/src/tests/ViewPlannerHandler.shownSelection.test.d.ts.map +1 -0
  373. package/build/types/web-planner-react/src/tests/planner/SceneSelection.test.d.ts +2 -0
  374. package/build/types/web-planner-react/src/tests/planner/SceneSelection.test.d.ts.map +1 -0
  375. package/build/types/web-planner-react/src/tests/planner/cameraStep.test.d.ts +2 -0
  376. package/build/types/web-planner-react/src/tests/planner/cameraStep.test.d.ts.map +1 -0
  377. package/build/types/web-planner-react/src/tests/planner/componentsBundle.test.d.ts +2 -0
  378. package/build/types/web-planner-react/src/tests/planner/componentsBundle.test.d.ts.map +1 -0
  379. package/build/types/web-planner-react/src/tests/planner/doorSwap.test.d.ts +2 -0
  380. package/build/types/web-planner-react/src/tests/planner/doorSwap.test.d.ts.map +1 -0
  381. package/build/types/web-planner-react/src/tests/planner/rtvNextImports.test.d.ts +2 -0
  382. package/build/types/web-planner-react/src/tests/planner/rtvNextImports.test.d.ts.map +1 -0
  383. package/build/types/web-planner-react/src/utils/buttonControlProps.d.ts +13 -0
  384. package/build/types/web-planner-react/src/utils/buttonControlProps.d.ts.map +1 -0
  385. package/build/types/web-planner-react/src/utils/rtvNext.d.ts +6 -0
  386. package/build/types/web-planner-react/src/utils/rtvNext.d.ts.map +1 -1
  387. package/build/umd/1011.diva-web-planner-react.umd.min.js +1 -1
  388. package/build/umd/1017.diva-web-planner-react.umd.min.js +1 -1
  389. package/build/umd/1026.diva-web-planner-react.umd.min.js +1 -1
  390. package/build/umd/1064.diva-web-planner-react.umd.min.js +1 -1
  391. package/build/umd/1067.diva-web-planner-react.umd.min.js +1 -1
  392. package/build/umd/1081.diva-web-planner-react.umd.min.js +1 -1
  393. package/build/umd/117.diva-web-planner-react.umd.min.js +1 -1
  394. package/build/umd/1247.diva-web-planner-react.umd.min.js +1 -1
  395. package/build/umd/1280.diva-web-planner-react.umd.min.js +1 -1
  396. package/build/umd/1313.diva-web-planner-react.umd.min.js +1 -1
  397. package/build/umd/1316.diva-web-planner-react.umd.min.js +1 -1
  398. package/build/umd/1421.diva-web-planner-react.umd.min.js +1 -1
  399. package/build/umd/1429.diva-web-planner-react.umd.min.js +1 -1
  400. package/build/umd/1449.diva-web-planner-react.umd.min.js +1 -1
  401. package/build/umd/1450.diva-web-planner-react.umd.min.js +1 -1
  402. package/build/umd/1451.diva-web-planner-react.umd.min.js +1 -1
  403. package/build/umd/1461.diva-web-planner-react.umd.min.js +2 -0
  404. package/build/umd/1461.diva-web-planner-react.umd.min.js.LICENSE.txt +1 -0
  405. package/build/umd/1488.diva-web-planner-react.umd.min.js +1 -1
  406. package/build/umd/1500.diva-web-planner-react.umd.min.js +1 -1
  407. package/build/umd/1559.diva-web-planner-react.umd.min.js +1 -1
  408. package/build/umd/1596.diva-web-planner-react.umd.min.js +1 -1
  409. package/build/umd/172.diva-web-planner-react.umd.min.js +1 -1
  410. package/build/umd/181.diva-web-planner-react.umd.min.js +1 -1
  411. package/build/umd/1839.diva-web-planner-react.umd.min.js +1 -1
  412. package/build/umd/1899.diva-web-planner-react.umd.min.js +1 -1
  413. package/build/umd/1912.diva-web-planner-react.umd.min.js +1 -1
  414. package/build/umd/1919.diva-web-planner-react.umd.min.js +1 -1
  415. package/build/umd/1932.diva-web-planner-react.umd.min.js +1 -1
  416. package/build/umd/1970.diva-web-planner-react.umd.min.js +1 -1
  417. package/build/umd/1972.diva-web-planner-react.umd.min.js +1 -1
  418. package/build/umd/2016.diva-web-planner-react.umd.min.js +1 -1
  419. package/build/umd/2018.diva-web-planner-react.umd.min.js +1 -1
  420. package/build/umd/2027.diva-web-planner-react.umd.min.js +1 -1
  421. package/build/umd/2077.diva-web-planner-react.umd.min.js +1 -1
  422. package/build/umd/2143.diva-web-planner-react.umd.min.js +1 -1
  423. package/build/umd/2147.diva-web-planner-react.umd.min.js +1 -1
  424. package/build/umd/2210.diva-web-planner-react.umd.min.js +1 -1
  425. package/build/umd/2240.diva-web-planner-react.umd.min.js +2 -0
  426. package/build/umd/2240.diva-web-planner-react.umd.min.js.LICENSE.txt +1 -0
  427. package/build/umd/226.diva-web-planner-react.umd.min.js +2 -0
  428. package/build/umd/226.diva-web-planner-react.umd.min.js.LICENSE.txt +1 -0
  429. package/build/umd/2407.diva-web-planner-react.umd.min.js +1 -1
  430. package/build/umd/2411.diva-web-planner-react.umd.min.js +1 -1
  431. package/build/umd/2458.diva-web-planner-react.umd.min.js +1 -1
  432. package/build/umd/2476.diva-web-planner-react.umd.min.js +2 -0
  433. package/build/umd/2476.diva-web-planner-react.umd.min.js.LICENSE.txt +1 -0
  434. package/build/umd/2496.diva-web-planner-react.umd.min.js +1 -1
  435. package/build/umd/2535.diva-web-planner-react.umd.min.js +1 -1
  436. package/build/umd/2582.diva-web-planner-react.umd.min.js +1 -1
  437. package/build/umd/2586.diva-web-planner-react.umd.min.js +1 -1
  438. package/build/umd/2659.diva-web-planner-react.umd.min.js +1 -1
  439. package/build/umd/2667.diva-web-planner-react.umd.min.js +1 -1
  440. package/build/umd/269.diva-web-planner-react.umd.min.js +1 -1
  441. package/build/umd/274.diva-web-planner-react.umd.min.js +1 -1
  442. package/build/umd/2765.diva-web-planner-react.umd.min.js +1 -1
  443. package/build/umd/2951.diva-web-planner-react.umd.min.js +1 -1
  444. package/build/umd/3090.diva-web-planner-react.umd.min.js +1 -1
  445. package/build/umd/3156.diva-web-planner-react.umd.min.js +1 -1
  446. package/build/umd/3167.diva-web-planner-react.umd.min.js +1 -1
  447. package/build/umd/3189.diva-web-planner-react.umd.min.js +1 -1
  448. package/build/umd/3221.diva-web-planner-react.umd.min.js +1 -1
  449. package/build/umd/3226.diva-web-planner-react.umd.min.js +1 -1
  450. package/build/umd/3257.diva-web-planner-react.umd.min.js +1 -1
  451. package/build/umd/3276.diva-web-planner-react.umd.min.js +1 -1
  452. package/build/umd/3340.diva-web-planner-react.umd.min.js +1 -1
  453. package/build/umd/3361.diva-web-planner-react.umd.min.js +1 -1
  454. package/build/umd/3374.diva-web-planner-react.umd.min.js +2 -0
  455. package/build/umd/3374.diva-web-planner-react.umd.min.js.LICENSE.txt +1 -0
  456. package/build/umd/3455.diva-web-planner-react.umd.min.js +2 -0
  457. package/build/umd/3455.diva-web-planner-react.umd.min.js.LICENSE.txt +1 -0
  458. package/build/umd/3492.diva-web-planner-react.umd.min.js +1 -1
  459. package/build/umd/3562.diva-web-planner-react.umd.min.js +1 -1
  460. package/build/umd/3591.diva-web-planner-react.umd.min.js +2 -0
  461. package/build/umd/3591.diva-web-planner-react.umd.min.js.LICENSE.txt +1 -0
  462. package/build/umd/3596.diva-web-planner-react.umd.min.js +1 -1
  463. package/build/umd/3613.diva-web-planner-react.umd.min.js +1 -1
  464. package/build/umd/3863.diva-web-planner-react.umd.min.js +1 -1
  465. package/build/umd/3879.diva-web-planner-react.umd.min.js +1 -1
  466. package/build/umd/39.diva-web-planner-react.umd.min.js +1 -1
  467. package/build/umd/3947.diva-web-planner-react.umd.min.js +1 -1
  468. package/build/umd/3981.diva-web-planner-react.umd.min.js +1 -1
  469. package/build/umd/4042.diva-web-planner-react.umd.min.js +1 -1
  470. package/build/umd/4069.diva-web-planner-react.umd.min.js +1 -1
  471. package/build/umd/4081.diva-web-planner-react.umd.min.js +1 -1
  472. package/build/umd/4093.diva-web-planner-react.umd.min.js +1 -1
  473. package/build/umd/4103.diva-web-planner-react.umd.min.js +1 -1
  474. package/build/umd/412.diva-web-planner-react.umd.min.js +1 -1
  475. package/build/umd/4167.diva-web-planner-react.umd.min.js +1 -1
  476. package/build/umd/4178.diva-web-planner-react.umd.min.js +1 -1
  477. package/build/umd/4286.diva-web-planner-react.umd.min.js +1 -1
  478. package/build/umd/432.diva-web-planner-react.umd.min.js +1 -1
  479. package/build/umd/4342.diva-web-planner-react.umd.min.js +1 -1
  480. package/build/umd/4414.diva-web-planner-react.umd.min.js +2 -0
  481. package/build/umd/4414.diva-web-planner-react.umd.min.js.LICENSE.txt +1 -0
  482. package/build/umd/4533.diva-web-planner-react.umd.min.js +1 -1
  483. package/build/umd/4558.diva-web-planner-react.umd.min.js +1 -1
  484. package/build/umd/4572.diva-web-planner-react.umd.min.js +1 -1
  485. package/build/umd/4580.diva-web-planner-react.umd.min.js +1 -1
  486. package/build/umd/4585.diva-web-planner-react.umd.min.js +1 -1
  487. package/build/umd/4606.diva-web-planner-react.umd.min.js +1 -1
  488. package/build/umd/4642.diva-web-planner-react.umd.min.js +1 -1
  489. package/build/umd/4690.diva-web-planner-react.umd.min.js +2 -0
  490. package/build/umd/4690.diva-web-planner-react.umd.min.js.LICENSE.txt +1 -0
  491. package/build/umd/4903.diva-web-planner-react.umd.min.js +1 -1
  492. package/build/umd/5067.diva-web-planner-react.umd.min.js +1 -1
  493. package/build/umd/509.diva-web-planner-react.umd.min.js +1 -1
  494. package/build/umd/5115.diva-web-planner-react.umd.min.js +1 -1
  495. package/build/umd/5162.diva-web-planner-react.umd.min.js +1 -1
  496. package/build/umd/5174.diva-web-planner-react.umd.min.js +1 -1
  497. package/build/umd/5222.diva-web-planner-react.umd.min.js +1 -1
  498. package/build/umd/5262.diva-web-planner-react.umd.min.js +1 -1
  499. package/build/umd/5414.diva-web-planner-react.umd.min.js +1 -1
  500. package/build/umd/5464.diva-web-planner-react.umd.min.js +1 -1
  501. package/build/umd/549.diva-web-planner-react.umd.min.js +1 -1
  502. package/build/umd/5499.diva-web-planner-react.umd.min.js +1 -1
  503. package/build/umd/5533.diva-web-planner-react.umd.min.js +2 -0
  504. package/build/umd/5533.diva-web-planner-react.umd.min.js.LICENSE.txt +1 -0
  505. package/build/umd/5552.diva-web-planner-react.umd.min.js +1 -1
  506. package/build/umd/5656.diva-web-planner-react.umd.min.js +1 -1
  507. package/build/umd/5663.diva-web-planner-react.umd.min.js +1 -1
  508. package/build/umd/567.diva-web-planner-react.umd.min.js +1 -1
  509. package/build/umd/5719.diva-web-planner-react.umd.min.js +1 -1
  510. package/build/umd/5755.diva-web-planner-react.umd.min.js +2 -0
  511. package/build/umd/5755.diva-web-planner-react.umd.min.js.LICENSE.txt +1 -0
  512. package/build/umd/5765.diva-web-planner-react.umd.min.js +1 -1
  513. package/build/umd/5782.diva-web-planner-react.umd.min.js +1 -1
  514. package/build/umd/580.diva-web-planner-react.umd.min.js +2 -0
  515. package/build/umd/580.diva-web-planner-react.umd.min.js.LICENSE.txt +1 -0
  516. package/build/umd/5812.diva-web-planner-react.umd.min.js +1 -1
  517. package/build/umd/5859.diva-web-planner-react.umd.min.js +1 -1
  518. package/build/umd/5889.diva-web-planner-react.umd.min.js +1 -1
  519. package/build/umd/5992.diva-web-planner-react.umd.min.js +2 -0
  520. package/build/umd/5992.diva-web-planner-react.umd.min.js.LICENSE.txt +1 -0
  521. package/build/umd/6025.diva-web-planner-react.umd.min.js +1 -1
  522. package/build/umd/6041.diva-web-planner-react.umd.min.js +1 -1
  523. package/build/umd/6079.diva-web-planner-react.umd.min.js +1 -1
  524. package/build/umd/612.diva-web-planner-react.umd.min.js +1 -1
  525. package/build/umd/6196.diva-web-planner-react.umd.min.js +1 -1
  526. package/build/umd/6253.diva-web-planner-react.umd.min.js +1 -1
  527. package/build/umd/6315.diva-web-planner-react.umd.min.js +1 -1
  528. package/build/umd/6335.diva-web-planner-react.umd.min.js +1 -1
  529. package/build/umd/6343.diva-web-planner-react.umd.min.js +1 -1
  530. package/build/umd/646.diva-web-planner-react.umd.min.js +1 -1
  531. package/build/umd/6561.diva-web-planner-react.umd.min.js +1 -1
  532. package/build/umd/6609.diva-web-planner-react.umd.min.js +1 -1
  533. package/build/umd/6641.diva-web-planner-react.umd.min.js +1 -1
  534. package/build/umd/67.diva-web-planner-react.umd.min.js +1 -1
  535. package/build/umd/6706.diva-web-planner-react.umd.min.js +1 -1
  536. package/build/umd/673.diva-web-planner-react.umd.min.js +1 -1
  537. package/build/umd/6871.diva-web-planner-react.umd.min.js +1 -1
  538. package/build/umd/6882.diva-web-planner-react.umd.min.js +1 -1
  539. package/build/umd/6937.diva-web-planner-react.umd.min.js +1 -1
  540. package/build/umd/6960.diva-web-planner-react.umd.min.js +1 -1
  541. package/build/umd/7007.diva-web-planner-react.umd.min.js +2 -0
  542. package/build/umd/7007.diva-web-planner-react.umd.min.js.LICENSE.txt +1 -0
  543. package/build/umd/7026.diva-web-planner-react.umd.min.js +1 -1
  544. package/build/umd/7037.diva-web-planner-react.umd.min.js +1 -1
  545. package/build/umd/7040.diva-web-planner-react.umd.min.js +1 -1
  546. package/build/umd/7046.diva-web-planner-react.umd.min.js +1 -1
  547. package/build/umd/7052.diva-web-planner-react.umd.min.js +1 -1
  548. package/build/umd/7196.diva-web-planner-react.umd.min.js +1 -1
  549. package/build/umd/720.diva-web-planner-react.umd.min.js +1 -1
  550. package/build/umd/7311.diva-web-planner-react.umd.min.js +1 -1
  551. package/build/umd/7406.diva-web-planner-react.umd.min.js +1 -1
  552. package/build/umd/7442.diva-web-planner-react.umd.min.js +1 -1
  553. package/build/umd/7449.diva-web-planner-react.umd.min.js +1 -1
  554. package/build/umd/7472.diva-web-planner-react.umd.min.js +1 -1
  555. package/build/umd/7529.diva-web-planner-react.umd.min.js +1 -1
  556. package/build/umd/7577.diva-web-planner-react.umd.min.js +1 -1
  557. package/build/umd/7623.diva-web-planner-react.umd.min.js +1 -1
  558. package/build/umd/7625.diva-web-planner-react.umd.min.js +1 -1
  559. package/build/umd/7654.diva-web-planner-react.umd.min.js +1 -1
  560. package/build/umd/7682.diva-web-planner-react.umd.min.js +1 -1
  561. package/build/umd/7684.diva-web-planner-react.umd.min.js +1 -1
  562. package/build/umd/769.diva-web-planner-react.umd.min.js +1 -1
  563. package/build/umd/7792.diva-web-planner-react.umd.min.js +1 -1
  564. package/build/umd/7847.diva-web-planner-react.umd.min.js +1 -1
  565. package/build/umd/7853.diva-web-planner-react.umd.min.js +1 -1
  566. package/build/umd/7887.diva-web-planner-react.umd.min.js +1 -1
  567. package/build/umd/7928.diva-web-planner-react.umd.min.js +1 -1
  568. package/build/umd/8029.diva-web-planner-react.umd.min.js +1 -1
  569. package/build/umd/8063.diva-web-planner-react.umd.min.js +1 -1
  570. package/build/umd/8234.diva-web-planner-react.umd.min.js +1 -1
  571. package/build/umd/8445.diva-web-planner-react.umd.min.js +1 -1
  572. package/build/umd/8449.diva-web-planner-react.umd.min.js +1 -1
  573. package/build/umd/8487.diva-web-planner-react.umd.min.js +1 -1
  574. package/build/umd/858.diva-web-planner-react.umd.min.js +1 -1
  575. package/build/umd/8584.diva-web-planner-react.umd.min.js +1 -1
  576. package/build/umd/859.diva-web-planner-react.umd.min.js +1 -1
  577. package/build/umd/8617.diva-web-planner-react.umd.min.js +2 -0
  578. package/build/umd/8617.diva-web-planner-react.umd.min.js.LICENSE.txt +1 -0
  579. package/build/umd/8629.diva-web-planner-react.umd.min.js +1 -1
  580. package/build/umd/863.diva-web-planner-react.umd.min.js +1 -1
  581. package/build/umd/8701.diva-web-planner-react.umd.min.js +1 -1
  582. package/build/umd/8717.diva-web-planner-react.umd.min.js +1 -1
  583. package/build/umd/8742.diva-web-planner-react.umd.min.js +1 -1
  584. package/build/umd/8757.diva-web-planner-react.umd.min.js +2 -0
  585. package/build/umd/8757.diva-web-planner-react.umd.min.js.LICENSE.txt +1 -0
  586. package/build/umd/8837.diva-web-planner-react.umd.min.js +1 -1
  587. package/build/umd/8850.diva-web-planner-react.umd.min.js +1 -1
  588. package/build/umd/8882.diva-web-planner-react.umd.min.js +1 -1
  589. package/build/umd/8938.diva-web-planner-react.umd.min.js +1 -1
  590. package/build/umd/8956.diva-web-planner-react.umd.min.js +1 -1
  591. package/build/umd/9002.diva-web-planner-react.umd.min.js +1 -1
  592. package/build/umd/902.diva-web-planner-react.umd.min.js +1 -1
  593. package/build/umd/9121.diva-web-planner-react.umd.min.js +1 -1
  594. package/build/umd/9147.diva-web-planner-react.umd.min.js +1 -1
  595. package/build/umd/9273.diva-web-planner-react.umd.min.js +1 -1
  596. package/build/umd/9290.diva-web-planner-react.umd.min.js +1 -1
  597. package/build/umd/9291.diva-web-planner-react.umd.min.js +1 -1
  598. package/build/umd/9524.diva-web-planner-react.umd.min.js +1 -1
  599. package/build/umd/9566.diva-web-planner-react.umd.min.js +1 -1
  600. package/build/umd/9587.diva-web-planner-react.umd.min.js +1 -1
  601. package/build/umd/9607.diva-web-planner-react.umd.min.js +1 -1
  602. package/build/umd/9638.diva-web-planner-react.umd.min.js +1 -1
  603. package/build/umd/9643.diva-web-planner-react.umd.min.js +1 -1
  604. package/build/umd/9673.diva-web-planner-react.umd.min.js +1 -1
  605. package/build/umd/9715.diva-web-planner-react.umd.min.js +1 -1
  606. package/build/umd/9770.diva-web-planner-react.umd.min.js +1 -1
  607. package/build/umd/9942.diva-web-planner-react.umd.min.js +1 -1
  608. package/build/umd/diva-web-planner-react.umd.min.js +1 -1
  609. package/build/umd/report.html +1 -1
  610. package/package.json +10 -11
  611. package/build/esm/index-c08f2196.js +0 -148
  612. package/build/esm/index-f3c10226.js +0 -218
  613. package/build/umd/1337.diva-web-planner-react.umd.min.js +0 -2
  614. package/build/umd/1337.diva-web-planner-react.umd.min.js.LICENSE.txt +0 -1
  615. package/build/umd/3138.diva-web-planner-react.umd.min.js +0 -2
  616. package/build/umd/3138.diva-web-planner-react.umd.min.js.LICENSE.txt +0 -1
  617. package/build/umd/5406.diva-web-planner-react.umd.min.js +0 -2
  618. package/build/umd/5406.diva-web-planner-react.umd.min.js.LICENSE.txt +0 -1
  619. package/build/umd/8471.diva-web-planner-react.umd.min.js +0 -2
  620. package/build/umd/8471.diva-web-planner-react.umd.min.js.LICENSE.txt +0 -1
  621. package/build/umd/8654.diva-web-planner-react.umd.min.js +0 -2
  622. package/build/umd/8654.diva-web-planner-react.umd.min.js.LICENSE.txt +0 -1
@@ -1,16 +1,17 @@
1
1
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
- import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
3
2
  import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
4
- import { g as blobToDataUrl, h as reencodeJpegDataUrl, u as useViewHandler, i as useRTVAnalyzerComponentsFromPlanner, j as registerRtvNextViewer } from './index-9bc78e81.js';
5
- import { useRef, useEffect, useMemo, useState } from 'react';
3
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
4
+ import { g as blobToDataUrl, r as reencodeJpegDataUrl, u as useViewHandler, h as useRTVAnalyzerComponentsFromPlanner, i as registerRtvNextViewer, n as notifyRtvSceneReady, j as buildPlannerScene2D, k as environmentPreset } from './index-3b485c37.js';
5
+ import { useRef, useEffect, useState, useMemo } from 'react';
6
6
  import { observer } from 'mobx-react-lite';
7
- import { getLogger, useDivaCore } from '@crystaldesign/diva-core';
8
- import RealTimeRendererNext, { emitConfig, ENVIRONMENT_CONFIG, useRTVStore, WHITE_ROOM_PRESET, getDimensionConfigs, buildScene2D } from '@crystaldesign/real-time-viewer-next';
7
+ import { getLogger, useDivaCore, useTranslation } from '@crystaldesign/diva-core';
8
+ import RealTimeRendererNext, { emitConfig, ENVIRONMENT_CONFIG, useRTVStore, doorKeyOf, qualifiedElementKey, WHITE_ROOM_PRESET, findPlannedAccessory, parseAccessoryPath, buildScene2D, getDimensionConfigs } from '@crystaldesign/real-time-viewer-next';
9
9
  import { bootMark } from '@crystaldesign/web-planner-logic';
10
- import { A as ACCESSORY_PLACEMENT_MODE } from './accessoryPlacementMode-c8256443.js';
10
+ import { A as ACCESSORY_PLACEMENT_MODE } from './accessoryPlacementMode-80e0ec4d.js';
11
11
  import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
12
12
  import _regeneratorRuntime from '@babel/runtime/regenerator';
13
- import { jsx } from 'react/jsx-runtime';
13
+ import { swapDoorSlotsByKey, useDoorSwapTexts, isDoorSwap3DStep, doorPlannerSlots, findDoorPlannerPalette } from './doorSwap-7221fbe0.js';
14
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
14
15
  import 'react-dynamic-multi-render';
15
16
  import '@babel/runtime/helpers/objectWithoutProperties';
16
17
  import '@babel/runtime/helpers/classCallCheck';
@@ -24,9 +25,9 @@ import 'flat';
24
25
  import 'react-switch';
25
26
  import 'react-countup';
26
27
 
27
- function _createForOfIteratorHelper$1(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$1(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
28
- function _unsupportedIterableToArray$1(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$1(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$1(r, a) : void 0; } }
29
- function _arrayLikeToArray$1(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
28
+ function _createForOfIteratorHelper$2(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$2(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
29
+ function _unsupportedIterableToArray$2(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$2(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$2(r, a) : void 0; } }
30
+ function _arrayLikeToArray$2(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
30
31
  function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
31
32
  function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
32
33
  var LOG = getLogger('Planner', 'CreateImageShot');
@@ -120,7 +121,7 @@ function useCreateImageShot(viewHandler, scene2d, preset) {
120
121
  throw new Error('captureShots returned no result');
121
122
  case 12:
122
123
  images = [];
123
- _iterator = _createForOfIteratorHelper$1(cfg.formats);
124
+ _iterator = _createForOfIteratorHelper$2(cfg.formats);
124
125
  _context.prev = 14;
125
126
  _iterator.s();
126
127
  case 16:
@@ -200,104 +201,134 @@ function useCreateImageShot(viewHandler, scene2d, preset) {
200
201
  }, [enabled, signature, viewHandler, preset]);
201
202
  }
202
203
 
204
+ /**
205
+ * The configurator step as rtv-next's camera table keys it. A shelf planner inside an option tab group is a
206
+ * `SHELFPLANNER` step, as in `DivaViewHandler.getState()`.
207
+ */
208
+ function cameraStepIdentity(configStepKey, tabGroupType, optionCodex) {
209
+ return {
210
+ key: configStepKey,
211
+ type: optionCodex !== null && optionCodex !== void 0 && optionCodex.startsWith('SHELFARTICLE_') ? 'SHELFPLANNER' : tabGroupType,
212
+ optionCodex: optionCodex
213
+ };
214
+ }
215
+
216
+ function _createForOfIteratorHelper$1(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$1(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
217
+ function _unsupportedIterableToArray$1(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$1(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$1(r, a) : void 0; } }
218
+ function _arrayLikeToArray$1(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
219
+ /**
220
+ * The viewer's door list (`doorSwap.doors`): per slot, its live `currentDoor` named as the 3D scene names it — by the
221
+ * element the door was planned on (`elementIdOf` its basket), which a moved door keeps, and its door type.
222
+ */
223
+ function buildDoorSwapDoors(slots, setId, elementIdOf) {
224
+ var doors = [];
225
+ var _iterator = _createForOfIteratorHelper$1(slots),
226
+ _step;
227
+ try {
228
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
229
+ var slot = _step.value;
230
+ var current = slot.door.currentDoor;
231
+ var elementId = elementIdOf(current.BasketId);
232
+ if (elementId == null || elementId < 0) continue;
233
+ doors.push({
234
+ doorKey: doorKeyOf(qualifiedElementKey(setId, elementId), current.Type),
235
+ slotKey: slot.key,
236
+ strictType: current.StrictType
237
+ });
238
+ }
239
+ } catch (err) {
240
+ _iterator.e(err);
241
+ } finally {
242
+ _iterator.f();
243
+ }
244
+ return doors;
245
+ }
246
+
203
247
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
204
248
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
205
249
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
206
250
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
207
251
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
208
252
  var PLANNER_TAB_GROUP_TYPES = new Set(['PLANNER', 'ACC_PLANNER', 'PLANNER_2.0']);
253
+ var MISSING_GEO_MSG_MS = 10000;
209
254
 
210
255
  // Environment config (lighting / HDRI / dome / post-processing / selection look) comes from ONE
211
256
  // channel: the preset — catalog RTV_PRESET meta tag when present, else WHITE_ROOM_PRESET — passed
212
257
  // via `config.profiles` below. With ?rtv-debug mounted, the analyzer preset channel overrides it.
213
258
 
214
- // Shelf-accessory placement UX. `cellBoxes` = current click-a-box-to-place. `autoPlaceDrag` =
259
+ /** True when the placed shelf accessory at this composite key (`"2.0.6"`) is flagged `noDelete`. */
260
+ function isAccessoryDeleteLocked(viewHandler, shelfElementId) {
261
+ var _findPlannedAccessory;
262
+ return !!((_findPlannedAccessory = findPlannedAccessory(viewHandler.settingsState.plannedPlacesOnGrids, parseAccessoryPath(shelfElementId !== null && shelfElementId !== void 0 ? shelfElementId : ''))) !== null && _findPlannedAccessory !== void 0 && (_findPlannedAccessory = _findPlannedAccessory.accessory) !== null && _findPlannedAccessory !== void 0 && _findPlannedAccessory.noDelete);
263
+ }
215
264
 
216
265
  /**
217
- * The planner's `plannedElementsDict` as the viewer's 2D scene — through the translation shared with the
218
- * mass configurator (`buildScene2D` in real-time-viewer-next). `isPoolPlanning` is reported alongside it: a
219
- * planning whose articles carry a dimension config (catalog DIMENSION_CONFIG) is a static drawing (pool plan).
266
+ * The shelf-planner step: its own SHELFPLANNER tab group, or a shelf planner (`SHELFARTICLE_…`) shown as an option step
267
+ * inside another tab group; read through the observable tab-group mirror, so a step change re-renders.
220
268
  */
221
- function buildPlannerScene2D(viewHandler) {
222
- var dict = viewHandler.viewPlannerHandler.plannedElementsDict;
223
- if (!dict || dict.size === 0) return {
224
- isPoolPlanning: false
225
- };
226
- var catalog = viewHandler.divaWebPlanner.getCatalogData();
227
- var dimensionConfigs = getDimensionConfigs(catalog === null || catalog === void 0 ? void 0 : catalog.dimensionConfig2D);
228
- var isPoolPlanning = _toConsumableArray(dict.values()).some(function (plannerElements) {
229
- return plannerElements.some(function (pe) {
230
- return dimensionConfigs[pe.ArticleCodex] != null;
231
- });
232
- });
233
- var scene2d = buildScene2D(dict, {
234
- fontUrl: catalog === null || catalog === void 0 ? void 0 : catalog.plan2DFontUrl,
235
- dimensionConfigs: dimensionConfigs,
236
- // `{...}` placeholders resolve via the article template engine (same syntax as supplierOrderCodex templates),
237
- // e.g. `widthPrefix: '{2300.vCodex}x'` → "6x"
238
- resolveTemplate: function resolveTemplate(basketId, text) {
239
- return viewHandler.divaWebPlanner.convertTemplateToCodex(basketId, text);
240
- }
241
- });
242
- return {
243
- scene2d: scene2d,
244
- isPoolPlanning: isPoolPlanning
245
- };
269
+ function shelfStepActive(viewHandler) {
270
+ var _viewHandler$tabGroup = viewHandler.tabGroupState,
271
+ curTabGroup = _viewHandler$tabGroup.curTabGroup,
272
+ curOption = _viewHandler$tabGroup.curOption;
273
+ if ((curTabGroup === null || curTabGroup === void 0 ? void 0 : curTabGroup.type) === 'SHELFPLANNER' || curOption !== null && curOption !== void 0 && curOption.codex.startsWith('SHELFARTICLE_')) return true;
274
+ return viewHandler.tabgroupTypeActive('SHELFPLANNER');
246
275
  }
247
-
248
276
  /**
249
- * Phase 6 plumbing: build per-element overlay info from `plannedElementsDict`
250
- * + `articleInfos`. The "selected" overlay state is sourced from
251
- * `productState.rtvSelectedElementId` (planner truth) — `articleInfos.isActive`
252
- * is only consulted for `posNr` / `canDelete` metadata so that a configurator
253
- * lag after canvas deselect does not paint a deselected element as selected.
277
+ * Builds per-element overlay info from `plannedElementsDict` + `articleInfos`; "selected" comes from the planner's
278
+ * `productState.rtvSelectedElementId`, as `articleInfos.isActive` lags behind a canvas deselect.
254
279
  */
255
- function buildElementsInfoFromArticles(viewHandler) {
256
- var _viewHandler$tabGroup, _viewHandler$divaWebP, _viewHandler$tabGroup3;
257
- // Keyed by the composite element key (`shelfElementId`): `"2"` for mains, `"2.0.6"` for
258
- // accessories — matches what rtv-next parses from the 3D node name.
280
+ function buildElementsInfoFromArticles(viewHandler, inPlannerStep) {
281
+ var _viewHandler$divaWebP, _viewHandler$divaWebP2, _viewHandler$tabGroup2;
282
+ // Keyed by `qualifiedElementKey(setId, shelfElementId)` (`shelfElementId`: `"2"` for mains, `"2.0.6"` for
283
+ // accessories) — matches what rtv-next parses from the 3D node name; element ids repeat across sets.
259
284
  var map = new Map();
260
285
  var articleInfos = viewHandler.settingsState.articleInfos;
261
286
  var dict = viewHandler.viewPlannerHandler.plannedElementsDict;
262
287
  var selectedElementId = viewHandler.productState.rtvSelectedElementId;
288
+ var selectedSetId = viewHandler.productState.rtvSelectedSetId;
289
+ var activeSetId = (_viewHandler$divaWebP = viewHandler.divaWebPlanner.actSet()) === null || _viewHandler$divaWebP === void 0 ? void 0 : _viewHandler$divaWebP.getSetId();
290
+ var setsById = new Map(viewHandler.divaWebPlanner.setsAsArray.map(function (set) {
291
+ return [set.getSetId(), set];
292
+ }));
263
293
  // In the shelf-planner step planning targets ALL corpora, so no main article is pickable (the
264
294
  // corpus is navigated context → `active`: no hover, click is a no-op) and the shelf accessories
265
295
  // are the only selectable things. Outside the step a shelf accessory is only pickable when the
266
296
  // current configStep makes it configurable (`article.isActive`); otherwise it's inert and clicks/
267
297
  // hover fall through to the parent corpus (`unselectable` → walk-to-ancestor in rtv-next).
268
- var isShelfStep = ((_viewHandler$tabGroup = viewHandler.tabGroupState.curTabGroup) === null || _viewHandler$tabGroup === void 0 ? void 0 : _viewHandler$tabGroup.type) === 'SHELFPLANNER';
298
+ var isShelfStep = shelfStepActive(viewHandler);
299
+ // While the doors are swapped in 3D only the doors are picked: elements are context (`active`).
300
+ var isDoorStep = isDoorSwap3DStep(viewHandler);
269
301
 
270
302
  // AVL/AVR element copy (catalog property ELEMENT_COPY_AVLR): copy buttons on the selected
271
303
  // standard-planner element that plan a copy docked at its free AVL/AVR docking point. `true`
272
304
  // enables them in planner steps; a list of option codexes additionally enables them while one
273
305
  // of those option steps is visited (the configurator-selected element is the copy source).
274
- var inPlannerStep = function (_viewHandler$tabGroup2) {
275
- var t = (_viewHandler$tabGroup2 = viewHandler.tabGroupState.curTabGroup) === null || _viewHandler$tabGroup2 === void 0 ? void 0 : _viewHandler$tabGroup2.type;
276
- return t != null && PLANNER_TAB_GROUP_TYPES.has(t);
277
- }();
278
- var copyAVLRCfg = (_viewHandler$divaWebP = viewHandler.divaWebPlanner.getCatalogData()) === null || _viewHandler$divaWebP === void 0 ? void 0 : _viewHandler$divaWebP.elementCopyAVLR;
279
- var curOptionCodex = (_viewHandler$tabGroup3 = viewHandler.tabGroupState.curOption) === null || _viewHandler$tabGroup3 === void 0 ? void 0 : _viewHandler$tabGroup3.codex;
306
+ var copyAVLRCfg = (_viewHandler$divaWebP2 = viewHandler.divaWebPlanner.getCatalogData()) === null || _viewHandler$divaWebP2 === void 0 ? void 0 : _viewHandler$divaWebP2.elementCopyAVLR;
307
+ var curOptionCodex = (_viewHandler$tabGroup2 = viewHandler.tabGroupState.curOption) === null || _viewHandler$tabGroup2 === void 0 ? void 0 : _viewHandler$tabGroup2.codex;
280
308
  var avlrCopyEnabled = copyAVLRCfg != null && (inPlannerStep || Array.isArray(copyAVLRCfg) && curOptionCodex != null && copyAVLRCfg.includes(curOptionCodex));
281
309
 
282
310
  // State for a single article entry, applying the step-aware accessory/corpus gating above.
283
311
  // Accessory selection is NOT tracked by the numeric `selectedElementId` (rtv-next drives the
284
312
  // accessory outline locally + via `selectedAccessoryKey`), so only mains resolve to `selected`.
285
- var resolveState = function resolveState(elementId, isActive, isShelfAccessoire) {
313
+ var resolveState = function resolveState(setId, elementId, isActive, isShelfAccessoire) {
314
+ if (isDoorStep) return 'active';
286
315
  if (isShelfAccessoire) {
287
316
  if (isShelfStep) return 'selectable';
288
317
  return isActive ? 'selectable' : 'unselectable';
289
318
  }
290
319
  // Main / corpus: never hover- or select-able while planning all corpora in the shelf step.
291
320
  if (isShelfStep) return 'active';
292
- if (elementId !== undefined && selectedElementId === elementId) return 'selected';
321
+ if (elementId !== undefined && selectedElementId === elementId && (selectedSetId == null || selectedSetId === setId)) return 'selected';
293
322
  return isActive ? 'active' : 'selectable';
294
323
  };
295
- var articleByElementId = new Map();
324
+
325
+ // `articleInfos` holds the active set's articles only; another set's article is read off its set, inactive.
326
+ var articleByKey = new Map();
296
327
  for (var _i = 0, _Object$keys = Object.keys(articleInfos); _i < _Object$keys.length; _i++) {
297
328
  var key = _Object$keys[_i];
298
329
  var a = articleInfos[key];
299
330
  if (a.elementId !== undefined) {
300
- articleByElementId.set(a.elementId, {
331
+ articleByKey.set(qualifiedElementKey(a.setId, a.elementId), {
301
332
  setId: a.setId,
302
333
  posNr: String(a.posNr),
303
334
  isActive: a.isActive,
@@ -307,17 +338,31 @@ function buildElementsInfoFromArticles(viewHandler) {
307
338
  });
308
339
  }
309
340
  }
341
+ var otherSetArticle = function otherSetArticle(setId, elementId) {
342
+ var _setsById$get;
343
+ if (setId === activeSetId) return undefined;
344
+ var a = (_setsById$get = setsById.get(setId)) === null || _setsById$get === void 0 ? void 0 : _setsById$get.getArticleByElementId(elementId);
345
+ if (!a) return undefined;
346
+ return {
347
+ setId: setId,
348
+ posNr: String(a.posNr),
349
+ isActive: false,
350
+ canDelete: false,
351
+ isShelfAccessoire: a.isShelfAccessoire,
352
+ shelfElementId: a.shelfElementId
353
+ };
354
+ };
310
355
  if (dict) {
311
356
  dict.forEach(function (plannerElements, setId) {
312
357
  var _iterator = _createForOfIteratorHelper(plannerElements),
313
358
  _step;
314
359
  try {
315
360
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
316
- var _article$shelfElement, _article$setId, _article$canDelete;
361
+ var _articleByKey$get, _article$shelfElement, _article$setId, _article$canDelete;
317
362
  var pe = _step.value;
318
363
  var elementId = pe.getElementId();
319
364
  var parentElementId = pe.getParentElementId();
320
- var article = articleByElementId.get(elementId);
365
+ var article = (_articleByKey$get = articleByKey.get(qualifiedElementKey(setId, elementId))) !== null && _articleByKey$get !== void 0 ? _articleByKey$get : otherSetArticle(setId, elementId);
321
366
  var isBox = pe.getPlannerType() === 'BOX';
322
367
  var canCopyLeft = void 0;
323
368
  var canCopyRight = void 0;
@@ -345,22 +390,22 @@ function buildElementsInfoFromArticles(viewHandler) {
345
390
  // shelf mode → the navigated main group is active; configStep → the current choice is active,
346
391
  // alternatives are selectable. `resolveState` layers the step-aware accessory/corpus gating
347
392
  // on top (see its definition above).
348
- var state = !article ? 'unselectable' : resolveState(elementId, article.isActive, !!article.isShelfAccessoire);
393
+ var state = !article ? 'unselectable' : resolveState(setId, elementId, article.isActive, !!article.isShelfAccessoire);
349
394
 
350
395
  // Element-type taxonomy. `isShelfAccessoire` comes from articleInfos (logic layer); box/
351
396
  // accessoire are detectable from the planner element.
352
397
  var type = article !== null && article !== void 0 && article.isShelfAccessoire ? 'shelfAccessoire' : isBox ? 'boxElement' : parentElementId != null ? 'accessoire' : 'planned';
353
- map.set((_article$shelfElement = article === null || article === void 0 ? void 0 : article.shelfElementId) !== null && _article$shelfElement !== void 0 ? _article$shelfElement : String(elementId), {
398
+ map.set(qualifiedElementKey(setId, (_article$shelfElement = article === null || article === void 0 ? void 0 : article.shelfElementId) !== null && _article$shelfElement !== void 0 ? _article$shelfElement : String(elementId)), {
354
399
  setId: (_article$setId = article === null || article === void 0 ? void 0 : article.setId) !== null && _article$setId !== void 0 ? _article$setId : setId,
355
400
  posNr: article === null || article === void 0 ? void 0 : article.posNr,
356
401
  state: state,
357
402
  type: type,
358
403
  articleCodex: pe.ArticleCodex,
359
- // Shelf accessories are deletable; an AVL/AVR-copy element (ELEMENT_COPY_AVLR) is a planned
360
- // main you can copy right there, so it's deletable too. All other mains keep the
361
- // active/selectable canDelete signal.
362
- canDelete: article !== null && article !== void 0 && article.isShelfAccessoire || copyAlwaysVisible ? true : (_article$canDelete = article === null || article === void 0 ? void 0 : article.canDelete) !== null && _article$canDelete !== void 0 ? _article$canDelete : false,
404
+ // Deletable: shelf accessories unless their cell is `noDelete`, and ELEMENT_COPY_AVLR mains; all other mains follow
405
+ // the active/selectable canDelete signal.
406
+ canDelete: article !== null && article !== void 0 && article.isShelfAccessoire ? !isAccessoryDeleteLocked(viewHandler, article.shelfElementId) : copyAlwaysVisible ? true : (_article$canDelete = article === null || article === void 0 ? void 0 : article.canDelete) !== null && _article$canDelete !== void 0 ? _article$canDelete : false,
363
407
  parentElementId: parentElementId,
408
+ canRotate: elementId != null && viewHandler.divaWebPlanner.isElementWallBound(setId, elementId) ? false : undefined,
364
409
  canCopyLeft: canCopyLeft,
365
410
  canCopyRight: canCopyRight,
366
411
  canCopyTop: canCopyTop,
@@ -382,13 +427,13 @@ function buildElementsInfoFromArticles(viewHandler) {
382
427
  for (var _i2 = 0, _Object$keys2 = Object.keys(articleInfos); _i2 < _Object$keys2.length; _i2++) {
383
428
  var _key = _Object$keys2[_i2];
384
429
  var _a = articleInfos[_key];
385
- if (!_a.isShelfAccessoire || !_a.shelfElementId || map.has(_a.shelfElementId)) continue;
386
- map.set(_a.shelfElementId, {
430
+ if (!_a.isShelfAccessoire || !_a.shelfElementId || map.has(qualifiedElementKey(_a.setId, _a.shelfElementId))) continue;
431
+ map.set(qualifiedElementKey(_a.setId, _a.shelfElementId), {
387
432
  setId: _a.setId,
388
433
  posNr: String(_a.posNr),
389
- state: resolveState(_a.elementId, _a.isActive, true),
434
+ state: resolveState(_a.setId, _a.elementId, _a.isActive, true),
390
435
  type: 'shelfAccessoire',
391
- canDelete: true
436
+ canDelete: !isAccessoryDeleteLocked(viewHandler, _a.shelfElementId)
392
437
  });
393
438
  }
394
439
  return map;
@@ -400,40 +445,20 @@ function buildElementsInfoFromArticles(viewHandler) {
400
445
  * codex (for select). Looks up `plannedPlacesOnGrids` by the parent element key + grid idx + cell.
401
446
  */
402
447
  function resolveAccessoryTargets(viewHandler, ref) {
403
- var _viewHandler$settings;
404
- // `plannedPlacesOnGrids[].elementId` is the `E`-prefixed form ("E1"); the composite key from
405
- // `shelfElementId`/`parseElementKey` is the bare form ("1"). Strip the leading `E` to match.
406
- var parent = (_viewHandler$settings = viewHandler.settingsState.plannedPlacesOnGrids) === null || _viewHandler$settings === void 0 ? void 0 : _viewHandler$settings.find(function (p) {
407
- var _p$elementId;
408
- return ((_p$elementId = p.elementId) !== null && _p$elementId !== void 0 ? _p$elementId : '').replace(/^E/, '') === ref.parentElementKey;
409
- });
410
- if (!parent) return null;
411
- var accBasketId;
412
- var accCodex;
413
- var gridName;
414
- for (var _i3 = 0, _Object$keys3 = Object.keys(parent.grids); _i3 < _Object$keys3.length; _i3++) {
415
- var name = _Object$keys3[_i3];
416
- var g = parent.grids[name];
417
- if (g.idx !== ref.gridId) continue;
418
- gridName = name;
419
- var acc = g.accessories.find(function (a) {
420
- return a.index === ref.cellIdx;
421
- });
422
- if (acc) {
423
- accBasketId = acc.basketId;
424
- accCodex = acc.articleCodex;
425
- break;
426
- }
427
- }
448
+ var _viewHandler$divaWebP3, _found$accessory, _found$accessory2;
449
+ // `plannedPlacesOnGrids` describes the active set only; another set's element key would match the wrong shelf.
450
+ if (ref.setId !== ((_viewHandler$divaWebP3 = viewHandler.divaWebPlanner.actSet()) === null || _viewHandler$divaWebP3 === void 0 ? void 0 : _viewHandler$divaWebP3.getSetId())) return null;
451
+ var found = findPlannedAccessory(viewHandler.settingsState.plannedPlacesOnGrids, ref);
452
+ if (!found) return null;
428
453
  return {
429
- parentBasketId: parent.basketId,
430
- accBasketId: accBasketId,
431
- accCodex: accCodex,
432
- gridName: gridName
454
+ parentBasketId: found.parent.basketId,
455
+ accBasketId: (_found$accessory = found.accessory) === null || _found$accessory === void 0 ? void 0 : _found$accessory.basketId,
456
+ accCodex: (_found$accessory2 = found.accessory) === null || _found$accessory2 === void 0 ? void 0 : _found$accessory2.articleCodex,
457
+ gridName: found.gridName
433
458
  };
434
459
  }
435
460
  var PlannerRTVNext = function PlannerRTVNext() {
436
- var _scene$isPoolPlanning, _ref, _viewHandler$divaWebP2, _viewHandler$tabGroup4, _Object$values$find$s, _Object$values$find, _elementsInfo$get;
461
+ var _scene$isPoolPlanning, _environmentPreset, _viewHandler$divaWebP4, _viewHandler$tabGroup3, _viewHandler$tabGroup4, _viewHandler$tabGroup5, _elementsInfo$get, _viewHandler$divaWebP5;
437
462
  var viewHandler = useViewHandler();
438
463
  var rtvAnalyzerComponents = useRTVAnalyzerComponentsFromPlanner();
439
464
  var _useDivaCore = useDivaCore(),
@@ -441,6 +466,16 @@ var PlannerRTVNext = function PlannerRTVNext() {
441
466
  apiConfig = _useDivaCore$state.apiConfig,
442
467
  jwt = _useDivaCore$state.jwt,
443
468
  actions = _useDivaCore.actions;
469
+ var _useTranslation = useTranslation(),
470
+ t = _useTranslation.t;
471
+ // File names listed by the missing-geo message on screen, so a re-assembly that mounts the geo again does not re-raise it.
472
+ var missingGeoFiles = useRef(new Set());
473
+ var missingGeoHideTimer = useRef(undefined);
474
+ useEffect(function () {
475
+ return function () {
476
+ return clearTimeout(missingGeoHideTimer.current);
477
+ };
478
+ }, []);
444
479
 
445
480
  // Mount effect, not the render body: this is the first moment the viewer component exists in the
446
481
  // tree, which is what the boot report needs — the props it reads are re-derived on every render.
@@ -448,17 +483,48 @@ var PlannerRTVNext = function PlannerRTVNext() {
448
483
  bootMark('rtv: PlannerRTVNext mounted');
449
484
  }, []);
450
485
 
451
- // A new render script means the viewer is about to rebuild its scene — show the loading state
452
- // until `onSceneReady` reports the rebuilt scene as live.
486
+ // Only a render script after none shows `RTV_Assembling`: a replaced one keeps the shown scene, and an unchanged
487
+ // scene fires no `onSceneReady` to end it.
453
488
  var prevHQRenderScript = useRef(viewHandler.hqRenderScript);
454
489
  useEffect(function () {
455
- if (viewHandler.hqRenderScript !== prevHQRenderScript.current) {
456
- prevHQRenderScript.current = viewHandler.hqRenderScript;
457
- if (viewHandler.hqRenderScript) {
458
- actions.toggleLoading('RTV_Assembling', false, true);
459
- }
460
- }
490
+ var previous = prevHQRenderScript.current;
491
+ prevHQRenderScript.current = viewHandler.hqRenderScript;
492
+ if (viewHandler.hqRenderScript && !previous) actions.toggleLoading('RTV_Assembling', false, true);
461
493
  }, [viewHandler.hqRenderScript, actions]);
494
+ var isVisible = viewHandler.isParentViewVisible;
495
+ // Announce the live rtv-next viewer page-wide: hidden sibling planner instances defer their
496
+ // whole boot while one is registered (see `ViewHandlerProvider`).
497
+ useEffect(function () {
498
+ if (!isVisible) return;
499
+ return registerRtvNextViewer();
500
+ }, [isVisible]);
501
+ var showRTV = viewHandler.productState.doShowRTV;
502
+ var show3DComb = viewHandler.productState.doShow3DComb;
503
+ var showGrid = viewHandler.productState.doShowGrid;
504
+ // CREATE_IMAGE never goes through the footer, so none of the view flags is ever set for it — the
505
+ // viewer must still mount, it *is* the capture source (see useCreateImageShot below).
506
+ var isCreateImage = viewHandler.configState.initMode === 'CREATE_IMAGE';
507
+ // Another product-center view is on top (AI room, rendered image). Once the viewer has been on
508
+ // screen this only PAUSES it (`stopRender`): unmounting would drop the WebGL context, the
509
+ // assembled scene and every cache, and rebuild them all on the way back.
510
+ var viewCovered = !showRTV && !show3DComb && !showGrid && !isCreateImage;
511
+ // A hidden parent view still unmounts, and resets the latch: the rtv-next store is page-global,
512
+ // so a hidden planner's viewer and the visible planner's would fight over it. Committed state
513
+ // adjusted during render, not a ref written in render: an abandoned render leaves nothing behind.
514
+ var _useState = useState(false),
515
+ _useState2 = _slicedToArray(_useState, 2),
516
+ shownOnce = _useState2[0],
517
+ setShownOnce = _useState2[1];
518
+ var isMounted = isVisible && (shownOnce || !viewCovered);
519
+ if (isMounted !== shownOnce) setShownOnce(isMounted);
520
+ // While covered the view mode is frozen: the show flags are all false then, and deriving '3d'
521
+ // from them would fly a 2D planner to 3D (and load its 3D assets) behind the covering view.
522
+ var _useState3 = useState('3d'),
523
+ _useState4 = _slicedToArray(_useState3, 2),
524
+ frozenViewMode = _useState4[0],
525
+ setFrozenViewMode = _useState4[1];
526
+ var viewMode = viewCovered ? frozenViewMode : showGrid || isCreateImage ? '2d' : '3d';
527
+ if (viewMode !== frozenViewMode) setFrozenViewMode(viewMode);
462
528
  var callbacks = useMemo(function () {
463
529
  return {
464
530
  onElementSelected: function onElementSelected(setId, elementId) {
@@ -522,12 +588,51 @@ var PlannerRTVNext = function PlannerRTVNext() {
522
588
  var switchTo = target.articleCodex && target.articleCodex !== t.accCodex ? target.articleCodex : undefined;
523
589
  viewHandler.divaWebPlanner.moveShelfItemToGrid(t.accBasketId, target.parentBasketId, target.gridName, target.cellIdx, switchTo);
524
590
  },
591
+ onDoorSwap: function onDoorSwap(fromSlotKey, toSlotKey) {
592
+ return swapDoorSlotsByKey(viewHandler, fromSlotKey, toSlotKey);
593
+ },
594
+ onElementFootprints: function onElementFootprints(footprints) {
595
+ return viewHandler.divaWebPlanner.setElementFootprints(footprints);
596
+ },
525
597
  onSceneReady: function onSceneReady() {
526
598
  bootMark('rtv: onSceneReady');
527
599
  actions.toggleLoading('RTV_Assembling', false, false);
600
+ notifyRtvSceneReady();
601
+ },
602
+ onAssetError: function onAssetError(_ref) {
603
+ var kind = _ref.kind,
604
+ source = _ref.source,
605
+ message = _ref.message,
606
+ severity = _ref.severity,
607
+ missing = _ref.missing;
608
+ viewHandler.productState.reportAnalyzerError({
609
+ source: '3D',
610
+ kind: kind,
611
+ target: source,
612
+ message: message,
613
+ severity: severity
614
+ });
615
+ // Meant for catalog builders: only with the catalog analyzer, never in front of a customer.
616
+ if (kind !== 'geo' || !missing || !viewHandler.uiState.isAdvancedConfigurator) return;
617
+ var file = source.slice(source.lastIndexOf('/') + 1);
618
+ if (missingGeoFiles.current.has(file)) return;
619
+ missingGeoFiles.current.add(file);
620
+ var content = /*#__PURE__*/jsxs(Fragment, {
621
+ children: [t('configurator.MISSING_GEO_MSG'), " ", /*#__PURE__*/jsx("b", {
622
+ children: _toConsumableArray(missingGeoFiles.current).join(', ')
623
+ })]
624
+ });
625
+ viewHandler.productState.updatePlannerMsgContainer('MISSING_GEO_MSG', true, 'WARNING', content, true, MISSING_GEO_MSG_MS);
626
+ // The files count as reported while the message shows; a later failure of the same file shows it again.
627
+ if (missingGeoHideTimer.current === undefined) {
628
+ missingGeoHideTimer.current = setTimeout(function () {
629
+ missingGeoFiles.current.clear();
630
+ missingGeoHideTimer.current = undefined;
631
+ }, MISSING_GEO_MSG_MS);
632
+ }
528
633
  }
529
634
  };
530
- }, [viewHandler.viewPlannerHandler, viewHandler.divaWebPlanner, viewHandler, actions]);
635
+ }, [viewHandler.viewPlannerHandler, viewHandler.divaWebPlanner, viewHandler, actions, t]);
531
636
 
532
637
  // Planner-side single source of truth for canvas selection. Tracks
533
638
  // `selectedElementsDict` in ViewPlannerHandler — kept in sync at all 3
@@ -538,79 +643,62 @@ var PlannerRTVNext = function PlannerRTVNext() {
538
643
  // canvas deselect and caused `setSelectedElementFromProp` to re-select
539
644
  // the just-deselected element on the next render.
540
645
  var selectedElementId = viewHandler.productState.rtvSelectedElementId;
541
- var isVisible = viewHandler.isParentViewVisible;
542
- // Announce the live rtv-next viewer page-wide: hidden sibling planner instances defer their
543
- // whole boot while one is registered (see `ViewHandlerProvider`).
544
- useEffect(function () {
545
- if (!isVisible) return;
546
- return registerRtvNextViewer();
547
- }, [isVisible]);
548
- var showRTV = viewHandler.productState.doShowRTV;
549
- var show3DComb = viewHandler.productState.doShow3DComb;
550
- var showGrid = viewHandler.productState.doShowGrid;
551
- // CREATE_IMAGE never goes through the footer, so none of the view flags is ever set for it — the
552
- // viewer must still mount, it *is* the capture source (see useCreateImageShot below).
553
- var isCreateImage = viewHandler.configState.initMode === 'CREATE_IMAGE';
554
- // Another product-center view is on top (AI room, rendered image). Once the viewer has been on
555
- // screen this only PAUSES it (`stopRender`): unmounting would drop the WebGL context, the
556
- // assembled scene and every cache, and rebuild them all on the way back.
557
- var viewCovered = !showRTV && !show3DComb && !showGrid && !isCreateImage;
558
- // A hidden parent view still unmounts, and resets the latch: the rtv-next store is page-global,
559
- // so a hidden planner's viewer and the visible planner's would fight over it. Committed state
560
- // adjusted during render, not a ref written in render: an abandoned render leaves nothing behind.
561
- var _useState = useState(false),
562
- _useState2 = _slicedToArray(_useState, 2),
563
- shownOnce = _useState2[0],
564
- setShownOnce = _useState2[1];
565
- var isMounted = isVisible && (shownOnce || !viewCovered);
566
- if (isMounted !== shownOnce) setShownOnce(isMounted);
567
- // While covered the view mode is frozen: the show flags are all false then, and deriving '3d'
568
- // from them would fly a 2D planner to 3D (and load its 3D assets) behind the covering view.
569
- var _useState3 = useState('3d'),
570
- _useState4 = _slicedToArray(_useState3, 2),
571
- frozenViewMode = _useState4[0],
572
- setFrozenViewMode = _useState4[1];
573
- var viewMode = viewCovered ? frozenViewMode : showGrid || isCreateImage ? '2d' : '3d';
574
- if (viewMode !== frozenViewMode) setFrozenViewMode(viewMode);
575
646
 
576
647
  // `isPoolPlanning`: a planning whose articles carry a dimension config is a static drawing (pool
577
- // plan) — hide all on-canvas buttons (posNr/move/rotate/trash chrome and docking-point buttons,
648
+ // plan) — hide all on-canvas buttons (posNr/rotate/trash chrome and docking-point buttons,
578
649
  // both gated on `hideUiIcons` inside rtv-next) and force the dimension lines on.
579
650
  // Nothing is rendered while unmounted or covered, so the planner→viewer translation is skipped:
580
651
  // the planner still re-renders on every MobX planner change and would otherwise walk the whole
581
652
  // planned-elements dict and re-encode every element SVG for a viewer nobody is looking at. While
582
653
  // covered the last built scene is kept, so `scene2d` also stays identity-stable in the store.
583
654
  var lastSceneRef = useRef(undefined);
584
- var scene = !isMounted ? undefined : viewCovered ? lastSceneRef.current : buildPlannerScene2D(viewHandler);
655
+ var scene = !isMounted ? undefined : viewCovered ? lastSceneRef.current : buildPlannerScene2D(viewHandler, {
656
+ buildScene2D: buildScene2D,
657
+ getDimensionConfigs: getDimensionConfigs
658
+ });
585
659
  lastSceneRef.current = scene;
586
660
  var scene2d = scene === null || scene === void 0 ? void 0 : scene.scene2d;
661
+ // The 2D scene reads non-observable planner elements, their version re-renders it after a move.
662
+ if (showGrid) void viewHandler.productState.plannerElementsVersion;
587
663
  var isPoolPlanning = (_scene$isPoolPlanning = scene === null || scene === void 0 ? void 0 : scene.isPoolPlanning) !== null && _scene$isPoolPlanning !== void 0 ? _scene$isPoolPlanning : false;
664
+ var setPoolPlanning = viewHandler.productState.setPoolPlanning;
665
+ useEffect(function () {
666
+ setPoolPlanning(isPoolPlanning);
667
+ return function () {
668
+ return setPoolPlanning(false);
669
+ };
670
+ }, [isPoolPlanning, setPoolPlanning]);
588
671
 
589
672
  // Environment preset: the catalog-level RTV_PRESET meta tag when present (a DB source
590
673
  // later), else the white-room default. Both are parse-once/module objects, so the
591
674
  // identity is stable across renders. NOTE: with ?rtv-debug the analyzer preset channel
592
675
  // applies AFTER this on mount and wins (use ?preset=<id> there to pick explicitly).
593
- var rtvPreset = (_ref = (_viewHandler$divaWebP2 = viewHandler.divaWebPlanner.getCatalogData()) === null || _viewHandler$divaWebP2 === void 0 ? void 0 : _viewHandler$divaWebP2.rtvPreset) !== null && _ref !== void 0 ? _ref : WHITE_ROOM_PRESET;
676
+ var rtvPreset = (_environmentPreset = environmentPreset((_viewHandler$divaWebP4 = viewHandler.divaWebPlanner.getCatalogData()) === null || _viewHandler$divaWebP4 === void 0 ? void 0 : _viewHandler$divaWebP4.rtvPreset)) !== null && _environmentPreset !== void 0 ? _environmentPreset : WHITE_ROOM_PRESET;
594
677
 
595
678
  // initMode CREATE_IMAGE: auto-capture the settled 2D plan and emit it to the host. A hook, so it
596
679
  // has to stay above the guard below — it is inert without a scene, and while the planner renders
597
680
  // nothing there is no mounted viewer to capture from anyway.
598
681
  useCreateImageShot(viewHandler, scene2d, rtvPreset);
682
+ var doorSwapTexts = useDoorSwapTexts().viewer;
683
+ var stepType = (_viewHandler$tabGroup3 = viewHandler.tabGroupState.curTabGroup) === null || _viewHandler$tabGroup3 === void 0 ? void 0 : _viewHandler$tabGroup3.type;
684
+ var plannerStep = stepType != null && PLANNER_TAB_GROUP_TYPES.has(stepType);
599
685
  if (!isMounted) return null;
600
- var curTabGroupType = (_viewHandler$tabGroup4 = viewHandler.tabGroupState.curTabGroup) === null || _viewHandler$tabGroup4 === void 0 ? void 0 : _viewHandler$tabGroup4.type;
601
- var plannerMode = curTabGroupType != null && PLANNER_TAB_GROUP_TYPES.has(curTabGroupType);
602
- var focusElementId = viewHandler.productState.rtvFocusElementId;
603
- // Pool plannings are static drawings: dimension lines are always on (the UI toggle that
604
- // would enable them is hidden along with the other buttons — see isPoolPlanning above).
605
- var showDimensionLines = isPoolPlanning || viewHandler.productState.doShow3DDimensionLines;
606
- var elementsInfo = buildElementsInfoFromArticles(viewHandler);
686
+
687
+ // Step identity for rtv-next's camera rule table; it keys on the fields, so a fresh object is fine. Read from the
688
+ // observable mirror - `ConfiguratorStructureHandler` is not observable.
689
+ var cameraStep = cameraStepIdentity((_viewHandler$tabGroup4 = viewHandler.tabGroupState.curConfigStep) === null || _viewHandler$tabGroup4 === void 0 ? void 0 : _viewHandler$tabGroup4.key, stepType, (_viewHandler$tabGroup5 = viewHandler.tabGroupState.curOption) === null || _viewHandler$tabGroup5 === void 0 ? void 0 : _viewHandler$tabGroup5.codex);
690
+
691
+ // Pool plannings are static drawings: dimension lines are always on and their toggle is hidden.
692
+ var showDimensionLines = isPoolPlanning || viewHandler.productState.sceneShowsDimensionLines;
693
+ var elementsInfo = buildElementsInfoFromArticles(viewHandler, plannerStep);
607
694
 
608
695
  // Controlled accessory selection: map the host's selected shelf accessory (a basketId) to its
609
- // composite 3D key ("2.0.6") so the canvas re-selects it after a place/move. `null` clears it.
696
+ // qualified 3D key (`<setId>|2.0.6`) so the canvas re-selects it after a place/move. `null` clears it.
610
697
  var selectedAccessoryBasketId = viewHandler.settingsState.selectedShelfAccessoire;
611
- var resolvedAccessoryKey = selectedAccessoryBasketId ? (_Object$values$find$s = (_Object$values$find = Object.values(viewHandler.settingsState.articleInfos).find(function (a) {
698
+ var selectedAccessory = selectedAccessoryBasketId ? Object.values(viewHandler.settingsState.articleInfos).find(function (a) {
612
699
  return a.basketId === selectedAccessoryBasketId;
613
- })) === null || _Object$values$find === void 0 ? void 0 : _Object$values$find.shelfElementId) !== null && _Object$values$find$s !== void 0 ? _Object$values$find$s : null : null;
700
+ }) : undefined;
701
+ var resolvedAccessoryKey = selectedAccessory !== null && selectedAccessory !== void 0 && selectedAccessory.shelfElementId ? qualifiedElementKey(selectedAccessory.setId, selectedAccessory.shelfElementId) : null;
614
702
  // `selectedShelfAccessoire` survives step navigation and config changes (it's only cleared by an
615
703
  // explicit deselect), and rtv-next re-applies `selectedAccessoryKey` after every re-assembly — so
616
704
  // a config change in a step where the accessory is not selectable would re-select it in the
@@ -628,6 +716,34 @@ var PlannerRTVNext = function PlannerRTVNext() {
628
716
  catalogCodex: catalogData.catalogCodex,
629
717
  iln: catalogData.supplierILN
630
718
  } : undefined;
719
+ // Read so a scene switch re-renders with the new room.
720
+ void viewHandler.productState.activeSceneId;
721
+ var room = (_viewHandler$divaWebP5 = viewHandler.divaWebPlanner.getActiveRoom()) !== null && _viewHandler$divaWebP5 !== void 0 ? _viewHandler$divaWebP5 : null;
722
+ var coachText = function coachText(hintId) {
723
+ return {
724
+ mouse: t("configurator.coach.".concat(hintId, ".mouse")),
725
+ touch: t("configurator.coach.".concat(hintId, ".touch"))
726
+ };
727
+ };
728
+ var coachTexts = {
729
+ accessoryPlace: coachText('accessoryPlace'),
730
+ accessoryMove: coachText('accessoryMove'),
731
+ elementMove: coachText('elementMove')
732
+ };
733
+
734
+ // A door planner step anywhere in the config tree: the viewer fetches the door swap's code ahead of it.
735
+ var hasDoorPlanner = viewHandler.divaWebPlanner.getRtvFeatures().doorSwap3D && _toConsumableArray(viewHandler.tabGroupState.allTabGroups.values()).some(function (tabGroup) {
736
+ return tabGroup.type === 'DOORPLANNER';
737
+ });
738
+ var actSet = viewHandler.divaWebPlanner.actSet();
739
+ // Door swap step: the active set's door slots, as the 3D scene names their doors.
740
+ var doorSwap = isDoorSwap3DStep(viewHandler) && actSet ? {
741
+ doors: buildDoorSwapDoors(doorPlannerSlots(findDoorPlannerPalette(viewHandler)), actSet.getSetId(), function (basketId) {
742
+ var _actSet$getArticleByB;
743
+ return (_actSet$getArticleByB = actSet.getArticleByBasketId(basketId)) === null || _actSet$getArticleByB === void 0 ? void 0 : _actSet$getArticleByB.elementId;
744
+ }),
745
+ texts: doorSwapTexts
746
+ } : null;
631
747
  return /*#__PURE__*/jsx(RealTimeRendererNext, {
632
748
  catalogInfo: needs3D ? catalogInfo : undefined,
633
749
  hqRenderScript: needs3D ? viewHandler.hqRenderScript : undefined,
@@ -635,9 +751,7 @@ var PlannerRTVNext = function PlannerRTVNext() {
635
751
  viewMode: viewMode,
636
752
  stopRender: viewCovered,
637
753
  config: {
638
- // Strip a trailing slash so downstream URL building (material blob paths, geo/texture URLs)
639
- // doesn't emit `…/diva3darchiv//…` double slashes that the archive host may mis-route.
640
- archiveBaseUrl: apiConfig.diva3darchive.endsWith('/') ? apiConfig.diva3darchive.slice(0, -1) : apiConfig.diva3darchive,
754
+ archiveBaseUrl: apiConfig.diva3darchive,
641
755
  constructorServiceUrl: apiConfig.constructorService,
642
756
  jwt: jwt,
643
757
  // COBI-class planner: 3D is always available. The store default is
@@ -655,23 +769,32 @@ var PlannerRTVNext = function PlannerRTVNext() {
655
769
  camera: rtvPreset.camera,
656
770
  uiConfig: _objectSpread({
657
771
  plannerMode: viewHandler.productState.isBoxPlanner ? 'BoxPlanner' : '3DCOMB',
658
- accessoryPlacement: ACCESSORY_PLACEMENT_MODE
772
+ accessoryPlacement: ACCESSORY_PLACEMENT_MODE,
773
+ catalogAnalyzer: viewHandler.uiState.isAdvancedConfigurator
659
774
  }, isPoolPlanning ? {
660
775
  hideUiIcons: true
661
776
  } : {})
662
777
  },
663
- plannerMode: plannerMode,
778
+ plannerMode: plannerStep,
779
+ step: cameraStep,
664
780
  freePlacesOnGrids: viewHandler.settingsState.freePlacesOnGrids,
665
781
  plannedPlacesOnGrids: viewHandler.settingsState.plannedPlacesOnGrids,
782
+ shelfGridSetId: actSet === null || actSet === void 0 ? void 0 : actSet.getSetId(),
666
783
  armedAccessoryCodex: viewHandler.settingsState.armedAccessoryToken,
667
784
  draggedAccessoryCodex: viewHandler.settingsState.draggedAccessoryCodex,
785
+ draggedAccessoryPointerId: viewHandler.settingsState.draggedAccessoryPointerId,
668
786
  callbacks: callbacks,
669
787
  analyzerComponents: rtvAnalyzerComponents,
670
- focusElementId: focusElementId,
671
788
  elementsInfo: elementsInfo,
672
789
  selectedElementId: selectedElementId,
790
+ selectedElementSetId: viewHandler.productState.rtvSelectedSetId,
673
791
  selectedAccessoryKey: selectedAccessoryKey,
674
- showDimensionLines: showDimensionLines
792
+ showDimensionLines: showDimensionLines,
793
+ room: room,
794
+ coachTexts: coachTexts,
795
+ coachHints: viewHandler.divaWebPlanner.getRtvFeatures().coachHints,
796
+ doorSwap: doorSwap,
797
+ doorSwapAvailable: hasDoorPlanner
675
798
  });
676
799
  };
677
800
  var index = observer(PlannerRTVNext);