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