@gravity-ui/navigation 6.6.0 → 7.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (298) hide show
  1. package/build/cjs/components/AsideHeader/AsideHeader.css +11 -1
  2. package/build/cjs/components/AsideHeader/AsideHeader.js +2 -2
  3. package/build/cjs/components/AsideHeader/AsideHeader.js.map +1 -1
  4. package/build/cjs/components/AsideHeader/AsideHeader.module.scss.js +1 -1
  5. package/build/cjs/components/AsideHeader/AsideHeaderContext.d.ts +5 -0
  6. package/build/cjs/components/AsideHeader/AsideHeaderContext.js +2 -0
  7. package/build/cjs/components/AsideHeader/AsideHeaderContext.js.map +1 -1
  8. package/build/cjs/components/AsideHeader/__playwright__/AsideTransitionExample.d.ts +8 -0
  9. package/build/cjs/components/AsideHeader/__playwright__/CollapseButtonExample.d.ts +14 -0
  10. package/build/cjs/components/AsideHeader/__playwright__/CompactTransitionExample.d.ts +12 -0
  11. package/build/cjs/components/AsideHeader/__playwright__/CurrentIndicatorExample.d.ts +20 -0
  12. package/build/cjs/components/AsideHeader/__playwright__/DecorationExample.d.ts +7 -0
  13. package/build/cjs/components/AsideHeader/__playwright__/QuickAccessOverflowExample.d.ts +8 -0
  14. package/build/cjs/components/AsideHeader/__playwright__/currentIndicatorPaint.d.ts +21 -0
  15. package/build/cjs/components/AsideHeader/__playwright__/transitionTestUtils.d.ts +4 -0
  16. package/build/cjs/components/AsideHeader/__stories__/fullNavigationMoc.d.ts +6 -0
  17. package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.js +2 -4
  18. package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.js.map +1 -1
  19. package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.js +7 -2
  20. package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.js.map +1 -1
  21. package/build/cjs/components/AsideHeader/components/AllPagesPanel/i18n/en.json.js +1 -3
  22. package/build/cjs/components/AsideHeader/components/AllPagesPanel/i18n/en.json.js.map +1 -1
  23. package/build/cjs/components/AsideHeader/components/AllPagesPanel/i18n/index.d.ts +4 -4
  24. package/build/cjs/components/AsideHeader/components/AllPagesPanel/i18n/ru.json.js +2 -4
  25. package/build/cjs/components/AsideHeader/components/AllPagesPanel/i18n/ru.json.js.map +1 -1
  26. package/build/cjs/components/AsideHeader/components/AsideDivider.d.ts +7 -0
  27. package/build/cjs/components/AsideHeader/components/AsideDivider.js +13 -0
  28. package/build/cjs/components/AsideHeader/components/AsideDivider.js.map +1 -0
  29. package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.css +1 -1
  30. package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.d.ts +3 -1
  31. package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.js +12 -8
  32. package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.js.map +1 -1
  33. package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.module.scss.js +1 -1
  34. package/build/cjs/components/AsideHeader/components/CollapseButton/useCollapseAnchor.d.ts +20 -0
  35. package/build/cjs/components/AsideHeader/components/CollapseButton/useCollapseAnchor.js +170 -0
  36. package/build/cjs/components/AsideHeader/components/CollapseButton/useCollapseAnchor.js.map +1 -0
  37. package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.css +3 -1
  38. package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.d.ts +13 -2
  39. package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.js +53 -39
  40. package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.js.map +1 -1
  41. package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.module.scss.js +1 -1
  42. package/build/cjs/components/AsideHeader/components/CompositeBar/HighlightedItem/HighlightedItem.css +1 -1
  43. package/build/cjs/components/AsideHeader/components/CompositeBar/HighlightedItem/HighlightedItem.js +4 -2
  44. package/build/cjs/components/AsideHeader/components/CompositeBar/HighlightedItem/HighlightedItem.js.map +1 -1
  45. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.css +33 -1
  46. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.js +161 -43
  47. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.js.map +1 -1
  48. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.module.scss.js +1 -1
  49. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.types.d.ts +27 -4
  50. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemPopup.d.ts +19 -0
  51. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemPopup.js +137 -20
  52. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemPopup.js.map +1 -1
  53. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemQuickAccessPin.d.ts +7 -0
  54. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemQuickAccessPin.js +25 -0
  55. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemQuickAccessPin.js.map +1 -0
  56. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/renderItemTitle.d.ts +1 -1
  57. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/renderItemTitle.js +5 -1
  58. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/renderItemTitle.js.map +1 -1
  59. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.css +1 -1
  60. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.d.ts +4 -6
  61. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js +14 -5
  62. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js.map +1 -1
  63. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.module.scss.js +1 -1
  64. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.d.ts +8 -8
  65. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.js +68 -33
  66. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.js.map +1 -1
  67. package/build/cjs/components/AsideHeader/components/CompositeBar/constants.d.ts +1 -0
  68. package/build/cjs/components/AsideHeader/components/CompositeBar/constants.js +2 -0
  69. package/build/cjs/components/AsideHeader/components/CompositeBar/constants.js.map +1 -1
  70. package/build/cjs/components/AsideHeader/components/CompositeBar/presentationCurrent.d.ts +24 -0
  71. package/build/cjs/components/AsideHeader/components/CompositeBar/presentationCurrent.js +39 -0
  72. package/build/cjs/components/AsideHeader/components/CompositeBar/presentationCurrent.js.map +1 -0
  73. package/build/cjs/components/AsideHeader/components/CompositeBar/utils.d.ts +12 -7
  74. package/build/cjs/components/AsideHeader/components/CompositeBar/utils.js +42 -35
  75. package/build/cjs/components/AsideHeader/components/CompositeBar/utils.js.map +1 -1
  76. package/build/cjs/components/AsideHeader/components/FirstPanel.js +129 -10
  77. package/build/cjs/components/AsideHeader/components/FirstPanel.js.map +1 -1
  78. package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.css +1 -1
  79. package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.js +18 -2
  80. package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.js.map +1 -1
  81. package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.module.scss.js +1 -1
  82. package/build/cjs/components/AsideHeader/components/Header.js +7 -4
  83. package/build/cjs/components/AsideHeader/components/Header.js.map +1 -1
  84. package/build/cjs/components/AsideHeader/components/PageLayout/AsideFallback.css +11 -1
  85. package/build/cjs/components/AsideHeader/components/PageLayout/AsideFallback.d.ts +1 -0
  86. package/build/cjs/components/AsideHeader/components/PageLayout/AsideFallback.js +13 -7
  87. package/build/cjs/components/AsideHeader/components/PageLayout/AsideFallback.js.map +1 -1
  88. package/build/cjs/components/AsideHeader/components/PageLayout/AsideLayoutTransition.d.ts +80 -0
  89. package/build/cjs/components/AsideHeader/components/PageLayout/AsideLayoutTransition.js +600 -0
  90. package/build/cjs/components/AsideHeader/components/PageLayout/AsideLayoutTransition.js.map +1 -0
  91. package/build/cjs/components/AsideHeader/components/PageLayout/CurrentIndicatorTransition.d.ts +14 -0
  92. package/build/cjs/components/AsideHeader/components/PageLayout/CurrentIndicatorTransition.js +164 -0
  93. package/build/cjs/components/AsideHeader/components/PageLayout/CurrentIndicatorTransition.js.map +1 -0
  94. package/build/cjs/components/AsideHeader/components/PageLayout/CurrentPresentationObserver.d.ts +14 -0
  95. package/build/cjs/components/AsideHeader/components/PageLayout/CurrentPresentationObserver.js +94 -0
  96. package/build/cjs/components/AsideHeader/components/PageLayout/CurrentPresentationObserver.js.map +1 -0
  97. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayout.css +11 -1
  98. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayout.d.ts +1 -1
  99. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayout.js +14 -5
  100. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayout.js.map +1 -1
  101. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayoutAside.css +11 -1
  102. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayoutAside.d.ts +1 -1
  103. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayoutAside.js +5 -2
  104. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayoutAside.js.map +1 -1
  105. package/build/cjs/components/AsideHeader/components/PageLayout/currentIndicatorDom.d.ts +7 -0
  106. package/build/cjs/components/AsideHeader/components/PageLayout/currentIndicatorDom.js +25 -0
  107. package/build/cjs/components/AsideHeader/components/PageLayout/currentIndicatorDom.js.map +1 -0
  108. package/build/cjs/components/AsideHeader/components/PageLayout/currentIndicatorModel.d.ts +25 -0
  109. package/build/cjs/components/AsideHeader/components/PageLayout/currentIndicatorModel.js +89 -0
  110. package/build/cjs/components/AsideHeader/components/PageLayout/currentIndicatorModel.js.map +1 -0
  111. package/build/cjs/components/AsideHeader/components/Panels.js +2 -2
  112. package/build/cjs/components/AsideHeader/components/Panels.js.map +1 -1
  113. package/build/cjs/components/AsideHeader/density.d.ts +22 -0
  114. package/build/cjs/components/AsideHeader/density.js +67 -0
  115. package/build/cjs/components/AsideHeader/density.js.map +1 -0
  116. package/build/cjs/components/AsideHeader/i18n/__mocks__/index.d.ts +1 -0
  117. package/build/cjs/components/AsideHeader/i18n/en.json.js +10 -1
  118. package/build/cjs/components/AsideHeader/i18n/en.json.js.map +1 -1
  119. package/build/cjs/components/AsideHeader/i18n/index.d.ts +4 -4
  120. package/build/cjs/components/AsideHeader/i18n/ru.json.js +10 -1
  121. package/build/cjs/components/AsideHeader/i18n/ru.json.js.map +1 -1
  122. package/build/cjs/components/AsideHeader/index.d.ts +1 -0
  123. package/build/cjs/components/AsideHeader/quickAccess.d.ts +9 -0
  124. package/build/cjs/components/AsideHeader/quickAccess.js +31 -0
  125. package/build/cjs/components/AsideHeader/quickAccess.js.map +1 -0
  126. package/build/cjs/components/AsideHeader/types.d.ts +50 -5
  127. package/build/cjs/components/AsideHeader/types.js.map +1 -1
  128. package/build/cjs/components/AsideHeader/useAsideHeaderInnerContextValue.js +18 -3
  129. package/build/cjs/components/AsideHeader/useAsideHeaderInnerContextValue.js.map +1 -1
  130. package/build/cjs/components/AsideHeader/utils.d.ts +1 -0
  131. package/build/cjs/components/AsideHeader/utils.js +2 -0
  132. package/build/cjs/components/AsideHeader/utils.js.map +1 -1
  133. package/build/cjs/components/Footer/desktop/Footer.css +1 -1
  134. package/build/cjs/components/Footer/mobile/Footer.css +1 -1
  135. package/build/cjs/components/HotkeysPanel/HotkeysPanel.css +1 -1
  136. package/build/cjs/components/HotkeysPanel/HotkeysPanel.js +1 -1
  137. package/build/cjs/components/HotkeysPanel/HotkeysPanel.js.map +1 -1
  138. package/build/cjs/components/HotkeysPanel/HotkeysPanel.module.scss.js +1 -1
  139. package/build/cjs/components/Logo/Logo.css +1 -1
  140. package/build/cjs/components/Logo/Logo.d.ts +1 -0
  141. package/build/cjs/components/Logo/Logo.js +4 -4
  142. package/build/cjs/components/Logo/Logo.js.map +1 -1
  143. package/build/cjs/components/constants.d.ts +5 -0
  144. package/build/cjs/components/constants.js +6 -0
  145. package/build/cjs/components/constants.js.map +1 -1
  146. package/build/cjs/components/types.d.ts +4 -4
  147. package/build/docs/components/AsideHeader.md +243 -42
  148. package/build/esm/components/AsideHeader/AsideHeader.css +11 -1
  149. package/build/esm/components/AsideHeader/AsideHeader.js +2 -2
  150. package/build/esm/components/AsideHeader/AsideHeader.js.map +1 -1
  151. package/build/esm/components/AsideHeader/AsideHeader.module.scss.js +1 -1
  152. package/build/esm/components/AsideHeader/AsideHeaderContext.d.ts +5 -0
  153. package/build/esm/components/AsideHeader/AsideHeaderContext.js +2 -0
  154. package/build/esm/components/AsideHeader/AsideHeaderContext.js.map +1 -1
  155. package/build/esm/components/AsideHeader/__playwright__/AsideTransitionExample.d.ts +8 -0
  156. package/build/esm/components/AsideHeader/__playwright__/CollapseButtonExample.d.ts +14 -0
  157. package/build/esm/components/AsideHeader/__playwright__/CompactTransitionExample.d.ts +12 -0
  158. package/build/esm/components/AsideHeader/__playwright__/CurrentIndicatorExample.d.ts +20 -0
  159. package/build/esm/components/AsideHeader/__playwright__/DecorationExample.d.ts +7 -0
  160. package/build/esm/components/AsideHeader/__playwright__/QuickAccessOverflowExample.d.ts +8 -0
  161. package/build/esm/components/AsideHeader/__playwright__/currentIndicatorPaint.d.ts +21 -0
  162. package/build/esm/components/AsideHeader/__playwright__/transitionTestUtils.d.ts +4 -0
  163. package/build/esm/components/AsideHeader/__stories__/fullNavigationMoc.d.ts +6 -0
  164. package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.js +3 -5
  165. package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.js.map +1 -1
  166. package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.js +7 -2
  167. package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.js.map +1 -1
  168. package/build/esm/components/AsideHeader/components/AllPagesPanel/i18n/en.json.js +1 -3
  169. package/build/esm/components/AsideHeader/components/AllPagesPanel/i18n/en.json.js.map +1 -1
  170. package/build/esm/components/AsideHeader/components/AllPagesPanel/i18n/index.d.ts +4 -4
  171. package/build/esm/components/AsideHeader/components/AllPagesPanel/i18n/ru.json.js +2 -4
  172. package/build/esm/components/AsideHeader/components/AllPagesPanel/i18n/ru.json.js.map +1 -1
  173. package/build/esm/components/AsideHeader/components/AsideDivider.d.ts +7 -0
  174. package/build/esm/components/AsideHeader/components/AsideDivider.js +11 -0
  175. package/build/esm/components/AsideHeader/components/AsideDivider.js.map +1 -0
  176. package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.css +1 -1
  177. package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.d.ts +3 -1
  178. package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.js +12 -8
  179. package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.js.map +1 -1
  180. package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.module.scss.js +1 -1
  181. package/build/esm/components/AsideHeader/components/CollapseButton/useCollapseAnchor.d.ts +20 -0
  182. package/build/esm/components/AsideHeader/components/CollapseButton/useCollapseAnchor.js +167 -0
  183. package/build/esm/components/AsideHeader/components/CollapseButton/useCollapseAnchor.js.map +1 -0
  184. package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.css +3 -1
  185. package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.d.ts +13 -2
  186. package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.js +54 -40
  187. package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.js.map +1 -1
  188. package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.module.scss.js +1 -1
  189. package/build/esm/components/AsideHeader/components/CompositeBar/HighlightedItem/HighlightedItem.css +1 -1
  190. package/build/esm/components/AsideHeader/components/CompositeBar/HighlightedItem/HighlightedItem.js +4 -2
  191. package/build/esm/components/AsideHeader/components/CompositeBar/HighlightedItem/HighlightedItem.js.map +1 -1
  192. package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.css +33 -1
  193. package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.js +164 -46
  194. package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.js.map +1 -1
  195. package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.module.scss.js +1 -1
  196. package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.types.d.ts +27 -4
  197. package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemPopup.d.ts +19 -0
  198. package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemPopup.js +139 -23
  199. package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemPopup.js.map +1 -1
  200. package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemQuickAccessPin.d.ts +7 -0
  201. package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemQuickAccessPin.js +23 -0
  202. package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemQuickAccessPin.js.map +1 -0
  203. package/build/esm/components/AsideHeader/components/CompositeBar/Item/renderItemTitle.d.ts +1 -1
  204. package/build/esm/components/AsideHeader/components/CompositeBar/Item/renderItemTitle.js +5 -1
  205. package/build/esm/components/AsideHeader/components/CompositeBar/Item/renderItemTitle.js.map +1 -1
  206. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.css +1 -1
  207. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.d.ts +4 -6
  208. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js +15 -6
  209. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js.map +1 -1
  210. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.module.scss.js +1 -1
  211. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.d.ts +8 -8
  212. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.js +68 -33
  213. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.js.map +1 -1
  214. package/build/esm/components/AsideHeader/components/CompositeBar/constants.d.ts +1 -0
  215. package/build/esm/components/AsideHeader/components/CompositeBar/constants.js +2 -1
  216. package/build/esm/components/AsideHeader/components/CompositeBar/constants.js.map +1 -1
  217. package/build/esm/components/AsideHeader/components/CompositeBar/presentationCurrent.d.ts +24 -0
  218. package/build/esm/components/AsideHeader/components/CompositeBar/presentationCurrent.js +36 -0
  219. package/build/esm/components/AsideHeader/components/CompositeBar/presentationCurrent.js.map +1 -0
  220. package/build/esm/components/AsideHeader/components/CompositeBar/utils.d.ts +12 -7
  221. package/build/esm/components/AsideHeader/components/CompositeBar/utils.js +44 -35
  222. package/build/esm/components/AsideHeader/components/CompositeBar/utils.js.map +1 -1
  223. package/build/esm/components/AsideHeader/components/FirstPanel.js +131 -12
  224. package/build/esm/components/AsideHeader/components/FirstPanel.js.map +1 -1
  225. package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.css +1 -1
  226. package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.js +18 -2
  227. package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.js.map +1 -1
  228. package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.module.scss.js +1 -1
  229. package/build/esm/components/AsideHeader/components/Header.js +7 -4
  230. package/build/esm/components/AsideHeader/components/Header.js.map +1 -1
  231. package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.css +11 -1
  232. package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.d.ts +1 -0
  233. package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.js +13 -7
  234. package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.js.map +1 -1
  235. package/build/esm/components/AsideHeader/components/PageLayout/AsideLayoutTransition.d.ts +80 -0
  236. package/build/esm/components/AsideHeader/components/PageLayout/AsideLayoutTransition.js +598 -0
  237. package/build/esm/components/AsideHeader/components/PageLayout/AsideLayoutTransition.js.map +1 -0
  238. package/build/esm/components/AsideHeader/components/PageLayout/CurrentIndicatorTransition.d.ts +14 -0
  239. package/build/esm/components/AsideHeader/components/PageLayout/CurrentIndicatorTransition.js +162 -0
  240. package/build/esm/components/AsideHeader/components/PageLayout/CurrentIndicatorTransition.js.map +1 -0
  241. package/build/esm/components/AsideHeader/components/PageLayout/CurrentPresentationObserver.d.ts +14 -0
  242. package/build/esm/components/AsideHeader/components/PageLayout/CurrentPresentationObserver.js +92 -0
  243. package/build/esm/components/AsideHeader/components/PageLayout/CurrentPresentationObserver.js.map +1 -0
  244. package/build/esm/components/AsideHeader/components/PageLayout/PageLayout.css +11 -1
  245. package/build/esm/components/AsideHeader/components/PageLayout/PageLayout.d.ts +1 -1
  246. package/build/esm/components/AsideHeader/components/PageLayout/PageLayout.js +15 -6
  247. package/build/esm/components/AsideHeader/components/PageLayout/PageLayout.js.map +1 -1
  248. package/build/esm/components/AsideHeader/components/PageLayout/PageLayoutAside.css +11 -1
  249. package/build/esm/components/AsideHeader/components/PageLayout/PageLayoutAside.d.ts +1 -1
  250. package/build/esm/components/AsideHeader/components/PageLayout/PageLayoutAside.js +5 -2
  251. package/build/esm/components/AsideHeader/components/PageLayout/PageLayoutAside.js.map +1 -1
  252. package/build/esm/components/AsideHeader/components/PageLayout/currentIndicatorDom.d.ts +7 -0
  253. package/build/esm/components/AsideHeader/components/PageLayout/currentIndicatorDom.js +17 -0
  254. package/build/esm/components/AsideHeader/components/PageLayout/currentIndicatorDom.js.map +1 -0
  255. package/build/esm/components/AsideHeader/components/PageLayout/currentIndicatorModel.d.ts +25 -0
  256. package/build/esm/components/AsideHeader/components/PageLayout/currentIndicatorModel.js +84 -0
  257. package/build/esm/components/AsideHeader/components/PageLayout/currentIndicatorModel.js.map +1 -0
  258. package/build/esm/components/AsideHeader/components/Panels.js +3 -3
  259. package/build/esm/components/AsideHeader/components/Panels.js.map +1 -1
  260. package/build/esm/components/AsideHeader/density.d.ts +22 -0
  261. package/build/esm/components/AsideHeader/density.js +63 -0
  262. package/build/esm/components/AsideHeader/density.js.map +1 -0
  263. package/build/esm/components/AsideHeader/i18n/__mocks__/index.d.ts +1 -0
  264. package/build/esm/components/AsideHeader/i18n/en.json.js +8 -2
  265. package/build/esm/components/AsideHeader/i18n/en.json.js.map +1 -1
  266. package/build/esm/components/AsideHeader/i18n/index.d.ts +4 -4
  267. package/build/esm/components/AsideHeader/i18n/ru.json.js +8 -2
  268. package/build/esm/components/AsideHeader/i18n/ru.json.js.map +1 -1
  269. package/build/esm/components/AsideHeader/index.d.ts +1 -0
  270. package/build/esm/components/AsideHeader/quickAccess.d.ts +9 -0
  271. package/build/esm/components/AsideHeader/quickAccess.js +27 -0
  272. package/build/esm/components/AsideHeader/quickAccess.js.map +1 -0
  273. package/build/esm/components/AsideHeader/types.d.ts +50 -5
  274. package/build/esm/components/AsideHeader/types.js.map +1 -1
  275. package/build/esm/components/AsideHeader/useAsideHeaderInnerContextValue.js +18 -3
  276. package/build/esm/components/AsideHeader/useAsideHeaderInnerContextValue.js.map +1 -1
  277. package/build/esm/components/AsideHeader/utils.d.ts +1 -0
  278. package/build/esm/components/AsideHeader/utils.js +2 -1
  279. package/build/esm/components/AsideHeader/utils.js.map +1 -1
  280. package/build/esm/components/Footer/desktop/Footer.css +1 -1
  281. package/build/esm/components/Footer/mobile/Footer.css +1 -1
  282. package/build/esm/components/HotkeysPanel/HotkeysPanel.css +1 -1
  283. package/build/esm/components/HotkeysPanel/HotkeysPanel.js +1 -1
  284. package/build/esm/components/HotkeysPanel/HotkeysPanel.js.map +1 -1
  285. package/build/esm/components/HotkeysPanel/HotkeysPanel.module.scss.js +1 -1
  286. package/build/esm/components/Logo/Logo.css +1 -1
  287. package/build/esm/components/Logo/Logo.d.ts +1 -0
  288. package/build/esm/components/Logo/Logo.js +4 -4
  289. package/build/esm/components/Logo/Logo.js.map +1 -1
  290. package/build/esm/components/constants.d.ts +5 -0
  291. package/build/esm/components/constants.js +6 -1
  292. package/build/esm/components/constants.js.map +1 -1
  293. package/build/esm/components/types.d.ts +4 -4
  294. package/package.json +1 -1
  295. package/build/cjs/assets/icons/control-menu-button.svg.js +0 -41
  296. package/build/cjs/assets/icons/control-menu-button.svg.js.map +0 -1
  297. package/build/esm/assets/icons/control-menu-button.svg.js +0 -18
  298. package/build/esm/assets/icons/control-menu-button.svg.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsideLayoutTransition.js","sources":["../../../../../../../src/components/AsideHeader/components/PageLayout/AsideLayoutTransition.tsx"],"sourcesContent":["import React from 'react';\n\nimport {ASIDE_HEADER_COLLAPSE_TRANSITION_MS} from '../../../constants';\nimport {COMPOSITE_BAR_ITEM_ID_ATTRIBUTE} from '../CompositeBar/constants';\n\nimport {CurrentIndicatorTransition} from './CurrentIndicatorTransition';\nimport {CurrentPresentationObserver} from './CurrentPresentationObserver';\nimport {\n CURRENT_ROW_KEY_ATTRIBUTE,\n CURRENT_ROW_SELECTOR,\n getCompositeBarSection,\n} from './currentIndicatorDom';\nimport {\n type CurrentIdentitySnapshot,\n type CurrentSnapshot,\n captureCurrentIdentity,\n captureCurrentPresentation,\n getCurrentRowKey,\n matchCurrentPresentations,\n} from './currentIndicatorModel';\n\ntype Part = {\n element: HTMLElement;\n rect: DOMRect;\n anchor: DOMRect;\n opacity: number;\n transform: string;\n backgroundColor: string;\n borderRadius: string;\n clipPath: string;\n clipRect?: DOMRect;\n};\n\ntype Row = Part & {icon?: Part; title?: Part; surface?: Part; group?: string};\ntype Group = {part: Part; headerKey: string};\ntype Divider = Part & {id: string; group?: string};\ntype Snapshot = {\n rows: Map<string, Row>;\n groups: Map<string, Group>;\n dividers: Map<string, Divider>;\n width: number;\n layoutWidth: number;\n current?: CurrentSnapshot;\n collapse?: {element: HTMLElement; y: number; anchor: Element | null};\n};\ntype Props = React.HTMLAttributes<HTMLDivElement> & {\n compact: boolean;\n compactTransition?: boolean;\n};\n\nconst ITEM_SELECTOR = CURRENT_ROW_SELECTOR;\nconst LOGO_SELECTOR = '[data-gn-aside-transition-row=\"logo\"]';\nconst TITLE_SELECTOR = '[data-gn-aside-part=\"quick-access-title\"]';\n\nfunction measure(element: HTMLElement): Part {\n const rect = element.getBoundingClientRect();\n const style = getComputedStyle(element);\n return {\n element,\n rect,\n anchor: element.querySelector('svg, img')?.getBoundingClientRect() ?? rect,\n opacity: rect.width > 0 && rect.height > 0 ? Number(style.opacity) : 0,\n transform: style.transform,\n backgroundColor: style.backgroundColor,\n borderRadius: style.borderRadius,\n clipPath: style.clipPath,\n clipRect: element\n .closest('[data-gn-aside-scrollport], [data-gn-aside-transition-scroll-clip]')\n ?.getBoundingClientRect(),\n };\n}\n\nfunction cloneAppearance(element: HTMLElement) {\n const clone = element.cloneNode(true) as HTMLElement;\n const sources = [element, ...Array.from(element.querySelectorAll<HTMLElement>('*'))];\n const copies = [clone, ...Array.from(clone.querySelectorAll<HTMLElement>('*'))];\n sources.forEach((source, index) => {\n // A fading title leaves its row's CSS scope (for example _current).\n // Preserve computed typography/paint, but not layout: the ghost's box\n // and translation are controlled independently by the animation.\n const style = getComputedStyle(source);\n const copy = copies[index];\n if (!copy.style) return;\n const row = source.closest<HTMLElement>(ITEM_SELECTOR);\n if (row && (source === row || source.matches('[data-gn-aside-part=\"surface\"]'))) {\n copy.setAttribute(CURRENT_ROW_KEY_ATTRIBUTE, getCurrentRowKey(row));\n }\n for (const property of [\n 'color',\n 'font',\n 'line-height',\n 'letter-spacing',\n 'text-transform',\n 'text-shadow',\n 'text-decoration',\n // A detached group no longer inherits its inline-list row gap.\n '--_--menu-item-gap',\n ]) {\n copy.style.setProperty(property, style.getPropertyValue(property));\n }\n });\n return clone;\n}\n\nfunction measureRow(element: HTMLElement): Row {\n const part = (name: string) => {\n const child = element.querySelector<HTMLElement>(`[data-gn-aside-part=\"${name}\"]`);\n return child ? measure(child) : undefined;\n };\n return {\n ...measure(element),\n icon: part('icon'),\n title: part('title'),\n surface: part('surface'),\n };\n}\n\nfunction capture(panel: HTMLElement): Snapshot {\n const rows = new Map<string, Row>();\n const groups = new Map<string, Group>();\n const dividers = new Map<string, Divider>();\n panel.querySelectorAll<HTMLElement>(ITEM_SELECTOR).forEach((element) => {\n // A quick-access copy and the main item have the same item id, but belong\n // to different composite bars. Nested items inherit their root bar's id.\n const section = getCompositeBarSection(element);\n const id = element.getAttribute(COMPOSITE_BAR_ITEM_ID_ATTRIBUTE);\n const row = measureRow(element);\n if (element.hasAttribute('data-gn-aside-nested')) {\n row.group = `${section}/${element.closest('[data-gn-aside-group]')?.getAttribute('data-gn-aside-group')}`;\n }\n rows.set(`${section}/${id}`, row);\n });\n const logo = panel.querySelector<HTMLElement>(LOGO_SELECTOR);\n if (logo) rows.set('logo', measureRow(logo));\n const title = panel.querySelector<HTMLElement>(TITLE_SELECTOR);\n if (title) rows.set('quick-access-title', measureRow(title));\n panel.querySelectorAll<HTMLElement>('[data-gn-aside-divider]').forEach((element) => {\n if (element.closest('[data-gn-aside-transition-overlay]')) return;\n const id = element.getAttribute('data-gn-aside-divider');\n const section = getCompositeBarSection(element, 'aside');\n const group = element.closest('[data-gn-aside-group]');\n if (id)\n dividers.set(`${section}/${id}`, {\n ...measure(element),\n id,\n group: group\n ? `${section}/${group.getAttribute('data-gn-aside-group')}`\n : undefined,\n });\n });\n panel.querySelectorAll<HTMLElement>('[data-gn-aside-group]').forEach((element) => {\n const list = element.querySelector<HTMLElement>(':scope > .g-list');\n const header = element.querySelector<HTMLElement>(ITEM_SELECTOR);\n if (!list || !header) return;\n const section = getCompositeBarSection(header);\n groups.set(`${section}/${element.getAttribute('data-gn-aside-group')}`, {\n part: measure(list),\n headerKey: `${section}/${header.getAttribute(COMPOSITE_BAR_ITEM_ID_ATTRIBUTE)}`,\n });\n });\n const width = panel.getBoundingClientRect().width;\n const layoutWidth =\n Number.parseFloat(getComputedStyle(panel).getPropertyValue('--gn-aside-header-size')) ||\n width;\n const slot = panel.nextElementSibling?.matches('[data-gn-aside-collapse-layer]')\n ? panel.nextElementSibling.querySelector<HTMLElement>('[data-gn-aside-collapse-slot]')\n : null;\n const collapse = slot\n ? {\n element: slot,\n y: slot.getBoundingClientRect().y,\n anchor: panel.querySelector('[data-gn-collapse-anchor]'),\n }\n : undefined;\n return {rows, groups, dividers, width, layoutWidth, collapse};\n}\n\ntype BeforeSnapshot = Snapshot & {appearances: Map<Part, HTMLElement>};\n\nfunction canCreateRowGhost(row: Row, snapshot: Snapshot): boolean {\n return row.opacity !== 0 && !(row.group && snapshot.groups.has(row.group));\n}\n\nfunction captureGhostAppearances(snapshot: Snapshot): Map<Part, HTMLElement> {\n const appearances = new Map<Part, HTMLElement>();\n const save = (part: Part) => appearances.set(part, cloneAppearance(part.element));\n snapshot.rows.forEach((row) => {\n if (canCreateRowGhost(row, snapshot)) save(row);\n if (row.title && row.title.opacity > 0) save(row.title);\n });\n snapshot.groups.forEach(({part}) => save(part));\n return appearances;\n}\n\nfunction translation(x: number, y: number, transform = 'none') {\n return `translate(${x}px, ${y}px) ${transform === 'none' ? '' : transform}`;\n}\n\n/**\n * FLIP boundary for the aside: snapshot before React mutates the DOM, then\n * translate the target rows from their old positions before the browser paints.\n * Text is never scaled and the actual target layout is present from the start.\n * Departing rows/titles are decorative, inert copies, removed on animation finish.\n */\nexport class AsideLayoutTransition extends React.Component<\n Props,\n Record<string, never>,\n BeforeSnapshot | null\n> {\n private root = React.createRef<HTMLDivElement>();\n private currentIndicator = new CurrentIndicatorTransition(() => this.reconcileObservation());\n private currentIdentities: CurrentIdentitySnapshot = new Map();\n private presentationObserver = new CurrentPresentationObserver((identities, surfaces) => {\n const panel = this.animatedPanel;\n if (!panel) return;\n if (!panel.isConnected || !this.root.current?.contains(panel)) {\n this.cancel();\n return;\n }\n this.currentIdentities = identities;\n this.surfacePaint.forEach((_animation, surface) => {\n if (!surface.isConnected || !panel.contains(surface)) surfaces.add(surface);\n });\n this.cancelSurfacePaint(surfaces);\n this.currentIndicator.validate(panel, identities);\n this.reconcileObservation();\n });\n private animations: Animation[] = [];\n private surfacePaint = new Map<HTMLElement, Animation>();\n private overlay?: HTMLDivElement;\n private scrollOverlay?: HTMLDivElement;\n private animatedPanel?: HTMLElement;\n private departingRows = new Map<string, HTMLElement>();\n private departingTitles = new Map<string, HTMLElement>();\n private generation = 0;\n private pendingStart?: object;\n private departingGroups = new Map<string, {element: HTMLElement; headerKey: string}>();\n private departingDividers = new Map<\n string,\n {element: HTMLElement; id: string; group?: string}\n >();\n\n getSnapshotBeforeUpdate(previous: Props): BeforeSnapshot | null {\n if (this.props.compactTransition === false) {\n if (this.animatedPanel || this.pendingStart) this.cancel();\n return null;\n }\n if (previous.compact === this.props.compact) return null;\n if (window.matchMedia?.('(prefers-reduced-motion: reduce)').matches) {\n if (this.animatedPanel || this.pendingStart) this.cancel();\n return null;\n }\n const panel = this.root.current?.querySelector<HTMLElement>('[data-gn-aside-panel]');\n // A synchronous remount can precede observer delivery. Departing parts\n // belong only to their original panel and must not seed a new snapshot.\n if (\n this.animatedPanel &&\n (this.animatedPanel !== panel || !this.animatedPanel.isConnected)\n ) {\n this.cancel();\n }\n if (!panel) return null;\n const identities = captureCurrentIdentity(panel);\n this.presentationObserver.check(panel, identities, true);\n const current = this.currentIndicator.capture(panel, identities);\n // Save moving geometry first, then restore live paint before ordinary\n // snapshots. Layout effects stay alive until every reversal part is read.\n this.presentationObserver.disconnect();\n this.animatedPanel = undefined;\n this.currentIndicator.cancel();\n const snapshot = {...capture(panel), current};\n // Interrupted transitions start at their current screen coordinates,\n // including content still fading out from a previous compact toggle.\n this.departingRows.forEach((element, key) => snapshot.rows.set(key, measureRow(element)));\n this.departingTitles.forEach((element, key) => {\n const row = snapshot.rows.get(key);\n if (row) row.title = measure(element);\n });\n this.departingGroups.forEach(({element, headerKey}, key) => {\n snapshot.groups.set(key, {part: measure(element), headerKey});\n });\n this.departingDividers.forEach(({element, id, group}, key) => {\n snapshot.dividers.set(key, {...measure(element), id, group});\n });\n const before: BeforeSnapshot = {\n ...snapshot,\n appearances: captureGhostAppearances(snapshot),\n };\n this.animatedPanel = panel;\n this.cancel();\n return before;\n }\n\n componentDidUpdate(\n _previous: Props,\n _state: Record<string, never>,\n before: BeforeSnapshot | null,\n ) {\n if (!before) return;\n const generation = this.generation;\n const pendingStart = {};\n this.pendingStart = pendingStart;\n // AutoSizer's mount/update can synchronously enqueue another React commit.\n // Let that commit finish before reading the target rows, but still install\n // the inverse transforms in the same task, before the browser paints.\n queueMicrotask(() => {\n if (generation !== this.generation) return;\n if (this.pendingStart === pendingStart) this.pendingStart = undefined;\n if (this.root.current) this.start(before);\n });\n }\n\n componentWillUnmount() {\n this.cancel();\n }\n\n render() {\n const {compactTransition: _compactTransition, compact: _compact, ...props} = this.props;\n return <div {...props} ref={this.root} />;\n }\n\n private start(before: BeforeSnapshot) {\n if (this.props.compactTransition === false) return;\n const panel = this.root.current?.querySelector<HTMLElement>('[data-gn-aside-panel]');\n if (\n !panel ||\n typeof panel.animate !== 'function' ||\n window.matchMedia?.('(prefers-reduced-motion: reduce)').matches\n )\n return;\n\n const after = capture(panel);\n // CSS shortens reversed transitions. Follow its actual duration rather\n // than restarting a second independent 200ms presentation timer.\n const widthTransition = panel\n .getAnimations()\n .find(\n (animation) =>\n 'transitionProperty' in animation && animation.transitionProperty === 'width',\n );\n const duration = Number(\n widthTransition?.effect?.getComputedTiming().duration ??\n ASIDE_HEADER_COLLAPSE_TRANSITION_MS,\n );\n if (duration <= 0) return;\n const generation = ++this.generation;\n panel.setAttribute('data-gn-aside-animating', '');\n this.currentIdentities = captureCurrentIdentity(panel);\n const targetCurrent = captureCurrentPresentation(panel, this.currentIdentities);\n const options: KeyframeAnimationOptions = {duration, easing: 'ease-in-out', fill: 'both'};\n this.currentIndicator.start(\n panel,\n matchCurrentPresentations(before.current ?? new Map(), targetCurrent),\n options,\n widthTransition?.startTime ?? null,\n );\n const animate = (element: HTMLElement, keyframes: Keyframe[]) => {\n const animation = element.animate(keyframes, options);\n if (widthTransition?.startTime !== null && widthTransition?.startTime !== undefined) {\n animation.startTime = widthTransition.startTime;\n }\n this.animations.push(animation);\n return animation;\n };\n\n if (\n before.collapse &&\n after.collapse &&\n before.collapse.element === after.collapse.element &&\n before.collapse.anchor === after.collapse.anchor\n ) {\n animate(after.collapse.element, [\n {transform: `translateY(${before.collapse.y - after.collapse.y}px)`},\n {transform: 'none'},\n ]);\n }\n\n after.rows.forEach((row, key) => {\n if (row.group && after.groups.has(row.group)) return;\n const old = before.rows.get(key);\n if (!old) {\n animate(row.element, [{opacity: 0}, {opacity: row.opacity}]);\n return;\n }\n animate(row.element, [\n {\n transform: translation(\n old.rect.x - row.rect.x,\n old.rect.y - row.rect.y,\n row.transform,\n ),\n opacity: old.opacity,\n },\n {transform: row.transform, opacity: row.opacity},\n ]);\n if (old.icon && row.icon) {\n // Keep the icon's centre continuous even for action rows and\n // two-line titles, whose icon slots differ between layouts.\n const dx =\n old.icon.anchor.x +\n old.icon.anchor.width / 2 -\n old.rect.x -\n (row.icon.anchor.x + row.icon.anchor.width / 2 - row.rect.x);\n const dy =\n old.icon.anchor.y +\n old.icon.anchor.height / 2 -\n old.rect.y -\n (row.icon.anchor.y + row.icon.anchor.height / 2 - row.rect.y);\n animate(row.icon.element, [{transform: translation(dx, dy)}, {transform: 'none'}]);\n }\n if (row.title && row.title.opacity > 0) {\n const dx = old.title?.opacity\n ? old.title.rect.x - old.rect.x - (row.title.rect.x - row.rect.x)\n : 0;\n const dy = old.title?.opacity\n ? old.title.rect.y - old.rect.y - (row.title.rect.y - row.rect.y)\n : 0;\n animate(row.title.element, [\n {opacity: old.title?.opacity ?? 0, transform: translation(dx, dy)},\n {opacity: row.title.opacity, transform: 'none'},\n ]);\n } else if (old.title && old.title.opacity > 0) {\n const ghost = this.addGhost(panel, old.title, before.appearances);\n if (ghost) {\n this.departingTitles.set(key, ghost);\n animate(ghost, [\n {opacity: old.title.opacity, transform: 'none'},\n {\n opacity: 0,\n transform: translation(\n row.rect.x - old.rect.x,\n row.rect.y - old.rect.y,\n ),\n },\n ]);\n }\n }\n if (old.surface && row.surface) {\n const surface = row.surface;\n const dx = old.surface.rect.x - old.rect.x - (surface.rect.x - row.rect.x);\n const dy = old.surface.rect.y - old.rect.y - (surface.rect.y - row.rect.y);\n animate(surface.element, [\n {\n transform: translation(dx, dy),\n width: `${old.surface.rect.width}px`,\n height: `${old.surface.rect.height}px`,\n borderRadius: old.surface.borderRadius,\n },\n {\n transform: 'none',\n width: `${surface.rect.width}px`,\n height: `${surface.rect.height}px`,\n borderRadius: surface.borderRadius,\n },\n ]);\n if (\n !this.currentIndicator.manages(surface.element) &&\n old.surface.backgroundColor !== surface.backgroundColor\n ) {\n const animation = animate(surface.element, [\n {backgroundColor: old.surface.backgroundColor},\n {backgroundColor: surface.backgroundColor},\n ]);\n this.surfacePaint.set(surface.element, animation);\n const settled = () => {\n if (\n this.generation !== generation ||\n this.surfacePaint.get(surface.element) !== animation\n )\n return;\n // A finished fill:'both' effect still overrides native\n // current/hover CSS until it is explicitly released.\n this.cancelSurfacePaint(new Set([surface.element]));\n this.reconcileObservation();\n };\n animation.finished.then(settled, settled);\n }\n }\n });\n before.rows.forEach((row, key) => {\n if (after.rows.has(key) || !canCreateRowGhost(row, before)) return;\n const ghost = this.addGhost(panel, row, before.appearances);\n if (!ghost) return;\n this.departingRows.set(key, ghost);\n animate(ghost, [{opacity: row.opacity}, {opacity: 0}]);\n });\n\n after.dividers.forEach((divider, key) => {\n const old = before.dividers.get(key);\n const oldGroup = divider.group ? before.groups.get(divider.group) : undefined;\n const newGroup = divider.group ? after.groups.get(divider.group) : undefined;\n // Nested lines inherit their group's translation; only compensate\n // for changes within that group, not its full screen movement twice.\n const dx = old ? old.rect.x - divider.rect.x : 0;\n const dy = old ? old.rect.y - divider.rect.y : 0;\n const groupDx = oldGroup && newGroup ? oldGroup.part.rect.x - newGroup.part.rect.x : dx;\n const groupDy = oldGroup && newGroup ? oldGroup.part.rect.y - newGroup.part.rect.y : dy;\n // Lines resize with the outer edge while text retains its target\n // layout. Keep footer overflow opacity independent of this motion.\n animate(divider.element, [\n {\n transform: translation(\n dx - (newGroup ? groupDx : 0),\n dy - (newGroup ? groupDy : 0),\n divider.transform,\n ),\n width: `${old?.rect.width ?? Math.max(0, divider.rect.width + before.width - after.layoutWidth)}px`,\n },\n {transform: divider.transform, width: `${divider.rect.width}px`},\n ]);\n });\n\n const openClip = 'inset(0px 0px 0px 0px)';\n const closedClip = 'inset(0px 0px 100% 0px)';\n after.groups.forEach((group, key) => {\n const old = before.groups.get(key);\n const oldHeader = before.rows.get(group.headerKey);\n const header = after.rows.get(group.headerKey);\n let dx = 0;\n let dy = 0;\n if (old) {\n dx = old.part.rect.x - group.part.rect.x;\n dy = old.part.rect.y - group.part.rect.y;\n } else if (oldHeader && header) {\n dx = oldHeader.rect.x - header.rect.x;\n dy = oldHeader.rect.y - header.rect.y;\n }\n animate(group.part.element, [\n {transform: translation(dx, dy), clipPath: old ? old.part.clipPath : closedClip},\n {transform: 'none', clipPath: openClip},\n ]);\n });\n before.groups.forEach((group, key) => {\n if (after.groups.has(key)) return;\n const ghost = this.addGhost(panel, group.part, before.appearances);\n if (!ghost) return;\n this.departingGroups.set(key, {element: ghost, headerKey: group.headerKey});\n // Departing groups are decorative clones, but their dividers still\n // resize with the aside. Retain keyed geometry for a mid-flight reversal.\n before.dividers.forEach((divider, dividerKey) => {\n if (divider.group !== key) return;\n const line = Array.from(\n ghost.querySelectorAll<HTMLElement>('[data-gn-aside-divider]'),\n ).find((element) => element.getAttribute('data-gn-aside-divider') === divider.id);\n if (!line) return;\n this.departingDividers.set(dividerKey, {element: line, id: divider.id, group: key});\n animate(line, [\n {width: `${divider.rect.width}px`},\n {\n width: `${Math.max(0, divider.rect.width + after.layoutWidth - before.width)}px`,\n },\n ]);\n });\n const oldHeader = before.rows.get(group.headerKey);\n const header = after.rows.get(group.headerKey);\n const dx = oldHeader && header ? header.rect.x - oldHeader.rect.x : 0;\n const dy = oldHeader && header ? header.rect.y - oldHeader.rect.y : 0;\n animate(ghost, [\n {\n transform: 'none',\n clipPath: group.part.clipPath === 'none' ? openClip : group.part.clipPath,\n },\n {transform: translation(dx, dy), clipPath: closedClip},\n ]);\n });\n\n this.animatedPanel = panel;\n this.reconcileObservation();\n Promise.all(\n this.animations.map((animation) => animation.finished.catch(() => undefined)),\n ).then(() => {\n if (this.generation === generation) this.cancel();\n });\n }\n\n private addGhost(\n panel: HTMLElement,\n part: Part,\n appearances: Map<Part, HTMLElement>,\n ): HTMLElement | undefined {\n const ghost = appearances.get(part);\n if (!ghost) {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error('Missing pre-update aside ghost appearance');\n }\n return undefined;\n }\n if (!this.overlay) {\n this.overlay = document.createElement('div');\n this.overlay.setAttribute('aria-hidden', 'true');\n this.overlay.setAttribute('inert', '');\n this.overlay.setAttribute('data-gn-aside-transition-overlay', '');\n Object.assign(this.overlay.style, {\n position: 'absolute',\n inset: '0',\n overflow: 'hidden',\n pointerEvents: 'none',\n zIndex: '4',\n });\n panel.appendChild(this.overlay);\n }\n this.currentIndicator.prepareGhost(ghost);\n [ghost, ...Array.from(ghost.querySelectorAll<HTMLElement>('*'))].forEach((element) => {\n element.removeAttribute('id');\n element.removeAttribute('data-qa');\n element.removeAttribute('data-gn-collapse-anchor');\n element.removeAttribute(COMPOSITE_BAR_ITEM_ID_ATTRIBUTE);\n });\n const origin = panel.getBoundingClientRect();\n let parent = this.overlay;\n let top = origin.y;\n if (part.clipRect) {\n const viewport = panel\n .querySelector('[data-gn-aside-scrollport]')\n ?.getBoundingClientRect();\n const clipTop = Math.max(part.clipRect.top, viewport?.top ?? part.clipRect.top);\n const clipBottom = Math.min(\n part.clipRect.bottom,\n viewport?.bottom ?? part.clipRect.bottom,\n );\n if (!this.scrollOverlay) {\n this.scrollOverlay = document.createElement('div');\n this.scrollOverlay.setAttribute('data-gn-aside-transition-scroll-clip', '');\n Object.assign(this.scrollOverlay.style, {\n position: 'absolute',\n left: '0',\n right: '0',\n top: `${clipTop - origin.y}px`,\n height: `${Math.max(0, clipBottom - clipTop)}px`,\n overflow: 'hidden',\n });\n this.overlay.appendChild(this.scrollOverlay);\n }\n parent = this.scrollOverlay;\n top = parent.getBoundingClientRect().y;\n }\n Object.assign(ghost.style, {\n position: 'absolute',\n margin: '0',\n boxSizing: 'border-box',\n left: `${part.rect.x - origin.x}px`,\n top: `${part.rect.y - top}px`,\n width: `${part.rect.width}px`,\n height: `${part.rect.height}px`,\n transform: 'none',\n });\n parent.appendChild(ghost);\n return ghost;\n }\n\n private cancel() {\n this.presentationObserver.disconnect();\n this.pendingStart = undefined;\n this.generation++;\n this.animatedPanel?.removeAttribute('data-gn-aside-animating');\n this.animatedPanel = undefined;\n this.currentIndicator.cancel();\n this.animations.forEach((animation) => animation.cancel());\n this.animations = [];\n this.surfacePaint.clear();\n this.currentIdentities.clear();\n this.overlay?.remove();\n this.overlay = undefined;\n this.scrollOverlay = undefined;\n this.departingRows.clear();\n this.departingTitles.clear();\n this.departingGroups.clear();\n this.departingDividers.clear();\n }\n\n private cancelSurfacePaint(surfaces: Set<HTMLElement>) {\n const cancelled = new Set<Animation>();\n this.surfacePaint.forEach((animation, surface) => {\n if (!surfaces.has(surface)) return;\n animation.cancel();\n cancelled.add(animation);\n this.surfacePaint.delete(surface);\n });\n this.animations = this.animations.filter((animation) => !cancelled.has(animation));\n }\n\n private reconcileObservation() {\n if (\n this.animatedPanel &&\n (this.currentIndicator.hasActiveTransfers || this.surfacePaint.size > 0)\n ) {\n this.presentationObserver.observe(this.animatedPanel, this.currentIdentities);\n } else {\n this.presentationObserver.disconnect();\n }\n }\n}\n"],"names":["CURRENT_ROW_SELECTOR","CURRENT_ROW_KEY_ATTRIBUTE","getCurrentRowKey","getCompositeBarSection","COMPOSITE_BAR_ITEM_ID_ATTRIBUTE","CurrentIndicatorTransition","CurrentPresentationObserver","captureCurrentIdentity","__rest","ASIDE_HEADER_COLLAPSE_TRANSITION_MS","captureCurrentPresentation","matchCurrentPresentations"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type CurrentIdentitySnapshot, type CurrentSnapshot, type CurrentTransfer } from './currentIndicatorModel';
2
+ export declare class CurrentIndicatorTransition {
3
+ private active;
4
+ private onTransfersChanged?;
5
+ constructor(onTransfersChanged?: () => void);
6
+ get hasActiveTransfers(): boolean;
7
+ capture(panel: HTMLElement, identities?: CurrentIdentitySnapshot): CurrentSnapshot;
8
+ start(panel: HTMLElement, transfers: CurrentTransfer[], options: KeyframeAnimationOptions, startTime: Animation['startTime']): void;
9
+ manages(surface: HTMLElement): boolean;
10
+ prepareGhost(root: HTMLElement): void;
11
+ cancel(): void;
12
+ validate(panel: HTMLElement, identities: CurrentIdentitySnapshot): void;
13
+ private release;
14
+ }
@@ -0,0 +1,164 @@
1
+ 'use strict';
2
+
3
+ var currentIndicatorDom = require('./currentIndicatorDom.js');
4
+ var currentIndicatorModel = require('./currentIndicatorModel.js');
5
+
6
+ class CurrentIndicatorTransition {
7
+ constructor(onTransfersChanged) {
8
+ this.active = new Set();
9
+ this.onTransfersChanged = onTransfersChanged;
10
+ }
11
+ get hasActiveTransfers() {
12
+ return this.active.size > 0;
13
+ }
14
+ capture(panel, identities = currentIndicatorModel.captureCurrentIdentity(panel)) {
15
+ // A parent can change current and compact in one task, before observer
16
+ // delivery. Restore invalid transfers before reading native paint.
17
+ this.validate(panel, identities);
18
+ const snapshot = currentIndicatorModel.captureCurrentPresentation(panel, identities);
19
+ snapshot.forEach((presentation, key) => {
20
+ const active = Array.from(this.active).find(({ transfer }) => transfer.to.row === presentation.row);
21
+ if (!active)
22
+ return;
23
+ const style = getComputedStyle(active.indicator);
24
+ snapshot.set(key, Object.assign(Object.assign({}, presentation), { rect: active.indicator.getBoundingClientRect(), color: style.backgroundColor, radius: style.borderRadius, inFlight: true }));
25
+ });
26
+ return snapshot;
27
+ }
28
+ start(panel, transfers, options, startTime) {
29
+ var _a;
30
+ this.cancel();
31
+ const layers = new Map();
32
+ transfers.forEach((transfer) => {
33
+ var _a, _b, _c, _d;
34
+ const { from, to } = transfer;
35
+ const host = to.row.closest('[data-gn-aside-current-container]');
36
+ // Built-in header/footer rows never change representative and have
37
+ // no scroll-content indicator container to transport within.
38
+ if (!host || typeof host.animate !== 'function')
39
+ return;
40
+ const hostRect = host.getBoundingClientRect();
41
+ const scrollRect = (_a = host.closest('[data-gn-aside-scrollport]')) === null || _a === undefined ? undefined : _a.getBoundingClientRect();
42
+ const layerLeft = ((_b = scrollRect === null || scrollRect === undefined ? undefined : scrollRect.left) !== null && _b !== undefined ? _b : hostRect.left) - hostRect.left;
43
+ const layerWidth = ((_c = scrollRect === null || scrollRect === undefined ? undefined : scrollRect.right) !== null && _c !== undefined ? _c : hostRect.right) - ((_d = scrollRect === null || scrollRect === undefined ? undefined : scrollRect.left) !== null && _d !== undefined ? _d : hostRect.left);
44
+ let layer = layers.get(host);
45
+ if (!layer) {
46
+ layer = document.createElement('div');
47
+ layer.setAttribute('data-gn-aside-current-indicator-layer', '');
48
+ layer.setAttribute('aria-hidden', 'true');
49
+ layer.setAttribute('inert', '');
50
+ Object.assign(layer.style, {
51
+ position: 'absolute',
52
+ insetBlock: '0',
53
+ left: `${layerLeft}px`,
54
+ width: `${Math.max(0, layerWidth)}px`,
55
+ overflow: 'hidden',
56
+ pointerEvents: 'none',
57
+ zIndex: '0',
58
+ });
59
+ host.prepend(layer);
60
+ layers.set(host, layer);
61
+ }
62
+ const indicator = document.createElement('div');
63
+ indicator.setAttribute('data-gn-aside-current-indicator', '');
64
+ indicator.style.position = 'absolute';
65
+ const frame = (presentation) => ({
66
+ left: `${presentation.rect.left - hostRect.left - layerLeft}px`,
67
+ top: `${presentation.rect.y - hostRect.y}px`,
68
+ width: `${presentation.rect.width}px`,
69
+ height: `${presentation.rect.height}px`,
70
+ borderRadius: presentation.radius,
71
+ backgroundColor: presentation.color,
72
+ });
73
+ Object.assign(indicator.style, frame(to));
74
+ layer.append(indicator);
75
+ const rowKeys = new Set([from.key, to.key]);
76
+ const surfaces = new Set();
77
+ panel.querySelectorAll(currentIndicatorDom.CURRENT_ROW_SELECTOR).forEach((row) => {
78
+ if (row.closest('[data-gn-aside-transition-overlay]') ||
79
+ !rowKeys.has(currentIndicatorModel.getCurrentRowKey(row)))
80
+ return;
81
+ const surface = row.querySelector(currentIndicatorDom.SURFACE_SELECTOR);
82
+ if (surface) {
83
+ surface.setAttribute(currentIndicatorDom.CURRENT_SUPPRESSED_ATTRIBUTE, '');
84
+ surfaces.add(surface);
85
+ }
86
+ });
87
+ const animation = indicator.animate([frame(from), frame(to)], options);
88
+ if (startTime !== null)
89
+ animation.startTime = startTime;
90
+ const active = { transfer, indicator, layer, animation, surfaces, rowKeys };
91
+ this.active.add(active);
92
+ // Membership is the generation guard: stale finished promises cannot
93
+ // remove resources belonging to a subsequently started transfer.
94
+ animation.finished.then(() => this.release(active), () => this.release(active));
95
+ });
96
+ if (this.active.size)
97
+ (_a = this.onTransfersChanged) === null || _a === undefined ? undefined : _a.call(this);
98
+ }
99
+ manages(surface) {
100
+ return Array.from(this.active).some((active) => active.surfaces.has(surface));
101
+ }
102
+ prepareGhost(root) {
103
+ const surfaces = [...root.querySelectorAll(currentIndicatorDom.SURFACE_SELECTOR)];
104
+ surfaces.forEach((surface) => {
105
+ var _a;
106
+ const key = (_a = surface
107
+ .closest(`[${currentIndicatorDom.CURRENT_ROW_KEY_ATTRIBUTE}]`)) === null || _a === undefined ? undefined : _a.getAttribute(currentIndicatorDom.CURRENT_ROW_KEY_ATTRIBUTE);
108
+ if (surface.hasAttribute(currentIndicatorDom.CURRENT_SUPPRESSED_ATTRIBUTE) ||
109
+ (key && Array.from(this.active).some((active) => active.rowKeys.has(key)))) {
110
+ // This copy describes an old selection. Its suppression belongs
111
+ // to the ghost's lifetime, even after current changes in live DOM.
112
+ surface.setAttribute(currentIndicatorDom.CURRENT_GHOST_SUPPRESSED_ATTRIBUTE, '');
113
+ }
114
+ surface.removeAttribute(currentIndicatorDom.CURRENT_SUPPRESSED_ATTRIBUTE);
115
+ });
116
+ }
117
+ cancel() {
118
+ this.active.forEach((active) => this.release(active));
119
+ }
120
+ validate(panel, identities) {
121
+ if (!this.active.size)
122
+ return;
123
+ const counts = new Map();
124
+ identities.forEach(({ section, currentIds }) => {
125
+ currentIds.forEach((id) => {
126
+ var _a;
127
+ const key = JSON.stringify([section, id]);
128
+ counts.set(key, ((_a = counts.get(key)) !== null && _a !== undefined ? _a : 0) + 1);
129
+ });
130
+ });
131
+ this.active.forEach((active) => {
132
+ const { to } = active.transfer;
133
+ const target = identities.get(to.row);
134
+ if (!panel.isConnected ||
135
+ !active.layer.isConnected ||
136
+ !active.indicator.isConnected ||
137
+ counts.get(JSON.stringify([to.section, to.currentIds[0]])) !== 1 ||
138
+ !target ||
139
+ target.currentIds[0] !== to.currentIds[0] ||
140
+ target.surface !== to.surface ||
141
+ target.key !== to.key ||
142
+ target.currentIds.length !== 1) {
143
+ this.release(active);
144
+ }
145
+ });
146
+ }
147
+ release(active) {
148
+ var _a;
149
+ if (!this.active.delete(active))
150
+ return;
151
+ active.surfaces.forEach((surface) => {
152
+ if (!this.manages(surface))
153
+ surface.removeAttribute(currentIndicatorDom.CURRENT_SUPPRESSED_ATTRIBUTE);
154
+ });
155
+ active.animation.cancel();
156
+ active.indicator.remove();
157
+ if (!Array.from(this.active).some(({ layer }) => layer === active.layer))
158
+ active.layer.remove();
159
+ (_a = this.onTransfersChanged) === null || _a === undefined ? undefined : _a.call(this);
160
+ }
161
+ }
162
+
163
+ exports.CurrentIndicatorTransition = CurrentIndicatorTransition;
164
+ //# sourceMappingURL=CurrentIndicatorTransition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CurrentIndicatorTransition.js","sources":["../../../../../../../src/components/AsideHeader/components/PageLayout/CurrentIndicatorTransition.ts"],"sourcesContent":["import {\n CURRENT_GHOST_SUPPRESSED_ATTRIBUTE,\n CURRENT_ROW_KEY_ATTRIBUTE,\n CURRENT_ROW_SELECTOR,\n CURRENT_SUPPRESSED_ATTRIBUTE,\n SURFACE_SELECTOR,\n} from './currentIndicatorDom';\nimport {\n type CurrentIdentitySnapshot,\n type CurrentSnapshot,\n type CurrentTransfer,\n captureCurrentIdentity,\n captureCurrentPresentation,\n getCurrentRowKey,\n} from './currentIndicatorModel';\n\ntype ActiveTransfer = {\n transfer: CurrentTransfer;\n indicator: HTMLElement;\n layer: HTMLElement;\n animation: Animation;\n surfaces: Set<HTMLElement>;\n rowKeys: Set<string>;\n};\n\nexport class CurrentIndicatorTransition {\n private active = new Set<ActiveTransfer>();\n private onTransfersChanged?: () => void;\n\n constructor(onTransfersChanged?: () => void) {\n this.onTransfersChanged = onTransfersChanged;\n }\n\n get hasActiveTransfers(): boolean {\n return this.active.size > 0;\n }\n\n capture(panel: HTMLElement, identities = captureCurrentIdentity(panel)): CurrentSnapshot {\n // A parent can change current and compact in one task, before observer\n // delivery. Restore invalid transfers before reading native paint.\n this.validate(panel, identities);\n const snapshot = captureCurrentPresentation(panel, identities);\n snapshot.forEach((presentation, key) => {\n const active = Array.from(this.active).find(\n ({transfer}) => transfer.to.row === presentation.row,\n );\n if (!active) return;\n const style = getComputedStyle(active.indicator);\n snapshot.set(key, {\n ...presentation,\n rect: active.indicator.getBoundingClientRect(),\n color: style.backgroundColor,\n radius: style.borderRadius,\n inFlight: true,\n });\n });\n return snapshot;\n }\n\n start(\n panel: HTMLElement,\n transfers: CurrentTransfer[],\n options: KeyframeAnimationOptions,\n startTime: Animation['startTime'],\n ): void {\n this.cancel();\n const layers = new Map<HTMLElement, HTMLElement>();\n transfers.forEach((transfer) => {\n const {from, to} = transfer;\n const host = to.row.closest<HTMLElement>('[data-gn-aside-current-container]');\n // Built-in header/footer rows never change representative and have\n // no scroll-content indicator container to transport within.\n if (!host || typeof host.animate !== 'function') return;\n const hostRect = host.getBoundingClientRect();\n const scrollRect = host.closest('[data-gn-aside-scrollport]')?.getBoundingClientRect();\n const layerLeft = (scrollRect?.left ?? hostRect.left) - hostRect.left;\n const layerWidth =\n (scrollRect?.right ?? hostRect.right) - (scrollRect?.left ?? hostRect.left);\n let layer = layers.get(host);\n if (!layer) {\n layer = document.createElement('div');\n layer.setAttribute('data-gn-aside-current-indicator-layer', '');\n layer.setAttribute('aria-hidden', 'true');\n layer.setAttribute('inert', '');\n Object.assign(layer.style, {\n position: 'absolute',\n insetBlock: '0',\n left: `${layerLeft}px`,\n width: `${Math.max(0, layerWidth)}px`,\n overflow: 'hidden',\n pointerEvents: 'none',\n zIndex: '0',\n });\n host.prepend(layer);\n layers.set(host, layer);\n }\n const indicator = document.createElement('div');\n indicator.setAttribute('data-gn-aside-current-indicator', '');\n indicator.style.position = 'absolute';\n const frame = (presentation: CurrentTransfer['from']): Keyframe => ({\n left: `${presentation.rect.left - hostRect.left - layerLeft}px`,\n top: `${presentation.rect.y - hostRect.y}px`,\n width: `${presentation.rect.width}px`,\n height: `${presentation.rect.height}px`,\n borderRadius: presentation.radius,\n backgroundColor: presentation.color,\n });\n Object.assign(indicator.style, frame(to));\n layer.append(indicator);\n const rowKeys = new Set([from.key, to.key]);\n const surfaces = new Set<HTMLElement>();\n panel.querySelectorAll<HTMLElement>(CURRENT_ROW_SELECTOR).forEach((row) => {\n if (\n row.closest('[data-gn-aside-transition-overlay]') ||\n !rowKeys.has(getCurrentRowKey(row))\n )\n return;\n const surface = row.querySelector<HTMLElement>(SURFACE_SELECTOR);\n if (surface) {\n surface.setAttribute(CURRENT_SUPPRESSED_ATTRIBUTE, '');\n surfaces.add(surface);\n }\n });\n const animation = indicator.animate([frame(from), frame(to)], options);\n if (startTime !== null) animation.startTime = startTime;\n const active = {transfer, indicator, layer, animation, surfaces, rowKeys};\n this.active.add(active);\n // Membership is the generation guard: stale finished promises cannot\n // remove resources belonging to a subsequently started transfer.\n animation.finished.then(\n () => this.release(active),\n () => this.release(active),\n );\n });\n if (this.active.size) this.onTransfersChanged?.();\n }\n\n manages(surface: HTMLElement): boolean {\n return Array.from(this.active).some((active) => active.surfaces.has(surface));\n }\n\n prepareGhost(root: HTMLElement): void {\n const surfaces = [...root.querySelectorAll<HTMLElement>(SURFACE_SELECTOR)];\n surfaces.forEach((surface) => {\n const key = surface\n .closest(`[${CURRENT_ROW_KEY_ATTRIBUTE}]`)\n ?.getAttribute(CURRENT_ROW_KEY_ATTRIBUTE);\n if (\n surface.hasAttribute(CURRENT_SUPPRESSED_ATTRIBUTE) ||\n (key && Array.from(this.active).some((active) => active.rowKeys.has(key)))\n ) {\n // This copy describes an old selection. Its suppression belongs\n // to the ghost's lifetime, even after current changes in live DOM.\n surface.setAttribute(CURRENT_GHOST_SUPPRESSED_ATTRIBUTE, '');\n }\n surface.removeAttribute(CURRENT_SUPPRESSED_ATTRIBUTE);\n });\n }\n\n cancel(): void {\n this.active.forEach((active) => this.release(active));\n }\n\n validate(panel: HTMLElement, identities: CurrentIdentitySnapshot): void {\n if (!this.active.size) return;\n const counts = new Map<string, number>();\n identities.forEach(({section, currentIds}) => {\n currentIds.forEach((id) => {\n const key = JSON.stringify([section, id]);\n counts.set(key, (counts.get(key) ?? 0) + 1);\n });\n });\n this.active.forEach((active) => {\n const {to} = active.transfer;\n const target = identities.get(to.row);\n if (\n !panel.isConnected ||\n !active.layer.isConnected ||\n !active.indicator.isConnected ||\n counts.get(JSON.stringify([to.section, to.currentIds[0]])) !== 1 ||\n !target ||\n target.currentIds[0] !== to.currentIds[0] ||\n target.surface !== to.surface ||\n target.key !== to.key ||\n target.currentIds.length !== 1\n ) {\n this.release(active);\n }\n });\n }\n\n private release(active: ActiveTransfer) {\n if (!this.active.delete(active)) return;\n active.surfaces.forEach((surface) => {\n if (!this.manages(surface)) surface.removeAttribute(CURRENT_SUPPRESSED_ATTRIBUTE);\n });\n active.animation.cancel();\n active.indicator.remove();\n if (!Array.from(this.active).some(({layer}) => layer === active.layer))\n active.layer.remove();\n this.onTransfersChanged?.();\n }\n}\n"],"names":["captureCurrentIdentity","captureCurrentPresentation","CURRENT_ROW_SELECTOR","getCurrentRowKey","SURFACE_SELECTOR","CURRENT_SUPPRESSED_ATTRIBUTE","CURRENT_ROW_KEY_ATTRIBUTE","CURRENT_GHOST_SUPPRESSED_ATTRIBUTE"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type CurrentIdentitySnapshot } from './currentIndicatorModel';
2
+ type IdentityChange = (identities: CurrentIdentitySnapshot, changedSurfaces: Set<HTMLElement>) => void;
3
+ /** Subscription and metadata diff only; the coordinator owns observation lifetime. */
4
+ export declare class CurrentPresentationObserver {
5
+ private observer?;
6
+ private panel?;
7
+ private onChange;
8
+ private identities;
9
+ constructor(onChange: IdentityChange);
10
+ observe(panel: HTMLElement, initialIdentities: CurrentIdentitySnapshot): void;
11
+ check(panel: HTMLElement, identities: CurrentIdentitySnapshot, bindingChanged?: boolean): void;
12
+ disconnect(): void;
13
+ }
14
+ export {};
@@ -0,0 +1,94 @@
1
+ 'use strict';
2
+
3
+ var constants = require('../CompositeBar/constants.js');
4
+ var currentIndicatorDom = require('./currentIndicatorDom.js');
5
+ var currentIndicatorModel = require('./currentIndicatorModel.js');
6
+
7
+ const BINDING_SELECTOR = `${currentIndicatorDom.CURRENT_ROW_SELECTOR}, ${currentIndicatorDom.SURFACE_SELECTOR}, [data-gn-aside-current-indicator-layer], [data-gn-aside-current-indicator]`;
8
+ /** Subscription and metadata diff only; the coordinator owns observation lifetime. */
9
+ class CurrentPresentationObserver {
10
+ constructor(onChange) {
11
+ this.identities = new Map();
12
+ this.onChange = onChange;
13
+ }
14
+ observe(panel, initialIdentities) {
15
+ if (this.panel === panel)
16
+ return;
17
+ this.disconnect();
18
+ this.panel = panel;
19
+ this.identities = initialIdentities;
20
+ const parent = panel.parentElement;
21
+ const observer = new MutationObserver((records) => {
22
+ if (this.observer !== observer)
23
+ return;
24
+ const bindingChanged = records.some((record) => {
25
+ if (record.type !== 'childList')
26
+ return false;
27
+ const nodes = [
28
+ ...Array.from(record.addedNodes),
29
+ ...Array.from(record.removedNodes),
30
+ ];
31
+ if (record.target === parent)
32
+ return nodes.includes(panel);
33
+ return nodes.some((node) => node instanceof HTMLElement &&
34
+ (node.matches(BINDING_SELECTOR) ||
35
+ Boolean(node.querySelector(BINDING_SELECTOR))));
36
+ });
37
+ // The immediate parent's other children belong to page content.
38
+ if (!bindingChanged && !records.some((record) => record.type === 'attributes'))
39
+ return;
40
+ this.check(panel, currentIndicatorModel.captureCurrentIdentity(panel), bindingChanged);
41
+ });
42
+ this.observer = observer;
43
+ observer.observe(panel, {
44
+ subtree: true,
45
+ childList: true,
46
+ attributes: true,
47
+ attributeFilter: [
48
+ currentIndicatorDom.CURRENT_IDS_ATTRIBUTE,
49
+ constants.COMPOSITE_BAR_ITEM_ID_ATTRIBUTE,
50
+ 'data-gn-aside-part',
51
+ 'id',
52
+ ],
53
+ });
54
+ if (parent)
55
+ observer.observe(parent, { childList: true });
56
+ }
57
+ // The coordinator can reconcile a synchronous React commit before mutation
58
+ // delivery, reusing the same identities for its subsequent moving snapshot.
59
+ check(panel, identities, bindingChanged = false) {
60
+ if (this.panel !== panel)
61
+ return;
62
+ const changedSurfaces = new Set();
63
+ this.identities.forEach((previous, row) => {
64
+ const current = identities.get(row);
65
+ const ids = new Set(current === null || current === undefined ? undefined : current.currentIds);
66
+ if (!current ||
67
+ current.key !== previous.key ||
68
+ current.surface !== previous.surface ||
69
+ ids.size !== new Set(previous.currentIds).size ||
70
+ previous.currentIds.some((id) => !ids.has(id))) {
71
+ changedSurfaces.add(previous.surface);
72
+ if (current)
73
+ changedSurfaces.add(current.surface);
74
+ }
75
+ });
76
+ identities.forEach((current, row) => {
77
+ if (!this.identities.has(row))
78
+ changedSurfaces.add(current.surface);
79
+ });
80
+ this.identities = identities;
81
+ if (changedSurfaces.size || bindingChanged)
82
+ this.onChange(identities, changedSurfaces);
83
+ }
84
+ disconnect() {
85
+ var _a;
86
+ this.panel = undefined;
87
+ this.identities = new Map();
88
+ (_a = this.observer) === null || _a === undefined ? undefined : _a.disconnect();
89
+ this.observer = undefined;
90
+ }
91
+ }
92
+
93
+ exports.CurrentPresentationObserver = CurrentPresentationObserver;
94
+ //# sourceMappingURL=CurrentPresentationObserver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CurrentPresentationObserver.js","sources":["../../../../../../../src/components/AsideHeader/components/PageLayout/CurrentPresentationObserver.ts"],"sourcesContent":["import {COMPOSITE_BAR_ITEM_ID_ATTRIBUTE} from '../CompositeBar/constants';\n\nimport {CURRENT_IDS_ATTRIBUTE, CURRENT_ROW_SELECTOR, SURFACE_SELECTOR} from './currentIndicatorDom';\nimport {type CurrentIdentitySnapshot, captureCurrentIdentity} from './currentIndicatorModel';\n\ntype IdentityChange = (\n identities: CurrentIdentitySnapshot,\n changedSurfaces: Set<HTMLElement>,\n) => void;\n\nconst BINDING_SELECTOR = `${CURRENT_ROW_SELECTOR}, ${SURFACE_SELECTOR}, [data-gn-aside-current-indicator-layer], [data-gn-aside-current-indicator]`;\n\n/** Subscription and metadata diff only; the coordinator owns observation lifetime. */\nexport class CurrentPresentationObserver {\n private observer?: MutationObserver;\n private panel?: HTMLElement;\n private onChange: IdentityChange;\n private identities: CurrentIdentitySnapshot = new Map();\n\n constructor(onChange: IdentityChange) {\n this.onChange = onChange;\n }\n\n observe(panel: HTMLElement, initialIdentities: CurrentIdentitySnapshot): void {\n if (this.panel === panel) return;\n this.disconnect();\n this.panel = panel;\n this.identities = initialIdentities;\n const parent = panel.parentElement;\n const observer = new MutationObserver((records) => {\n if (this.observer !== observer) return;\n const bindingChanged = records.some((record) => {\n if (record.type !== 'childList') return false;\n const nodes = [\n ...Array.from(record.addedNodes),\n ...Array.from(record.removedNodes),\n ];\n if (record.target === parent) return nodes.includes(panel);\n return nodes.some(\n (node) =>\n node instanceof HTMLElement &&\n (node.matches(BINDING_SELECTOR) ||\n Boolean(node.querySelector(BINDING_SELECTOR))),\n );\n });\n // The immediate parent's other children belong to page content.\n if (!bindingChanged && !records.some((record) => record.type === 'attributes')) return;\n this.check(panel, captureCurrentIdentity(panel), bindingChanged);\n });\n this.observer = observer;\n observer.observe(panel, {\n subtree: true,\n childList: true,\n attributes: true,\n attributeFilter: [\n CURRENT_IDS_ATTRIBUTE,\n COMPOSITE_BAR_ITEM_ID_ATTRIBUTE,\n 'data-gn-aside-part',\n 'id',\n ],\n });\n if (parent) observer.observe(parent, {childList: true});\n }\n\n // The coordinator can reconcile a synchronous React commit before mutation\n // delivery, reusing the same identities for its subsequent moving snapshot.\n check(panel: HTMLElement, identities: CurrentIdentitySnapshot, bindingChanged = false): void {\n if (this.panel !== panel) return;\n const changedSurfaces = new Set<HTMLElement>();\n this.identities.forEach((previous, row) => {\n const current = identities.get(row);\n const ids = new Set(current?.currentIds);\n if (\n !current ||\n current.key !== previous.key ||\n current.surface !== previous.surface ||\n ids.size !== new Set(previous.currentIds).size ||\n previous.currentIds.some((id) => !ids.has(id))\n ) {\n changedSurfaces.add(previous.surface);\n if (current) changedSurfaces.add(current.surface);\n }\n });\n identities.forEach((current, row) => {\n if (!this.identities.has(row)) changedSurfaces.add(current.surface);\n });\n this.identities = identities;\n if (changedSurfaces.size || bindingChanged) this.onChange(identities, changedSurfaces);\n }\n\n disconnect(): void {\n this.panel = undefined;\n this.identities = new Map();\n this.observer?.disconnect();\n this.observer = undefined;\n }\n}\n"],"names":["CURRENT_ROW_SELECTOR","SURFACE_SELECTOR","captureCurrentIdentity","CURRENT_IDS_ATTRIBUTE","COMPOSITE_BAR_ITEM_ID_ATTRIBUTE"],"mappings":";;;;;;AAUA,MAAM,gBAAgB,GAAG,CAAA,EAAGA,wCAAoB,CAAK,EAAA,EAAAC,oCAAgB,8EAA8E;AAEnJ;MACa,2BAA2B,CAAA;AAMpC,IAAA,WAAA,CAAY,QAAwB,EAAA;AAF5B,QAAA,IAAA,CAAA,UAAU,GAA4B,IAAI,GAAG,EAAE;AAGnD,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;;IAG5B,OAAO,CAAC,KAAkB,EAAE,iBAA0C,EAAA;AAClE,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;YAAE;QAC1B,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,UAAU,GAAG,iBAAiB;AACnC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa;QAClC,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,CAAC,OAAO,KAAI;AAC9C,YAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ;gBAAE;YAChC,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;AAC3C,gBAAA,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW;AAAE,oBAAA,OAAO,KAAK;AAC7C,gBAAA,MAAM,KAAK,GAAG;AACV,oBAAA,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;AAChC,oBAAA,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;iBACrC;AACD,gBAAA,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM;AAAE,oBAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAC1D,OAAO,KAAK,CAAC,IAAI,CACb,CAAC,IAAI,KACD,IAAI,YAAY,WAAW;AAC3B,qBAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;wBAC3B,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,CACzD;AACL,aAAC,CAAC;;AAEF,YAAA,IAAI,CAAC,cAAc,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC;gBAAE;AAChF,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAEC,4CAAsB,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC;AACpE,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,QAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE;AACpB,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,eAAe,EAAE;gBACbC,yCAAqB;gBACrBC,yCAA+B;gBAC/B,oBAAoB;gBACpB,IAAI;AACP,aAAA;AACJ,SAAA,CAAC;AACF,QAAA,IAAI,MAAM;YAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC;;;;AAK3D,IAAA,KAAK,CAAC,KAAkB,EAAE,UAAmC,EAAE,cAAc,GAAG,KAAK,EAAA;AACjF,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;YAAE;AAC1B,QAAA,MAAM,eAAe,GAAG,IAAI,GAAG,EAAe;QAC9C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,GAAG,KAAI;YACtC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;AACnC,YAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,SAAA,GAAA,SAAA,GAAA,OAAO,CAAE,UAAU,CAAC;AACxC,YAAA,IACI,CAAC,OAAO;AACR,gBAAA,OAAO,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG;AAC5B,gBAAA,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO;gBACpC,GAAG,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI;AAC9C,gBAAA,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAChD;AACE,gBAAA,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;AACrC,gBAAA,IAAI,OAAO;AAAE,oBAAA,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;;AAEzD,SAAC,CAAC;QACF,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,KAAI;YAChC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;AAAE,gBAAA,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;AACvE,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,QAAA,IAAI,eAAe,CAAC,IAAI,IAAI,cAAc;AAAE,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;;IAG1F,UAAU,GAAA;;AACN,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS;AACtB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE;AAC3B,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,SAAA,GAAA,SAAA,GAAA,EAAA,CAAA,UAAU,EAAE;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS;;AAEhC;;;;"}
@@ -1,2 +1,12 @@
1
1
  .AsideHeader-module__g-root___EuNRw{--gn-aside-top-panel-height:0px}
2
- .AsideHeader-module__gn-aside-header___Z0Sa7{--gn-aside-header-min-width:56px;--_--item-margin-inline:8px;--gn-aside-header-item-expanded-radius:8px;--_--item-icon-background-size:38px;--_--background-color:var(--g-color-base-background);--_--decoration-collapsed-background-color:var(--g-color-base-warning-light);--_--decoration-expanded-background-color:var(--g-color-base-warning-light);--_--vertical-divider-line-color:var(--g-color-line-generic);--_--horizontal-divider-line-color:var(--g-color-line-generic);background-color:var(--g-color-base-background);height:100%;position:relative;width:100%}.AsideHeader-module__gn-aside-header__aside___AyP0y{background-color:var(--gn-aside-header-expanded-background-color,var(--gn-aside-header-background-color,var(--_--background-color)));box-sizing:border-box;display:flex;flex-direction:column;height:100vh;left:0;margin-top:var(--gn-top-alert-height,0);max-height:calc(100vh - var(--gn-top-alert-height, 0));position:sticky;top:var(--gn-top-alert-height,0);width:inherit;z-index:var(--gn-aside-header-z-index,100)}.AsideHeader-module__gn-aside-header__aside___AyP0y:after{background-color:var(--gn-aside-header-divider-vertical-color,var(--_--vertical-divider-line-color));content:"";height:100%;position:absolute;right:0;top:0;width:1px;z-index:2}.AsideHeader-module__gn-aside-header__aside-popup-anchor___N3tgM{inset:0;position:absolute;z-index:1}.AsideHeader-module__gn-aside-header__aside-content___w5GOS{--gradient-height:334px;display:flex;flex-direction:column;height:inherit;overflow-x:hidden;padding-top:var(--gn-aside-header-padding-top);position:relative;user-select:none;width:inherit;z-index:2}.AsideHeader-module__gn-aside-header__aside-content___w5GOS>.AsideHeader-module__gn-aside-header-logo___6MdXx{margin:8px 0}.AsideHeader-module__gn-aside-header__aside_menu-overflow-scroll___l-td6 .AsideHeader-module__gn-aside-header__aside-content___w5GOS{min-height:0;overflow:hidden}.AsideHeader-module__gn-aside-header__aside-content_with-decoration___UsCye{background:linear-gradient(180deg,var(--gn-aside-header-decoration-expanded-background-color,var(--_--decoration-expanded-background-color)) calc(var(--gradient-height)*.33),transparent calc(var(--gradient-height)*.88))}.AsideHeader-module__gn-aside-header__aside-custom-background___-bqdE{bottom:0;display:flex;position:absolute;top:0;width:var(--gn-aside-header-size);z-index:-1}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__aside___AyP0y{background-color:var(--gn-aside-header-collapsed-background-color,var(--gn-aside-header-background-color,var(--_--background-color)))}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__aside-content___w5GOS{background:transparent}.AsideHeader-module__gn-aside-header__header___m5aIU{--gn-aside-header-header-divider-height:29px;box-sizing:border-box;flex:none;padding-bottom:22px;padding-top:8px;position:relative;width:100%;z-index:1}.AsideHeader-module__gn-aside-header__header___m5aIU .AsideHeader-module__gn-aside-header__header-divider___lIG-e{bottom:0;color:var(--gn-aside-header-decoration-collapsed-background-color,var(--_--decoration-collapsed-background-color));display:none;left:0;position:absolute;z-index:-2}.AsideHeader-module__gn-aside-header__header_with-decoration___3dTJO:before{background-color:var(--gn-aside-header-decoration-collapsed-background-color,var(--_--decoration-collapsed-background-color));content:"";display:none;height:calc(100% - var(--gn-aside-header-header-divider-height));left:0;position:absolute;top:0;width:100%;z-index:-2}.AsideHeader-module__gn-aside-header__header___m5aIU:after{background-color:var(--gn-aside-header-divider-horizontal-color,var(--_--horizontal-divider-line-color));bottom:12px;content:"";height:1px;left:0;position:absolute;width:100%;z-index:-2}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__header___m5aIU:before, .AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__header_with-decoration___3dTJO .AsideHeader-module__gn-aside-header__header-divider___lIG-e{display:block}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__header_with-decoration___3dTJO:after{display:none}.AsideHeader-module__gn-aside-header__logo-button___5u2iH .AsideHeader-module__gn-aside-header__logo-icon-place___3Oo9i{height:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size));width:var(--gn-aside-header-min-width)}.AsideHeader-module__gn-aside-header__menu-items___SOI2-{flex-grow:1}.AsideHeader-module__gn-aside-header__menu-item___q2y31:not(:has([data-type=action])){margin-inline:var(--_--item-margin-inline)}.AsideHeader-module__gn-aside-header__menu-item___q2y31:has([data-type=regular]), .AsideHeader-module__gn-aside-header__menu-item_type_regular___XYYbc, .AsideHeader-module__gn-aside-header__root-menu-item___eNfkk[class]:hover{border-radius:var(--gn-aside-header-item-expanded-radius,8px)}.AsideHeader-module__gn-aside-header__footer___vmoTl{display:flex;flex-direction:column;flex-shrink:0;margin:var(--g-spacing-2) var(--_--item-margin-inline)}.AsideHeader-module__gn-aside-header__panels___-fdu4{z-index:var(--gn-aside-header-panel-z-index,98)}.AsideHeader-module__gn-aside-header__panel___HywH6, .AsideHeader-module__gn-aside-header__panel___HywH6.g-drawer__item{bottom:0;height:auto;top:0}.AsideHeader-module__gn-aside-header__pane-container___y-v2e{display:flex;flex-direction:row;outline:none;overflow:visible;user-select:text}.AsideHeader-module__gn-aside-header__top-alert___hY12r{background:var(--g-color-base-background);position:fixed;top:0;width:100%;z-index:var(--gn-aside-header-pane-top-z-index,98)}.AsideHeader-module__gn-aside-header__content___4-mBl{margin-top:var(--gn-top-alert-height,0);width:calc(100% - var(--gn-aside-header-size));z-index:var(--gn-aside-header-content-z-index,95)}.AsideHeader-module__gn-aside-header__all-pages-panel___O94IU{width:fit-content!important}
2
+ .AsideHeader-module__gn-aside-header___Z0Sa7{--gn-aside-header-min-width:var(--_--gn-aside-header-density-compact-width,56px);--_--item-margin-inline:var(
3
+ --_--gn-aside-header-density-item-margin-inline,8px
4
+ );--_--item-expanded-radius:var(
5
+ --_--gn-aside-header-density-item-expanded-radius,8px
6
+ );--_--item-icon-background-size:var(
7
+ --gn-aside-header-item-icon-background-size,var(--_--gn-aside-header-density-icon-background-size,38px)
8
+ );--_--background-color:var(--g-color-base-background);--_--decoration-collapsed-background-color:var(--g-color-base-warning-light);--_--decoration-expanded-background-color:var(--g-color-base-warning-light);--_--vertical-divider-line-color:var(--g-color-line-generic);--_--horizontal-divider-line-color:var(--g-color-line-generic);--_--section-divider-gap:var(--g-spacing-1);background-color:var(--g-color-base-background);height:100%;position:relative;width:100%}.AsideHeader-module__gn-aside-header__compact-transition___bBGfN{--_--gn-aside-width-transition:width 0.2s ease-in-out;--_--gn-aside-collapse-geometry-transition:inset-inline-end 0.2s ease-in-out,width 0.2s ease-in-out,border-radius 0.2s ease-in-out;--_--gn-aside-drawer-transition:left 0.2s ease-in-out,background-color var(--_--animation-duration,300ms)}.AsideHeader-module__gn-aside-header__compact-transition_disabled___ztpdX{--_--gn-aside-width-transition:none;--_--gn-aside-collapse-geometry-transition:none;--_--gn-aside-drawer-transition:background-color var(--_--animation-duration,300ms)}.AsideHeader-module__gn-aside-header__aside___AyP0y{background-color:var(--gn-aside-header-expanded-background-color,var(--gn-aside-header-background-color,var(--_--background-color)));box-sizing:border-box;display:flex;flex-direction:column;height:100vh;left:0;margin-top:var(--gn-top-alert-height,0);max-height:calc(100vh - var(--gn-top-alert-height, 0));overflow:hidden;position:sticky;top:var(--gn-top-alert-height,0);transition:var(--_--gn-aside-width-transition);width:inherit;z-index:var(--gn-aside-header-z-index,100)}.AsideHeader-module__gn-aside-header__aside___AyP0y:after{background-color:var(--gn-aside-header-divider-vertical-color,var(--_--vertical-divider-line-color));content:"";height:100%;inset-inline-end:0;position:absolute;top:0;width:1px;z-index:2}.AsideHeader-module__gn-aside-header__aside-popup-anchor___N3tgM{inset:0;position:absolute;z-index:1}.AsideHeader-module__gn-aside-header__aside-content___w5GOS{--gradient-height:334px;display:flex;flex-direction:column;height:inherit;min-height:0;overflow:hidden;padding-top:var(--gn-aside-header-padding-top);position:relative;user-select:none;width:var(--gn-aside-header-size);z-index:2}.AsideHeader-module__gn-aside-header__aside-content___w5GOS>.AsideHeader-module__gn-aside-header-logo___6MdXx{margin:8px 0}.AsideHeader-module__gn-aside-header__aside-content_with-decoration___UsCye{background:linear-gradient(180deg,var(--gn-aside-header-decoration-expanded-background-color,var(--_--decoration-expanded-background-color)) calc(var(--gradient-height)*.33),transparent calc(var(--gradient-height)*.88))}.AsideHeader-module__gn-aside-header__aside-custom-background___-bqdE{bottom:0;display:flex;position:absolute;top:0;transition:var(--_--gn-aside-width-transition);width:var(--gn-aside-header-size);z-index:-1}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__aside___AyP0y{background-color:var(--gn-aside-header-collapsed-background-color,var(--gn-aside-header-background-color,var(--_--background-color)))}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__aside-content___w5GOS{background:transparent}.AsideHeader-module__gn-aside-header__aside___AyP0y[data-gn-aside-animating] [data-gn-aside-divider]{flex-shrink:0}.AsideHeader-module__gn-aside-header__aside___AyP0y[data-gn-aside-animating] .AsideHeader-module__gn-aside-header__aside-content___w5GOS{overflow:visible}.AsideHeader-module__gn-aside-header__aside___AyP0y[data-gn-aside-animating] .g-list__item, .AsideHeader-module__gn-aside-header__aside___AyP0y[data-gn-aside-animating] .g-list__item-content{min-width:0;overflow:visible}.AsideHeader-module__gn-aside-header__aside___AyP0y[data-gn-aside-animating] [data-gn-aside-scrollport]{width:var(--_--gn-aside-header-expanded-width)}.AsideHeader-module__gn-aside-header__aside___AyP0y[data-gn-aside-animating] .AsideHeader-module__gn-aside-header__unified-menu-content___cpugB{width:var(--gn-aside-header-size)}.AsideHeader-module__gn-aside-header__header___m5aIU{--gn-aside-header-header-divider-height:var(
9
+ --_--gn-aside-header-density-header-divider-height,29px
10
+ );box-sizing:border-box;flex:none;padding-bottom:var(--_--header-padding-bottom,22px);padding-top:8px;position:relative;width:100%;z-index:1}.AsideHeader-module__gn-aside-header__header___m5aIU .AsideHeader-module__gn-aside-header__header-divider___lIG-e{color:var(--gn-aside-header-decoration-collapsed-background-color,var(--_--decoration-collapsed-background-color));display:none;left:0;position:absolute;top:calc(100% - var(--gn-aside-header-header-divider-height));z-index:-2}.AsideHeader-module__gn-aside-header__header_with-decoration___3dTJO:before{background-color:var(--gn-aside-header-decoration-collapsed-background-color,var(--_--decoration-collapsed-background-color));content:"";display:none;height:calc(100% - var(--gn-aside-header-header-divider-height));left:0;position:absolute;top:0;width:100%;z-index:-2}.AsideHeader-module__gn-aside-header__header___m5aIU .AsideHeader-module__gn-aside-header__header-bottom-divider___x9Bzo{background-color:var(--gn-aside-header-divider-horizontal-color,var(--_--horizontal-divider-line-color));bottom:12px;content:"";height:1px;left:0;position:absolute;width:100%;z-index:-2}.AsideHeader-module__gn-aside-header__aside-content_with-quick-access___Yucty:not(.AsideHeader-module__gn-aside-header__aside-content_hide-section-dividers___9BZdB) .AsideHeader-module__gn-aside-header__header___m5aIU{padding-bottom:var(--_--header-padding-bottom,var(--_--section-divider-gap))}.AsideHeader-module__gn-aside-header__aside-content_with-quick-access___Yucty:not(.AsideHeader-module__gn-aside-header__aside-content_hide-section-dividers___9BZdB) .AsideHeader-module__gn-aside-header__header___m5aIU .AsideHeader-module__gn-aside-header__header-bottom-divider___x9Bzo{bottom:0}.AsideHeader-module__gn-aside-header__aside-content_with-quick-access___Yucty:not(.AsideHeader-module__gn-aside-header__aside-content_with-quick-access-items___oU0Yz):not(.AsideHeader-module__gn-aside-header__aside-content_hide-section-dividers___9BZdB) .AsideHeader-module__gn-aside-header__header___m5aIU{margin-bottom:var(--_--section-divider-gap)}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__header___m5aIU:before{display:block}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__header_with-decoration___3dTJO{--_--header-padding-bottom:calc(var(--gn-aside-header-header-divider-height)*22/29)}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__header_with-decoration___3dTJO .AsideHeader-module__gn-aside-header__header-divider___lIG-e{display:block}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__header_with-decoration___3dTJO .AsideHeader-module__gn-aside-header__header-bottom-divider___x9Bzo{display:none}.AsideHeader-module__gn-aside-header__logo-button___5u2iH .AsideHeader-module__gn-aside-header__logo-icon-place___3Oo9i{height:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size));width:var(--gn-aside-header-min-width)}.AsideHeader-module__gn-aside-header__logo___QvKKT{--_--gn-logo-height:var(
11
+ --_--gn-aside-header-density-item-height,40px
12
+ )}.AsideHeader-module__gn-aside-header__quick-access___ykXmy{box-sizing:border-box;flex:none;margin-bottom:var(--_--section-divider-gap);padding-block:var(--_--section-divider-gap);position:relative;width:100%}.AsideHeader-module__gn-aside-header__quick-access-divider___AzkVl{background-color:var(--gn-aside-header-divider-horizontal-color,var(--_--horizontal-divider-line-color));bottom:0;content:"";height:1px;left:var(--_--item-margin-inline);position:absolute;right:var(--_--item-margin-inline);width:auto;z-index:1}.AsideHeader-module__gn-aside-header__quick-access-title___im4TL{color:var(--g-color-text-secondary);font-family:var(--g-text-caption-font-family);font-size:var(--g-text-caption-2-font-size);font-weight:var(--g-text-caption-font-weight);line-height:var(--g-text-caption-2-line-height);margin-inline:var(--_--item-margin-inline);padding-inline:calc(var(--_--gn-aside-header-density-item-height, 40px) + var(--_--gn-aside-header-density-item-title-gap, var(--g-spacing-2))) var(--_--gn-aside-header-density-item-title-gap-end,var(--g-spacing-4));padding-bottom:var(--g-spacing-1);user-select:none}.AsideHeader-module__gn-aside-header__unified-menu-scroll___EHnK-{flex:1 1 auto;min-height:0}.AsideHeader-module__gn-aside-header__unified-menu-content___cpugB{display:flex;flex-direction:column;min-height:100%;position:relative;z-index:0}.AsideHeader-module__gn-aside-header___Z0Sa7 [data-gn-aside-current-container]>:not([data-gn-aside-current-indicator-layer]):not([data-gn-aside-divider]){position:relative;z-index:1}.AsideHeader-module__gn-aside-header__menu-items___SOI2-{flex-grow:1}.AsideHeader-module__gn-aside-header__menu-item___q2y31:not(:has([data-type=action])){margin-inline:var(--_--item-margin-inline)}.AsideHeader-module__gn-aside-header__menu-item___q2y31:has([data-type=regular]), .AsideHeader-module__gn-aside-header__menu-item_type_regular___XYYbc, .AsideHeader-module__gn-aside-header__root-menu-item___eNfkk[class]:hover{border-radius:var(--gn-aside-header-item-expanded-radius,var(--_--item-expanded-radius))}.AsideHeader-module__gn-aside-header__collapse-fallback___R6O7X{flex-shrink:0;height:var(--_--gn-aside-header-density-footer-item-height,32px)}.AsideHeader-module__gn-aside-header__footer___vmoTl{display:flex;flex-direction:column;flex-shrink:0;margin:var(--g-spacing-2) var(--_--item-margin-inline);position:relative}.AsideHeader-module__gn-aside-header__footer___vmoTl .AsideHeader-module__gn-aside-header__footer-divider___9Jewp{background-color:var(--gn-aside-header-divider-horizontal-color,var(--_--horizontal-divider-line-color));content:"";height:1px;left:calc(var(--_--item-margin-inline)*-1);opacity:0;pointer-events:none;position:absolute;right:calc(var(--_--item-margin-inline)*-1);top:calc(var(--g-spacing-2)*-1);transition:opacity .3s ease-in-out}.AsideHeader-module__gn-aside-header__footer_with-divider___66E1w .AsideHeader-module__gn-aside-header__footer-divider___9Jewp{opacity:1}.AsideHeader-module__gn-aside-header__aside-content_hide-section-dividers___9BZdB .AsideHeader-module__gn-aside-header__header___m5aIU{margin-bottom:0;padding-bottom:0}.AsideHeader-module__gn-aside-header__aside-content_hide-section-dividers___9BZdB .AsideHeader-module__gn-aside-header__header___m5aIU:before{height:100%}.AsideHeader-module__gn-aside-header__aside-content_hide-section-dividers___9BZdB .AsideHeader-module__gn-aside-header__footer-divider___9Jewp, .AsideHeader-module__gn-aside-header__aside-content_hide-section-dividers___9BZdB .AsideHeader-module__gn-aside-header__header___m5aIU .AsideHeader-module__gn-aside-header__header-bottom-divider___x9Bzo, .AsideHeader-module__gn-aside-header__aside-content_hide-section-dividers___9BZdB .AsideHeader-module__gn-aside-header__header___m5aIU .AsideHeader-module__gn-aside-header__header-divider___lIG-e{display:none}.AsideHeader-module__gn-aside-header__aside-content_hide-section-dividers___9BZdB .AsideHeader-module__gn-aside-header__footer___vmoTl{margin-top:0}.AsideHeader-module__gn-aside-header__panels___-fdu4{z-index:var(--gn-aside-header-panel-z-index,98)}.AsideHeader-module__gn-aside-header__panels___-fdu4.g-drawer[data-floating-ui-status]{transition:var(--_--gn-aside-drawer-transition)}.AsideHeader-module__gn-aside-header__panel___HywH6, .AsideHeader-module__gn-aside-header__panel___HywH6.g-drawer__item{bottom:0;height:auto;top:0}.AsideHeader-module__gn-aside-header__pane-container___y-v2e{display:flex;flex-direction:row;outline:none;overflow:visible;user-select:text}.AsideHeader-module__gn-aside-header__top-alert___hY12r{background:var(--g-color-base-background);position:fixed;top:0;width:100%;z-index:var(--gn-aside-header-pane-top-z-index,98)}.AsideHeader-module__gn-aside-header__content___4-mBl{margin-top:var(--gn-top-alert-height,0);transition:var(--_--gn-aside-width-transition);width:calc(100% - var(--gn-aside-header-size));z-index:var(--gn-aside-header-content-z-index,95)}@media (prefers-reduced-motion:reduce){.AsideHeader-module__gn-aside-header__aside-custom-background___-bqdE, .AsideHeader-module__gn-aside-header__aside___AyP0y, .AsideHeader-module__gn-aside-header__content___4-mBl, .AsideHeader-module__gn-aside-header__panels___-fdu4.g-drawer[data-floating-ui-status]{transition:none}}.AsideHeader-module__gn-aside-header__all-pages-panel___O94IU{width:fit-content!important}
@@ -3,7 +3,7 @@ import { ContentProps } from '../../../Content';
3
3
  import { LayoutProps } from '../../types';
