@gravity-ui/navigation 6.5.1 → 7.0.0-beta.0

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 +9 -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__/QuickAccessOverflowExample.d.ts +8 -0
  13. package/build/cjs/components/AsideHeader/__playwright__/currentIndicatorPaint.d.ts +21 -0
  14. package/build/cjs/components/AsideHeader/__playwright__/transitionTestUtils.d.ts +4 -0
  15. package/build/cjs/components/AsideHeader/__stories__/fullNavigationMoc.d.ts +6 -0
  16. package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.js +2 -4
  17. package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.js.map +1 -1
  18. package/build/cjs/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.d.ts +2 -1
  19. package/build/cjs/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.js +5 -1
  20. package/build/cjs/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.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 +158 -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 +22 -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 -3
  83. package/build/cjs/components/AsideHeader/components/Header.js.map +1 -1
  84. package/build/cjs/components/AsideHeader/components/PageLayout/AsideFallback.css +9 -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 -6
  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 +9 -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 +9 -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 +21 -0
  114. package/build/cjs/components/AsideHeader/density.js +61 -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 +11 -4
  147. package/build/docs/components/AsideHeader.md +244 -51
  148. package/build/esm/components/AsideHeader/AsideHeader.css +9 -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__/QuickAccessOverflowExample.d.ts +8 -0
  160. package/build/esm/components/AsideHeader/__playwright__/currentIndicatorPaint.d.ts +21 -0
  161. package/build/esm/components/AsideHeader/__playwright__/transitionTestUtils.d.ts +4 -0
  162. package/build/esm/components/AsideHeader/__stories__/fullNavigationMoc.d.ts +6 -0
  163. package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.js +3 -5
  164. package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.js.map +1 -1
  165. package/build/esm/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.d.ts +2 -1
  166. package/build/esm/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.js +5 -1
  167. package/build/esm/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.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 +161 -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 +22 -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 +8 -4
  230. package/build/esm/components/AsideHeader/components/Header.js.map +1 -1
  231. package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.css +9 -1
  232. package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.d.ts +1 -0
  233. package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.js +14 -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 +9 -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 +9 -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 +21 -0
  261. package/build/esm/components/AsideHeader/density.js +58 -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 +11 -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,598 @@
