@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.
- package/build/cjs/components/AsideHeader/AsideHeader.css +9 -1
- package/build/cjs/components/AsideHeader/AsideHeader.js +2 -2
- package/build/cjs/components/AsideHeader/AsideHeader.js.map +1 -1
- package/build/cjs/components/AsideHeader/AsideHeader.module.scss.js +1 -1
- package/build/cjs/components/AsideHeader/AsideHeaderContext.d.ts +5 -0
- package/build/cjs/components/AsideHeader/AsideHeaderContext.js +2 -0
- package/build/cjs/components/AsideHeader/AsideHeaderContext.js.map +1 -1
- package/build/cjs/components/AsideHeader/__playwright__/AsideTransitionExample.d.ts +8 -0
- package/build/cjs/components/AsideHeader/__playwright__/CollapseButtonExample.d.ts +14 -0
- package/build/cjs/components/AsideHeader/__playwright__/CompactTransitionExample.d.ts +12 -0
- package/build/cjs/components/AsideHeader/__playwright__/CurrentIndicatorExample.d.ts +20 -0
- package/build/cjs/components/AsideHeader/__playwright__/QuickAccessOverflowExample.d.ts +8 -0
- package/build/cjs/components/AsideHeader/__playwright__/currentIndicatorPaint.d.ts +21 -0
- package/build/cjs/components/AsideHeader/__playwright__/transitionTestUtils.d.ts +4 -0
- package/build/cjs/components/AsideHeader/__stories__/fullNavigationMoc.d.ts +6 -0
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.js +2 -4
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.d.ts +2 -1
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.js +5 -1
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/i18n/en.json.js +1 -3
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/i18n/en.json.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/i18n/index.d.ts +4 -4
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/i18n/ru.json.js +2 -4
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/i18n/ru.json.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/AsideDivider.d.ts +7 -0
- package/build/cjs/components/AsideHeader/components/AsideDivider.js +13 -0
- package/build/cjs/components/AsideHeader/components/AsideDivider.js.map +1 -0
- package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.css +1 -1
- package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.d.ts +3 -1
- package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.js +12 -8
- package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.module.scss.js +1 -1
- package/build/cjs/components/AsideHeader/components/CollapseButton/useCollapseAnchor.d.ts +20 -0
- package/build/cjs/components/AsideHeader/components/CollapseButton/useCollapseAnchor.js +170 -0
- package/build/cjs/components/AsideHeader/components/CollapseButton/useCollapseAnchor.js.map +1 -0
- package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.css +3 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.d.ts +13 -2
- package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.js +53 -39
- package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.module.scss.js +1 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/HighlightedItem/HighlightedItem.css +1 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/HighlightedItem/HighlightedItem.js +4 -2
- package/build/cjs/components/AsideHeader/components/CompositeBar/HighlightedItem/HighlightedItem.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.css +33 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.js +158 -43
- package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.module.scss.js +1 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.types.d.ts +22 -4
- package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemPopup.d.ts +19 -0
- package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemPopup.js +137 -20
- package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemPopup.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemQuickAccessPin.d.ts +7 -0
- package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemQuickAccessPin.js +25 -0
- package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemQuickAccessPin.js.map +1 -0
- package/build/cjs/components/AsideHeader/components/CompositeBar/Item/renderItemTitle.d.ts +1 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/Item/renderItemTitle.js +5 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/Item/renderItemTitle.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.css +1 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.d.ts +4 -6
- package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js +14 -5
- package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.module.scss.js +1 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.d.ts +8 -8
- package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.js +68 -33
- package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/constants.d.ts +1 -0
- package/build/cjs/components/AsideHeader/components/CompositeBar/constants.js +2 -0
- package/build/cjs/components/AsideHeader/components/CompositeBar/constants.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/presentationCurrent.d.ts +24 -0
- package/build/cjs/components/AsideHeader/components/CompositeBar/presentationCurrent.js +39 -0
- package/build/cjs/components/AsideHeader/components/CompositeBar/presentationCurrent.js.map +1 -0
- package/build/cjs/components/AsideHeader/components/CompositeBar/utils.d.ts +12 -7
- package/build/cjs/components/AsideHeader/components/CompositeBar/utils.js +42 -35
- package/build/cjs/components/AsideHeader/components/CompositeBar/utils.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/FirstPanel.js +129 -10
- package/build/cjs/components/AsideHeader/components/FirstPanel.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.css +1 -1
- package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.js +18 -2
- package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.module.scss.js +1 -1
- package/build/cjs/components/AsideHeader/components/Header.js +7 -3
- package/build/cjs/components/AsideHeader/components/Header.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/PageLayout/AsideFallback.css +9 -1
- package/build/cjs/components/AsideHeader/components/PageLayout/AsideFallback.d.ts +1 -0
- package/build/cjs/components/AsideHeader/components/PageLayout/AsideFallback.js +13 -6
- package/build/cjs/components/AsideHeader/components/PageLayout/AsideFallback.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/PageLayout/AsideLayoutTransition.d.ts +80 -0
- package/build/cjs/components/AsideHeader/components/PageLayout/AsideLayoutTransition.js +600 -0
- package/build/cjs/components/AsideHeader/components/PageLayout/AsideLayoutTransition.js.map +1 -0
- package/build/cjs/components/AsideHeader/components/PageLayout/CurrentIndicatorTransition.d.ts +14 -0
- package/build/cjs/components/AsideHeader/components/PageLayout/CurrentIndicatorTransition.js +164 -0
- package/build/cjs/components/AsideHeader/components/PageLayout/CurrentIndicatorTransition.js.map +1 -0
- package/build/cjs/components/AsideHeader/components/PageLayout/CurrentPresentationObserver.d.ts +14 -0
- package/build/cjs/components/AsideHeader/components/PageLayout/CurrentPresentationObserver.js +94 -0
- package/build/cjs/components/AsideHeader/components/PageLayout/CurrentPresentationObserver.js.map +1 -0
- package/build/cjs/components/AsideHeader/components/PageLayout/PageLayout.css +9 -1
- package/build/cjs/components/AsideHeader/components/PageLayout/PageLayout.d.ts +1 -1
- package/build/cjs/components/AsideHeader/components/PageLayout/PageLayout.js +14 -5
- package/build/cjs/components/AsideHeader/components/PageLayout/PageLayout.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/PageLayout/PageLayoutAside.css +9 -1
- package/build/cjs/components/AsideHeader/components/PageLayout/PageLayoutAside.d.ts +1 -1
- package/build/cjs/components/AsideHeader/components/PageLayout/PageLayoutAside.js +5 -2
- package/build/cjs/components/AsideHeader/components/PageLayout/PageLayoutAside.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/PageLayout/currentIndicatorDom.d.ts +7 -0
- package/build/cjs/components/AsideHeader/components/PageLayout/currentIndicatorDom.js +25 -0
- package/build/cjs/components/AsideHeader/components/PageLayout/currentIndicatorDom.js.map +1 -0
- package/build/cjs/components/AsideHeader/components/PageLayout/currentIndicatorModel.d.ts +25 -0
- package/build/cjs/components/AsideHeader/components/PageLayout/currentIndicatorModel.js +89 -0
- package/build/cjs/components/AsideHeader/components/PageLayout/currentIndicatorModel.js.map +1 -0
- package/build/cjs/components/AsideHeader/components/Panels.js +2 -2
- package/build/cjs/components/AsideHeader/components/Panels.js.map +1 -1
- package/build/cjs/components/AsideHeader/density.d.ts +21 -0
- package/build/cjs/components/AsideHeader/density.js +61 -0
- package/build/cjs/components/AsideHeader/density.js.map +1 -0
- package/build/cjs/components/AsideHeader/i18n/__mocks__/index.d.ts +1 -0
- package/build/cjs/components/AsideHeader/i18n/en.json.js +10 -1
- package/build/cjs/components/AsideHeader/i18n/en.json.js.map +1 -1
- package/build/cjs/components/AsideHeader/i18n/index.d.ts +4 -4
- package/build/cjs/components/AsideHeader/i18n/ru.json.js +10 -1
- package/build/cjs/components/AsideHeader/i18n/ru.json.js.map +1 -1
- package/build/cjs/components/AsideHeader/index.d.ts +1 -0
- package/build/cjs/components/AsideHeader/quickAccess.d.ts +9 -0
- package/build/cjs/components/AsideHeader/quickAccess.js +31 -0
- package/build/cjs/components/AsideHeader/quickAccess.js.map +1 -0
- package/build/cjs/components/AsideHeader/types.d.ts +50 -5
- package/build/cjs/components/AsideHeader/types.js.map +1 -1
- package/build/cjs/components/AsideHeader/useAsideHeaderInnerContextValue.js +18 -3
- package/build/cjs/components/AsideHeader/useAsideHeaderInnerContextValue.js.map +1 -1
- package/build/cjs/components/AsideHeader/utils.d.ts +1 -0
- package/build/cjs/components/AsideHeader/utils.js +2 -0
- package/build/cjs/components/AsideHeader/utils.js.map +1 -1
- package/build/cjs/components/Footer/desktop/Footer.css +1 -1
- package/build/cjs/components/Footer/mobile/Footer.css +1 -1
- package/build/cjs/components/HotkeysPanel/HotkeysPanel.css +1 -1
- package/build/cjs/components/HotkeysPanel/HotkeysPanel.js +1 -1
- package/build/cjs/components/HotkeysPanel/HotkeysPanel.js.map +1 -1
- package/build/cjs/components/HotkeysPanel/HotkeysPanel.module.scss.js +1 -1
- package/build/cjs/components/Logo/Logo.css +1 -1
- package/build/cjs/components/Logo/Logo.d.ts +1 -0
- package/build/cjs/components/Logo/Logo.js +4 -4
- package/build/cjs/components/Logo/Logo.js.map +1 -1
- package/build/cjs/components/constants.d.ts +5 -0
- package/build/cjs/components/constants.js +6 -0
- package/build/cjs/components/constants.js.map +1 -1
- package/build/cjs/components/types.d.ts +11 -4
- package/build/docs/components/AsideHeader.md +244 -51
- package/build/esm/components/AsideHeader/AsideHeader.css +9 -1
- package/build/esm/components/AsideHeader/AsideHeader.js +2 -2
- package/build/esm/components/AsideHeader/AsideHeader.js.map +1 -1
- package/build/esm/components/AsideHeader/AsideHeader.module.scss.js +1 -1
- package/build/esm/components/AsideHeader/AsideHeaderContext.d.ts +5 -0
- package/build/esm/components/AsideHeader/AsideHeaderContext.js +2 -0
- package/build/esm/components/AsideHeader/AsideHeaderContext.js.map +1 -1
- package/build/esm/components/AsideHeader/__playwright__/AsideTransitionExample.d.ts +8 -0
- package/build/esm/components/AsideHeader/__playwright__/CollapseButtonExample.d.ts +14 -0
- package/build/esm/components/AsideHeader/__playwright__/CompactTransitionExample.d.ts +12 -0
- package/build/esm/components/AsideHeader/__playwright__/CurrentIndicatorExample.d.ts +20 -0
- package/build/esm/components/AsideHeader/__playwright__/QuickAccessOverflowExample.d.ts +8 -0
- package/build/esm/components/AsideHeader/__playwright__/currentIndicatorPaint.d.ts +21 -0
- package/build/esm/components/AsideHeader/__playwright__/transitionTestUtils.d.ts +4 -0
- package/build/esm/components/AsideHeader/__stories__/fullNavigationMoc.d.ts +6 -0
- package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.js +3 -5
- package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.js.map +1 -1
- package/build/esm/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.d.ts +2 -1
- package/build/esm/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.js +5 -1
- package/build/esm/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.js.map +1 -1
- package/build/esm/components/AsideHeader/components/AllPagesPanel/i18n/en.json.js +1 -3
- package/build/esm/components/AsideHeader/components/AllPagesPanel/i18n/en.json.js.map +1 -1
- package/build/esm/components/AsideHeader/components/AllPagesPanel/i18n/index.d.ts +4 -4
- package/build/esm/components/AsideHeader/components/AllPagesPanel/i18n/ru.json.js +2 -4
- package/build/esm/components/AsideHeader/components/AllPagesPanel/i18n/ru.json.js.map +1 -1
- package/build/esm/components/AsideHeader/components/AsideDivider.d.ts +7 -0
- package/build/esm/components/AsideHeader/components/AsideDivider.js +11 -0
- package/build/esm/components/AsideHeader/components/AsideDivider.js.map +1 -0
- package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.css +1 -1
- package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.d.ts +3 -1
- package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.js +12 -8
- package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.js.map +1 -1
- package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.module.scss.js +1 -1
- package/build/esm/components/AsideHeader/components/CollapseButton/useCollapseAnchor.d.ts +20 -0
- package/build/esm/components/AsideHeader/components/CollapseButton/useCollapseAnchor.js +167 -0
- package/build/esm/components/AsideHeader/components/CollapseButton/useCollapseAnchor.js.map +1 -0
- package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.css +3 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.d.ts +13 -2
- package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.js +54 -40
- package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.js.map +1 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.module.scss.js +1 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/HighlightedItem/HighlightedItem.css +1 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/HighlightedItem/HighlightedItem.js +4 -2
- package/build/esm/components/AsideHeader/components/CompositeBar/HighlightedItem/HighlightedItem.js.map +1 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.css +33 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.js +161 -46
- package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.js.map +1 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.module.scss.js +1 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.types.d.ts +22 -4
- package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemPopup.d.ts +19 -0
- package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemPopup.js +139 -23
- package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemPopup.js.map +1 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemQuickAccessPin.d.ts +7 -0
- package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemQuickAccessPin.js +23 -0
- package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemQuickAccessPin.js.map +1 -0
- package/build/esm/components/AsideHeader/components/CompositeBar/Item/renderItemTitle.d.ts +1 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/Item/renderItemTitle.js +5 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/Item/renderItemTitle.js.map +1 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.css +1 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.d.ts +4 -6
- package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js +15 -6
- package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js.map +1 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.module.scss.js +1 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.d.ts +8 -8
- package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.js +68 -33
- package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.js.map +1 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/constants.d.ts +1 -0
- package/build/esm/components/AsideHeader/components/CompositeBar/constants.js +2 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/constants.js.map +1 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/presentationCurrent.d.ts +24 -0
- package/build/esm/components/AsideHeader/components/CompositeBar/presentationCurrent.js +36 -0
- package/build/esm/components/AsideHeader/components/CompositeBar/presentationCurrent.js.map +1 -0
- package/build/esm/components/AsideHeader/components/CompositeBar/utils.d.ts +12 -7
- package/build/esm/components/AsideHeader/components/CompositeBar/utils.js +44 -35
- package/build/esm/components/AsideHeader/components/CompositeBar/utils.js.map +1 -1
- package/build/esm/components/AsideHeader/components/FirstPanel.js +131 -12
- package/build/esm/components/AsideHeader/components/FirstPanel.js.map +1 -1
- package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.css +1 -1
- package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.js +18 -2
- package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.js.map +1 -1
- package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.module.scss.js +1 -1
- package/build/esm/components/AsideHeader/components/Header.js +8 -4
- package/build/esm/components/AsideHeader/components/Header.js.map +1 -1
- package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.css +9 -1
- package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.d.ts +1 -0
- package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.js +14 -7
- package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.js.map +1 -1
- package/build/esm/components/AsideHeader/components/PageLayout/AsideLayoutTransition.d.ts +80 -0
- package/build/esm/components/AsideHeader/components/PageLayout/AsideLayoutTransition.js +598 -0
- package/build/esm/components/AsideHeader/components/PageLayout/AsideLayoutTransition.js.map +1 -0
- package/build/esm/components/AsideHeader/components/PageLayout/CurrentIndicatorTransition.d.ts +14 -0
- package/build/esm/components/AsideHeader/components/PageLayout/CurrentIndicatorTransition.js +162 -0
- package/build/esm/components/AsideHeader/components/PageLayout/CurrentIndicatorTransition.js.map +1 -0
- package/build/esm/components/AsideHeader/components/PageLayout/CurrentPresentationObserver.d.ts +14 -0
- package/build/esm/components/AsideHeader/components/PageLayout/CurrentPresentationObserver.js +92 -0
- package/build/esm/components/AsideHeader/components/PageLayout/CurrentPresentationObserver.js.map +1 -0
- package/build/esm/components/AsideHeader/components/PageLayout/PageLayout.css +9 -1
- package/build/esm/components/AsideHeader/components/PageLayout/PageLayout.d.ts +1 -1
- package/build/esm/components/AsideHeader/components/PageLayout/PageLayout.js +15 -6
- package/build/esm/components/AsideHeader/components/PageLayout/PageLayout.js.map +1 -1
- package/build/esm/components/AsideHeader/components/PageLayout/PageLayoutAside.css +9 -1
- package/build/esm/components/AsideHeader/components/PageLayout/PageLayoutAside.d.ts +1 -1
- package/build/esm/components/AsideHeader/components/PageLayout/PageLayoutAside.js +5 -2
- package/build/esm/components/AsideHeader/components/PageLayout/PageLayoutAside.js.map +1 -1
- package/build/esm/components/AsideHeader/components/PageLayout/currentIndicatorDom.d.ts +7 -0
- package/build/esm/components/AsideHeader/components/PageLayout/currentIndicatorDom.js +17 -0
- package/build/esm/components/AsideHeader/components/PageLayout/currentIndicatorDom.js.map +1 -0
- package/build/esm/components/AsideHeader/components/PageLayout/currentIndicatorModel.d.ts +25 -0
- package/build/esm/components/AsideHeader/components/PageLayout/currentIndicatorModel.js +84 -0
- package/build/esm/components/AsideHeader/components/PageLayout/currentIndicatorModel.js.map +1 -0
- package/build/esm/components/AsideHeader/components/Panels.js +3 -3
- package/build/esm/components/AsideHeader/components/Panels.js.map +1 -1
- package/build/esm/components/AsideHeader/density.d.ts +21 -0
- package/build/esm/components/AsideHeader/density.js +58 -0
- package/build/esm/components/AsideHeader/density.js.map +1 -0
- package/build/esm/components/AsideHeader/i18n/__mocks__/index.d.ts +1 -0
- package/build/esm/components/AsideHeader/i18n/en.json.js +8 -2
- package/build/esm/components/AsideHeader/i18n/en.json.js.map +1 -1
- package/build/esm/components/AsideHeader/i18n/index.d.ts +4 -4
- package/build/esm/components/AsideHeader/i18n/ru.json.js +8 -2
- package/build/esm/components/AsideHeader/i18n/ru.json.js.map +1 -1
- package/build/esm/components/AsideHeader/index.d.ts +1 -0
- package/build/esm/components/AsideHeader/quickAccess.d.ts +9 -0
- package/build/esm/components/AsideHeader/quickAccess.js +27 -0
- package/build/esm/components/AsideHeader/quickAccess.js.map +1 -0
- package/build/esm/components/AsideHeader/types.d.ts +50 -5
- package/build/esm/components/AsideHeader/types.js.map +1 -1
- package/build/esm/components/AsideHeader/useAsideHeaderInnerContextValue.js +18 -3
- package/build/esm/components/AsideHeader/useAsideHeaderInnerContextValue.js.map +1 -1
- package/build/esm/components/AsideHeader/utils.d.ts +1 -0
- package/build/esm/components/AsideHeader/utils.js +2 -1
- package/build/esm/components/AsideHeader/utils.js.map +1 -1
- package/build/esm/components/Footer/desktop/Footer.css +1 -1
- package/build/esm/components/Footer/mobile/Footer.css +1 -1
- package/build/esm/components/HotkeysPanel/HotkeysPanel.css +1 -1
- package/build/esm/components/HotkeysPanel/HotkeysPanel.js +1 -1
- package/build/esm/components/HotkeysPanel/HotkeysPanel.js.map +1 -1
- package/build/esm/components/HotkeysPanel/HotkeysPanel.module.scss.js +1 -1
- package/build/esm/components/Logo/Logo.css +1 -1
- package/build/esm/components/Logo/Logo.d.ts +1 -0
- package/build/esm/components/Logo/Logo.js +4 -4
- package/build/esm/components/Logo/Logo.js.map +1 -1
- package/build/esm/components/constants.d.ts +5 -0
- package/build/esm/components/constants.js +6 -1
- package/build/esm/components/constants.js.map +1 -1
- package/build/esm/components/types.d.ts +11 -4
- package/package.json +1 -1
- package/build/cjs/assets/icons/control-menu-button.svg.js +0 -41
- package/build/cjs/assets/icons/control-menu-button.svg.js.map +0 -1
- package/build/esm/assets/icons/control-menu-button.svg.js +0 -18
- package/build/esm/assets/icons/control-menu-button.svg.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AsideLayoutTransition.js","sources":["../../../../../../../src/components/AsideHeader/components/PageLayout/AsideLayoutTransition.tsx"],"sourcesContent":["import React from 'react';\n\nimport {ASIDE_HEADER_COLLAPSE_TRANSITION_MS} from '../../../constants';\nimport {COMPOSITE_BAR_ITEM_ID_ATTRIBUTE} from '../CompositeBar/constants';\n\nimport {CurrentIndicatorTransition} from './CurrentIndicatorTransition';\nimport {CurrentPresentationObserver} from './CurrentPresentationObserver';\nimport {\n CURRENT_ROW_KEY_ATTRIBUTE,\n CURRENT_ROW_SELECTOR,\n getCompositeBarSection,\n} from './currentIndicatorDom';\nimport {\n type CurrentIdentitySnapshot,\n type CurrentSnapshot,\n captureCurrentIdentity,\n captureCurrentPresentation,\n getCurrentRowKey,\n matchCurrentPresentations,\n} from './currentIndicatorModel';\n\ntype Part = {\n element: HTMLElement;\n rect: DOMRect;\n anchor: DOMRect;\n opacity: number;\n transform: string;\n backgroundColor: string;\n borderRadius: string;\n clipPath: string;\n clipRect?: DOMRect;\n};\n\ntype Row = Part & {icon?: Part; title?: Part; surface?: Part; group?: string};\ntype Group = {part: Part; headerKey: string};\ntype Divider = Part & {id: string; group?: string};\ntype Snapshot = {\n rows: Map<string, Row>;\n groups: Map<string, Group>;\n dividers: Map<string, Divider>;\n width: number;\n layoutWidth: number;\n current?: CurrentSnapshot;\n collapse?: {element: HTMLElement; y: number; anchor: Element | null};\n};\ntype Props = React.HTMLAttributes<HTMLDivElement> & {\n compact: boolean;\n compactTransition?: boolean;\n};\n\nconst ITEM_SELECTOR = CURRENT_ROW_SELECTOR;\nconst LOGO_SELECTOR = '[data-gn-aside-transition-row=\"logo\"]';\nconst TITLE_SELECTOR = '[data-gn-aside-part=\"quick-access-title\"]';\n\nfunction measure(element: HTMLElement): Part {\n const rect = element.getBoundingClientRect();\n const style = getComputedStyle(element);\n return {\n element,\n rect,\n anchor: element.querySelector('svg, img')?.getBoundingClientRect() ?? rect,\n opacity: rect.width > 0 && rect.height > 0 ? Number(style.opacity) : 0,\n transform: style.transform,\n backgroundColor: style.backgroundColor,\n borderRadius: style.borderRadius,\n clipPath: style.clipPath,\n clipRect: element\n .closest('[data-gn-aside-scrollport], [data-gn-aside-transition-scroll-clip]')\n ?.getBoundingClientRect(),\n };\n}\n\nfunction cloneAppearance(element: HTMLElement) {\n const clone = element.cloneNode(true) as HTMLElement;\n const sources = [element, ...Array.from(element.querySelectorAll<HTMLElement>('*'))];\n const copies = [clone, ...Array.from(clone.querySelectorAll<HTMLElement>('*'))];\n sources.forEach((source, index) => {\n // A fading title leaves its row's CSS scope (for example _current).\n // Preserve computed typography/paint, but not layout: the ghost's box\n // and translation are controlled independently by the animation.\n const style = getComputedStyle(source);\n const copy = copies[index];\n if (!copy.style) return;\n const row = source.closest<HTMLElement>(ITEM_SELECTOR);\n if (row && (source === row || source.matches('[data-gn-aside-part=\"surface\"]'))) {\n copy.setAttribute(CURRENT_ROW_KEY_ATTRIBUTE, getCurrentRowKey(row));\n }\n for (const property of [\n 'color',\n 'font',\n 'line-height',\n 'letter-spacing',\n 'text-transform',\n 'text-shadow',\n 'text-decoration',\n // A detached group no longer inherits its inline-list row gap.\n '--_--menu-item-gap',\n ]) {\n copy.style.setProperty(property, style.getPropertyValue(property));\n }\n });\n return clone;\n}\n\nfunction measureRow(element: HTMLElement): Row {\n const part = (name: string) => {\n const child = element.querySelector<HTMLElement>(`[data-gn-aside-part=\"${name}\"]`);\n return child ? measure(child) : undefined;\n };\n return {\n ...measure(element),\n icon: part('icon'),\n title: part('title'),\n surface: part('surface'),\n };\n}\n\nfunction capture(panel: HTMLElement): Snapshot {\n const rows = new Map<string, Row>();\n const groups = new Map<string, Group>();\n const dividers = new Map<string, Divider>();\n panel.querySelectorAll<HTMLElement>(ITEM_SELECTOR).forEach((element) => {\n // A quick-access copy and the main item have the same item id, but belong\n // to different composite bars. Nested items inherit their root bar's id.\n const section = getCompositeBarSection(element);\n const id = element.getAttribute(COMPOSITE_BAR_ITEM_ID_ATTRIBUTE);\n const row = measureRow(element);\n if (element.hasAttribute('data-gn-aside-nested')) {\n row.group = `${section}/${element.closest('[data-gn-aside-group]')?.getAttribute('data-gn-aside-group')}`;\n }\n rows.set(`${section}/${id}`, row);\n });\n const logo = panel.querySelector<HTMLElement>(LOGO_SELECTOR);\n if (logo) rows.set('logo', measureRow(logo));\n const title = panel.querySelector<HTMLElement>(TITLE_SELECTOR);\n if (title) rows.set('quick-access-title', measureRow(title));\n panel.querySelectorAll<HTMLElement>('[data-gn-aside-divider]').forEach((element) => {\n if (element.closest('[data-gn-aside-transition-overlay]')) return;\n const id = element.getAttribute('data-gn-aside-divider');\n const section = getCompositeBarSection(element, 'aside');\n const group = element.closest('[data-gn-aside-group]');\n if (id)\n dividers.set(`${section}/${id}`, {\n ...measure(element),\n id,\n group: group\n ? `${section}/${group.getAttribute('data-gn-aside-group')}`\n : undefined,\n });\n });\n panel.querySelectorAll<HTMLElement>('[data-gn-aside-group]').forEach((element) => {\n const list = element.querySelector<HTMLElement>(':scope > .g-list');\n const header = element.querySelector<HTMLElement>(ITEM_SELECTOR);\n if (!list || !header) return;\n const section = getCompositeBarSection(header);\n groups.set(`${section}/${element.getAttribute('data-gn-aside-group')}`, {\n part: measure(list),\n headerKey: `${section}/${header.getAttribute(COMPOSITE_BAR_ITEM_ID_ATTRIBUTE)}`,\n });\n });\n const width = panel.getBoundingClientRect().width;\n const layoutWidth =\n Number.parseFloat(getComputedStyle(panel).getPropertyValue('--gn-aside-header-size')) ||\n width;\n const slot = panel.nextElementSibling?.matches('[data-gn-aside-collapse-layer]')\n ? panel.nextElementSibling.querySelector<HTMLElement>('[data-gn-aside-collapse-slot]')\n : null;\n const collapse = slot\n ? {\n element: slot,\n y: slot.getBoundingClientRect().y,\n anchor: panel.querySelector('[data-gn-collapse-anchor]'),\n }\n : undefined;\n return {rows, groups, dividers, width, layoutWidth, collapse};\n}\n\ntype BeforeSnapshot = Snapshot & {appearances: Map<Part, HTMLElement>};\n\nfunction canCreateRowGhost(row: Row, snapshot: Snapshot): boolean {\n return row.opacity !== 0 && !(row.group && snapshot.groups.has(row.group));\n}\n\nfunction captureGhostAppearances(snapshot: Snapshot): Map<Part, HTMLElement> {\n const appearances = new Map<Part, HTMLElement>();\n const save = (part: Part) => appearances.set(part, cloneAppearance(part.element));\n snapshot.rows.forEach((row) => {\n if (canCreateRowGhost(row, snapshot)) save(row);\n if (row.title && row.title.opacity > 0) save(row.title);\n });\n snapshot.groups.forEach(({part}) => save(part));\n return appearances;\n}\n\nfunction translation(x: number, y: number, transform = 'none') {\n return `translate(${x}px, ${y}px) ${transform === 'none' ? '' : transform}`;\n}\n\n/**\n * FLIP boundary for the aside: snapshot before React mutates the DOM, then\n * translate the target rows from their old positions before the browser paints.\n * Text is never scaled and the actual target layout is present from the start.\n * Departing rows/titles are decorative, inert copies, removed on animation finish.\n */\nexport class AsideLayoutTransition extends React.Component<\n Props,\n Record<string, never>,\n BeforeSnapshot | null\n> {\n private root = React.createRef<HTMLDivElement>();\n private currentIndicator = new CurrentIndicatorTransition(() => this.reconcileObservation());\n private currentIdentities: CurrentIdentitySnapshot = new Map();\n private presentationObserver = new CurrentPresentationObserver((identities, surfaces) => {\n const panel = this.animatedPanel;\n if (!panel) return;\n if (!panel.isConnected || !this.root.current?.contains(panel)) {\n this.cancel();\n return;\n }\n this.currentIdentities = identities;\n this.surfacePaint.forEach((_animation, surface) => {\n if (!surface.isConnected || !panel.contains(surface)) surfaces.add(surface);\n });\n this.cancelSurfacePaint(surfaces);\n this.currentIndicator.validate(panel, identities);\n this.reconcileObservation();\n });\n private animations: Animation[] = [];\n private surfacePaint = new Map<HTMLElement, Animation>();\n private overlay?: HTMLDivElement;\n private scrollOverlay?: HTMLDivElement;\n private animatedPanel?: HTMLElement;\n private departingRows = new Map<string, HTMLElement>();\n private departingTitles = new Map<string, HTMLElement>();\n private generation = 0;\n private pendingStart?: object;\n private departingGroups = new Map<string, {element: HTMLElement; headerKey: string}>();\n private departingDividers = new Map<\n string,\n {element: HTMLElement; id: string; group?: string}\n >();\n\n getSnapshotBeforeUpdate(previous: Props): BeforeSnapshot | null {\n if (this.props.compactTransition === false) {\n if (this.animatedPanel || this.pendingStart) this.cancel();\n return null;\n }\n if (previous.compact === this.props.compact) return null;\n if (window.matchMedia?.('(prefers-reduced-motion: reduce)').matches) {\n if (this.animatedPanel || this.pendingStart) this.cancel();\n return null;\n }\n const panel = this.root.current?.querySelector<HTMLElement>('[data-gn-aside-panel]');\n // A synchronous remount can precede observer delivery. Departing parts\n // belong only to their original panel and must not seed a new snapshot.\n if (\n this.animatedPanel &&\n (this.animatedPanel !== panel || !this.animatedPanel.isConnected)\n ) {\n this.cancel();\n }\n if (!panel) return null;\n const identities = captureCurrentIdentity(panel);\n this.presentationObserver.check(panel, identities, true);\n const current = this.currentIndicator.capture(panel, identities);\n // Save moving geometry first, then restore live paint before ordinary\n // snapshots. Layout effects stay alive until every reversal part is read.\n this.presentationObserver.disconnect();\n this.animatedPanel = undefined;\n this.currentIndicator.cancel();\n const snapshot = {...capture(panel), current};\n // Interrupted transitions start at their current screen coordinates,\n // including content still fading out from a previous compact toggle.\n this.departingRows.forEach((element, key) => snapshot.rows.set(key, measureRow(element)));\n this.departingTitles.forEach((element, key) => {\n const row = snapshot.rows.get(key);\n if (row) row.title = measure(element);\n });\n this.departingGroups.forEach(({element, headerKey}, key) => {\n snapshot.groups.set(key, {part: measure(element), headerKey});\n });\n this.departingDividers.forEach(({element, id, group}, key) => {\n snapshot.dividers.set(key, {...measure(element), id, group});\n });\n const before: BeforeSnapshot = {\n ...snapshot,\n appearances: captureGhostAppearances(snapshot),\n };\n this.animatedPanel = panel;\n this.cancel();\n return before;\n }\n\n componentDidUpdate(\n _previous: Props,\n _state: Record<string, never>,\n before: BeforeSnapshot | null,\n ) {\n if (!before) return;\n const generation = this.generation;\n const pendingStart = {};\n this.pendingStart = pendingStart;\n // AutoSizer's mount/update can synchronously enqueue another React commit.\n // Let that commit finish before reading the target rows, but still install\n // the inverse transforms in the same task, before the browser paints.\n queueMicrotask(() => {\n if (generation !== this.generation) return;\n if (this.pendingStart === pendingStart) this.pendingStart = undefined;\n if (this.root.current) this.start(before);\n });\n }\n\n componentWillUnmount() {\n this.cancel();\n }\n\n render() {\n const {compactTransition: _compactTransition, compact: _compact, ...props} = this.props;\n return <div {...props} ref={this.root} />;\n }\n\n private start(before: BeforeSnapshot) {\n if (this.props.compactTransition === false) return;\n const panel = this.root.current?.querySelector<HTMLElement>('[data-gn-aside-panel]');\n if (\n !panel ||\n typeof panel.animate !== 'function' ||\n window.matchMedia?.('(prefers-reduced-motion: reduce)').matches\n )\n return;\n\n const after = capture(panel);\n // CSS shortens reversed transitions. Follow its actual duration rather\n // than restarting a second independent 200ms presentation timer.\n const widthTransition = panel\n .getAnimations()\n .find(\n (animation) =>\n 'transitionProperty' in animation && animation.transitionProperty === 'width',\n );\n const duration = Number(\n widthTransition?.effect?.getComputedTiming().duration ??\n ASIDE_HEADER_COLLAPSE_TRANSITION_MS,\n );\n if (duration <= 0) return;\n const generation = ++this.generation;\n panel.setAttribute('data-gn-aside-animating', '');\n this.currentIdentities = captureCurrentIdentity(panel);\n const targetCurrent = captureCurrentPresentation(panel, this.currentIdentities);\n const options: KeyframeAnimationOptions = {duration, easing: 'ease-in-out', fill: 'both'};\n this.currentIndicator.start(\n panel,\n matchCurrentPresentations(before.current ?? new Map(), targetCurrent),\n options,\n widthTransition?.startTime ?? null,\n );\n const animate = (element: HTMLElement, keyframes: Keyframe[]) => {\n const animation = element.animate(keyframes, options);\n if (widthTransition?.startTime !== null && widthTransition?.startTime !== undefined) {\n animation.startTime = widthTransition.startTime;\n }\n this.animations.push(animation);\n return animation;\n };\n\n if (\n before.collapse &&\n after.collapse &&\n before.collapse.element === after.collapse.element &&\n before.collapse.anchor === after.collapse.anchor\n ) {\n animate(after.collapse.element, [\n {transform: `translateY(${before.collapse.y - after.collapse.y}px)`},\n {transform: 'none'},\n ]);\n }\n\n after.rows.forEach((row, key) => {\n if (row.group && after.groups.has(row.group)) return;\n const old = before.rows.get(key);\n if (!old) {\n animate(row.element, [{opacity: 0}, {opacity: row.opacity}]);\n return;\n }\n animate(row.element, [\n {\n transform: translation(\n old.rect.x - row.rect.x,\n old.rect.y - row.rect.y,\n row.transform,\n ),\n opacity: old.opacity,\n },\n {transform: row.transform, opacity: row.opacity},\n ]);\n if (old.icon && row.icon) {\n // Keep the icon's centre continuous even for action rows and\n // two-line titles, whose icon slots differ between layouts.\n const dx =\n old.icon.anchor.x +\n old.icon.anchor.width / 2 -\n old.rect.x -\n (row.icon.anchor.x + row.icon.anchor.width / 2 - row.rect.x);\n const dy =\n old.icon.anchor.y +\n old.icon.anchor.height / 2 -\n old.rect.y -\n (row.icon.anchor.y + row.icon.anchor.height / 2 - row.rect.y);\n animate(row.icon.element, [{transform: translation(dx, dy)}, {transform: 'none'}]);\n }\n if (row.title && row.title.opacity > 0) {\n const dx = old.title?.opacity\n ? old.title.rect.x - old.rect.x - (row.title.rect.x - row.rect.x)\n : 0;\n const dy = old.title?.opacity\n ? old.title.rect.y - old.rect.y - (row.title.rect.y - row.rect.y)\n : 0;\n animate(row.title.element, [\n {opacity: old.title?.opacity ?? 0, transform: translation(dx, dy)},\n {opacity: row.title.opacity, transform: 'none'},\n ]);\n } else if (old.title && old.title.opacity > 0) {\n const ghost = this.addGhost(panel, old.title, before.appearances);\n if (ghost) {\n this.departingTitles.set(key, ghost);\n animate(ghost, [\n {opacity: old.title.opacity, transform: 'none'},\n {\n opacity: 0,\n transform: translation(\n row.rect.x - old.rect.x,\n row.rect.y - old.rect.y,\n ),\n },\n ]);\n }\n }\n if (old.surface && row.surface) {\n const surface = row.surface;\n const dx = old.surface.rect.x - old.rect.x - (surface.rect.x - row.rect.x);\n const dy = old.surface.rect.y - old.rect.y - (surface.rect.y - row.rect.y);\n animate(surface.element, [\n {\n transform: translation(dx, dy),\n width: `${old.surface.rect.width}px`,\n height: `${old.surface.rect.height}px`,\n borderRadius: old.surface.borderRadius,\n },\n {\n transform: 'none',\n width: `${surface.rect.width}px`,\n height: `${surface.rect.height}px`,\n borderRadius: surface.borderRadius,\n },\n ]);\n if (\n !this.currentIndicator.manages(surface.element) &&\n old.surface.backgroundColor !== surface.backgroundColor\n ) {\n const animation = animate(surface.element, [\n {backgroundColor: old.surface.backgroundColor},\n {backgroundColor: surface.backgroundColor},\n ]);\n this.surfacePaint.set(surface.element, animation);\n const settled = () => {\n if (\n this.generation !== generation ||\n this.surfacePaint.get(surface.element) !== animation\n )\n return;\n // A finished fill:'both' effect still overrides native\n // current/hover CSS until it is explicitly released.\n this.cancelSurfacePaint(new Set([surface.element]));\n this.reconcileObservation();\n };\n animation.finished.then(settled, settled);\n }\n }\n });\n before.rows.forEach((row, key) => {\n if (after.rows.has(key) || !canCreateRowGhost(row, before)) return;\n const ghost = this.addGhost(panel, row, before.appearances);\n if (!ghost) return;\n this.departingRows.set(key, ghost);\n animate(ghost, [{opacity: row.opacity}, {opacity: 0}]);\n });\n\n after.dividers.forEach((divider, key) => {\n const old = before.dividers.get(key);\n const oldGroup = divider.group ? before.groups.get(divider.group) : undefined;\n const newGroup = divider.group ? after.groups.get(divider.group) : undefined;\n // Nested lines inherit their group's translation; only compensate\n // for changes within that group, not its full screen movement twice.\n const dx = old ? old.rect.x - divider.rect.x : 0;\n const dy = old ? old.rect.y - divider.rect.y : 0;\n const groupDx = oldGroup && newGroup ? oldGroup.part.rect.x - newGroup.part.rect.x : dx;\n const groupDy = oldGroup && newGroup ? oldGroup.part.rect.y - newGroup.part.rect.y : dy;\n // Lines resize with the outer edge while text retains its target\n // layout. Keep footer overflow opacity independent of this motion.\n animate(divider.element, [\n {\n transform: translation(\n dx - (newGroup ? groupDx : 0),\n dy - (newGroup ? groupDy : 0),\n divider.transform,\n ),\n width: `${old?.rect.width ?? Math.max(0, divider.rect.width + before.width - after.layoutWidth)}px`,\n },\n {transform: divider.transform, width: `${divider.rect.width}px`},\n ]);\n });\n\n const openClip = 'inset(0px 0px 0px 0px)';\n const closedClip = 'inset(0px 0px 100% 0px)';\n after.groups.forEach((group, key) => {\n const old = before.groups.get(key);\n const oldHeader = before.rows.get(group.headerKey);\n const header = after.rows.get(group.headerKey);\n let dx = 0;\n let dy = 0;\n if (old) {\n dx = old.part.rect.x - group.part.rect.x;\n dy = old.part.rect.y - group.part.rect.y;\n } else if (oldHeader && header) {\n dx = oldHeader.rect.x - header.rect.x;\n dy = oldHeader.rect.y - header.rect.y;\n }\n animate(group.part.element, [\n {transform: translation(dx, dy), clipPath: old ? old.part.clipPath : closedClip},\n {transform: 'none', clipPath: openClip},\n ]);\n });\n before.groups.forEach((group, key) => {\n if (after.groups.has(key)) return;\n const ghost = this.addGhost(panel, group.part, before.appearances);\n if (!ghost) return;\n this.departingGroups.set(key, {element: ghost, headerKey: group.headerKey});\n // Departing groups are decorative clones, but their dividers still\n // resize with the aside. Retain keyed geometry for a mid-flight reversal.\n before.dividers.forEach((divider, dividerKey) => {\n if (divider.group !== key) return;\n const line = Array.from(\n ghost.querySelectorAll<HTMLElement>('[data-gn-aside-divider]'),\n ).find((element) => element.getAttribute('data-gn-aside-divider') === divider.id);\n if (!line) return;\n this.departingDividers.set(dividerKey, {element: line, id: divider.id, group: key});\n animate(line, [\n {width: `${divider.rect.width}px`},\n {\n width: `${Math.max(0, divider.rect.width + after.layoutWidth - before.width)}px`,\n },\n ]);\n });\n const oldHeader = before.rows.get(group.headerKey);\n const header = after.rows.get(group.headerKey);\n const dx = oldHeader && header ? header.rect.x - oldHeader.rect.x : 0;\n const dy = oldHeader && header ? header.rect.y - oldHeader.rect.y : 0;\n animate(ghost, [\n {\n transform: 'none',\n clipPath: group.part.clipPath === 'none' ? openClip : group.part.clipPath,\n },\n {transform: translation(dx, dy), clipPath: closedClip},\n ]);\n });\n\n this.animatedPanel = panel;\n this.reconcileObservation();\n Promise.all(\n this.animations.map((animation) => animation.finished.catch(() => undefined)),\n ).then(() => {\n if (this.generation === generation) this.cancel();\n });\n }\n\n private addGhost(\n panel: HTMLElement,\n part: Part,\n appearances: Map<Part, HTMLElement>,\n ): HTMLElement | undefined {\n const ghost = appearances.get(part);\n if (!ghost) {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error('Missing pre-update aside ghost appearance');\n }\n return undefined;\n }\n if (!this.overlay) {\n this.overlay = document.createElement('div');\n this.overlay.setAttribute('aria-hidden', 'true');\n this.overlay.setAttribute('inert', '');\n this.overlay.setAttribute('data-gn-aside-transition-overlay', '');\n Object.assign(this.overlay.style, {\n position: 'absolute',\n inset: '0',\n overflow: 'hidden',\n pointerEvents: 'none',\n zIndex: '4',\n });\n panel.appendChild(this.overlay);\n }\n this.currentIndicator.prepareGhost(ghost);\n [ghost, ...Array.from(ghost.querySelectorAll<HTMLElement>('*'))].forEach((element) => {\n element.removeAttribute('id');\n element.removeAttribute('data-qa');\n element.removeAttribute('data-gn-collapse-anchor');\n element.removeAttribute(COMPOSITE_BAR_ITEM_ID_ATTRIBUTE);\n });\n const origin = panel.getBoundingClientRect();\n let parent = this.overlay;\n let top = origin.y;\n if (part.clipRect) {\n const viewport = panel\n .querySelector('[data-gn-aside-scrollport]')\n ?.getBoundingClientRect();\n const clipTop = Math.max(part.clipRect.top, viewport?.top ?? part.clipRect.top);\n const clipBottom = Math.min(\n part.clipRect.bottom,\n viewport?.bottom ?? part.clipRect.bottom,\n );\n if (!this.scrollOverlay) {\n this.scrollOverlay = document.createElement('div');\n this.scrollOverlay.setAttribute('data-gn-aside-transition-scroll-clip', '');\n Object.assign(this.scrollOverlay.style, {\n position: 'absolute',\n left: '0',\n right: '0',\n top: `${clipTop - origin.y}px`,\n height: `${Math.max(0, clipBottom - clipTop)}px`,\n overflow: 'hidden',\n });\n this.overlay.appendChild(this.scrollOverlay);\n }\n parent = this.scrollOverlay;\n top = parent.getBoundingClientRect().y;\n }\n Object.assign(ghost.style, {\n position: 'absolute',\n margin: '0',\n boxSizing: 'border-box',\n left: `${part.rect.x - origin.x}px`,\n top: `${part.rect.y - top}px`,\n width: `${part.rect.width}px`,\n height: `${part.rect.height}px`,\n transform: 'none',\n });\n parent.appendChild(ghost);\n return ghost;\n }\n\n private cancel() {\n this.presentationObserver.disconnect();\n this.pendingStart = undefined;\n this.generation++;\n this.animatedPanel?.removeAttribute('data-gn-aside-animating');\n this.animatedPanel = undefined;\n this.currentIndicator.cancel();\n this.animations.forEach((animation) => animation.cancel());\n this.animations = [];\n this.surfacePaint.clear();\n this.currentIdentities.clear();\n this.overlay?.remove();\n this.overlay = undefined;\n this.scrollOverlay = undefined;\n this.departingRows.clear();\n this.departingTitles.clear();\n this.departingGroups.clear();\n this.departingDividers.clear();\n }\n\n private cancelSurfacePaint(surfaces: Set<HTMLElement>) {\n const cancelled = new Set<Animation>();\n this.surfacePaint.forEach((animation, surface) => {\n if (!surfaces.has(surface)) return;\n animation.cancel();\n cancelled.add(animation);\n this.surfacePaint.delete(surface);\n });\n this.animations = this.animations.filter((animation) => !cancelled.has(animation));\n }\n\n private reconcileObservation() {\n if (\n this.animatedPanel &&\n (this.currentIndicator.hasActiveTransfers || this.surfacePaint.size > 0)\n ) {\n this.presentationObserver.observe(this.animatedPanel, this.currentIdentities);\n } else {\n this.presentationObserver.disconnect();\n }\n }\n}\n"],"names":["React"],"mappings":"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"}
|
package/build/esm/components/AsideHeader/components/PageLayout/CurrentIndicatorTransition.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type CurrentIdentitySnapshot, type CurrentSnapshot, type CurrentTransfer } from './currentIndicatorModel';
|
|
2
|
+
export declare class CurrentIndicatorTransition {
|
|
3
|
+
private active;
|
|
4
|
+
private onTransfersChanged?;
|
|
5
|
+
constructor(onTransfersChanged?: () => void);
|
|
6
|
+
get hasActiveTransfers(): boolean;
|
|
7
|
+
capture(panel: HTMLElement, identities?: CurrentIdentitySnapshot): CurrentSnapshot;
|
|
8
|
+
start(panel: HTMLElement, transfers: CurrentTransfer[], options: KeyframeAnimationOptions, startTime: Animation['startTime']): void;
|
|
9
|
+
manages(surface: HTMLElement): boolean;
|
|
10
|
+
prepareGhost(root: HTMLElement): void;
|
|
11
|
+
cancel(): void;
|
|
12
|
+
validate(panel: HTMLElement, identities: CurrentIdentitySnapshot): void;
|
|
13
|
+
private release;
|
|
14
|
+
}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { CURRENT_ROW_SELECTOR, SURFACE_SELECTOR, CURRENT_SUPPRESSED_ATTRIBUTE, CURRENT_ROW_KEY_ATTRIBUTE, CURRENT_GHOST_SUPPRESSED_ATTRIBUTE } from './currentIndicatorDom.js';
|
|
2
|
+
import { captureCurrentPresentation, captureCurrentIdentity, getCurrentRowKey } from './currentIndicatorModel.js';
|
|
3
|
+
|
|
4
|
+
class CurrentIndicatorTransition {
|
|
5
|
+
constructor(onTransfersChanged) {
|
|
6
|
+
this.active = new Set();
|
|
7
|
+
this.onTransfersChanged = onTransfersChanged;
|
|
8
|
+
}
|
|
9
|
+
get hasActiveTransfers() {
|
|
10
|
+
return this.active.size > 0;
|
|
11
|
+
}
|
|
12
|
+
capture(panel, identities = captureCurrentIdentity(panel)) {
|
|
13
|
+
// A parent can change current and compact in one task, before observer
|
|
14
|
+
// delivery. Restore invalid transfers before reading native paint.
|
|
15
|
+
this.validate(panel, identities);
|
|
16
|
+
const snapshot = captureCurrentPresentation(panel, identities);
|
|
17
|
+
snapshot.forEach((presentation, key) => {
|
|
18
|
+
const active = Array.from(this.active).find(({ transfer }) => transfer.to.row === presentation.row);
|
|
19
|
+
if (!active)
|
|
20
|
+
return;
|
|
21
|
+
const style = getComputedStyle(active.indicator);
|
|
22
|
+
snapshot.set(key, Object.assign(Object.assign({}, presentation), { rect: active.indicator.getBoundingClientRect(), color: style.backgroundColor, radius: style.borderRadius, inFlight: true }));
|
|
23
|
+
});
|
|
24
|
+
return snapshot;
|
|
25
|
+
}
|
|
26
|
+
start(panel, transfers, options, startTime) {
|
|
27
|
+
var _a;
|
|
28
|
+
this.cancel();
|
|
29
|
+
const layers = new Map();
|
|
30
|
+
transfers.forEach((transfer) => {
|
|
31
|
+
var _a, _b, _c, _d;
|
|
32
|
+
const { from, to } = transfer;
|
|
33
|
+
const host = to.row.closest('[data-gn-aside-current-container]');
|
|
34
|
+
// Built-in header/footer rows never change representative and have
|
|
35
|
+
// no scroll-content indicator container to transport within.
|
|
36
|
+
if (!host || typeof host.animate !== 'function')
|
|
37
|
+
return;
|
|
38
|
+
const hostRect = host.getBoundingClientRect();
|
|
39
|
+
const scrollRect = (_a = host.closest('[data-gn-aside-scrollport]')) === null || _a === undefined ? undefined : _a.getBoundingClientRect();
|
|
40
|
+
const layerLeft = ((_b = scrollRect === null || scrollRect === undefined ? undefined : scrollRect.left) !== null && _b !== undefined ? _b : hostRect.left) - hostRect.left;
|
|
41
|
+
const layerWidth = ((_c = scrollRect === null || scrollRect === undefined ? undefined : scrollRect.right) !== null && _c !== undefined ? _c : hostRect.right) - ((_d = scrollRect === null || scrollRect === undefined ? undefined : scrollRect.left) !== null && _d !== undefined ? _d : hostRect.left);
|
|
42
|
+
let layer = layers.get(host);
|
|
43
|
+
if (!layer) {
|
|
44
|
+
layer = document.createElement('div');
|
|
45
|
+
layer.setAttribute('data-gn-aside-current-indicator-layer', '');
|
|
46
|
+
layer.setAttribute('aria-hidden', 'true');
|
|
47
|
+
layer.setAttribute('inert', '');
|
|
48
|
+
Object.assign(layer.style, {
|
|
49
|
+
position: 'absolute',
|
|
50
|
+
insetBlock: '0',
|
|
51
|
+
left: `${layerLeft}px`,
|
|
52
|
+
width: `${Math.max(0, layerWidth)}px`,
|
|
53
|
+
overflow: 'hidden',
|
|
54
|
+
pointerEvents: 'none',
|
|
55
|
+
zIndex: '0',
|
|
56
|
+
});
|
|
57
|
+
host.prepend(layer);
|
|
58
|
+
layers.set(host, layer);
|
|
59
|
+
}
|
|
60
|
+
const indicator = document.createElement('div');
|
|
61
|
+
indicator.setAttribute('data-gn-aside-current-indicator', '');
|
|
62
|
+
indicator.style.position = 'absolute';
|
|
63
|
+
const frame = (presentation) => ({
|
|
64
|
+
left: `${presentation.rect.left - hostRect.left - layerLeft}px`,
|
|
65
|
+
top: `${presentation.rect.y - hostRect.y}px`,
|
|
66
|
+
width: `${presentation.rect.width}px`,
|
|
67
|
+
height: `${presentation.rect.height}px`,
|
|
68
|
+
borderRadius: presentation.radius,
|
|
69
|
+
backgroundColor: presentation.color,
|
|
70
|
+
});
|
|
71
|
+
Object.assign(indicator.style, frame(to));
|
|
72
|
+
layer.append(indicator);
|
|
73
|
+
const rowKeys = new Set([from.key, to.key]);
|
|
74
|
+
const surfaces = new Set();
|
|
75
|
+
panel.querySelectorAll(CURRENT_ROW_SELECTOR).forEach((row) => {
|
|
76
|
+
if (row.closest('[data-gn-aside-transition-overlay]') ||
|
|
77
|
+
!rowKeys.has(getCurrentRowKey(row)))
|
|
78
|
+
return;
|
|
79
|
+
const surface = row.querySelector(SURFACE_SELECTOR);
|
|
80
|
+
if (surface) {
|
|
81
|
+
surface.setAttribute(CURRENT_SUPPRESSED_ATTRIBUTE, '');
|
|
82
|
+
surfaces.add(surface);
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
const animation = indicator.animate([frame(from), frame(to)], options);
|
|
86
|
+
if (startTime !== null)
|
|
87
|
+
animation.startTime = startTime;
|
|
88
|
+
const active = { transfer, indicator, layer, animation, surfaces, rowKeys };
|
|
89
|
+
this.active.add(active);
|
|
90
|
+
// Membership is the generation guard: stale finished promises cannot
|
|
91
|
+
// remove resources belonging to a subsequently started transfer.
|
|
92
|
+
animation.finished.then(() => this.release(active), () => this.release(active));
|
|
93
|
+
});
|
|
94
|
+
if (this.active.size)
|
|
95
|
+
(_a = this.onTransfersChanged) === null || _a === undefined ? undefined : _a.call(this);
|
|
96
|
+
}
|
|
97
|
+
manages(surface) {
|
|
98
|
+
return Array.from(this.active).some((active) => active.surfaces.has(surface));
|
|
99
|
+
}
|
|
100
|
+
prepareGhost(root) {
|
|
101
|
+
const surfaces = [...root.querySelectorAll(SURFACE_SELECTOR)];
|
|
102
|
+
surfaces.forEach((surface) => {
|
|
103
|
+
var _a;
|
|
104
|
+
const key = (_a = surface
|
|
105
|
+
.closest(`[${CURRENT_ROW_KEY_ATTRIBUTE}]`)) === null || _a === undefined ? undefined : _a.getAttribute(CURRENT_ROW_KEY_ATTRIBUTE);
|
|
106
|
+
if (surface.hasAttribute(CURRENT_SUPPRESSED_ATTRIBUTE) ||
|
|
107
|
+
(key && Array.from(this.active).some((active) => active.rowKeys.has(key)))) {
|
|
108
|
+
// This copy describes an old selection. Its suppression belongs
|
|
109
|
+
// to the ghost's lifetime, even after current changes in live DOM.
|
|
110
|
+
surface.setAttribute(CURRENT_GHOST_SUPPRESSED_ATTRIBUTE, '');
|
|
111
|
+
}
|
|
112
|
+
surface.removeAttribute(CURRENT_SUPPRESSED_ATTRIBUTE);
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
cancel() {
|
|
116
|
+
this.active.forEach((active) => this.release(active));
|
|
117
|
+
}
|
|
118
|
+
validate(panel, identities) {
|
|
119
|
+
if (!this.active.size)
|
|
120
|
+
return;
|
|
121
|
+
const counts = new Map();
|
|
122
|
+
identities.forEach(({ section, currentIds }) => {
|
|
123
|
+
currentIds.forEach((id) => {
|
|
124
|
+
var _a;
|
|
125
|
+
const key = JSON.stringify([section, id]);
|
|
126
|
+
counts.set(key, ((_a = counts.get(key)) !== null && _a !== undefined ? _a : 0) + 1);
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
this.active.forEach((active) => {
|
|
130
|
+
const { to } = active.transfer;
|
|
131
|
+
const target = identities.get(to.row);
|
|
132
|
+
if (!panel.isConnected ||
|
|
133
|
+
!active.layer.isConnected ||
|
|
134
|
+
!active.indicator.isConnected ||
|
|
135
|
+
counts.get(JSON.stringify([to.section, to.currentIds[0]])) !== 1 ||
|
|
136
|
+
!target ||
|
|
137
|
+
target.currentIds[0] !== to.currentIds[0] ||
|
|
138
|
+
target.surface !== to.surface ||
|
|
139
|
+
target.key !== to.key ||
|
|
140
|
+
target.currentIds.length !== 1) {
|
|
141
|
+
this.release(active);
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
release(active) {
|
|
146
|
+
var _a;
|
|
147
|
+
if (!this.active.delete(active))
|
|
148
|
+
return;
|
|
149
|
+
active.surfaces.forEach((surface) => {
|
|
150
|
+
if (!this.manages(surface))
|
|
151
|
+
surface.removeAttribute(CURRENT_SUPPRESSED_ATTRIBUTE);
|
|
152
|
+
});
|
|
153
|
+
active.animation.cancel();
|
|
154
|
+
active.indicator.remove();
|
|
155
|
+
if (!Array.from(this.active).some(({ layer }) => layer === active.layer))
|
|
156
|
+
active.layer.remove();
|
|
157
|
+
(_a = this.onTransfersChanged) === null || _a === undefined ? undefined : _a.call(this);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
export { CurrentIndicatorTransition };
|
|
162
|
+
//# sourceMappingURL=CurrentIndicatorTransition.js.map
|
package/build/esm/components/AsideHeader/components/PageLayout/CurrentIndicatorTransition.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CurrentIndicatorTransition.js","sources":["../../../../../../../src/components/AsideHeader/components/PageLayout/CurrentIndicatorTransition.ts"],"sourcesContent":["import {\n CURRENT_GHOST_SUPPRESSED_ATTRIBUTE,\n CURRENT_ROW_KEY_ATTRIBUTE,\n CURRENT_ROW_SELECTOR,\n CURRENT_SUPPRESSED_ATTRIBUTE,\n SURFACE_SELECTOR,\n} from './currentIndicatorDom';\nimport {\n type CurrentIdentitySnapshot,\n type CurrentSnapshot,\n type CurrentTransfer,\n captureCurrentIdentity,\n captureCurrentPresentation,\n getCurrentRowKey,\n} from './currentIndicatorModel';\n\ntype ActiveTransfer = {\n transfer: CurrentTransfer;\n indicator: HTMLElement;\n layer: HTMLElement;\n animation: Animation;\n surfaces: Set<HTMLElement>;\n rowKeys: Set<string>;\n};\n\nexport class CurrentIndicatorTransition {\n private active = new Set<ActiveTransfer>();\n private onTransfersChanged?: () => void;\n\n constructor(onTransfersChanged?: () => void) {\n this.onTransfersChanged = onTransfersChanged;\n }\n\n get hasActiveTransfers(): boolean {\n return this.active.size > 0;\n }\n\n capture(panel: HTMLElement, identities = captureCurrentIdentity(panel)): CurrentSnapshot {\n // A parent can change current and compact in one task, before observer\n // delivery. Restore invalid transfers before reading native paint.\n this.validate(panel, identities);\n const snapshot = captureCurrentPresentation(panel, identities);\n snapshot.forEach((presentation, key) => {\n const active = Array.from(this.active).find(\n ({transfer}) => transfer.to.row === presentation.row,\n );\n if (!active) return;\n const style = getComputedStyle(active.indicator);\n snapshot.set(key, {\n ...presentation,\n rect: active.indicator.getBoundingClientRect(),\n color: style.backgroundColor,\n radius: style.borderRadius,\n inFlight: true,\n });\n });\n return snapshot;\n }\n\n start(\n panel: HTMLElement,\n transfers: CurrentTransfer[],\n options: KeyframeAnimationOptions,\n startTime: Animation['startTime'],\n ): void {\n this.cancel();\n const layers = new Map<HTMLElement, HTMLElement>();\n transfers.forEach((transfer) => {\n const {from, to} = transfer;\n const host = to.row.closest<HTMLElement>('[data-gn-aside-current-container]');\n // Built-in header/footer rows never change representative and have\n // no scroll-content indicator container to transport within.\n if (!host || typeof host.animate !== 'function') return;\n const hostRect = host.getBoundingClientRect();\n const scrollRect = host.closest('[data-gn-aside-scrollport]')?.getBoundingClientRect();\n const layerLeft = (scrollRect?.left ?? hostRect.left) - hostRect.left;\n const layerWidth =\n (scrollRect?.right ?? hostRect.right) - (scrollRect?.left ?? hostRect.left);\n let layer = layers.get(host);\n if (!layer) {\n layer = document.createElement('div');\n layer.setAttribute('data-gn-aside-current-indicator-layer', '');\n layer.setAttribute('aria-hidden', 'true');\n layer.setAttribute('inert', '');\n Object.assign(layer.style, {\n position: 'absolute',\n insetBlock: '0',\n left: `${layerLeft}px`,\n width: `${Math.max(0, layerWidth)}px`,\n overflow: 'hidden',\n pointerEvents: 'none',\n zIndex: '0',\n });\n host.prepend(layer);\n layers.set(host, layer);\n }\n const indicator = document.createElement('div');\n indicator.setAttribute('data-gn-aside-current-indicator', '');\n indicator.style.position = 'absolute';\n const frame = (presentation: CurrentTransfer['from']): Keyframe => ({\n left: `${presentation.rect.left - hostRect.left - layerLeft}px`,\n top: `${presentation.rect.y - hostRect.y}px`,\n width: `${presentation.rect.width}px`,\n height: `${presentation.rect.height}px`,\n borderRadius: presentation.radius,\n backgroundColor: presentation.color,\n });\n Object.assign(indicator.style, frame(to));\n layer.append(indicator);\n const rowKeys = new Set([from.key, to.key]);\n const surfaces = new Set<HTMLElement>();\n panel.querySelectorAll<HTMLElement>(CURRENT_ROW_SELECTOR).forEach((row) => {\n if (\n row.closest('[data-gn-aside-transition-overlay]') ||\n !rowKeys.has(getCurrentRowKey(row))\n )\n return;\n const surface = row.querySelector<HTMLElement>(SURFACE_SELECTOR);\n if (surface) {\n surface.setAttribute(CURRENT_SUPPRESSED_ATTRIBUTE, '');\n surfaces.add(surface);\n }\n });\n const animation = indicator.animate([frame(from), frame(to)], options);\n if (startTime !== null) animation.startTime = startTime;\n const active = {transfer, indicator, layer, animation, surfaces, rowKeys};\n this.active.add(active);\n // Membership is the generation guard: stale finished promises cannot\n // remove resources belonging to a subsequently started transfer.\n animation.finished.then(\n () => this.release(active),\n () => this.release(active),\n );\n });\n if (this.active.size) this.onTransfersChanged?.();\n }\n\n manages(surface: HTMLElement): boolean {\n return Array.from(this.active).some((active) => active.surfaces.has(surface));\n }\n\n prepareGhost(root: HTMLElement): void {\n const surfaces = [...root.querySelectorAll<HTMLElement>(SURFACE_SELECTOR)];\n surfaces.forEach((surface) => {\n const key = surface\n .closest(`[${CURRENT_ROW_KEY_ATTRIBUTE}]`)\n ?.getAttribute(CURRENT_ROW_KEY_ATTRIBUTE);\n if (\n surface.hasAttribute(CURRENT_SUPPRESSED_ATTRIBUTE) ||\n (key && Array.from(this.active).some((active) => active.rowKeys.has(key)))\n ) {\n // This copy describes an old selection. Its suppression belongs\n // to the ghost's lifetime, even after current changes in live DOM.\n surface.setAttribute(CURRENT_GHOST_SUPPRESSED_ATTRIBUTE, '');\n }\n surface.removeAttribute(CURRENT_SUPPRESSED_ATTRIBUTE);\n });\n }\n\n cancel(): void {\n this.active.forEach((active) => this.release(active));\n }\n\n validate(panel: HTMLElement, identities: CurrentIdentitySnapshot): void {\n if (!this.active.size) return;\n const counts = new Map<string, number>();\n identities.forEach(({section, currentIds}) => {\n currentIds.forEach((id) => {\n const key = JSON.stringify([section, id]);\n counts.set(key, (counts.get(key) ?? 0) + 1);\n });\n });\n this.active.forEach((active) => {\n const {to} = active.transfer;\n const target = identities.get(to.row);\n if (\n !panel.isConnected ||\n !active.layer.isConnected ||\n !active.indicator.isConnected ||\n counts.get(JSON.stringify([to.section, to.currentIds[0]])) !== 1 ||\n !target ||\n target.currentIds[0] !== to.currentIds[0] ||\n target.surface !== to.surface ||\n target.key !== to.key ||\n target.currentIds.length !== 1\n ) {\n this.release(active);\n }\n });\n }\n\n private release(active: ActiveTransfer) {\n if (!this.active.delete(active)) return;\n active.surfaces.forEach((surface) => {\n if (!this.manages(surface)) surface.removeAttribute(CURRENT_SUPPRESSED_ATTRIBUTE);\n });\n active.animation.cancel();\n active.indicator.remove();\n if (!Array.from(this.active).some(({layer}) => layer === active.layer))\n active.layer.remove();\n this.onTransfersChanged?.();\n }\n}\n"],"names":[],"mappings":"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"}
|
package/build/esm/components/AsideHeader/components/PageLayout/CurrentPresentationObserver.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type CurrentIdentitySnapshot } from './currentIndicatorModel';
|
|
2
|
+
type IdentityChange = (identities: CurrentIdentitySnapshot, changedSurfaces: Set<HTMLElement>) => void;
|
|
3
|
+
/** Subscription and metadata diff only; the coordinator owns observation lifetime. */
|
|
4
|
+
export declare class CurrentPresentationObserver {
|
|
5
|
+
private observer?;
|
|
6
|
+
private panel?;
|
|
7
|
+
private onChange;
|
|
8
|
+
private identities;
|
|
9
|
+
constructor(onChange: IdentityChange);
|
|
10
|
+
observe(panel: HTMLElement, initialIdentities: CurrentIdentitySnapshot): void;
|
|
11
|
+
check(panel: HTMLElement, identities: CurrentIdentitySnapshot, bindingChanged?: boolean): void;
|
|
12
|
+
disconnect(): void;
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { COMPOSITE_BAR_ITEM_ID_ATTRIBUTE } from '../CompositeBar/constants.js';
|
|
2
|
+
import { CURRENT_IDS_ATTRIBUTE, CURRENT_ROW_SELECTOR, SURFACE_SELECTOR } from './currentIndicatorDom.js';
|
|
3
|
+
import { captureCurrentIdentity } from './currentIndicatorModel.js';
|
|
4
|
+
|
|
5
|
+
const BINDING_SELECTOR = `${CURRENT_ROW_SELECTOR}, ${SURFACE_SELECTOR}, [data-gn-aside-current-indicator-layer], [data-gn-aside-current-indicator]`;
|
|
6
|
+
/** Subscription and metadata diff only; the coordinator owns observation lifetime. */
|
|
7
|
+
class CurrentPresentationObserver {
|
|
8
|
+
constructor(onChange) {
|
|
9
|
+
this.identities = new Map();
|
|
10
|
+
this.onChange = onChange;
|
|
11
|
+
}
|
|
12
|
+
observe(panel, initialIdentities) {
|
|
13
|
+
if (this.panel === panel)
|
|
14
|
+
return;
|
|
15
|
+
this.disconnect();
|
|
16
|
+
this.panel = panel;
|
|
17
|
+
this.identities = initialIdentities;
|
|
18
|
+
const parent = panel.parentElement;
|
|
19
|
+
const observer = new MutationObserver((records) => {
|
|
20
|
+
if (this.observer !== observer)
|
|
21
|
+
return;
|
|
22
|
+
const bindingChanged = records.some((record) => {
|
|
23
|
+
if (record.type !== 'childList')
|
|
24
|
+
return false;
|
|
25
|
+
const nodes = [
|
|
26
|
+
...Array.from(record.addedNodes),
|
|
27
|
+
...Array.from(record.removedNodes),
|
|
28
|
+
];
|
|
29
|
+
if (record.target === parent)
|
|
30
|
+
return nodes.includes(panel);
|
|
31
|
+
return nodes.some((node) => node instanceof HTMLElement &&
|
|
32
|
+
(node.matches(BINDING_SELECTOR) ||
|
|
33
|
+
Boolean(node.querySelector(BINDING_SELECTOR))));
|
|
34
|
+
});
|
|
35
|
+
// The immediate parent's other children belong to page content.
|
|
36
|
+
if (!bindingChanged && !records.some((record) => record.type === 'attributes'))
|
|
37
|
+
return;
|
|
38
|
+
this.check(panel, captureCurrentIdentity(panel), bindingChanged);
|
|
39
|
+
});
|
|
40
|
+
this.observer = observer;
|
|
41
|
+
observer.observe(panel, {
|
|
42
|
+
subtree: true,
|
|
43
|
+
childList: true,
|
|
44
|
+
attributes: true,
|
|
45
|
+
attributeFilter: [
|
|
46
|
+
CURRENT_IDS_ATTRIBUTE,
|
|
47
|
+
COMPOSITE_BAR_ITEM_ID_ATTRIBUTE,
|
|
48
|
+
'data-gn-aside-part',
|
|
49
|
+
'id',
|
|
50
|
+
],
|
|
51
|
+
});
|
|
52
|
+
if (parent)
|
|
53
|
+
observer.observe(parent, { childList: true });
|
|
54
|
+
}
|
|
55
|
+
// The coordinator can reconcile a synchronous React commit before mutation
|
|
56
|
+
// delivery, reusing the same identities for its subsequent moving snapshot.
|
|
57
|
+
check(panel, identities, bindingChanged = false) {
|
|
58
|
+
if (this.panel !== panel)
|
|
59
|
+
return;
|
|
60
|
+
const changedSurfaces = new Set();
|
|
61
|
+
this.identities.forEach((previous, row) => {
|
|
62
|
+
const current = identities.get(row);
|
|
63
|
+
const ids = new Set(current === null || current === undefined ? undefined : current.currentIds);
|
|
64
|
+
if (!current ||
|
|
65
|
+
current.key !== previous.key ||
|
|
66
|
+
current.surface !== previous.surface ||
|
|
67
|
+
ids.size !== new Set(previous.currentIds).size ||
|
|
68
|
+
previous.currentIds.some((id) => !ids.has(id))) {
|
|
69
|
+
changedSurfaces.add(previous.surface);
|
|
70
|
+
if (current)
|
|
71
|
+
changedSurfaces.add(current.surface);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
identities.forEach((current, row) => {
|
|
75
|
+
if (!this.identities.has(row))
|
|
76
|
+
changedSurfaces.add(current.surface);
|
|
77
|
+
});
|
|
78
|
+
this.identities = identities;
|
|
79
|
+
if (changedSurfaces.size || bindingChanged)
|
|
80
|
+
this.onChange(identities, changedSurfaces);
|
|
81
|
+
}
|
|
82
|
+
disconnect() {
|
|
83
|
+
var _a;
|
|
84
|
+
this.panel = undefined;
|
|
85
|
+
this.identities = new Map();
|
|
86
|
+
(_a = this.observer) === null || _a === undefined ? undefined : _a.disconnect();
|
|
87
|
+
this.observer = undefined;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export { CurrentPresentationObserver };
|
|
92
|
+
//# sourceMappingURL=CurrentPresentationObserver.js.map
|
package/build/esm/components/AsideHeader/components/PageLayout/CurrentPresentationObserver.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CurrentPresentationObserver.js","sources":["../../../../../../../src/components/AsideHeader/components/PageLayout/CurrentPresentationObserver.ts"],"sourcesContent":["import {COMPOSITE_BAR_ITEM_ID_ATTRIBUTE} from '../CompositeBar/constants';\n\nimport {CURRENT_IDS_ATTRIBUTE, CURRENT_ROW_SELECTOR, SURFACE_SELECTOR} from './currentIndicatorDom';\nimport {type CurrentIdentitySnapshot, captureCurrentIdentity} from './currentIndicatorModel';\n\ntype IdentityChange = (\n identities: CurrentIdentitySnapshot,\n changedSurfaces: Set<HTMLElement>,\n) => void;\n\nconst BINDING_SELECTOR = `${CURRENT_ROW_SELECTOR}, ${SURFACE_SELECTOR}, [data-gn-aside-current-indicator-layer], [data-gn-aside-current-indicator]`;\n\n/** Subscription and metadata diff only; the coordinator owns observation lifetime. */\nexport class CurrentPresentationObserver {\n private observer?: MutationObserver;\n private panel?: HTMLElement;\n private onChange: IdentityChange;\n private identities: CurrentIdentitySnapshot = new Map();\n\n constructor(onChange: IdentityChange) {\n this.onChange = onChange;\n }\n\n observe(panel: HTMLElement, initialIdentities: CurrentIdentitySnapshot): void {\n if (this.panel === panel) return;\n this.disconnect();\n this.panel = panel;\n this.identities = initialIdentities;\n const parent = panel.parentElement;\n const observer = new MutationObserver((records) => {\n if (this.observer !== observer) return;\n const bindingChanged = records.some((record) => {\n if (record.type !== 'childList') return false;\n const nodes = [\n ...Array.from(record.addedNodes),\n ...Array.from(record.removedNodes),\n ];\n if (record.target === parent) return nodes.includes(panel);\n return nodes.some(\n (node) =>\n node instanceof HTMLElement &&\n (node.matches(BINDING_SELECTOR) ||\n Boolean(node.querySelector(BINDING_SELECTOR))),\n );\n });\n // The immediate parent's other children belong to page content.\n if (!bindingChanged && !records.some((record) => record.type === 'attributes')) return;\n this.check(panel, captureCurrentIdentity(panel), bindingChanged);\n });\n this.observer = observer;\n observer.observe(panel, {\n subtree: true,\n childList: true,\n attributes: true,\n attributeFilter: [\n CURRENT_IDS_ATTRIBUTE,\n COMPOSITE_BAR_ITEM_ID_ATTRIBUTE,\n 'data-gn-aside-part',\n 'id',\n ],\n });\n if (parent) observer.observe(parent, {childList: true});\n }\n\n // The coordinator can reconcile a synchronous React commit before mutation\n // delivery, reusing the same identities for its subsequent moving snapshot.\n check(panel: HTMLElement, identities: CurrentIdentitySnapshot, bindingChanged = false): void {\n if (this.panel !== panel) return;\n const changedSurfaces = new Set<HTMLElement>();\n this.identities.forEach((previous, row) => {\n const current = identities.get(row);\n const ids = new Set(current?.currentIds);\n if (\n !current ||\n current.key !== previous.key ||\n current.surface !== previous.surface ||\n ids.size !== new Set(previous.currentIds).size ||\n previous.currentIds.some((id) => !ids.has(id))\n ) {\n changedSurfaces.add(previous.surface);\n if (current) changedSurfaces.add(current.surface);\n }\n });\n identities.forEach((current, row) => {\n if (!this.identities.has(row)) changedSurfaces.add(current.surface);\n });\n this.identities = identities;\n if (changedSurfaces.size || bindingChanged) this.onChange(identities, changedSurfaces);\n }\n\n disconnect(): void {\n this.panel = undefined;\n this.identities = new Map();\n this.observer?.disconnect();\n this.observer = undefined;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,10 @@
|
|
|
1
1
|
.AsideHeader-module__g-root___EuNRw{--gn-aside-top-panel-height:0px}
|
|
2
|
-
.AsideHeader-module__gn-aside-header___Z0Sa7{--gn-aside-header-min-width:
|
|
2
|
+
.AsideHeader-module__gn-aside-header___Z0Sa7{--gn-aside-header-min-width:var(--_--gn-aside-header-density-compact-width,56px);--_--item-margin-inline:var(
|
|
3
|
+
--_--gn-aside-header-density-item-margin-inline,8px
|
|
4
|
+
);--_--item-expanded-radius:var(
|
|
5
|
+
--_--gn-aside-header-density-item-expanded-radius,8px
|
|
6
|
+
);--_--item-icon-background-size:var(
|
|
7
|
+
--gn-aside-header-item-icon-background-size,var(--_--gn-aside-header-density-icon-background-size,38px)
|
|
8
|
+
);--_--background-color:var(--g-color-base-background);--_--decoration-collapsed-background-color:var(--g-color-base-warning-light);--_--decoration-expanded-background-color:var(--g-color-base-warning-light);--_--vertical-divider-line-color:var(--g-color-line-generic);--_--horizontal-divider-line-color:var(--g-color-line-generic);--_--section-divider-gap:var(--g-spacing-1);background-color:var(--g-color-base-background);height:100%;position:relative;width:100%}.AsideHeader-module__gn-aside-header__compact-transition___bBGfN{--_--gn-aside-width-transition:width 0.2s ease-in-out;--_--gn-aside-collapse-geometry-transition:inset-inline-end 0.2s ease-in-out,width 0.2s ease-in-out,border-radius 0.2s ease-in-out;--_--gn-aside-drawer-transition:left 0.2s ease-in-out,background-color var(--_--animation-duration,300ms)}.AsideHeader-module__gn-aside-header__compact-transition_disabled___ztpdX{--_--gn-aside-width-transition:none;--_--gn-aside-collapse-geometry-transition:none;--_--gn-aside-drawer-transition:background-color var(--_--animation-duration,300ms)}.AsideHeader-module__gn-aside-header__aside___AyP0y{background-color:var(--gn-aside-header-expanded-background-color,var(--gn-aside-header-background-color,var(--_--background-color)));box-sizing:border-box;display:flex;flex-direction:column;height:100vh;left:0;margin-top:var(--gn-top-alert-height,0);max-height:calc(100vh - var(--gn-top-alert-height, 0));overflow:hidden;position:sticky;top:var(--gn-top-alert-height,0);transition:var(--_--gn-aside-width-transition);width:inherit;z-index:var(--gn-aside-header-z-index,100)}.AsideHeader-module__gn-aside-header__aside___AyP0y:after{background-color:var(--gn-aside-header-divider-vertical-color,var(--_--vertical-divider-line-color));content:"";height:100%;inset-inline-end:0;position:absolute;top:0;width:1px;z-index:2}.AsideHeader-module__gn-aside-header__aside-popup-anchor___N3tgM{inset:0;position:absolute;z-index:1}.AsideHeader-module__gn-aside-header__aside-content___w5GOS{--gradient-height:334px;display:flex;flex-direction:column;height:inherit;min-height:0;overflow:hidden;padding-top:var(--gn-aside-header-padding-top);position:relative;user-select:none;width:var(--gn-aside-header-size);z-index:2}.AsideHeader-module__gn-aside-header__aside-content___w5GOS>.AsideHeader-module__gn-aside-header-logo___6MdXx{margin:8px 0}.AsideHeader-module__gn-aside-header__aside-content_with-decoration___UsCye{background:linear-gradient(180deg,var(--gn-aside-header-decoration-expanded-background-color,var(--_--decoration-expanded-background-color)) calc(var(--gradient-height)*.33),transparent calc(var(--gradient-height)*.88))}.AsideHeader-module__gn-aside-header__aside-custom-background___-bqdE{bottom:0;display:flex;position:absolute;top:0;transition:var(--_--gn-aside-width-transition);width:var(--gn-aside-header-size);z-index:-1}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__aside___AyP0y{background-color:var(--gn-aside-header-collapsed-background-color,var(--gn-aside-header-background-color,var(--_--background-color)))}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__aside-content___w5GOS{background:transparent}.AsideHeader-module__gn-aside-header__aside___AyP0y[data-gn-aside-animating] [data-gn-aside-divider]{flex-shrink:0}.AsideHeader-module__gn-aside-header__aside___AyP0y[data-gn-aside-animating] .AsideHeader-module__gn-aside-header__aside-content___w5GOS{overflow:visible}.AsideHeader-module__gn-aside-header__aside___AyP0y[data-gn-aside-animating] .g-list__item, .AsideHeader-module__gn-aside-header__aside___AyP0y[data-gn-aside-animating] .g-list__item-content{min-width:0;overflow:visible}.AsideHeader-module__gn-aside-header__aside___AyP0y[data-gn-aside-animating] [data-gn-aside-scrollport]{width:var(--_--gn-aside-header-expanded-width)}.AsideHeader-module__gn-aside-header__aside___AyP0y[data-gn-aside-animating] .AsideHeader-module__gn-aside-header__unified-menu-content___cpugB{width:var(--gn-aside-header-size)}.AsideHeader-module__gn-aside-header__header___m5aIU{--gn-aside-header-header-divider-height:29px;box-sizing:border-box;flex:none;padding-bottom:22px;padding-top:8px;position:relative;width:100%;z-index:1}.AsideHeader-module__gn-aside-header__header___m5aIU .AsideHeader-module__gn-aside-header__header-divider___lIG-e{bottom:0;color:var(--gn-aside-header-decoration-collapsed-background-color,var(--_--decoration-collapsed-background-color));display:none;left:0;position:absolute;z-index:-2}.AsideHeader-module__gn-aside-header__header_with-decoration___3dTJO:before{background-color:var(--gn-aside-header-decoration-collapsed-background-color,var(--_--decoration-collapsed-background-color));content:"";display:none;height:calc(100% - var(--gn-aside-header-header-divider-height));left:0;position:absolute;top:0;width:100%;z-index:-2}.AsideHeader-module__gn-aside-header__header___m5aIU .AsideHeader-module__gn-aside-header__header-bottom-divider___x9Bzo{background-color:var(--gn-aside-header-divider-horizontal-color,var(--_--horizontal-divider-line-color));bottom:12px;content:"";height:1px;left:0;position:absolute;width:100%;z-index:-2}.AsideHeader-module__gn-aside-header__aside-content_with-quick-access___Yucty:not(.AsideHeader-module__gn-aside-header__aside-content_hide-section-dividers___9BZdB) .AsideHeader-module__gn-aside-header__header___m5aIU{padding-bottom:var(--_--section-divider-gap)}.AsideHeader-module__gn-aside-header__aside-content_with-quick-access___Yucty:not(.AsideHeader-module__gn-aside-header__aside-content_hide-section-dividers___9BZdB) .AsideHeader-module__gn-aside-header__header___m5aIU .AsideHeader-module__gn-aside-header__header-bottom-divider___x9Bzo{bottom:0}.AsideHeader-module__gn-aside-header__aside-content_with-quick-access___Yucty:not(.AsideHeader-module__gn-aside-header__aside-content_with-quick-access-items___oU0Yz):not(.AsideHeader-module__gn-aside-header__aside-content_hide-section-dividers___9BZdB) .AsideHeader-module__gn-aside-header__header___m5aIU{margin-bottom:var(--_--section-divider-gap)}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__header___m5aIU:before, .AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__header_with-decoration___3dTJO .AsideHeader-module__gn-aside-header__header-divider___lIG-e{display:block}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__header_with-decoration___3dTJO .AsideHeader-module__gn-aside-header__header-bottom-divider___x9Bzo{display:none}.AsideHeader-module__gn-aside-header__logo-button___5u2iH .AsideHeader-module__gn-aside-header__logo-icon-place___3Oo9i{height:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size));width:var(--gn-aside-header-min-width)}.AsideHeader-module__gn-aside-header__logo___QvKKT{--_--gn-logo-height:var(
|
|
9
|
+
--_--gn-aside-header-density-item-height,40px
|
|
10
|
+
)}.AsideHeader-module__gn-aside-header__quick-access___ykXmy{box-sizing:border-box;flex:none;margin-bottom:var(--_--section-divider-gap);padding-block:var(--_--section-divider-gap);position:relative;width:100%}.AsideHeader-module__gn-aside-header__quick-access-divider___AzkVl{background-color:var(--gn-aside-header-divider-horizontal-color,var(--_--horizontal-divider-line-color));bottom:0;content:"";height:1px;left:var(--_--item-margin-inline);position:absolute;right:var(--_--item-margin-inline);width:auto;z-index:1}.AsideHeader-module__gn-aside-header__quick-access-title___im4TL{color:var(--g-color-text-secondary);font-family:var(--g-text-caption-font-family);font-size:var(--g-text-caption-2-font-size);font-weight:var(--g-text-caption-font-weight);line-height:var(--g-text-caption-2-line-height);margin-inline:var(--_--item-margin-inline);padding-inline:calc(var(--_--gn-aside-header-density-item-height, 40px) + var(--_--gn-aside-header-density-item-title-gap, var(--g-spacing-2))) var(--_--gn-aside-header-density-item-title-gap-end,var(--g-spacing-4));padding-bottom:var(--g-spacing-1);user-select:none}.AsideHeader-module__gn-aside-header__unified-menu-scroll___EHnK-{flex:1 1 auto;min-height:0}.AsideHeader-module__gn-aside-header__unified-menu-content___cpugB{display:flex;flex-direction:column;min-height:100%;position:relative;z-index:0}.AsideHeader-module__gn-aside-header___Z0Sa7 [data-gn-aside-current-container]>:not([data-gn-aside-current-indicator-layer]):not([data-gn-aside-divider]){position:relative;z-index:1}.AsideHeader-module__gn-aside-header__menu-items___SOI2-{flex-grow:1}.AsideHeader-module__gn-aside-header__menu-item___q2y31:not(:has([data-type=action])){margin-inline:var(--_--item-margin-inline)}.AsideHeader-module__gn-aside-header__menu-item___q2y31:has([data-type=regular]), .AsideHeader-module__gn-aside-header__menu-item_type_regular___XYYbc, .AsideHeader-module__gn-aside-header__root-menu-item___eNfkk[class]:hover{border-radius:var(--gn-aside-header-item-expanded-radius,var(--_--item-expanded-radius))}.AsideHeader-module__gn-aside-header__collapse-fallback___R6O7X{flex-shrink:0;height:var(--_--gn-aside-header-density-footer-item-height,32px)}.AsideHeader-module__gn-aside-header__footer___vmoTl{display:flex;flex-direction:column;flex-shrink:0;margin:var(--g-spacing-2) var(--_--item-margin-inline);position:relative}.AsideHeader-module__gn-aside-header__footer___vmoTl .AsideHeader-module__gn-aside-header__footer-divider___9Jewp{background-color:var(--gn-aside-header-divider-horizontal-color,var(--_--horizontal-divider-line-color));content:"";height:1px;left:calc(var(--_--item-margin-inline)*-1);opacity:0;pointer-events:none;position:absolute;right:calc(var(--_--item-margin-inline)*-1);top:calc(var(--g-spacing-2)*-1);transition:opacity .3s ease-in-out}.AsideHeader-module__gn-aside-header__footer_with-divider___66E1w .AsideHeader-module__gn-aside-header__footer-divider___9Jewp{opacity:1}.AsideHeader-module__gn-aside-header__aside-content_hide-section-dividers___9BZdB .AsideHeader-module__gn-aside-header__header___m5aIU{margin-bottom:0;padding-bottom:0}.AsideHeader-module__gn-aside-header__aside-content_hide-section-dividers___9BZdB .AsideHeader-module__gn-aside-header__header___m5aIU:before{height:100%}.AsideHeader-module__gn-aside-header__aside-content_hide-section-dividers___9BZdB .AsideHeader-module__gn-aside-header__footer-divider___9Jewp, .AsideHeader-module__gn-aside-header__aside-content_hide-section-dividers___9BZdB .AsideHeader-module__gn-aside-header__header___m5aIU .AsideHeader-module__gn-aside-header__header-bottom-divider___x9Bzo, .AsideHeader-module__gn-aside-header__aside-content_hide-section-dividers___9BZdB .AsideHeader-module__gn-aside-header__header___m5aIU .AsideHeader-module__gn-aside-header__header-divider___lIG-e{display:none}.AsideHeader-module__gn-aside-header__aside-content_hide-section-dividers___9BZdB .AsideHeader-module__gn-aside-header__footer___vmoTl{margin-top:0}.AsideHeader-module__gn-aside-header__panels___-fdu4{z-index:var(--gn-aside-header-panel-z-index,98)}.AsideHeader-module__gn-aside-header__panels___-fdu4.g-drawer[data-floating-ui-status]{transition:var(--_--gn-aside-drawer-transition)}.AsideHeader-module__gn-aside-header__panel___HywH6, .AsideHeader-module__gn-aside-header__panel___HywH6.g-drawer__item{bottom:0;height:auto;top:0}.AsideHeader-module__gn-aside-header__pane-container___y-v2e{display:flex;flex-direction:row;outline:none;overflow:visible;user-select:text}.AsideHeader-module__gn-aside-header__top-alert___hY12r{background:var(--g-color-base-background);position:fixed;top:0;width:100%;z-index:var(--gn-aside-header-pane-top-z-index,98)}.AsideHeader-module__gn-aside-header__content___4-mBl{margin-top:var(--gn-top-alert-height,0);transition:var(--_--gn-aside-width-transition);width:calc(100% - var(--gn-aside-header-size));z-index:var(--gn-aside-header-content-z-index,95)}@media (prefers-reduced-motion:reduce){.AsideHeader-module__gn-aside-header__aside-custom-background___-bqdE, .AsideHeader-module__gn-aside-header__aside___AyP0y, .AsideHeader-module__gn-aside-header__content___4-mBl, .AsideHeader-module__gn-aside-header__panels___-fdu4.g-drawer[data-floating-ui-status]{transition:none}}.AsideHeader-module__gn-aside-header__all-pages-panel___O94IU{width:fit-content!important}
|
|
@@ -3,7 +3,7 @@ import { ContentProps } from '../../../Content';
|
|
|
3
3
|
import { LayoutProps } from '../../types';
|
|
4
4
|
export interface PageLayoutProps extends PropsWithChildren<LayoutProps> {
|
|
5
5
|
}
|
|
6
|
-
declare const PageLayout: (({ compact, className, children, topAlert }: PageLayoutProps) => React.JSX.Element) & {
|
|
6
|
+
declare const PageLayout: (({ compact, compactTransition, className, children, topAlert, menuDensity, }: PageLayoutProps) => React.JSX.Element) & {
|
|
7
7
|
Content: React.FC<React.PropsWithChildren<Pick<ContentProps, "renderContent">>>;
|
|
8
8
|
};
|
|
9
9
|
export { PageLayout };
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import './PageLayout.css';
|
|
2
2
|
import React__default, { useMemo, Suspense } from 'react';
|
|
3
3
|
import { Content } from '../../../Content/Content.js';
|
|
4
|
-
import { ASIDE_HEADER_COMPACT_WIDTH, ASIDE_HEADER_EXPANDED_WIDTH } from '../../../constants.js';
|
|
5
4
|
import { AsideHeaderContextProvider, useAsideHeaderContext } from '../../AsideHeaderContext.js';
|
|
6
|
-
import {
|
|
5
|
+
import { getAsideHeaderDensityCssProperties, getAsideHeaderDensityConfig } from '../../density.js';
|
|
6
|
+
import { b, getCompactTransitionClassName } from '../../utils.js';
|
|
7
|
+
import { AsideLayoutTransition } from './AsideLayoutTransition.js';
|
|
7
8
|
|
|
8
9
|
const TopAlert = React__default.lazy(() => import('../../../TopAlert/index.js').then((module) => ({ default: module.TopAlert })));
|
|
9
10
|
// Constants for TopAlert height calculation (in pixels)
|
|
@@ -18,9 +19,12 @@ function calcEstimatedTopAlertHeight(topAlert) {
|
|
|
18
19
|
(topAlert.title ? TITLE_HEIGHT_BONUS : 0) -
|
|
19
20
|
(topAlert.dense ? DENSE_HEIGHT_REDUCTION : 0));
|
|
20
21
|
}
|
|
21
|
-
const Layout = ({ compact, className, children, topAlert }) => {
|
|
22
|
-
const
|
|
23
|
-
const
|
|
22
|
+
const Layout = ({ compact, compactTransition = true, className, children, topAlert, menuDensity = 'default', }) => {
|
|
23
|
+
const densityConfig = getAsideHeaderDensityConfig(menuDensity);
|
|
24
|
+
const densityCssProperties = getAsideHeaderDensityCssProperties(menuDensity);
|
|
25
|
+
const isCompact = Boolean(compact);
|
|
26
|
+
const size = isCompact ? densityConfig.compactWidth : densityConfig.expandedWidth;
|
|
27
|
+
const asideHeaderContextValue = useMemo(() => ({ size, compact: isCompact, compactTransition, menuDensity }), [isCompact, compactTransition, size, menuDensity]);
|
|
24
28
|
const estimatedTopAlertHeight = calcEstimatedTopAlertHeight(topAlert);
|
|
25
29
|
// Reserve margin immediately on server render through inline variable on container.
|
|
26
30
|
// After TopAlert mount, the exact height will be set by hook.
|
|
@@ -38,7 +42,12 @@ const Layout = ({ compact, className, children, topAlert }) => {
|
|
|
38
42
|
};
|
|
39
43
|
const preloadHeightValue = getPreloadHeightValue();
|
|
40
44
|
return (React__default.createElement(AsideHeaderContextProvider, { value: asideHeaderContextValue },
|
|
41
|
-
React__default.createElement(
|
|
45
|
+
React__default.createElement(AsideLayoutTransition, { compact: isCompact, compactTransition: compactTransition, className: b({ compact: isCompact }, [
|
|
46
|
+
getCompactTransitionClassName(compactTransition),
|
|
47
|
+
className !== null && className !== undefined ? className : '',
|
|
48
|
+
]), style: Object.assign(Object.assign(Object.assign({}, densityCssProperties), { '--gn-aside-header-size': `${size}px` }), {
|
|
49
|
+
'--_--gn-aside-header-expanded-width': `${densityConfig.expandedWidth}px`,
|
|
50
|
+
}) },
|
|
42
51
|
typeof preloadHeightValue === 'number' ? (React__default.createElement("style", { dangerouslySetInnerHTML: {
|
|
43
52
|
__html: `.g-root{--gn-top-alert-height:${preloadHeightValue}px;}`,
|
|
44
53
|
} })) : null,
|