4
4
  export interface PageLayoutProps extends PropsWithChildren<LayoutProps> {
5
5
  }
6
- declare const PageLayout: (({ compact, className, children, topAlert }: PageLayoutProps) => React.JSX.Element) & {
6
+ declare const PageLayout: (({ compact, compactTransition, className, children, topAlert, menuDensity, }: PageLayoutProps) => React.JSX.Element) & {
7
7
  Content: React.FC<React.PropsWithChildren<Pick<ContentProps, "renderContent">>>;
8
8
  };
9
9
  export { PageLayout };
@@ -3,9 +3,10 @@ import './PageLayout.css';
3
3
 
4
4
  var React = require('react');
5
5
  var Content = require('../../../Content/Content.js');
6
- var constants = require('../../../constants.js');
7
6
  var AsideHeaderContext = require('../../AsideHeaderContext.js');
7
+ var density = require('../../density.js');
8
8
  var utils = require('../../utils.js');
9
+ var AsideLayoutTransition = require('./AsideLayoutTransition.js');
9
10
 
10
11
  const TopAlert = React.lazy(() => Promise.resolve().then(function () { return require('../../../TopAlert/index.js'); }).then((module) => ({ default: module.TopAlert })));
11
12
  // Constants for TopAlert height calculation (in pixels)
@@ -20,9 +21,12 @@ function calcEstimatedTopAlertHeight(topAlert) {
20
21
  (topAlert.title ? TITLE_HEIGHT_BONUS : 0) -
21
22
  (topAlert.dense ? DENSE_HEIGHT_REDUCTION : 0));
22
23
  }