1
+ import { __rest } from 'tslib';
2
+ import React__default from 'react';
3
+ import { ASIDE_HEADER_COLLAPSE_TRANSITION_MS } from '../../../constants.js';
4
+ import { COMPOSITE_BAR_ITEM_ID_ATTRIBUTE } from '../CompositeBar/constants.js';
5
+ import { CurrentIndicatorTransition } from './CurrentIndicatorTransition.js';
6
+ import { CurrentPresentationObserver } from './CurrentPresentationObserver.js';
7
+ import { getCompositeBarSection, CURRENT_ROW_SELECTOR, CURRENT_ROW_KEY_ATTRIBUTE } from './currentIndicatorDom.js';
8
+ import { captureCurrentIdentity, captureCurrentPresentation, matchCurrentPresentations, getCurrentRowKey } from './currentIndicatorModel.js';
9
+
10
+ const ITEM_SELECTOR = CURRENT_ROW_SELECTOR;
11
+ const LOGO_SELECTOR = '[data-gn-aside-transition-row="logo"]';
12
+ const TITLE_SELECTOR = '[data-gn-aside-part="quick-access-title"]';
13
+ function measure(element) {
14
+ var _a, _b, _c;
15
+ const rect = element.getBoundingClientRect();
16
+ const style = getComputedStyle(element);
17
+ return {
18
+ element,
19
+ rect,
20
+ anchor: (_b = (_a = element.querySelector('svg, img')) === null || _a === undefined ? undefined : _a.getBoundingClientRect()) !== null && _b !== undefined ? _b : rect,
21
+ opacity: rect.width > 0 && rect.height > 0 ? Number(style.opacity) : 0,
22
+ transform: style.transform,
23
+ backgroundColor: style.backgroundColor,
24
+ borderRadius: style.borderRadius,
25
+ clipPath: style.clipPath,
26
+ clipRect: (_c = element
27
+ .closest('[data-gn-aside-scrollport], [data-gn-aside-transition-scroll-clip]')) === null || _c === undefined ? undefined : _c.getBoundingClientRect(),
28
+ };
29
+ }
30
+ function cloneAppearance(element) {
31
+ const clone = element.cloneNode(true);
32
+ const sources = [element, ...Array.from(element.querySelectorAll('*'))];
33
+ const copies = [clone, ...Array.from(clone.querySelectorAll('*'))];
34
+ sources.forEach((source, index) => {
35
+ // A fading title leaves its row's CSS scope (for example _current).
36
+ // Preserve computed typography/paint, but not layout: the ghost's box
37
+ // and translation are controlled independently by the animation.
38
+ const style = getComputedStyle(source);
39
+ const copy = copies[index];
40
+ if (!copy.style)
41
+ return;
42
+ const row = source.closest(ITEM_SELECTOR);
43
+ if (row && (source === row || source.matches('[data-gn-aside-part="surface"]'))) {
44
+ copy.setAttribute(CURRENT_ROW_KEY_ATTRIBUTE, getCurrentRowKey(row));
45
+ }
46
+ for (const property of [
47
+ 'color',
48
+ 'font',
49
+ 'line-height',
50
+ 'letter-spacing',
51
+ 'text-transform',
52
+ 'text-shadow',
53
+ 'text-decoration',
54
+ // A detached group no longer inherits its inline-list row gap.
55
+ '--_--menu-item-gap',
56
+ ]) {
57
+ copy.style.setProperty(property, style.getPropertyValue(property));
58
+ }
59
+ });
60
+ return clone;
61
+ }
62
+ function measureRow(element) {
63
+ const part = (name) => {
64
+ const child = element.querySelector(`[data-gn-aside-part="${name}"]`);
65
+ return child ? measure(child) : undefined;
66
+ };
67
+ return Object.assign(Object.assign({}, measure(element)), { icon: part('icon'), title: part('title'), surface: part('surface') });
68
+ }
69
+ function capture(panel) {
70
+ var _a;
71
+ const rows = new Map();
72
+ const groups = new Map();
73
+ const dividers = new Map();
74
+ panel.querySelectorAll(ITEM_SELECTOR).forEach((element) => {
75
+ var _a;
76
+ // A quick-access copy and the main item have the same item id, but belong
77
+ // to different composite bars. Nested items inherit their root bar's id.
78
+ const section = getCompositeBarSection(element);
79
+ const id = element.getAttribute(COMPOSITE_BAR_ITEM_ID_ATTRIBUTE);
80
+ const row = measureRow(element);
81
+ if (element.hasAttribute('data-gn-aside-nested')) {
82
+ row.group = `${section}/${(_a = element.closest('[data-gn-aside-group]')) === null || _a === undefined ? undefined : _a.getAttribute('data-gn-aside-group')}`;
83
+ }
84
+ rows.set(`${section}/${id}`, row);
85
+ });
86
+ const logo = panel.querySelector(LOGO_SELECTOR);
87
+ if (logo)
88
+ rows.set('logo', measureRow(logo));
89
+ const title = panel.querySelector(TITLE_SELECTOR);
90
+ if (title)
91
+ rows.set('quick-access-title', measureRow(title));
92
+ panel.querySelectorAll('[data-gn-aside-divider]').forEach((element) => {
93
+ if (element.closest('[data-gn-aside-transition-overlay]'))
94
+ return;
95
+ const id = element.getAttribute('data-gn-aside-divider');
96
+ const section = getCompositeBarSection(element, 'aside');
97
+ const group = element.closest('[data-gn-aside-group]');
98
+ if (id)
99
+ dividers.set(`${section}/${id}`, Object.assign(Object.assign({}, measure(element)), { id, group: group
100
+ ? `${section}/${group.getAttribute('data-gn-aside-group')}`
101
+ : undefined }));
102
+ });
103
+ panel.querySelectorAll('[data-gn-aside-group]').forEach((element) => {
104
+ const list = element.querySelector(':scope > .g-list');
105
+ const header = element.querySelector(ITEM_SELECTOR);
106
+ if (!list || !header)
107
+ return;
108
+ const section = getCompositeBarSection(header);
109
+ groups.set(`${section}/${element.getAttribute('data-gn-aside-group')}`, {
110
+ part: measure(list),
111
+ headerKey: `${section}/${header.getAttribute(COMPOSITE_BAR_ITEM_ID_ATTRIBUTE)}`,
112
+ });
113
+ });
114
+ const width = panel.getBoundingClientRect().width;
115
+ const layoutWidth = Number.parseFloat(getComputedStyle(panel).getPropertyValue('--gn-aside-header-size')) ||
116
+ width;
117
+ const slot = ((_a = panel.nextElementSibling) === null || _a === undefined ? undefined : _a.matches('[data-gn-aside-collapse-layer]'))
118
+ ? panel.nextElementSibling.querySelector('[data-gn-aside-collapse-slot]')
119
+ : null;
120
+ const collapse = slot
121
+ ? {
122
+ element: slot,
123
+ y: slot.getBoundingClientRect().y,
124
+ anchor: panel.querySelector('[data-gn-collapse-anchor]'),
125
+ }
126
+ : undefined;
127
+ return { rows, groups, dividers, width, layoutWidth, collapse };
128
+ }
129
+ function canCreateRowGhost(row, snapshot) {
130
+ return row.opacity !== 0 && !(row.group && snapshot.groups.has(row.group));
131
+ }
132
+ function captureGhostAppearances(snapshot) {
133
+ const appearances = new Map();
134
+ const save = (part) => appearances.set(part, cloneAppearance(part.element));
135
+ snapshot.rows.forEach((row) => {
136
+ if (canCreateRowGhost(row, snapshot))
137
+ save(row);
138
+ if (row.title && row.title.opacity > 0)
139
+ save(row.title);
140
+ });
141
+ snapshot.groups.forEach(({ part }) => save(part));
142
+ return appearances;
143
+ }
144
+ function translation(x, y, transform = 'none') {
145
+ return `translate(${x}px, ${y}px) ${transform === 'none' ? '' : transform}`;
146
+ }
147
+ /**
148
+ * FLIP boundary for the aside: snapshot before React mutates the DOM, then
149
+ * translate the target rows from their old positions before the browser paints.
150
+ * Text is never scaled and the actual target layout is present from the start.
151
+ * Departing rows/titles are decorative, inert copies, removed on animation finish.
152
+ */
153
+ class AsideLayoutTransition extends React__default.Component {
154
+ constructor() {
155
+ super(...arguments);
156
+ this.root = React__default.createRef();
157
+ this.currentIndicator = new CurrentIndicatorTransition(() => this.reconcileObservation());
158
+ this.currentIdentities = new Map();
159
+ this.presentationObserver = new CurrentPresentationObserver((identities, surfaces) => {
160
+ var _a;
161
+ const panel = this.animatedPanel;
162
+ if (!panel)
163
+ return;
164
+ if (!panel.isConnected || !((_a = this.root.current) === null || _a === undefined ? undefined : _a.contains(panel))) {
165
+ this.cancel();
166
+ return;
167
+ }
168
+ this.currentIdentities = identities;
169
+ this.surfacePaint.forEach((_animation, surface) => {
170
+ if (!surface.isConnected || !panel.contains(surface))
171
+ surfaces.add(surface);
172
+ });
173
+ this.cancelSurfacePaint(surfaces);
174
+ this.currentIndicator.validate(panel, identities);
175
+ this.reconcileObservation();
176
+ });
177
+ this.animations = [];
178
+ this.surfacePaint = new Map();
179
+ this.departingRows = new Map();
180
+ this.departingTitles = new Map();
181
+ this.generation = 0;
182
+ this.departingGroups = new Map();
183
+ this.departingDividers = new Map();
184
+ }
185
+ getSnapshotBeforeUpdate(previous) {
186
+ var _a, _b;
187
+ if (this.props.compactTransition === false) {
188
+ if (this.animatedPanel || this.pendingStart)
189
+ this.cancel();
190
+ return null;
191
+ }
192
+ if (previous.compact === this.props.compact)
193
+ return null;
194
+ if ((_a = window.matchMedia) === null || _a === undefined ? undefined : _a.call(window, '(prefers-reduced-motion: reduce)').matches) {
195
+ if (this.animatedPanel || this.pendingStart)
196
+ this.cancel();
197
+ return null;
198
+ }
199
+ const panel = (_b = this.root.current) === null || _b === undefined ? undefined : _b.querySelector('[data-gn-aside-panel]');
200
+ // A synchronous remount can precede observer delivery. Departing parts
201
+ // belong only to their original panel and must not seed a new snapshot.
202
+ if (this.animatedPanel &&
203
+ (this.animatedPanel !== panel || !this.animatedPanel.isConnected)) {
204
+ this.cancel();
205
+ }
206
+ if (!panel)
207
+ return null;
208
+ const identities = captureCurrentIdentity(panel);
209
+ this.presentationObserver.check(panel, identities, true);
210
+ const current = this.currentIndicator.capture(panel, identities);
211
+ // Save moving geometry first, then restore live paint before ordinary
212
+ // snapshots. Layout effects stay alive until every reversal part is read.
213
+ this.presentationObserver.disconnect();
214
+ this.animatedPanel = undefined;
215
+ this.currentIndicator.cancel();
216
+ const snapshot = Object.assign(Object.assign({}, capture(panel)), { current });
217
+ // Interrupted transitions start at their current screen coordinates,
218
+ // including content still fading out from a previous compact toggle.
219
+ this.departingRows.forEach((element, key) => snapshot.rows.set(key, measureRow(element)));
220
+ this.departingTitles.forEach((element, key) => {
221
+ const row = snapshot.rows.get(key);
222
+ if (row)
223
+ row.title = measure(element);
224
+ });
225
+ this.departingGroups.forEach(({ element, headerKey }, key) => {
226
+ snapshot.groups.set(key, { part: measure(element), headerKey });
227
+ });
228
+ this.departingDividers.forEach(({ element, id, group }, key) => {
229
+ snapshot.dividers.set(key, Object.assign(Object.assign({}, measure(element)), { id, group }));
230
+ });
231
+ const before = Object.assign(Object.assign({}, snapshot), { appearances: captureGhostAppearances(snapshot) });
232
+ this.animatedPanel = panel;
233
+ this.cancel();
234
+ return before;
235
+ }
236
+ componentDidUpdate(_previous, _state, before) {
237
+ if (!before)
238
+ return;
239
+ const generation = this.generation;
240
+ const pendingStart = {};
241
+ this.pendingStart = pendingStart;
242
+ // AutoSizer's mount/update can synchronously enqueue another React commit.
243
+ // Let that commit finish before reading the target rows, but still install
244
+ // the inverse transforms in the same task, before the browser paints.
245
+ queueMicrotask(() => {
246
+ if (generation !== this.generation)
247
+ return;
248
+ if (this.pendingStart === pendingStart)
249
+ this.pendingStart = undefined;
250
+ if (this.root.current)
251
+ this.start(before);
252
+ });
253
+ }
254
+ componentWillUnmount() {
255
+ this.cancel();
256
+ }
257
+ render() {
258
+ const _a = this.props, props = __rest(_a, ["compactTransition", "compact"]);
259
+ return React__default.createElement("div", Object.assign({}, props, { ref: this.root }));
260
+ }
261
+ start(before) {
262
+ var _a, _b, _c, _d, _e, _f;
263
+ if (this.props.compactTransition === false)
264
+ return;
265
+ const panel = (_a = this.root.current) === null || _a === undefined ? undefined : _a.querySelector('[data-gn-aside-panel]');
266
+ if (!panel ||
267
+ typeof panel.animate !== 'function' ||
268
+ ((_b = window.matchMedia) === null || _b === undefined ? undefined : _b.call(window, '(prefers-reduced-motion: reduce)').matches))
269
+ return;
270
+ const after = capture(panel);
271
+ // CSS shortens reversed transitions. Follow its actual duration rather
272
+ // than restarting a second independent 200ms presentation timer.
273
+ const widthTransition = panel
274
+ .getAnimations()
275
+ .find((animation) => 'transitionProperty' in animation && animation.transitionProperty === 'width');
276
+ const duration = Number((_d = (_c = widthTransition === null || widthTransition === undefined ? undefined : widthTransition.effect) === null || _c === undefined ? undefined : _c.getComputedTiming().duration) !== null && _d !== undefined ? _d : ASIDE_HEADER_COLLAPSE_TRANSITION_MS);
277
+ if (duration <= 0)
278
+ return;
279
+ const generation = ++this.generation;
280
+ panel.setAttribute('data-gn-aside-animating', '');
281
+ this.currentIdentities = captureCurrentIdentity(panel);
282
+ const targetCurrent = captureCurrentPresentation(panel, this.currentIdentities);
283
+ const options = { duration, easing: 'ease-in-out', fill: 'both' };
284
+ this.currentIndicator.start(panel, matchCurrentPresentations((_e = before.current) !== null && _e !== undefined ? _e : new Map(), targetCurrent), options, (_f = widthTransition === null || widthTransition === undefined ? undefined : widthTransition.startTime) !== null && _f !== undefined ? _f : null);
285
+ const animate = (element, keyframes) => {
286
+ const animation = element.animate(keyframes, options);
287
+ if ((widthTransition === null || widthTransition === undefined ? undefined : widthTransition.startTime) !== null && (widthTransition === null || widthTransition === undefined ? undefined : widthTransition.startTime) !== undefined) {
288
+ animation.startTime = widthTransition.startTime;
289
+ }
290
+ this.animations.push(animation);
291
+ return animation;
292
+ };
293
+ if (before.collapse &&
294
+ after.collapse &&
295
+ before.collapse.element === after.collapse.element &&
296
+ before.collapse.anchor === after.collapse.anchor) {
297
+ animate(after.collapse.element, [
298
+ { transform: `translateY(${before.collapse.y - after.collapse.y}px)` },
299
+ { transform: 'none' },
300
+ ]);
301
+ }
302
+ after.rows.forEach((row, key) => {
303
+ var _a, _b, _c, _d;
304
+ if (row.group && after.groups.has(row.group))
305
+ return;
306
+ const old = before.rows.get(key);
307
+ if (!old) {
308
+ animate(row.element, [{ opacity: 0 }, { opacity: row.opacity }]);
309
+ return;
310
+ }
311
+ animate(row.element, [
312
+ {
313
+ transform: translation(old.rect.x - row.rect.x, old.rect.y - row.rect.y, row.transform),
314
+ opacity: old.opacity,
315
+ },
316
+ { transform: row.transform, opacity: row.opacity },
317
+ ]);
318
+ if (old.icon && row.icon) {
319
+ // Keep the icon's centre continuous even for action rows and
320
+ // two-line titles, whose icon slots differ between layouts.
321
+ const dx = old.icon.anchor.x +
322
+ old.icon.anchor.width / 2 -
323
+ old.rect.x -
324
+ (row.icon.anchor.x + row.icon.anchor.width / 2 - row.rect.x);
325
+ const dy = old.icon.anchor.y +
326
+ old.icon.anchor.height / 2 -
327
+ old.rect.y -
328
+ (row.icon.anchor.y + row.icon.anchor.height / 2 - row.rect.y);
329
+ animate(row.icon.element, [{ transform: translation(dx, dy) }, { transform: 'none' }]);
330
+ }
331
+ if (row.title && row.title.opacity > 0) {
332
+ const dx = ((_a = old.title) === null || _a === undefined ? undefined : _a.opacity)
333
+ ? old.title.rect.x - old.rect.x - (row.title.rect.x - row.rect.x)
334
+ : 0;
335
+ const dy = ((_b = old.title) === null || _b === undefined ? undefined : _b.opacity)
336
+ ? old.title.rect.y - old.rect.y - (row.title.rect.y - row.rect.y)
337
+ : 0;
338
+ animate(row.title.element, [
339
+ { opacity: (_d = (_c = old.title) === null || _c === undefined ? undefined : _c.opacity) !== null && _d !== undefined ? _d : 0, transform: translation(dx, dy) },
340
+ { opacity: row.title.opacity, transform: 'none' },
341
+ ]);
342
+ }
343
+ else if (old.title && old.title.opacity > 0) {
344
+ const ghost = this.addGhost(panel, old.title, before.appearances);
345
+ if (ghost) {
346
+ this.departingTitles.set(key, ghost);
347
+ animate(ghost, [
348
+ { opacity: old.title.opacity, transform: 'none' },
349
+ {
350
+ opacity: 0,
351
+ transform: translation(row.rect.x - old.rect.x, row.rect.y - old.rect.y),
352
+ },
353
+ ]);
354
+ }
355
+ }
356
+ if (old.surface && row.surface) {
357
+ const surface = row.surface;
358
+ const dx = old.surface.rect.x - old.rect.x - (surface.rect.x - row.rect.x);
359
+ const dy = old.surface.rect.y - old.rect.y - (surface.rect.y - row.rect.y);
360
+ animate(surface.element, [
361
+ {
362
+ transform: translation(dx, dy),
363
+ width: `${old.surface.rect.width}px`,
364
+ height: `${old.surface.rect.height}px`,
365
+ borderRadius: old.surface.borderRadius,
366
+ },
367
+ {
368
+ transform: 'none',
369
+ width: `${surface.rect.width}px`,
370
+ height: `${surface.rect.height}px`,
371
+ borderRadius: surface.borderRadius,
372
+ },
373
+ ]);
374
+ if (!this.currentIndicator.manages(surface.element) &&
375
+ old.surface.backgroundColor !== surface.backgroundColor) {
376
+ const animation = animate(surface.element, [
377
+ { backgroundColor: old.surface.backgroundColor },
378
+ { backgroundColor: surface.backgroundColor },
379
+ ]);
380
+ this.surfacePaint.set(surface.element, animation);
381
+ const settled = () => {
382
+ if (this.generation !== generation ||
383
+ this.surfacePaint.get(surface.element) !== animation)
384
+ return;
385
+ // A finished fill:'both' effect still overrides native
386
+ // current/hover CSS until it is explicitly released.
387
+ this.cancelSurfacePaint(new Set([surface.element]));
388
+ this.reconcileObservation();
389
+ };
390
+ animation.finished.then(settled, settled);
391
+ }
392
+ }
393
+ });
394
+ before.rows.forEach((row, key) => {
395
+ if (after.rows.has(key) || !canCreateRowGhost(row, before))
396
+ return;
397
+ const ghost = this.addGhost(panel, row, before.appearances);
398
+ if (!ghost)
399
+ return;
400
+ this.departingRows.set(key, ghost);
401
+ animate(ghost, [{ opacity: row.opacity }, { opacity: 0 }]);
402
+ });
403
+ after.dividers.forEach((divider, key) => {
404
+ var _a;
405
+ const old = before.dividers.get(key);
406
+ const oldGroup = divider.group ? before.groups.get(divider.group) : undefined;
407
+ const newGroup = divider.group ? after.groups.get(divider.group) : undefined;
408
+ // Nested lines inherit their group's translation; only compensate
409
+ // for changes within that group, not its full screen movement twice.
410
+ const dx = old ? old.rect.x - divider.rect.x : 0;
411
+ const dy = old ? old.rect.y - divider.rect.y : 0;
412
+ const groupDx = oldGroup && newGroup ? oldGroup.part.rect.x - newGroup.part.rect.x : dx;
413
+ const groupDy = oldGroup && newGroup ? oldGroup.part.rect.y - newGroup.part.rect.y : dy;
414
+ // Lines resize with the outer edge while text retains its target
415
+ // layout. Keep footer overflow opacity independent of this motion.
416
+ animate(divider.element, [
417
+ {
418
+ transform: translation(dx - (newGroup ? groupDx : 0), dy - (newGroup ? groupDy : 0), divider.transform),
419
+ width: `${(_a = old === null || old === undefined ? undefined : old.rect.width) !== null && _a !== undefined ? _a : Math.max(0, divider.rect.width + before.width - after.layoutWidth)}px`,
420
+ },
421
+ { transform: divider.transform, width: `${divider.rect.width}px` },
422
+ ]);
423
+ });
424
+ const openClip = 'inset(0px 0px 0px 0px)';
425
+ const closedClip = 'inset(0px 0px 100% 0px)';
426
+ after.groups.forEach((group, key) => {
427
+ const old = before.groups.get(key);
428
+ const oldHeader = before.rows.get(group.headerKey);
429
+ const header = after.rows.get(group.headerKey);
430
+ let dx = 0;
431
+ let dy = 0;
432
+ if (old) {
433
+ dx = old.part.rect.x - group.part.rect.x;
434
+ dy = old.part.rect.y - group.part.rect.y;
435
+ }
436
+ else if (oldHeader && header) {
437
+ dx = oldHeader.rect.x - header.rect.x;
438
+ dy = oldHeader.rect.y - header.rect.y;
439
+ }
440
+ animate(group.part.element, [
441
+ { transform: translation(dx, dy), clipPath: old ? old.part.clipPath : closedClip },
442
+ { transform: 'none', clipPath: openClip },
443
+ ]);
444
+ });
445
+ before.groups.forEach((group, key) => {
446
+ if (after.groups.has(key))
447
+ return;
448
+ const ghost = this.addGhost(panel, group.part, before.appearances);
449
+ if (!ghost)
450
+ return;
451
+ this.departingGroups.set(key, { element: ghost, headerKey: group.headerKey });
452
+ // Departing groups are decorative clones, but their dividers still
453
+ // resize with the aside. Retain keyed geometry for a mid-flight reversal.
454
+ before.dividers.forEach((divider, dividerKey) => {
455
+ if (divider.group !== key)
456
+ return;
457
+ const line = Array.from(ghost.querySelectorAll('[data-gn-aside-divider]')).find((element) => element.getAttribute('data-gn-aside-divider') === divider.id);
458
+ if (!line)
459
+ return;
460
+ this.departingDividers.set(dividerKey, { element: line, id: divider.id, group: key });
461
+ animate(line, [
462
+ { width: `${divider.rect.width}px` },
463
+ {
464
+ width: `${Math.max(0, divider.rect.width + after.layoutWidth - before.width)}px`,
465
+ },
466
+ ]);
467
+ });
468
+ const oldHeader = before.rows.get(group.headerKey);
469
+ const header = after.rows.get(group.headerKey);
470
+ const dx = oldHeader && header ? header.rect.x - oldHeader.rect.x : 0;
471
+ const dy = oldHeader && header ? header.rect.y - oldHeader.rect.y : 0;
472
+ animate(ghost, [
473
+ {
474
+ transform: 'none',
475
+ clipPath: group.part.clipPath === 'none' ? openClip : group.part.clipPath,
476
+ },
477
+ { transform: translation(dx, dy), clipPath: closedClip },
478
+ ]);
479
+ });
480
+ this.animatedPanel = panel;
481
+ this.reconcileObservation();
482
+ Promise.all(this.animations.map((animation) => animation.finished.catch(() => undefined))).then(() => {
483
+ if (this.generation === generation)
484
+ this.cancel();
485
+ });
486
+ }
487
+ addGhost(panel, part, appearances) {
488
+ var _a, _b, _c;
489
+ const ghost = appearances.get(part);
490
+ if (!ghost) {
491
+ if (process.env.NODE_ENV !== 'production') {
492
+ // eslint-disable-next-line no-console
493
+ console.error('Missing pre-update aside ghost appearance');
494
+ }
495
+ return undefined;
496
+ }
497
+ if (!this.overlay) {
498
+ this.overlay = document.createElement('div');
499
+ this.overlay.setAttribute('aria-hidden', 'true');
500
+ this.overlay.setAttribute('inert', '');
501
+ this.overlay.setAttribute('data-gn-aside-transition-overlay', '');
502
+ Object.assign(this.overlay.style, {
503
+ position: 'absolute',
504
+ inset: '0',
505
+ overflow: 'hidden',
506
+ pointerEvents: 'none',
507
+ zIndex: '4',
508
+ });
509
+ panel.appendChild(this.overlay);
510
+ }
511
+ this.currentIndicator.prepareGhost(ghost);
512
+ [ghost, ...Array.from(ghost.querySelectorAll('*'))].forEach((element) => {
513
+ element.removeAttribute('id');
514
+ element.removeAttribute('data-qa');
515
+ element.removeAttribute('data-gn-collapse-anchor');
516
+ element.removeAttribute(COMPOSITE_BAR_ITEM_ID_ATTRIBUTE);
517
+ });
518
+ const origin = panel.getBoundingClientRect();
519
+ let parent = this.overlay;
520
+ let top = origin.y;
521
+ if (part.clipRect) {
522
+ const viewport = (_a = panel
523
+ .querySelector('[data-gn-aside-scrollport]')) === null || _a === undefined ? undefined : _a.getBoundingClientRect();
524
+ const clipTop = Math.max(part.clipRect.top, (_b = viewport === null || viewport === undefined ? undefined : viewport.top) !== null && _b !== undefined ? _b : part.clipRect.top);
525
+ const clipBottom = Math.min(part.clipRect.bottom, (_c = viewport === null || viewport === undefined ? undefined : viewport.bottom) !== null && _c !== undefined ? _c : part.clipRect.bottom);
526
+ if (!this.scrollOverlay) {
527
+ this.scrollOverlay = document.createElement('div');
528
+ this.scrollOverlay.setAttribute('data-gn-aside-transition-scroll-clip', '');
529
+ Object.assign(this.scrollOverlay.style, {
530
+ position: 'absolute',
531
+ left: '0',
532
+ right: '0',
533
+ top: `${clipTop - origin.y}px`,
534
+ height: `${Math.max(0, clipBottom - clipTop)}px`,
535
+ overflow: 'hidden',
536
+ });
537
+ this.overlay.appendChild(this.scrollOverlay);
538
+ }
539
+ parent = this.scrollOverlay;
540
+ top = parent.getBoundingClientRect().y;
541
+ }
542
+ Object.assign(ghost.style, {
543
+ position: 'absolute',
544
+ margin: '0',
545
+ boxSizing: 'border-box',
546
+ left: `${part.rect.x - origin.x}px`,
547
+ top: `${part.rect.y - top}px`,
548
+ width: `${part.rect.width}px`,
549
+ height: `${part.rect.height}px`,
550
+ transform: 'none',
551
+ });
552
+ parent.appendChild(ghost);
553
+ return ghost;
554
+ }
555
+ cancel() {
556
+ var _a, _b;
557
+ this.presentationObserver.disconnect();
558
+ this.pendingStart = undefined;
559
+ this.generation++;
560
+ (_a = this.animatedPanel) === null || _a === undefined ? undefined : _a.removeAttribute('data-gn-aside-animating');
561
+ this.animatedPanel = undefined;
562
+ this.currentIndicator.cancel();
563
+ this.animations.forEach((animation) => animation.cancel());
564
+ this.animations = [];
565
+ this.surfacePaint.clear();
566
+ this.currentIdentities.clear();
567
+ (_b = this.overlay) === null || _b === undefined ? undefined : _b.remove();
568
+ this.overlay = undefined;
569
+ this.scrollOverlay = undefined;
570
+ this.departingRows.clear();
571
+ this.departingTitles.clear();
572
+ this.departingGroups.clear();
573
+ this.departingDividers.clear();
574
+ }
575
+ cancelSurfacePaint(surfaces) {
576
+ const cancelled = new Set();
577
+ this.surfacePaint.forEach((animation, surface) => {
578
+ if (!surfaces.has(surface))
579
+ return;
580
+ animation.cancel();
581
+ cancelled.add(animation);
582
+ this.surfacePaint.delete(surface);
583
+ });
584
+ this.animations = this.animations.filter((animation) => !cancelled.has(animation));
585
+ }
586
+ reconcileObservation() {
587
+ if (this.animatedPanel &&
588
+ (this.currentIndicator.hasActiveTransfers || this.surfacePaint.size > 0)) {
589
+ this.presentationObserver.observe(this.animatedPanel, this.currentIdentities);
590
+ }
591
+ else {
592
+ this.presentationObserver.disconnect();
593
+ }
594
+ }
595
+ }
596
+
597
+ export { AsideLayoutTransition };
598
+ //# sourceMappingURL=AsideLayoutTransition.js.map