23
- const Layout = ({ compact, className, children, topAlert }) => {
24
- const size = compact ? constants.ASIDE_HEADER_COMPACT_WIDTH : constants.ASIDE_HEADER_EXPANDED_WIDTH;
25
- const asideHeaderContextValue = React.useMemo(() => ({ size, compact }), [compact, size]);
24
+ const Layout = ({ compact, compactTransition = true, className, children, topAlert, menuDensity = 'default', }) => {
25
+ const densityConfig = density.getAsideHeaderDensityConfig(menuDensity);
26
+ const densityCssProperties = density.getAsideHeaderDensityCssProperties(menuDensity);
27
+ const isCompact = Boolean(compact);
28
+ const size = isCompact ? densityConfig.compactWidth : densityConfig.expandedWidth;
29
+ const asideHeaderContextValue = React.useMemo(() => ({ size, compact: isCompact, compactTransition, menuDensity }), [isCompact, compactTransition, size, menuDensity]);
26
30
  const estimatedTopAlertHeight = calcEstimatedTopAlertHeight(topAlert);
27
31
  // Reserve margin immediately on server render through inline variable on container.
28
32
  // After TopAlert mount, the exact height will be set by hook.
@@ -40,7 +44,12 @@ const Layout = ({ compact, className, children, topAlert }) => {
40
44
  };
41
45
  const preloadHeightValue = getPreloadHeightValue();
42
46
  return (React.createElement(AsideHeaderContext.AsideHeaderContextProvider, { value: asideHeaderContextValue },
43
- React.createElement("div", { className: utils.b({ compact }, className), style: Object.assign({}, { '--gn-aside-header-size': `${size}px` }) },
47
+ React.createElement(AsideLayoutTransition.AsideLayoutTransition, { compact: isCompact, compactTransition: compactTransition, className: utils.b({ compact: isCompact }, [
48
+ utils.getCompactTransitionClassName(compactTransition),
49
+ className !== null && className !== undefined ? className : '',
50
+ ]), style: Object.assign(Object.assign(Object.assign({}, densityCssProperties), { '--gn-aside-header-size': `${size}px` }), {
51
+ '--_--gn-aside-header-expanded-width': `${densityConfig.expandedWidth}px`,
52
+ }) },
44
53
  typeof preloadHeightValue === 'number' ? (React.createElement("style", { dangerouslySetInnerHTML: {
45
54
  __html: `.g-root{--gn-top-alert-height:${preloadHeightValue}px;}`,
46
55
  } })) : null,