@oxy.so/bloom 4.4.0 → 4.6.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/README.md +1 -1
- package/docs/adoption-matrix.mdx +12 -12
- package/docs/code.mdx +12 -0
- package/docs/context-menu.mdx +2 -0
- package/docs/dropdown-menu.mdx +21 -0
- package/docs/icons.mdx +2 -2
- package/docs/layout.mdx +36 -0
- package/docs/menubar.mdx +6 -2
- package/docs/page-header.mdx +16 -0
- package/docs/popover.mdx +4 -2
- package/docs/segmented-control.mdx +12 -0
- package/docs/select.mdx +19 -0
- package/docs/sidebar.mdx +6 -0
- package/docs/tabs.mdx +12 -0
- package/lib/commonjs/agent-chat/index.web.js.map +1 -1
- package/lib/commonjs/ai-chat/index.web.js.map +1 -1
- package/lib/commonjs/alert-dialog/index.web.js +10 -1
- package/lib/commonjs/alert-dialog/index.web.js.map +1 -1
- package/lib/commonjs/avatar-group/index.web.js.map +1 -1
- package/lib/commonjs/bottom-sheet/index.web.js.map +1 -1
- package/lib/commonjs/code/index.js +13 -0
- package/lib/commonjs/code/index.js.map +1 -1
- package/lib/commonjs/command/index.web.js +5 -0
- package/lib/commonjs/command/index.web.js.map +1 -1
- package/lib/commonjs/composer-loader/ComposerLoader.web.js +9 -0
- package/lib/commonjs/composer-loader/ComposerLoader.web.js.map +1 -1
- package/lib/commonjs/composer-loader/index.web.js.map +1 -1
- package/lib/commonjs/composer-panel/index.web.js.map +1 -1
- package/lib/commonjs/connection-dots/index.web.js.map +1 -1
- package/lib/commonjs/connection-status/index.web.js.map +1 -1
- package/lib/commonjs/content-panel/index.web.js.map +1 -1
- package/lib/commonjs/context-menu/ContextMenu.web.js +22 -4
- package/lib/commonjs/context-menu/ContextMenu.web.js.map +1 -1
- package/lib/commonjs/context-menu/context.js.map +1 -1
- package/lib/commonjs/context-menu/index.web.js.map +1 -1
- package/lib/commonjs/dialog/Dialog.web.js +14 -0
- package/lib/commonjs/dialog/Dialog.web.js.map +1 -1
- package/lib/commonjs/dialog/index.web.js.map +1 -1
- package/lib/commonjs/dropdown-menu/DropdownMenu.web.js +22 -2
- package/lib/commonjs/dropdown-menu/DropdownMenu.web.js.map +1 -1
- package/lib/commonjs/dropdown-menu/index.web.js.map +1 -1
- package/lib/commonjs/floating/FloatingPanel.js +42 -33
- package/lib/commonjs/floating/FloatingPanel.js.map +1 -1
- package/lib/commonjs/floating/escape-stack.js +90 -0
- package/lib/commonjs/floating/escape-stack.js.map +1 -0
- package/lib/commonjs/floating/menu-keyboard.js +238 -0
- package/lib/commonjs/floating/menu-keyboard.js.map +1 -0
- package/lib/commonjs/floating/menu-sub-flyout.js +28 -16
- package/lib/commonjs/floating/menu-sub-flyout.js.map +1 -1
- package/lib/commonjs/fonts/index.web.js.map +1 -1
- package/lib/commonjs/frosted-icon-button/FrostedIconButton.web.js +10 -0
- package/lib/commonjs/frosted-icon-button/FrostedIconButton.web.js.map +1 -1
- package/lib/commonjs/frosted-icon-button/index.web.js.map +1 -1
- package/lib/commonjs/hooks/roving-focus.js +192 -0
- package/lib/commonjs/hooks/roving-focus.js.map +1 -0
- package/lib/commonjs/hover-card/index.web.js.map +1 -1
- package/lib/commonjs/icons/remix/RiBookReadLine.js +12 -0
- package/lib/commonjs/icons/remix/RiBookReadLine.js.map +1 -0
- package/lib/commonjs/icons/remix/RiBugLine.js +12 -0
- package/lib/commonjs/icons/remix/RiBugLine.js.map +1 -0
- package/lib/commonjs/icons/remix/RiChat1Line.js +12 -0
- package/lib/commonjs/icons/remix/RiChat1Line.js.map +1 -0
- package/lib/commonjs/icons/remix/RiCloudLine.js +12 -0
- package/lib/commonjs/icons/remix/RiCloudLine.js.map +1 -0
- package/lib/commonjs/icons/remix/RiCodeLine.js +12 -0
- package/lib/commonjs/icons/remix/RiCodeLine.js.map +1 -0
- package/lib/commonjs/icons/remix/RiCpuLine.js +12 -0
- package/lib/commonjs/icons/remix/RiCpuLine.js.map +1 -0
- package/lib/commonjs/icons/remix/RiFloodLine.js +12 -0
- package/lib/commonjs/icons/remix/RiFloodLine.js.map +1 -0
- package/lib/commonjs/icons/remix/RiLockUnlockLine.js +12 -0
- package/lib/commonjs/icons/remix/RiLockUnlockLine.js.map +1 -0
- package/lib/commonjs/icons/remix/RiMoneyDollarCircleLine.js +12 -0
- package/lib/commonjs/icons/remix/RiMoneyDollarCircleLine.js.map +1 -0
- package/lib/commonjs/icons/remix/RiPlayCircleLine.js +12 -0
- package/lib/commonjs/icons/remix/RiPlayCircleLine.js.map +1 -0
- package/lib/commonjs/icons/remix/RiRocket2Line.js +12 -0
- package/lib/commonjs/icons/remix/RiRocket2Line.js.map +1 -0
- package/lib/commonjs/icons/remix/RiServerLine.js +12 -0
- package/lib/commonjs/icons/remix/RiServerLine.js.map +1 -0
- package/lib/commonjs/icons/remix/RiShareBoxLine.js +12 -0
- package/lib/commonjs/icons/remix/RiShareBoxLine.js.map +1 -0
- package/lib/commonjs/icons/remix/RiTv2Line.js +12 -0
- package/lib/commonjs/icons/remix/RiTv2Line.js.map +1 -0
- package/lib/commonjs/icons/remix/index.js +98 -0
- package/lib/commonjs/icons/remix/index.js.map +1 -1
- package/lib/commonjs/index.js +21 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/index.web.js +21 -0
- package/lib/commonjs/index.web.js.map +1 -1
- package/lib/commonjs/layout/StickySection.js +106 -0
- package/lib/commonjs/layout/StickySection.js.map +1 -0
- package/lib/commonjs/layout/header-dock.js +61 -0
- package/lib/commonjs/layout/header-dock.js.map +1 -0
- package/lib/commonjs/layout/index.js +20 -0
- package/lib/commonjs/layout/index.js.map +1 -1
- package/lib/commonjs/list/index.web.js.map +1 -1
- package/lib/commonjs/loading/Loading.js +21 -157
- package/lib/commonjs/loading/Loading.js.map +1 -1
- package/lib/commonjs/loading/Loading.web.js +23 -157
- package/lib/commonjs/loading/Loading.web.js.map +1 -1
- package/lib/commonjs/loading/LoadingBase.js +202 -0
- package/lib/commonjs/loading/LoadingBase.js.map +1 -0
- package/lib/commonjs/loading/index.web.js.map +1 -1
- package/lib/commonjs/media-flight/index.web.js.map +1 -1
- package/lib/commonjs/menubar/Menubar.js +31 -123
- package/lib/commonjs/menubar/Menubar.js.map +1 -1
- package/lib/commonjs/menubar/Menubar.web.js +33 -114
- package/lib/commonjs/menubar/Menubar.web.js.map +1 -1
- package/lib/commonjs/menubar/MenubarBase.js +154 -0
- package/lib/commonjs/menubar/MenubarBase.js.map +1 -0
- package/lib/commonjs/menubar/index.web.js.map +1 -1
- package/lib/commonjs/page-header/PageHeader.js +38 -14
- package/lib/commonjs/page-header/PageHeader.js.map +1 -1
- package/lib/commonjs/popover/index.web.js.map +1 -1
- package/lib/commonjs/popover/parts.js +69 -11
- package/lib/commonjs/popover/parts.js.map +1 -1
- package/lib/commonjs/popover/surface.js +39 -13
- package/lib/commonjs/popover/surface.js.map +1 -1
- package/lib/commonjs/portal/index.web.js.map +1 -1
- package/lib/commonjs/progressive-blur/index.web.js.map +1 -1
- package/lib/commonjs/scroll/index.web.js.map +1 -1
- package/lib/commonjs/segmented-control/SegmentedControl.js +36 -1
- package/lib/commonjs/segmented-control/SegmentedControl.js.map +1 -1
- package/lib/commonjs/select/Select.js +6 -81
- package/lib/commonjs/select/Select.js.map +1 -1
- package/lib/commonjs/select/Select.web.js +147 -85
- package/lib/commonjs/select/Select.web.js.map +1 -1
- package/lib/commonjs/select/index.js +4 -4
- package/lib/commonjs/select/index.js.map +1 -1
- package/lib/commonjs/select/index.web.js +4 -4
- package/lib/commonjs/select/index.web.js.map +1 -1
- package/lib/commonjs/select/shared.js +110 -5
- package/lib/commonjs/select/shared.js.map +1 -1
- package/lib/commonjs/sidebar/Sidebar.js +121 -108
- package/lib/commonjs/sidebar/Sidebar.js.map +1 -1
- package/lib/commonjs/sidebar/SidebarRail.js +70 -48
- package/lib/commonjs/sidebar/SidebarRail.js.map +1 -1
- package/lib/commonjs/sidebar/SidebarTeamMenu.js +1 -1
- package/lib/commonjs/sidebar/SidebarTeamMenu.js.map +1 -1
- package/lib/commonjs/sidebar/SidebarUserMenu.js +1 -1
- package/lib/commonjs/sidebar/SidebarUserMenu.js.map +1 -1
- package/lib/commonjs/sidebar/parts.js +9 -9
- package/lib/commonjs/sidebar/parts.js.map +1 -1
- package/lib/commonjs/styles/web-view-style.js +6 -0
- package/lib/commonjs/styles/web-view-style.js.map +1 -1
- package/lib/commonjs/surfaces/SurfaceHost.js +6 -0
- package/lib/commonjs/surfaces/SurfaceHost.js.map +1 -1
- package/lib/commonjs/surfaces/index.web.js +14 -4
- package/lib/commonjs/surfaces/index.web.js.map +1 -1
- package/lib/commonjs/tab-bar/index.web.js +13 -10
- package/lib/commonjs/tab-bar/index.web.js.map +1 -1
- package/lib/commonjs/tabs/Tabs.js +49 -2
- package/lib/commonjs/tabs/Tabs.js.map +1 -1
- package/lib/commonjs/theme/color-scope/index.web.js.map +1 -1
- package/lib/commonjs/theme/seed-scope/index.web.js.map +1 -1
- package/lib/commonjs/tooltip/index.web.js.map +1 -1
- package/lib/module/agent-chat/index.web.js +5 -3
- package/lib/module/agent-chat/index.web.js.map +1 -1
- package/lib/module/ai-chat/index.web.js +5 -2
- package/lib/module/ai-chat/index.web.js.map +1 -1
- package/lib/module/alert-dialog/index.web.js +10 -1
- package/lib/module/alert-dialog/index.web.js.map +1 -1
- package/lib/module/avatar-group/index.web.js +5 -0
- package/lib/module/avatar-group/index.web.js.map +1 -1
- package/lib/module/bottom-sheet/index.web.js +5 -0
- package/lib/module/bottom-sheet/index.web.js.map +1 -1
- package/lib/module/code/index.js +1 -0
- package/lib/module/code/index.js.map +1 -1
- package/lib/module/command/index.web.js +5 -0
- package/lib/module/command/index.web.js.map +1 -1
- package/lib/module/composer-loader/ComposerLoader.web.js +8 -0
- package/lib/module/composer-loader/ComposerLoader.web.js.map +1 -1
- package/lib/module/composer-loader/index.web.js +5 -2
- package/lib/module/composer-loader/index.web.js.map +1 -1
- package/lib/module/composer-panel/index.web.js +5 -3
- package/lib/module/composer-panel/index.web.js.map +1 -1
- package/lib/module/connection-dots/index.web.js +5 -0
- package/lib/module/connection-dots/index.web.js.map +1 -1
- package/lib/module/connection-status/index.web.js +5 -0
- package/lib/module/connection-status/index.web.js.map +1 -1
- package/lib/module/content-panel/index.web.js +5 -0
- package/lib/module/content-panel/index.web.js.map +1 -1
- package/lib/module/context-menu/ContextMenu.web.js +22 -4
- package/lib/module/context-menu/ContextMenu.web.js.map +1 -1
- package/lib/module/context-menu/context.js.map +1 -1
- package/lib/module/context-menu/index.web.js +5 -0
- package/lib/module/context-menu/index.web.js.map +1 -1
- package/lib/module/dialog/Dialog.web.js +13 -0
- package/lib/module/dialog/Dialog.web.js.map +1 -1
- package/lib/module/dialog/index.web.js +7 -11
- package/lib/module/dialog/index.web.js.map +1 -1
- package/lib/module/dropdown-menu/DropdownMenu.web.js +23 -3
- package/lib/module/dropdown-menu/DropdownMenu.web.js.map +1 -1
- package/lib/module/dropdown-menu/index.web.js +5 -0
- package/lib/module/dropdown-menu/index.web.js.map +1 -1
- package/lib/module/floating/FloatingPanel.js +42 -33
- package/lib/module/floating/FloatingPanel.js.map +1 -1
- package/lib/module/floating/escape-stack.js +85 -0
- package/lib/module/floating/escape-stack.js.map +1 -0
- package/lib/module/floating/menu-keyboard.js +227 -0
- package/lib/module/floating/menu-keyboard.js.map +1 -0
- package/lib/module/floating/menu-sub-flyout.js +28 -16
- package/lib/module/floating/menu-sub-flyout.js.map +1 -1
- package/lib/module/fonts/index.web.js +5 -20
- package/lib/module/fonts/index.web.js.map +1 -1
- package/lib/module/frosted-icon-button/FrostedIconButton.web.js +9 -0
- package/lib/module/frosted-icon-button/FrostedIconButton.web.js.map +1 -1
- package/lib/module/frosted-icon-button/index.web.js +5 -7
- package/lib/module/frosted-icon-button/index.web.js.map +1 -1
- package/lib/module/hooks/roving-focus.js +181 -0
- package/lib/module/hooks/roving-focus.js.map +1 -0
- package/lib/module/hover-card/index.web.js +5 -0
- package/lib/module/hover-card/index.web.js.map +1 -1
- package/lib/module/icons/remix/RiBookReadLine.js +9 -0
- package/lib/module/icons/remix/RiBookReadLine.js.map +1 -0
- package/lib/module/icons/remix/RiBugLine.js +9 -0
- package/lib/module/icons/remix/RiBugLine.js.map +1 -0
- package/lib/module/icons/remix/RiChat1Line.js +9 -0
- package/lib/module/icons/remix/RiChat1Line.js.map +1 -0
- package/lib/module/icons/remix/RiCloudLine.js +9 -0
- package/lib/module/icons/remix/RiCloudLine.js.map +1 -0
- package/lib/module/icons/remix/RiCodeLine.js +9 -0
- package/lib/module/icons/remix/RiCodeLine.js.map +1 -0
- package/lib/module/icons/remix/RiCpuLine.js +9 -0
- package/lib/module/icons/remix/RiCpuLine.js.map +1 -0
- package/lib/module/icons/remix/RiFloodLine.js +9 -0
- package/lib/module/icons/remix/RiFloodLine.js.map +1 -0
- package/lib/module/icons/remix/RiLockUnlockLine.js +9 -0
- package/lib/module/icons/remix/RiLockUnlockLine.js.map +1 -0
- package/lib/module/icons/remix/RiMoneyDollarCircleLine.js +9 -0
- package/lib/module/icons/remix/RiMoneyDollarCircleLine.js.map +1 -0
- package/lib/module/icons/remix/RiPlayCircleLine.js +9 -0
- package/lib/module/icons/remix/RiPlayCircleLine.js.map +1 -0
- package/lib/module/icons/remix/RiRocket2Line.js +9 -0
- package/lib/module/icons/remix/RiRocket2Line.js.map +1 -0
- package/lib/module/icons/remix/RiServerLine.js +9 -0
- package/lib/module/icons/remix/RiServerLine.js.map +1 -0
- package/lib/module/icons/remix/RiShareBoxLine.js +9 -0
- package/lib/module/icons/remix/RiShareBoxLine.js.map +1 -0
- package/lib/module/icons/remix/RiTv2Line.js +9 -0
- package/lib/module/icons/remix/RiTv2Line.js.map +1 -0
- package/lib/module/icons/remix/index.js +14 -0
- package/lib/module/icons/remix/index.js.map +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.web.js +1 -1
- package/lib/module/index.web.js.map +1 -1
- package/lib/module/layout/StickySection.js +101 -0
- package/lib/module/layout/StickySection.js.map +1 -0
- package/lib/module/layout/header-dock.js +54 -0
- package/lib/module/layout/header-dock.js.map +1 -0
- package/lib/module/layout/index.js +2 -0
- package/lib/module/layout/index.js.map +1 -1
- package/lib/module/list/index.web.js +5 -0
- package/lib/module/list/index.web.js.map +1 -1
- package/lib/module/loading/Loading.js +17 -155
- package/lib/module/loading/Loading.js.map +1 -1
- package/lib/module/loading/Loading.web.js +19 -155
- package/lib/module/loading/Loading.web.js.map +1 -1
- package/lib/module/loading/LoadingBase.js +194 -0
- package/lib/module/loading/LoadingBase.js.map +1 -0
- package/lib/module/loading/index.web.js +5 -13
- package/lib/module/loading/index.web.js.map +1 -1
- package/lib/module/media-flight/index.web.js +5 -9
- package/lib/module/media-flight/index.web.js.map +1 -1
- package/lib/module/menubar/Menubar.js +15 -122
- package/lib/module/menubar/Menubar.js.map +1 -1
- package/lib/module/menubar/Menubar.web.js +18 -114
- package/lib/module/menubar/Menubar.web.js.map +1 -1
- package/lib/module/menubar/MenubarBase.js +146 -0
- package/lib/module/menubar/MenubarBase.js.map +1 -0
- package/lib/module/menubar/index.web.js +5 -0
- package/lib/module/menubar/index.web.js.map +1 -1
- package/lib/module/motion/index.web.js +5 -5
- package/lib/module/motion/index.web.js.map +1 -1
- package/lib/module/page-header/PageHeader.js +38 -14
- package/lib/module/page-header/PageHeader.js.map +1 -1
- package/lib/module/popover/index.web.js +5 -0
- package/lib/module/popover/index.web.js.map +1 -1
- package/lib/module/popover/parts.js +70 -12
- package/lib/module/popover/parts.js.map +1 -1
- package/lib/module/popover/surface.js +39 -13
- package/lib/module/popover/surface.js.map +1 -1
- package/lib/module/portal/index.web.js +6 -1
- package/lib/module/portal/index.web.js.map +1 -1
- package/lib/module/progressive-blur/index.web.js +5 -0
- package/lib/module/progressive-blur/index.web.js.map +1 -1
- package/lib/module/scroll/index.web.js +5 -0
- package/lib/module/scroll/index.web.js.map +1 -1
- package/lib/module/segmented-control/SegmentedControl.js +36 -1
- package/lib/module/segmented-control/SegmentedControl.js.map +1 -1
- package/lib/module/select/Select.js +5 -77
- package/lib/module/select/Select.js.map +1 -1
- package/lib/module/select/Select.web.js +147 -82
- package/lib/module/select/Select.web.js.map +1 -1
- package/lib/module/select/index.js +2 -2
- package/lib/module/select/index.js.map +1 -1
- package/lib/module/select/index.web.js +7 -2
- package/lib/module/select/index.web.js.map +1 -1
- package/lib/module/select/shared.js +106 -6
- package/lib/module/select/shared.js.map +1 -1
- package/lib/module/sidebar/Sidebar.js +121 -108
- package/lib/module/sidebar/Sidebar.js.map +1 -1
- package/lib/module/sidebar/SidebarRail.js +70 -48
- package/lib/module/sidebar/SidebarRail.js.map +1 -1
- package/lib/module/sidebar/SidebarTeamMenu.js +2 -2
- package/lib/module/sidebar/SidebarTeamMenu.js.map +1 -1
- package/lib/module/sidebar/SidebarUserMenu.js +2 -2
- package/lib/module/sidebar/SidebarUserMenu.js.map +1 -1
- package/lib/module/sidebar/parts.js +8 -8
- package/lib/module/sidebar/parts.js.map +1 -1
- package/lib/module/styles/web-view-style.js +5 -0
- package/lib/module/styles/web-view-style.js.map +1 -1
- package/lib/module/surfaces/SurfaceHost.js +6 -0
- package/lib/module/surfaces/SurfaceHost.js.map +1 -1
- package/lib/module/surfaces/index.web.js +14 -4
- package/lib/module/surfaces/index.web.js.map +1 -1
- package/lib/module/tab-bar/index.web.js +13 -10
- package/lib/module/tab-bar/index.web.js.map +1 -1
- package/lib/module/tabs/Tabs.js +49 -2
- package/lib/module/tabs/Tabs.js.map +1 -1
- package/lib/module/theme/color-scope/index.web.js +5 -0
- package/lib/module/theme/color-scope/index.web.js.map +1 -1
- package/lib/module/theme/seed-scope/index.web.js +5 -0
- package/lib/module/theme/seed-scope/index.web.js.map +1 -1
- package/lib/module/tooltip/index.web.js +5 -0
- package/lib/module/tooltip/index.web.js.map +1 -1
- package/lib/typescript/commonjs/agent-chat/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/ai-chat/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/alert-dialog/index.web.d.ts +5 -1
- package/lib/typescript/commonjs/alert-dialog/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/avatar-group/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/bottom-sheet/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/code/index.d.ts +2 -0
- package/lib/typescript/commonjs/code/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/command/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/composer-loader/ComposerLoader.web.d.ts +8 -0
- package/lib/typescript/commonjs/composer-loader/ComposerLoader.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/composer-loader/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/composer-panel/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/connection-dots/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/connection-status/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/content-panel/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/context-menu/ContextMenu.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/context-menu/context.d.ts +3 -0
- package/lib/typescript/commonjs/context-menu/context.d.ts.map +1 -1
- package/lib/typescript/commonjs/context-menu/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/dialog/Dialog.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/dialog/index.web.d.ts +2 -1
- package/lib/typescript/commonjs/dialog/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/dropdown-menu/DropdownMenu.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/dropdown-menu/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/floating/FloatingPanel.d.ts +1 -1
- package/lib/typescript/commonjs/floating/FloatingPanel.d.ts.map +1 -1
- package/lib/typescript/commonjs/floating/escape-stack.d.ts +55 -0
- package/lib/typescript/commonjs/floating/escape-stack.d.ts.map +1 -0
- package/lib/typescript/commonjs/floating/menu-keyboard.d.ts +57 -0
- package/lib/typescript/commonjs/floating/menu-keyboard.d.ts.map +1 -0
- package/lib/typescript/commonjs/floating/menu-sub-flyout.d.ts.map +1 -1
- package/lib/typescript/commonjs/floating/types.d.ts +11 -0
- package/lib/typescript/commonjs/floating/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/fonts/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/frosted-icon-button/FrostedIconButton.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/frosted-icon-button/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/hooks/roving-focus.d.ts +66 -0
- package/lib/typescript/commonjs/hooks/roving-focus.d.ts.map +1 -0
- package/lib/typescript/commonjs/hover-card/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/icons/remix/RiBookReadLine.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiBookReadLine.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiBugLine.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiBugLine.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiChat1Line.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiChat1Line.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiCloudLine.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiCloudLine.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiCodeLine.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiCodeLine.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiCpuLine.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiCpuLine.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiFloodLine.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiFloodLine.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiLockUnlockLine.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiLockUnlockLine.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiMoneyDollarCircleLine.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiMoneyDollarCircleLine.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiPlayCircleLine.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiPlayCircleLine.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiRocket2Line.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiRocket2Line.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiServerLine.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiServerLine.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiShareBoxLine.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiShareBoxLine.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiTv2Line.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiTv2Line.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/index.d.ts +14 -0
- package/lib/typescript/commonjs/icons/remix/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +2 -1
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/index.web.d.ts +2 -1
- package/lib/typescript/commonjs/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/layout/StickySection.d.ts +8 -0
- package/lib/typescript/commonjs/layout/StickySection.d.ts.map +1 -0
- package/lib/typescript/commonjs/layout/header-dock.d.ts +21 -0
- package/lib/typescript/commonjs/layout/header-dock.d.ts.map +1 -0
- package/lib/typescript/commonjs/layout/index.d.ts +3 -0
- package/lib/typescript/commonjs/layout/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/list/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/loading/Loading.d.ts +8 -2
- package/lib/typescript/commonjs/loading/Loading.d.ts.map +1 -1
- package/lib/typescript/commonjs/loading/Loading.web.d.ts +10 -2
- package/lib/typescript/commonjs/loading/Loading.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/loading/LoadingBase.d.ts +64 -0
- package/lib/typescript/commonjs/loading/LoadingBase.d.ts.map +1 -0
- package/lib/typescript/commonjs/loading/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/media-flight/index.web.d.ts +0 -9
- package/lib/typescript/commonjs/media-flight/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/menubar/Menubar.d.ts +14 -9
- package/lib/typescript/commonjs/menubar/Menubar.d.ts.map +1 -1
- package/lib/typescript/commonjs/menubar/Menubar.web.d.ts +8 -6
- package/lib/typescript/commonjs/menubar/Menubar.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/menubar/MenubarBase.d.ts +5 -0
- package/lib/typescript/commonjs/menubar/MenubarBase.d.ts.map +1 -0
- package/lib/typescript/commonjs/menubar/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/motion/index.web.d.ts +0 -5
- package/lib/typescript/commonjs/motion/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/page-header/PageHeader.d.ts.map +1 -1
- package/lib/typescript/commonjs/page-header/types.d.ts +10 -6
- package/lib/typescript/commonjs/page-header/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/popover/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/popover/parts.d.ts.map +1 -1
- package/lib/typescript/commonjs/popover/surface.d.ts +15 -5
- package/lib/typescript/commonjs/popover/surface.d.ts.map +1 -1
- package/lib/typescript/commonjs/portal/index.web.d.ts +1 -1
- package/lib/typescript/commonjs/portal/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/progressive-blur/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/scroll/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/segmented-control/SegmentedControl.d.ts.map +1 -1
- package/lib/typescript/commonjs/select/Select.d.ts +2 -4
- package/lib/typescript/commonjs/select/Select.d.ts.map +1 -1
- package/lib/typescript/commonjs/select/Select.web.d.ts +2 -4
- package/lib/typescript/commonjs/select/Select.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/select/index.d.ts +2 -2
- package/lib/typescript/commonjs/select/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/select/index.web.d.ts +2 -2
- package/lib/typescript/commonjs/select/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/select/shared.d.ts +52 -5
- package/lib/typescript/commonjs/select/shared.d.ts.map +1 -1
- package/lib/typescript/commonjs/select/types.d.ts +6 -0
- package/lib/typescript/commonjs/select/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/sidebar/Sidebar.d.ts.map +1 -1
- package/lib/typescript/commonjs/sidebar/SidebarRail.d.ts +1 -1
- package/lib/typescript/commonjs/sidebar/SidebarRail.d.ts.map +1 -1
- package/lib/typescript/commonjs/sidebar/parts.d.ts +8 -2
- package/lib/typescript/commonjs/sidebar/parts.d.ts.map +1 -1
- package/lib/typescript/commonjs/sidebar/types.d.ts +2 -0
- package/lib/typescript/commonjs/sidebar/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/styles/web-view-style.d.ts +2 -0
- package/lib/typescript/commonjs/styles/web-view-style.d.ts.map +1 -1
- package/lib/typescript/commonjs/surfaces/SurfaceHost.d.ts.map +1 -1
- package/lib/typescript/commonjs/surfaces/index.web.d.ts +9 -4
- package/lib/typescript/commonjs/surfaces/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/tab-bar/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/tabs/Tabs.d.ts.map +1 -1
- package/lib/typescript/commonjs/tabs/types.d.ts +6 -0
- package/lib/typescript/commonjs/tabs/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/theme/color-scope/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/theme/seed-scope/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/tooltip/index.web.d.ts.map +1 -1
- package/lib/typescript/module/agent-chat/index.web.d.ts.map +1 -1
- package/lib/typescript/module/ai-chat/index.web.d.ts.map +1 -1
- package/lib/typescript/module/alert-dialog/index.web.d.ts +5 -1
- package/lib/typescript/module/alert-dialog/index.web.d.ts.map +1 -1
- package/lib/typescript/module/avatar-group/index.web.d.ts.map +1 -1
- package/lib/typescript/module/bottom-sheet/index.web.d.ts.map +1 -1
- package/lib/typescript/module/code/index.d.ts +2 -0
- package/lib/typescript/module/code/index.d.ts.map +1 -1
- package/lib/typescript/module/command/index.web.d.ts.map +1 -1
- package/lib/typescript/module/composer-loader/ComposerLoader.web.d.ts +8 -0
- package/lib/typescript/module/composer-loader/ComposerLoader.web.d.ts.map +1 -1
- package/lib/typescript/module/composer-loader/index.web.d.ts.map +1 -1
- package/lib/typescript/module/composer-panel/index.web.d.ts.map +1 -1
- package/lib/typescript/module/connection-dots/index.web.d.ts.map +1 -1
- package/lib/typescript/module/connection-status/index.web.d.ts.map +1 -1
- package/lib/typescript/module/content-panel/index.web.d.ts.map +1 -1
- package/lib/typescript/module/context-menu/ContextMenu.web.d.ts.map +1 -1
- package/lib/typescript/module/context-menu/context.d.ts +3 -0
- package/lib/typescript/module/context-menu/context.d.ts.map +1 -1
- package/lib/typescript/module/context-menu/index.web.d.ts.map +1 -1
- package/lib/typescript/module/dialog/Dialog.web.d.ts.map +1 -1
- package/lib/typescript/module/dialog/index.web.d.ts +2 -1
- package/lib/typescript/module/dialog/index.web.d.ts.map +1 -1
- package/lib/typescript/module/dropdown-menu/DropdownMenu.web.d.ts.map +1 -1
- package/lib/typescript/module/dropdown-menu/index.web.d.ts.map +1 -1
- package/lib/typescript/module/floating/FloatingPanel.d.ts +1 -1
- package/lib/typescript/module/floating/FloatingPanel.d.ts.map +1 -1
- package/lib/typescript/module/floating/escape-stack.d.ts +55 -0
- package/lib/typescript/module/floating/escape-stack.d.ts.map +1 -0
- package/lib/typescript/module/floating/menu-keyboard.d.ts +57 -0
- package/lib/typescript/module/floating/menu-keyboard.d.ts.map +1 -0
- package/lib/typescript/module/floating/menu-sub-flyout.d.ts.map +1 -1
- package/lib/typescript/module/floating/types.d.ts +11 -0
- package/lib/typescript/module/floating/types.d.ts.map +1 -1
- package/lib/typescript/module/fonts/index.web.d.ts.map +1 -1
- package/lib/typescript/module/frosted-icon-button/FrostedIconButton.web.d.ts.map +1 -1
- package/lib/typescript/module/frosted-icon-button/index.web.d.ts.map +1 -1
- package/lib/typescript/module/hooks/roving-focus.d.ts +66 -0
- package/lib/typescript/module/hooks/roving-focus.d.ts.map +1 -0
- package/lib/typescript/module/hover-card/index.web.d.ts.map +1 -1
- package/lib/typescript/module/icons/remix/RiBookReadLine.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiBookReadLine.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiBugLine.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiBugLine.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiChat1Line.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiChat1Line.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiCloudLine.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiCloudLine.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiCodeLine.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiCodeLine.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiCpuLine.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiCpuLine.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiFloodLine.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiFloodLine.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiLockUnlockLine.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiLockUnlockLine.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiMoneyDollarCircleLine.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiMoneyDollarCircleLine.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiPlayCircleLine.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiPlayCircleLine.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiRocket2Line.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiRocket2Line.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiServerLine.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiServerLine.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiShareBoxLine.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiShareBoxLine.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiTv2Line.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiTv2Line.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/index.d.ts +14 -0
- package/lib/typescript/module/icons/remix/index.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +2 -1
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/index.web.d.ts +2 -1
- package/lib/typescript/module/index.web.d.ts.map +1 -1
- package/lib/typescript/module/layout/StickySection.d.ts +8 -0
- package/lib/typescript/module/layout/StickySection.d.ts.map +1 -0
- package/lib/typescript/module/layout/header-dock.d.ts +21 -0
- package/lib/typescript/module/layout/header-dock.d.ts.map +1 -0
- package/lib/typescript/module/layout/index.d.ts +3 -0
- package/lib/typescript/module/layout/index.d.ts.map +1 -1
- package/lib/typescript/module/list/index.web.d.ts.map +1 -1
- package/lib/typescript/module/loading/Loading.d.ts +8 -2
- package/lib/typescript/module/loading/Loading.d.ts.map +1 -1
- package/lib/typescript/module/loading/Loading.web.d.ts +10 -2
- package/lib/typescript/module/loading/Loading.web.d.ts.map +1 -1
- package/lib/typescript/module/loading/LoadingBase.d.ts +64 -0
- package/lib/typescript/module/loading/LoadingBase.d.ts.map +1 -0
- package/lib/typescript/module/loading/index.web.d.ts.map +1 -1
- package/lib/typescript/module/media-flight/index.web.d.ts +0 -9
- package/lib/typescript/module/media-flight/index.web.d.ts.map +1 -1
- package/lib/typescript/module/menubar/Menubar.d.ts +14 -9
- package/lib/typescript/module/menubar/Menubar.d.ts.map +1 -1
- package/lib/typescript/module/menubar/Menubar.web.d.ts +8 -6
- package/lib/typescript/module/menubar/Menubar.web.d.ts.map +1 -1
- package/lib/typescript/module/menubar/MenubarBase.d.ts +5 -0
- package/lib/typescript/module/menubar/MenubarBase.d.ts.map +1 -0
- package/lib/typescript/module/menubar/index.web.d.ts.map +1 -1
- package/lib/typescript/module/motion/index.web.d.ts +0 -5
- package/lib/typescript/module/motion/index.web.d.ts.map +1 -1
- package/lib/typescript/module/page-header/PageHeader.d.ts.map +1 -1
- package/lib/typescript/module/page-header/types.d.ts +10 -6
- package/lib/typescript/module/page-header/types.d.ts.map +1 -1
- package/lib/typescript/module/popover/index.web.d.ts.map +1 -1
- package/lib/typescript/module/popover/parts.d.ts.map +1 -1
- package/lib/typescript/module/popover/surface.d.ts +15 -5
- package/lib/typescript/module/popover/surface.d.ts.map +1 -1
- package/lib/typescript/module/portal/index.web.d.ts +1 -1
- package/lib/typescript/module/portal/index.web.d.ts.map +1 -1
- package/lib/typescript/module/progressive-blur/index.web.d.ts.map +1 -1
- package/lib/typescript/module/scroll/index.web.d.ts.map +1 -1
- package/lib/typescript/module/segmented-control/SegmentedControl.d.ts.map +1 -1
- package/lib/typescript/module/select/Select.d.ts +2 -4
- package/lib/typescript/module/select/Select.d.ts.map +1 -1
- package/lib/typescript/module/select/Select.web.d.ts +2 -4
- package/lib/typescript/module/select/Select.web.d.ts.map +1 -1
- package/lib/typescript/module/select/index.d.ts +2 -2
- package/lib/typescript/module/select/index.d.ts.map +1 -1
- package/lib/typescript/module/select/index.web.d.ts +2 -2
- package/lib/typescript/module/select/index.web.d.ts.map +1 -1
- package/lib/typescript/module/select/shared.d.ts +52 -5
- package/lib/typescript/module/select/shared.d.ts.map +1 -1
- package/lib/typescript/module/select/types.d.ts +6 -0
- package/lib/typescript/module/select/types.d.ts.map +1 -1
- package/lib/typescript/module/sidebar/Sidebar.d.ts.map +1 -1
- package/lib/typescript/module/sidebar/SidebarRail.d.ts +1 -1
- package/lib/typescript/module/sidebar/SidebarRail.d.ts.map +1 -1
- package/lib/typescript/module/sidebar/parts.d.ts +8 -2
- package/lib/typescript/module/sidebar/parts.d.ts.map +1 -1
- package/lib/typescript/module/sidebar/types.d.ts +2 -0
- package/lib/typescript/module/sidebar/types.d.ts.map +1 -1
- package/lib/typescript/module/styles/web-view-style.d.ts +2 -0
- package/lib/typescript/module/styles/web-view-style.d.ts.map +1 -1
- package/lib/typescript/module/surfaces/SurfaceHost.d.ts.map +1 -1
- package/lib/typescript/module/surfaces/index.web.d.ts +9 -4
- package/lib/typescript/module/surfaces/index.web.d.ts.map +1 -1
- package/lib/typescript/module/tab-bar/index.web.d.ts.map +1 -1
- package/lib/typescript/module/tabs/Tabs.d.ts.map +1 -1
- package/lib/typescript/module/tabs/types.d.ts +6 -0
- package/lib/typescript/module/tabs/types.d.ts.map +1 -1
- package/lib/typescript/module/theme/color-scope/index.web.d.ts.map +1 -1
- package/lib/typescript/module/theme/seed-scope/index.web.d.ts.map +1 -1
- package/lib/typescript/module/tooltip/index.web.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/agent-chat/index.web.ts +5 -3
- package/src/ai-chat/index.web.ts +5 -2
- package/src/alert-dialog/index.web.ts +10 -1
- package/src/avatar-group/index.web.ts +5 -0
- package/src/bottom-sheet/index.web.ts +5 -0
- package/src/code/index.ts +2 -0
- package/src/command/index.web.ts +5 -0
- package/src/composer-loader/ComposerLoader.web.tsx +8 -0
- package/src/composer-loader/index.web.ts +5 -2
- package/src/composer-panel/index.web.ts +5 -3
- package/src/connection-dots/index.web.ts +5 -0
- package/src/connection-status/index.web.ts +5 -0
- package/src/content-panel/index.web.ts +5 -0
- package/src/context-menu/ContextMenu.web.tsx +26 -3
- package/src/context-menu/context.ts +3 -0
- package/src/context-menu/index.web.ts +5 -0
- package/src/dialog/Dialog.web.tsx +13 -0
- package/src/dialog/index.web.ts +7 -11
- package/src/dropdown-menu/DropdownMenu.web.tsx +25 -2
- package/src/dropdown-menu/index.web.ts +5 -0
- package/src/floating/FloatingPanel.tsx +37 -38
- package/src/floating/escape-stack.ts +92 -0
- package/src/floating/menu-keyboard.ts +242 -0
- package/src/floating/menu-sub-flyout.tsx +22 -17
- package/src/floating/types.ts +11 -0
- package/src/fonts/index.web.ts +5 -20
- package/src/frosted-icon-button/FrostedIconButton.web.tsx +9 -0
- package/src/frosted-icon-button/index.web.ts +5 -7
- package/src/hooks/roving-focus.ts +204 -0
- package/src/hover-card/index.web.ts +5 -0
- package/src/icons/remix/RiBookReadLine.tsx +6 -0
- package/src/icons/remix/RiBugLine.tsx +6 -0
- package/src/icons/remix/RiChat1Line.tsx +6 -0
- package/src/icons/remix/RiCloudLine.tsx +6 -0
- package/src/icons/remix/RiCodeLine.tsx +6 -0
- package/src/icons/remix/RiCpuLine.tsx +6 -0
- package/src/icons/remix/RiFloodLine.tsx +6 -0
- package/src/icons/remix/RiLockUnlockLine.tsx +6 -0
- package/src/icons/remix/RiMoneyDollarCircleLine.tsx +6 -0
- package/src/icons/remix/RiPlayCircleLine.tsx +6 -0
- package/src/icons/remix/RiRocket2Line.tsx +6 -0
- package/src/icons/remix/RiServerLine.tsx +6 -0
- package/src/icons/remix/RiShareBoxLine.tsx +6 -0
- package/src/icons/remix/RiTv2Line.tsx +6 -0
- package/src/icons/remix/index.ts +14 -0
- package/src/index.ts +4 -0
- package/src/index.web.ts +4 -0
- package/src/layout/StickySection.tsx +75 -0
- package/src/layout/header-dock.tsx +42 -0
- package/src/layout/index.ts +4 -0
- package/src/list/index.web.ts +5 -0
- package/src/loading/Loading.tsx +15 -135
- package/src/loading/Loading.web.tsx +16 -134
- package/src/loading/LoadingBase.tsx +170 -0
- package/src/loading/index.web.ts +5 -13
- package/src/media-flight/index.web.ts +5 -9
- package/src/menubar/Menubar.tsx +16 -147
- package/src/menubar/Menubar.web.tsx +15 -138
- package/src/menubar/MenubarBase.tsx +170 -0
- package/src/menubar/index.web.ts +5 -0
- package/src/motion/index.web.ts +5 -5
- package/src/page-header/PageHeader.tsx +26 -12
- package/src/page-header/types.ts +10 -6
- package/src/popover/index.web.ts +5 -0
- package/src/popover/parts.tsx +76 -12
- package/src/popover/surface.ts +68 -15
- package/src/portal/index.web.ts +6 -1
- package/src/progressive-blur/index.web.ts +5 -0
- package/src/scroll/index.web.ts +5 -0
- package/src/segmented-control/SegmentedControl.tsx +45 -1
- package/src/select/Select.tsx +4 -67
- package/src/select/Select.web.tsx +133 -69
- package/src/select/index.ts +3 -3
- package/src/select/index.web.ts +8 -3
- package/src/select/shared.tsx +107 -5
- package/src/select/types.ts +6 -0
- package/src/sidebar/Sidebar.tsx +3 -0
- package/src/sidebar/SidebarRail.tsx +6 -1
- package/src/sidebar/SidebarTeamMenu.tsx +2 -2
- package/src/sidebar/SidebarUserMenu.tsx +2 -2
- package/src/sidebar/parts.tsx +8 -9
- package/src/sidebar/types.ts +2 -0
- package/src/styles/web-view-style.ts +5 -0
- package/src/surfaces/SurfaceHost.tsx +6 -0
- package/src/surfaces/index.web.ts +14 -4
- package/src/tab-bar/index.web.ts +13 -10
- package/src/tabs/Tabs.tsx +65 -1
- package/src/tabs/types.ts +6 -0
- package/src/theme/color-scope/index.web.ts +5 -0
- package/src/theme/seed-scope/index.web.ts +5 -0
- package/src/tooltip/index.web.ts +5 -0
|
@@ -71,6 +71,7 @@ import { SurfaceLevelProvider } from "../styles/surface-levels.js";
|
|
|
71
71
|
import { WEB_POSITION_FIXED } from "../styles/web-view-style.js";
|
|
72
72
|
import { DEFAULT_ALIGN_OFFSET, DEFAULT_SIDE_OFFSET, LISTBOX_PANEL_CLASS, MENU_MOTION_BLUR, MENU_MOTION_DURATION, MENU_MOTION_EASING, MENU_MOTION_SCALE_FROM, MENU_PANEL_CLASS, VIEWPORT_GUTTER } from "./constants.js";
|
|
73
73
|
import { useMenuPalette } from "./menu-palette.js";
|
|
74
|
+
import { pushFloatingEscape } from "./escape-stack.js";
|
|
74
75
|
import { cx } from "./shared.js";
|
|
75
76
|
import { useFrameThrottle } from "./use-frame-throttle.js";
|
|
76
77
|
|
|
@@ -87,35 +88,39 @@ const AnimatedPanel = Animated.createAnimatedComponent(StyledView);
|
|
|
87
88
|
const MENU_EASING = Easing.bezier(...MENU_MOTION_EASING);
|
|
88
89
|
|
|
89
90
|
/**
|
|
90
|
-
* The
|
|
91
|
-
* `
|
|
92
|
-
*
|
|
93
|
-
*
|
|
91
|
+
* The ONE motion every anchored surface runs: 150ms `ease-out`, fade +
|
|
92
|
+
* `scale-95` + 2px blur, no slide, scaling from the corner nearest the
|
|
93
|
+
* trigger, and the same shape reversed on the way out. It was written out
|
|
94
|
+
* three times, once per surface, with only the chrome differing — three
|
|
95
|
+
* spellings of one decision, any of which could be edited alone.
|
|
96
|
+
*/
|
|
97
|
+
const MENU_MOTION = {
|
|
98
|
+
duration: MENU_MOTION_DURATION,
|
|
99
|
+
easing: MENU_EASING,
|
|
100
|
+
scaleFrom: MENU_MOTION_SCALE_FROM,
|
|
101
|
+
slide: 0,
|
|
102
|
+
blur: MENU_MOTION_BLUR
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* The per-surface chrome. `menu` and `listbox` use the menu recipe
|
|
107
|
+
* (`constants.ts`'s `MENU_PANEL_CLASS` / `LISTBOX_PANEL_CLASS`) with colours
|
|
108
|
+
* from `menu-palette.ts`; `popover` carries NO chrome of its own here, because
|
|
109
|
+
* `popover/surface.ts` resolves the whole panel inline and hands it over as
|
|
110
|
+
* `style` so a caller's `className` can still override any one piece of it.
|
|
94
111
|
*/
|
|
95
112
|
const SURFACE = {
|
|
96
113
|
popover: {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
easing: MENU_EASING,
|
|
100
|
-
scaleFrom: MENU_MOTION_SCALE_FROM,
|
|
101
|
-
slide: 0,
|
|
102
|
-
blur: MENU_MOTION_BLUR
|
|
114
|
+
...MENU_MOTION,
|
|
115
|
+
className: ''
|
|
103
116
|
},
|
|
104
117
|
menu: {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
easing: MENU_EASING,
|
|
108
|
-
scaleFrom: MENU_MOTION_SCALE_FROM,
|
|
109
|
-
slide: 0,
|
|
110
|
-
blur: MENU_MOTION_BLUR
|
|
118
|
+
...MENU_MOTION,
|
|
119
|
+
className: MENU_PANEL_CLASS
|
|
111
120
|
},
|
|
112
121
|
listbox: {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
easing: MENU_EASING,
|
|
116
|
-
scaleFrom: MENU_MOTION_SCALE_FROM,
|
|
117
|
-
slide: 0,
|
|
118
|
-
blur: MENU_MOTION_BLUR
|
|
122
|
+
...MENU_MOTION,
|
|
123
|
+
className: LISTBOX_PANEL_CLASS
|
|
119
124
|
}
|
|
120
125
|
};
|
|
121
126
|
|
|
@@ -177,7 +182,8 @@ export function FloatingPanel({
|
|
|
177
182
|
style,
|
|
178
183
|
testID,
|
|
179
184
|
children,
|
|
180
|
-
surface = 'popover'
|
|
185
|
+
surface = 'popover',
|
|
186
|
+
panelRef
|
|
181
187
|
}) {
|
|
182
188
|
const chrome = SURFACE[surface];
|
|
183
189
|
const isMenuSurface = surface !== 'popover';
|
|
@@ -198,8 +204,11 @@ export function FloatingPanel({
|
|
|
198
204
|
const [lastOpen, setLastOpen] = useState(open);
|
|
199
205
|
const reducedMotion = useReducedMotion();
|
|
200
206
|
const progress = useSharedValue(0);
|
|
207
|
+
const panelRefRef = useRef(panelRef);
|
|
208
|
+
panelRefRef.current = panelRef;
|
|
201
209
|
const attach = useCallback(node => {
|
|
202
210
|
setPanelNode(node);
|
|
211
|
+
panelRefRef.current?.(node);
|
|
203
212
|
}, []);
|
|
204
213
|
const store = useCallback(next => {
|
|
205
214
|
if (samePlacement(published.current, next)) return;
|
|
@@ -387,18 +396,18 @@ export function FloatingPanel({
|
|
|
387
396
|
filter: progress.value >= 1 ? 'none' : `blur(${blurFrom * (1 - progress.value)}px)`
|
|
388
397
|
} : null)
|
|
389
398
|
}), [progress, slideX, slideY, scaleFrom, blurFrom]);
|
|
399
|
+
|
|
400
|
+
// Escape dismisses the INNERMOST open surface and nothing under it — a Select
|
|
401
|
+
// inside a Dialog closes its list, not the dialog (`escape-stack.ts`). The
|
|
402
|
+
// entry is taken once per open and calls the CURRENT `onDismiss` through a
|
|
403
|
+
// ref: re-pushing it whenever the callback's identity changed would move a
|
|
404
|
+
// re-rendered parent menu above its own open submenu.
|
|
405
|
+
const onDismissRef = useRef(onDismiss);
|
|
406
|
+
onDismissRef.current = onDismiss;
|
|
390
407
|
useEffect(() => {
|
|
391
408
|
if (phase !== 'open' || !dismissible || typeof document === 'undefined') return;
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
// Stop the key reaching a Dialog underneath: the innermost open surface is
|
|
395
|
-
// the one Escape dismisses.
|
|
396
|
-
event.stopPropagation();
|
|
397
|
-
onDismiss();
|
|
398
|
-
};
|
|
399
|
-
document.addEventListener('keydown', onKeyDown);
|
|
400
|
-
return () => document.removeEventListener('keydown', onKeyDown);
|
|
401
|
-
}, [phase, dismissible, onDismiss]);
|
|
409
|
+
return pushFloatingEscape(() => onDismissRef.current());
|
|
410
|
+
}, [phase, dismissible]);
|
|
402
411
|
|
|
403
412
|
// The NON-modal outside press. Deliberately `pointerdown` in the CAPTURE
|
|
404
413
|
// phase and never `preventDefault`: the surface has to be gone before the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useEffect","useLayoutEffect","useMemo","useRef","useState","StyleSheet","Animated","Easing","useAnimatedStyle","useReducedMotion","useSharedValue","withTiming","Backdrop","OverlayRoot","resolveDropdownPlacement","Portal","StyledView","SurfaceLevelProvider","WEB_POSITION_FIXED","DEFAULT_ALIGN_OFFSET","DEFAULT_SIDE_OFFSET","LISTBOX_PANEL_CLASS","MENU_MOTION_BLUR","MENU_MOTION_DURATION","MENU_MOTION_EASING","MENU_MOTION_SCALE_FROM","MENU_PANEL_CLASS","VIEWPORT_GUTTER","useMenuPalette","cx","useFrameThrottle","jsx","_jsx","jsxs","_jsxs","AnimatedPanel","createAnimatedComponent","MENU_EASING","bezier","SURFACE","popover","className","duration","easing","scaleFrom","slide","blur","menu","listbox","resolvedSide","requested","placement","anchorStart","horizontal","left","top","samePlacement","a","b","transformOriginFor","side","align","cross","y","x","FloatingPanel","open","anchor","sideOffset","alignOffset","dismissible","modal","onDismiss","label","role","minWidth","maxWidth","style","testID","children","surface","chrome","isMenuSurface","palette","panelNode","setPanelNode","setPlacement","published","phase","setPhase","lastOpen","setLastOpen","reducedMotion","progress","attach","node","store","next","current","timer","setTimeout","clearTimeout","resolve","element","measure","getBoundingClientRect","window","box","call","layoutWidth","offsetWidth","width","layoutHeight","offsetHeight","height","Math","max","alignsVertically","shiftY","shiftX","bottom","right","size","viewport","innerWidth","innerHeight","offset","gutter","schedule","addEventListener","removeEventListener","landed","resolved","origin","held","setHeld","geometry","slideX","slideY","value","blurFrom","motionStyle","opacity","transform","translateX","translateY","scale","filter","document","onKeyDown","event","key","stopPropagation","onPointerDown","target","contains","clientX","clientY","styles","backdrop","onPress","blurIntensity","dimOpacity","accessibilityLabel","ref","panel","backgroundColor","borderColor","border","boxShadow","shadow","transformOrigin","pointerEvents","level","create","position"],"sourceRoot":"../../../src","sources":["floating/FloatingPanel.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useLayoutEffect","useMemo","useRef","useState","StyleSheet","Animated","Easing","useAnimatedStyle","useReducedMotion","useSharedValue","withTiming","Backdrop","OverlayRoot","resolveDropdownPlacement","Portal","StyledView","SurfaceLevelProvider","WEB_POSITION_FIXED","DEFAULT_ALIGN_OFFSET","DEFAULT_SIDE_OFFSET","LISTBOX_PANEL_CLASS","MENU_MOTION_BLUR","MENU_MOTION_DURATION","MENU_MOTION_EASING","MENU_MOTION_SCALE_FROM","MENU_PANEL_CLASS","VIEWPORT_GUTTER","useMenuPalette","pushFloatingEscape","cx","useFrameThrottle","jsx","_jsx","jsxs","_jsxs","AnimatedPanel","createAnimatedComponent","MENU_EASING","bezier","MENU_MOTION","duration","easing","scaleFrom","slide","blur","SURFACE","popover","className","menu","listbox","resolvedSide","requested","placement","anchorStart","horizontal","left","top","samePlacement","a","b","transformOriginFor","side","align","cross","y","x","FloatingPanel","open","anchor","sideOffset","alignOffset","dismissible","modal","onDismiss","label","role","minWidth","maxWidth","style","testID","children","surface","panelRef","chrome","isMenuSurface","palette","panelNode","setPanelNode","setPlacement","published","phase","setPhase","lastOpen","setLastOpen","reducedMotion","progress","panelRefRef","current","attach","node","store","next","timer","setTimeout","clearTimeout","resolve","element","measure","getBoundingClientRect","window","box","call","layoutWidth","offsetWidth","width","layoutHeight","offsetHeight","height","Math","max","alignsVertically","shiftY","shiftX","bottom","right","size","viewport","innerWidth","innerHeight","offset","gutter","schedule","addEventListener","removeEventListener","landed","resolved","origin","held","setHeld","geometry","slideX","slideY","value","blurFrom","motionStyle","opacity","transform","translateX","translateY","scale","filter","onDismissRef","document","onPointerDown","event","target","contains","clientX","clientY","styles","backdrop","onPress","blurIntensity","dimOpacity","accessibilityLabel","ref","panel","backgroundColor","borderColor","border","boxShadow","shadow","transformOrigin","pointerEvents","level","create","position"],"sourceRoot":"../../../src","sources":["floating/FloatingPanel.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,SAAS,EAAEC,eAAe,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACjG,SAASC,UAAU,QAAc,cAAc;AAC/C,OAAOC,QAAQ,IACbC,MAAM,EACNC,gBAAgB,EAChBC,gBAAgB,EAChBC,cAAc,EACdC,UAAU,QACL,yBAAyB;AAEhC,SAASC,QAAQ,EAAEC,WAAW,QAAQ,qBAAY;AAClD,SACEC,wBAAwB,QAEnB,kCAA+B;AACtC,SAASC,MAAM,QAAQ,wBAAqB;AAC5C,SAASC,UAAU,QAAQ,gCAA6B;AACxD,SAASC,oBAAoB,QAAQ,6BAA0B;AAC/D,SAASC,kBAAkB,QAAQ,6BAA0B;AAC7D,SACEC,oBAAoB,EACpBC,mBAAmB,EACnBC,mBAAmB,EACnBC,gBAAgB,EAChBC,oBAAoB,EACpBC,kBAAkB,EAClBC,sBAAsB,EACtBC,gBAAgB,EAChBC,eAAe,QACV,gBAAa;AACpB,SAASC,cAAc,QAAQ,mBAAgB;AAC/C,SAASC,kBAAkB,QAAQ,mBAAgB;AACnD,SAASC,EAAE,QAAQ,aAAU;AAE7B,SAASC,gBAAgB,QAAQ,yBAAsB;;AAEvD;AACA;AACA;AACA;AACA;AACA;AALA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAMA,MAAMC,aAAa,GAAG9B,QAAQ,CAAC+B,uBAAuB,CAACrB,UAAU,CAAC;;AAElE;AACA,MAAMsB,WAAW,GAAG/B,MAAM,CAACgC,MAAM,CAAC,GAAGf,kBAAkB,CAAC;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMgB,WAAW,GAAG;EAClBC,QAAQ,EAAElB,oBAAoB;EAC9BmB,MAAM,EAAEJ,WAAW;EACnBK,SAAS,EAAElB,sBAAsB;EACjCmB,KAAK,EAAE,CAAC;EACRC,IAAI,EAAEvB;AACR,CAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMwB,OAAO,GAAG;EACdC,OAAO,EAAE;IAAE,GAAGP,WAAW;IAAEQ,SAAS,EAAE;EAAG,CAAC;EAC1CC,IAAI,EAAE;IAAE,GAAGT,WAAW;IAAEQ,SAAS,EAAEtB;EAAiB,CAAC;EACrDwB,OAAO,EAAE;IAAE,GAAGV,WAAW;IAAEQ,SAAS,EAAE3B;EAAoB;AAC5D,CAAU;;AAEV;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS8B,YAAYA,CACnBC,SAAuB,EACvBC,SAA4B,EAC5BC,WAAmB,EACL;EACd,MAAMC,UAAU,GAAGH,SAAS,KAAK,MAAM,IAAIA,SAAS,KAAK,OAAO;EAChE,IAAIG,UAAU,EAAE,OAAOF,SAAS,CAACG,IAAI,IAAIF,WAAW,GAAG,OAAO,GAAG,MAAM;EACvE,OAAOD,SAAS,CAACI,GAAG,IAAIH,WAAW,GAAG,QAAQ,GAAG,KAAK;AACxD;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASI,aAAaA,CAACC,CAA2B,EAAEC,CAA2B,EAAW;EACxF,IAAID,CAAC,KAAKC,CAAC,EAAE,OAAO,IAAI;EACxB,IAAI,CAACD,CAAC,IAAI,CAACC,CAAC,EAAE,OAAO,KAAK;EAC1B,OAAOD,CAAC,CAACF,GAAG,KAAKG,CAAC,CAACH,GAAG,IAAIE,CAAC,CAACH,IAAI,KAAKI,CAAC,CAACJ,IAAI;AAC7C;;AAEA;AACA,SAASK,kBAAkBA,CAACC,IAAkB,EAAEC,KAAa,EAAU;EACrE,MAAMC,KAAK,GACTD,KAAK,KAAK,KAAK,GAAG,KAAK,GAAGA,KAAK,KAAK,QAAQ,GAAG,QAAQ,GAAG,OAAO;EACnE,IAAID,IAAI,KAAK,QAAQ,IAAIA,IAAI,KAAK,KAAK,EAAE;IACvC,MAAMG,CAAC,GAAGH,IAAI,KAAK,QAAQ,GAAG,KAAK,GAAG,QAAQ;IAC9C,MAAMI,CAAC,GAAGF,KAAK,KAAK,KAAK,GAAG,OAAO,GAAGA,KAAK,KAAK,QAAQ,GAAG,QAAQ,GAAG,MAAM;IAC5E,OAAO,GAAGE,CAAC,IAAID,CAAC,EAAE;EACpB;EACA,MAAMC,CAAC,GAAGJ,IAAI,KAAK,OAAO,GAAG,MAAM,GAAG,OAAO;EAC7C,MAAMG,CAAC,GAAGD,KAAK,KAAK,KAAK,GAAG,QAAQ,GAAGA,KAAK,KAAK,QAAQ,GAAG,QAAQ,GAAG,KAAK;EAC5E,OAAO,GAAGE,CAAC,IAAID,CAAC,EAAE;AACpB;AAEA,OAAO,SAASE,aAAaA,CAAC;EAC5BC,IAAI;EACJC,MAAM;EACNP,IAAI,GAAG,QAAQ;EACfC,KAAK,GAAG,OAAO;EACfO,UAAU,GAAGlD,mBAAmB;EAChCmD,WAAW,GAAGpD,oBAAoB;EAClCqD,WAAW,GAAG,IAAI;EAClBC,KAAK,GAAG,IAAI;EACZC,SAAS;EACTC,KAAK;EACLC,IAAI;EACJC,QAAQ;EACRC,QAAQ;EACR9B,SAAS;EACT+B,KAAK;EACLC,MAAM;EACNC,QAAQ;EACRC,OAAO,GAAG,SAAS;EACnBC;AACkB,CAAC,EAAE;EACrB,MAAMC,MAAM,GAAGtC,OAAO,CAACoC,OAAO,CAAC;EAC/B,MAAMG,aAAa,GAAGH,OAAO,KAAK,SAAS;EAC3C,MAAMI,OAAO,GAAG1D,cAAc,CAAC,CAAC;EAChC;EACA;EACA;EACA;EACA,MAAM,CAAC2D,SAAS,EAAEC,YAAY,CAAC,GAAGpF,QAAQ,CAAc,IAAI,CAAC;EAC7D,MAAM,CAACiD,SAAS,EAAEoC,YAAY,CAAC,GAAGrF,QAAQ,CAA2B,IAAI,CAAC;EAC1E;EACA;EACA;EACA;EACA;EACA,MAAMsF,SAAS,GAAGvF,MAAM,CAA2B,IAAI,CAAC;EACxD,MAAM,CAACwF,KAAK,EAAEC,QAAQ,CAAC,GAAGxF,QAAQ,CAAQgE,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC;EACnE,MAAM,CAACyB,QAAQ,EAAEC,WAAW,CAAC,GAAG1F,QAAQ,CAACgE,IAAI,CAAC;EAC9C,MAAM2B,aAAa,GAAGtF,gBAAgB,CAAC,CAAC;EACxC,MAAMuF,QAAQ,GAAGtF,cAAc,CAAC,CAAC,CAAC;EAElC,MAAMuF,WAAW,GAAG9F,MAAM,CAACgF,QAAQ,CAAC;EACpCc,WAAW,CAACC,OAAO,GAAGf,QAAQ;EAC9B,MAAMgB,MAAM,GAAGpG,WAAW,CAAEqG,IAAiB,IAAK;IAChDZ,YAAY,CAACY,IAAI,CAAC;IAClBH,WAAW,CAACC,OAAO,GAAGE,IAAI,CAAC;EAC7B,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,KAAK,GAAGtG,WAAW,CAAEuG,IAA8B,IAAK;IAC5D,IAAI5C,aAAa,CAACgC,SAAS,CAACQ,OAAO,EAAEI,IAAI,CAAC,EAAE;IAC5CZ,SAAS,CAACQ,OAAO,GAAGI,IAAI;IACxBb,YAAY,CAACa,IAAI,CAAC;EACpB,CAAC,EAAE,EAAE,CAAC;;EAEN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAIlC,IAAI,KAAKyB,QAAQ,EAAE;IACrBC,WAAW,CAAC1B,IAAI,CAAC;IACjB;IACA;IACAwB,QAAQ,CAACxB,IAAI,GAAG,MAAM,GAAGuB,KAAK,KAAK,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;EACnE;EAEA3F,SAAS,CAAC,MAAM;IACd,IAAI2F,KAAK,KAAK,SAAS,EAAE;IACzB;IACA;IACA,MAAMY,KAAK,GAAGC,UAAU,CACtB,MAAMZ,QAAQ,CAAC,QAAQ,CAAC,EACxBG,aAAa,GAAG,CAAC,GAAGX,MAAM,CAAC3C,QAC7B,CAAC;IACD,OAAO,MAAMgE,YAAY,CAACF,KAAK,CAAC;EAClC,CAAC,EAAE,CAACZ,KAAK,EAAEI,aAAa,EAAEX,MAAM,CAAC3C,QAAQ,CAAC,CAAC;;EAE3C;EACA;EACA;EACA;EACA,MAAMiE,OAAO,GAAG3G,WAAW,CAAC,MAAM;IAChC;IACA;IACA;IACA,IAAI4F,KAAK,KAAK,SAAS,EAAE;IACzB;IACA;IACA;IACA;IACA,MAAMgB,OAAO,GAAGpB,SAIR;IACR,MAAMqB,OAAO,GAAGD,OAAO,EAAEE,qBAAqB;IAC9C,IACElB,KAAK,KAAK,MAAM,IAChB,CAACtB,MAAM,IACP,OAAOyC,MAAM,KAAK,WAAW,IAC7B,OAAOF,OAAO,KAAK,UAAU,EAC7B;MACAP,KAAK,CAAC,IAAI,CAAC;MACX;IACF;IAEA,MAAMU,GAAG,GAAGH,OAAO,CAACI,IAAI,CAACL,OAAO,CAAC;IACjC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,MAAMM,WAAW,GAAGN,OAAO,EAAEO,WAAW,IAAIH,GAAG,CAACI,KAAK;IACrD,MAAMC,YAAY,GAAGT,OAAO,EAAEU,YAAY,IAAIN,GAAG,CAACO,MAAM;IACxD;IACA;IACA;IACA;IACA;IACA,MAAMH,KAAK,GAAGI,IAAI,CAACC,GAAG,CAACP,WAAW,EAAEpC,QAAQ,IAAI,CAAC,CAAC;IAClD;IACA,MAAM4C,gBAAgB,GAAG3D,IAAI,KAAK,MAAM,IAAIA,IAAI,KAAK,OAAO;IAC5D,MAAM4D,MAAM,GAAGD,gBAAgB,GAAGlD,WAAW,GAAG,CAAC;IACjD,MAAMoD,MAAM,GAAGF,gBAAgB,GAAG,CAAC,GAAGlD,WAAW;IACjD,MAAM+B,IAAI,GAAGxF,wBAAwB,CAAC;MACpCuD,MAAM,EAAE;QACNZ,GAAG,EAAEY,MAAM,CAACZ,GAAG,GAAGiE,MAAM;QACxBE,MAAM,EAAEvD,MAAM,CAACuD,MAAM,GAAGF,MAAM;QAC9BlE,IAAI,EAAEa,MAAM,CAACb,IAAI,GAAGmE,MAAM;QAC1BE,KAAK,EAAExD,MAAM,CAACwD,KAAK,GAAGF;MACxB,CAAC;MACDG,IAAI,EAAE;QAAEX,KAAK;QAAEG,MAAM,EAAEF;MAAa,CAAC;MACrCW,QAAQ,EAAE;QAAEZ,KAAK,EAAEL,MAAM,CAACkB,UAAU;QAAEV,MAAM,EAAER,MAAM,CAACmB;MAAY,CAAC;MAClEC,MAAM,EAAE5D,UAAU;MAClB6D,MAAM,EAAExG,eAAe;MACvBoC,KAAK;MACLD;IACF,CAAC,CAAC;IACF;IACA;IACA;IACA;IACAuC,KAAK,CAACC,IAAI,CAAC;EACb,CAAC,EAAE,CAACD,KAAK,EAAEV,KAAK,EAAEtB,MAAM,EAAEkB,SAAS,EAAEzB,IAAI,EAAEC,KAAK,EAAEO,UAAU,EAAEC,WAAW,EAAEM,QAAQ,CAAC,CAAC;;EAErF;EACA;EACA;EACA;EACA;EACA;EACA,MAAM,CAACuD,QAAQ,CAAC,GAAGrG,gBAAgB,CAAC2E,OAAO,CAAC;;EAE5C;EACA;EACA;EACAzG,eAAe,CAAC,MAAM;IACpByG,OAAO,CAAC,CAAC;EACX,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;;EAEb;EACA;EACA;EACA;EACA1G,SAAS,CAAC,MAAM;IACd,IAAI2F,KAAK,KAAK,MAAM,IAAI,OAAOmB,MAAM,KAAK,WAAW,EAAE;IACvDA,MAAM,CAACuB,gBAAgB,CAAC,QAAQ,EAAED,QAAQ,CAAC;IAC3CtB,MAAM,CAACuB,gBAAgB,CAAC,QAAQ,EAAED,QAAQ,EAAE,IAAI,CAAC;IACjD,OAAO,MAAM;MACXtB,MAAM,CAACwB,mBAAmB,CAAC,QAAQ,EAAEF,QAAQ,CAAC;MAC9CtB,MAAM,CAACwB,mBAAmB,CAAC,QAAQ,EAAEF,QAAQ,EAAE,IAAI,CAAC;IACtD,CAAC;EACH,CAAC,EAAE,CAACzC,KAAK,EAAEyC,QAAQ,CAAC,CAAC;;EAErB;EACA;EACA,MAAMG,MAAM,GAAGrI,OAAO,CAAC,MAAM;IAC3B,IAAI,CAACmD,SAAS,IAAI,CAACgB,MAAM,EAAE,OAAO,IAAI;IACtC,MAAMd,UAAU,GAAGO,IAAI,KAAK,MAAM,IAAIA,IAAI,KAAK,OAAO;IACtD,MAAM0E,QAAQ,GAAGrF,YAAY,CAC3BW,IAAI,EACJT,SAAS,EACTE,UAAU,GAAGc,MAAM,CAACwD,KAAK,GAAGxD,MAAM,CAACuD,MACrC,CAAC;IACD,OAAO;MAAE9D,IAAI,EAAE0E,QAAQ;MAAEC,MAAM,EAAE5E,kBAAkB,CAAC2E,QAAQ,EAAEzE,KAAK;IAAE,CAAC;EACxE,CAAC,EAAE,CAACV,SAAS,EAAEgB,MAAM,EAAEP,IAAI,EAAEC,KAAK,CAAC,CAAC;EAEpC,MAAM,CAAC2E,IAAI,EAAEC,OAAO,CAAC,GAAGvI,QAAQ,CAACmI,MAAM,CAAC;EACxC,IAAIA,MAAM,IAAIA,MAAM,KAAKG,IAAI,EAAEC,OAAO,CAACJ,MAAM,CAAC;EAC9C,MAAMK,QAAQ,GAAGL,MAAM,IAAIG,IAAI;EAE/B,MAAMG,MAAM,GACVD,QAAQ,EAAE9E,IAAI,KAAK,OAAO,GACtB,CAACsB,MAAM,CAACxC,KAAK,GACbgG,QAAQ,EAAE9E,IAAI,KAAK,MAAM,GACvBsB,MAAM,CAACxC,KAAK,GACZ,CAAC;EACT,MAAMkG,MAAM,GACVF,QAAQ,EAAE9E,IAAI,KAAK,QAAQ,GACvB,CAACsB,MAAM,CAACxC,KAAK,GACbgG,QAAQ,EAAE9E,IAAI,KAAK,KAAK,GACtBsB,MAAM,CAACxC,KAAK,GACZ,CAAC;;EAET;EACA;EACA;EACA5C,SAAS,CAAC,MAAM;IACd,IAAI2F,KAAK,KAAK,MAAM,EAAE;MACpB,IAAI,CAACtC,SAAS,EAAE;MAChB2C,QAAQ,CAAC+C,KAAK,GAAGhD,aAAa,GAC1B,CAAC,GACDpF,UAAU,CAAC,CAAC,EAAE;QAAE8B,QAAQ,EAAE2C,MAAM,CAAC3C,QAAQ;QAAEC,MAAM,EAAE0C,MAAM,CAAC1C;MAAO,CAAC,CAAC;MACvE;IACF;IACA,IAAIiD,KAAK,KAAK,SAAS,EAAE;MACvBK,QAAQ,CAAC+C,KAAK,GAAGhD,aAAa,GAC1B,CAAC,GACDpF,UAAU,CAAC,CAAC,EAAE;QAAE8B,QAAQ,EAAE2C,MAAM,CAAC3C,QAAQ;QAAEC,MAAM,EAAE0C,MAAM,CAAC1C;MAAO,CAAC,CAAC;MACvE;IACF;IACAsD,QAAQ,CAAC+C,KAAK,GAAG,CAAC;EACpB,CAAC,EAAE,CAACpD,KAAK,EAAEtC,SAAS,EAAE0C,aAAa,EAAEC,QAAQ,EAAEZ,MAAM,CAAC,CAAC;;EAEvD;EACA;EACA;EACA;EACA;EACA;EACA,MAAMzC,SAAS,GAAGyC,MAAM,CAACzC,SAAS;EAClC,MAAMqG,QAAQ,GAAG5D,MAAM,CAACvC,IAAI;EAC5B,MAAMoG,WAAW,GAAGzI,gBAAgB,CAClC,OAAO;IACL0I,OAAO,EAAElD,QAAQ,CAAC+C,KAAK;IACvBI,SAAS,EAAE,CACT;MAAEC,UAAU,EAAEP,MAAM,IAAI,CAAC,GAAG7C,QAAQ,CAAC+C,KAAK;IAAE,CAAC,EAC7C;MAAEM,UAAU,EAAEP,MAAM,IAAI,CAAC,GAAG9C,QAAQ,CAAC+C,KAAK;IAAE,CAAC,EAC7C;MAAEO,KAAK,EAAE3G,SAAS,GAAG,CAAC,CAAC,GAAGA,SAAS,IAAIqD,QAAQ,CAAC+C;IAAM,CAAC,CACxD;IACD,IAAIC,QAAQ,GAAG,CAAC,GACZ;MACEO,MAAM,EACJvD,QAAQ,CAAC+C,KAAK,IAAI,CAAC,GAAG,MAAM,GAAG,QAAQC,QAAQ,IAAI,CAAC,GAAGhD,QAAQ,CAAC+C,KAAK,CAAC;IAC1E,CAAC,GACD,IAAI;EACV,CAAC,CAAC,EACF,CAAC/C,QAAQ,EAAE6C,MAAM,EAAEC,MAAM,EAAEnG,SAAS,EAAEqG,QAAQ,CAChD,CAAC;;EAED;EACA;EACA;EACA;EACA;EACA,MAAMQ,YAAY,GAAGrJ,MAAM,CAACuE,SAAS,CAAC;EACtC8E,YAAY,CAACtD,OAAO,GAAGxB,SAAS;EAChC1E,SAAS,CAAC,MAAM;IACd,IAAI2F,KAAK,KAAK,MAAM,IAAI,CAACnB,WAAW,IAAI,OAAOiF,QAAQ,KAAK,WAAW,EAAE;IACzE,OAAO5H,kBAAkB,CAAC,MAAM2H,YAAY,CAACtD,OAAO,CAAC,CAAC,CAAC;EACzD,CAAC,EAAE,CAACP,KAAK,EAAEnB,WAAW,CAAC,CAAC;;EAExB;EACA;EACA;EACA;EACA;EACA;EACA;EACAxE,SAAS,CAAC,MAAM;IACd,IAAI2F,KAAK,KAAK,MAAM,IAAI,CAACnB,WAAW,IAAIC,KAAK,IAAI,OAAOgF,QAAQ,KAAK,WAAW,EAAE;IAClF,MAAMC,aAAa,GAAIC,KAAmB,IAAK;MAC7C,MAAMvD,IAAI,GAAGb,SAAmC;MAChD,MAAMqE,MAAM,GAAGD,KAAK,CAACC,MAAqB;MAC1C,IAAIxD,IAAI,IAAIwD,MAAM,IAAIxD,IAAI,CAACyD,QAAQ,CAACD,MAAM,CAAC,EAAE;MAC7C,IACEvF,MAAM,IACNsF,KAAK,CAACG,OAAO,IAAIzF,MAAM,CAACb,IAAI,IAC5BmG,KAAK,CAACG,OAAO,IAAIzF,MAAM,CAACwD,KAAK,IAC7B8B,KAAK,CAACI,OAAO,IAAI1F,MAAM,CAACZ,GAAG,IAC3BkG,KAAK,CAACI,OAAO,IAAI1F,MAAM,CAACuD,MAAM,EAC9B;QACA;MACF;MACAlD,SAAS,CAAC,CAAC;IACb,CAAC;IACD+E,QAAQ,CAACpB,gBAAgB,CAAC,aAAa,EAAEqB,aAAa,EAAE,IAAI,CAAC;IAC7D,OAAO,MAAMD,QAAQ,CAACnB,mBAAmB,CAAC,aAAa,EAAEoB,aAAa,EAAE,IAAI,CAAC;EAC/E,CAAC,EAAE,CAAC/D,KAAK,EAAEnB,WAAW,EAAEC,KAAK,EAAEC,SAAS,EAAEa,SAAS,EAAElB,MAAM,CAAC,CAAC;EAE7D,IAAIsB,KAAK,KAAK,QAAQ,EAAE,OAAO,IAAI;EACnC,IAAIA,KAAK,KAAK,MAAM,IAAI,CAACtB,MAAM,EAAE,OAAO,IAAI;EAE5C,oBACEpC,IAAA,CAAClB,MAAM;IAAAkE,QAAA,eACL9C,KAAA,CAACtB,WAAW;MAAAoE,QAAA,GACTT,WAAW,IAAIC,KAAK,IAAIkB,KAAK,KAAK,MAAM,gBACvC1D,IAAA,CAACrB,QAAQ;QACPmE,KAAK,EAAEiF,MAAM,CAACC,QAAS;QACvBC,OAAO,EAAExF;QACT;QACA;QACA;QAAA;QACAyF,aAAa,EAAE,CAAE;QACjBC,UAAU,EAAE,CAAE;QACdC,kBAAkB,EAAC;MAAS,CAC7B,CAAC,GACA,IAAI,eACRpI,IAAA,CAACG,aAAa;QACZkI,GAAG,EAAEnE,MAAO;QACZvB,IAAI,EAAEA,IAAK;QACX,cAAYD,KAAM;QAClBK,MAAM,EAAEA,MAAO;QACfhC,SAAS,EAAElB,EAAE,CAACsD,MAAM,CAACpC,SAAS,EAAEA,SAAS,CAAE;QAC3C+B,KAAK,EAAE,CACLiF,MAAM,CAACO,KAAK;QACZ;QACA;QACA;QACAlF,aAAa,GACT;UACEmF,eAAe,EAAElF,OAAO,CAACJ,OAAO;UAChCuF,WAAW,EAAEnF,OAAO,CAACoF,MAAM;UAC3BC,SAAS,EAAErF,OAAO,CAACsF;QACrB,CAAC,GACD,IAAI,EACR;UACE;UACA;UACA;UACA;UACApH,IAAI,EACFH,SAAS,EAAEG,IAAI,KACda,MAAM,GACHP,IAAI,KAAK,OAAO,GACdO,MAAM,CAACwD,KAAK,GAAGvD,UAAU,GACzBR,IAAI,KAAK,MAAM,GACbO,MAAM,CAACb,IAAI,GAAGc,UAAU,GACxBD,MAAM,CAACb,IAAI,GACf,CAAC,CAAC;UACRC,GAAG,EACDJ,SAAS,EAAEI,GAAG,KACbY,MAAM,GACHP,IAAI,KAAK,MAAM,IAAIA,IAAI,KAAK,OAAO,GACjCO,MAAM,CAACZ,GAAG,GACVY,MAAM,CAACuD,MAAM,GAAGtD,UAAU,GAC5B,CAAC,CAAC;UACRO,QAAQ;UACRC,QAAQ;UACR+F,eAAe,EAAEjC,QAAQ,EAAEH,MAAM;UACjC;UACA;UACAqC,aAAa,EAAEnF,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG;QAC7C,CAAC,EACDsD,WAAW,EACXlE,KAAK,CACL;QAAAE,QAAA,eAaFhD,IAAA,CAAChB,oBAAoB;UAAC8J,KAAK,EAAE,CAAE;UAAA9F,QAAA,EAAEA;QAAQ,CAAuB;MAAC,CACpD,CAAC;IAAA,CACL;EAAC,CACR,CAAC;AAEb;AAEA,MAAM+E,MAAM,GAAG3J,UAAU,CAAC2K,MAAM,CAAC;EAC/Bf,QAAQ,EAAE;IACRgB,QAAQ,EAAE/J,kBAAkB;IAC5BuC,GAAG,EAAE,CAAC;IACND,IAAI,EAAE,CAAC;IACPqE,KAAK,EAAE,CAAC;IACRD,MAAM,EAAE,CAAC;IACT;IACAkD,aAAa,EAAE;EACjB,CAAC;EACD;EACA;EACA;EACAP,KAAK,EAAE;IACLU,QAAQ,EAAE/J;EACZ;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Escape for the anchored surfaces — WEB. One listener for every open
|
|
5
|
+
* `FloatingPanel`, dismissing only the INNERMOST (most recently opened) one and
|
|
6
|
+
* keeping the key from every enclosing surface.
|
|
7
|
+
*
|
|
8
|
+
* THE DEFECT IT REPLACES. Each panel added its own bubble-phase `keydown`
|
|
9
|
+
* listener on `document` and called `stopPropagation()`. A `Dialog` listens on
|
|
10
|
+
* `document` too, and `stopPropagation` does not stop a SIBLING listener on the
|
|
11
|
+
* same node: listeners on one node run in registration order, and the dialog —
|
|
12
|
+
* open first — registered first. So Escape on a `Select` inside a `Dialog`
|
|
13
|
+
* closed the DIALOG, and the list with it. Two panels open at once (a select
|
|
14
|
+
* inside a popover) had the same shape: the outer one registered first and
|
|
15
|
+
* closed first.
|
|
16
|
+
*
|
|
17
|
+
* THE MECHANISM.
|
|
18
|
+
*
|
|
19
|
+
* - The listener sits on `document.documentElement` in the BUBBLE phase. That
|
|
20
|
+
* is one node BELOW `document`, so it runs before any `document` listener —
|
|
21
|
+
* the Dialog's included — and its `stopPropagation()` keeps the key from
|
|
22
|
+
* ever reaching them. It is also ABOVE React's roots (the app root and every
|
|
23
|
+
* portal container sit inside `<body>`), so a control inside a panel still
|
|
24
|
+
* sees Escape first and can keep it — the composer's model-picker search
|
|
25
|
+
* clears its query on Escape and stops the key, exactly as it did when the
|
|
26
|
+
* panel listened on `document`.
|
|
27
|
+
* - Entries form a stack: the panel opened LAST is dismissed, whatever order
|
|
28
|
+
* the listeners happen to be in.
|
|
29
|
+
* - `hasOpenFloatingSurface()` lets the surface host's window-capture Escape
|
|
30
|
+
* router (`surfaces/SurfaceHost.tsx`) stand aside while a panel is open. It
|
|
31
|
+
* runs before anything here, so without the check it would dismiss the
|
|
32
|
+
* stacked dialog UNDER the open list.
|
|
33
|
+
*
|
|
34
|
+
* `globalThis`-anchored for the same reason as `overlay/stack.ts`: the families
|
|
35
|
+
* that open panels are imported through different subpaths, and a bundler can
|
|
36
|
+
* resolve two physical copies of this module.
|
|
37
|
+
*/
|
|
38
|
+
|
|
39
|
+
function registry() {
|
|
40
|
+
globalThis.__oxy_so_bloom_floating_escape__ ??= {
|
|
41
|
+
stack: [],
|
|
42
|
+
listener: null
|
|
43
|
+
};
|
|
44
|
+
return globalThis.__oxy_so_bloom_floating_escape__;
|
|
45
|
+
}
|
|
46
|
+
function onKeyDown(event) {
|
|
47
|
+
if (event.key !== 'Escape') return;
|
|
48
|
+
const stack = registry().stack;
|
|
49
|
+
const top = stack[stack.length - 1];
|
|
50
|
+
if (!top) return;
|
|
51
|
+
event.stopPropagation();
|
|
52
|
+
top.dismiss();
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Put an open surface on top of the Escape stack. Returns the release, which
|
|
57
|
+
* removes exactly this entry wherever it now sits — a parent can close before
|
|
58
|
+
* its submenu's effect cleanup runs.
|
|
59
|
+
*/
|
|
60
|
+
export function pushFloatingEscape(dismiss) {
|
|
61
|
+
const reg = registry();
|
|
62
|
+
const entry = {
|
|
63
|
+
dismiss
|
|
64
|
+
};
|
|
65
|
+
reg.stack.push(entry);
|
|
66
|
+
if (!reg.listener && typeof document !== 'undefined') {
|
|
67
|
+
reg.listener = onKeyDown;
|
|
68
|
+
document.documentElement.addEventListener('keydown', onKeyDown);
|
|
69
|
+
}
|
|
70
|
+
return () => {
|
|
71
|
+
const current = registry();
|
|
72
|
+
const index = current.stack.indexOf(entry);
|
|
73
|
+
if (index >= 0) current.stack.splice(index, 1);
|
|
74
|
+
if (current.stack.length === 0 && current.listener && typeof document !== 'undefined') {
|
|
75
|
+
document.documentElement.removeEventListener('keydown', current.listener);
|
|
76
|
+
current.listener = null;
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/** Whether an anchored surface is open and will take the next Escape. */
|
|
82
|
+
export function hasOpenFloatingSurface() {
|
|
83
|
+
return registry().stack.length > 0;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=escape-stack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["registry","globalThis","__oxy_so_bloom_floating_escape__","stack","listener","onKeyDown","event","key","top","length","stopPropagation","dismiss","pushFloatingEscape","reg","entry","push","document","documentElement","addEventListener","current","index","indexOf","splice","removeEventListener","hasOpenFloatingSurface"],"sourceRoot":"../../../src","sources":["floating/escape-stack.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAgBA,SAASA,QAAQA,CAAA,EAAmB;EAClCC,UAAU,CAACC,gCAAgC,KAAK;IAAEC,KAAK,EAAE,EAAE;IAAEC,QAAQ,EAAE;EAAK,CAAC;EAC7E,OAAOH,UAAU,CAACC,gCAAgC;AACpD;AAEA,SAASG,SAASA,CAACC,KAAoB,EAAQ;EAC7C,IAAIA,KAAK,CAACC,GAAG,KAAK,QAAQ,EAAE;EAC5B,MAAMJ,KAAK,GAAGH,QAAQ,CAAC,CAAC,CAACG,KAAK;EAC9B,MAAMK,GAAG,GAAGL,KAAK,CAACA,KAAK,CAACM,MAAM,GAAG,CAAC,CAAC;EACnC,IAAI,CAACD,GAAG,EAAE;EACVF,KAAK,CAACI,eAAe,CAAC,CAAC;EACvBF,GAAG,CAACG,OAAO,CAAC,CAAC;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAACD,OAAmB,EAAc;EAClE,MAAME,GAAG,GAAGb,QAAQ,CAAC,CAAC;EACtB,MAAMc,KAAkB,GAAG;IAAEH;EAAQ,CAAC;EACtCE,GAAG,CAACV,KAAK,CAACY,IAAI,CAACD,KAAK,CAAC;EACrB,IAAI,CAACD,GAAG,CAACT,QAAQ,IAAI,OAAOY,QAAQ,KAAK,WAAW,EAAE;IACpDH,GAAG,CAACT,QAAQ,GAAGC,SAAS;IACxBW,QAAQ,CAACC,eAAe,CAACC,gBAAgB,CAAC,SAAS,EAAEb,SAAS,CAAC;EACjE;EACA,OAAO,MAAM;IACX,MAAMc,OAAO,GAAGnB,QAAQ,CAAC,CAAC;IAC1B,MAAMoB,KAAK,GAAGD,OAAO,CAAChB,KAAK,CAACkB,OAAO,CAACP,KAAK,CAAC;IAC1C,IAAIM,KAAK,IAAI,CAAC,EAAED,OAAO,CAAChB,KAAK,CAACmB,MAAM,CAACF,KAAK,EAAE,CAAC,CAAC;IAC9C,IAAID,OAAO,CAAChB,KAAK,CAACM,MAAM,KAAK,CAAC,IAAIU,OAAO,CAACf,QAAQ,IAAI,OAAOY,QAAQ,KAAK,WAAW,EAAE;MACrFA,QAAQ,CAACC,eAAe,CAACM,mBAAmB,CAAC,SAAS,EAAEJ,OAAO,CAACf,QAAQ,CAAC;MACzEe,OAAO,CAACf,QAAQ,GAAG,IAAI;IACzB;EACF,CAAC;AACH;;AAEA;AACA,OAAO,SAASoB,sBAAsBA,CAAA,EAAY;EAChD,OAAOxB,QAAQ,CAAC,CAAC,CAACG,KAAK,CAACM,MAAM,GAAG,CAAC;AACpC","ignoreList":[]}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The keyboard half of the ARIA menu-button pattern for the anchored menus —
|
|
5
|
+
* `DropdownMenu`, `ContextMenu`, `Menubar` and their flyout sub-menus — on WEB.
|
|
6
|
+
*
|
|
7
|
+
* What shipped: the trigger opened the menu on Enter/Space (it is a real
|
|
8
|
+
* `<button>`) and focus STAYED on it. The rows are portaled to the end of
|
|
9
|
+
* `<body>`, so the arrow keys had nothing to move, Tab walked on through the
|
|
10
|
+
* page BEHIND the open menu, and a keyboard user could open a menu and choose
|
|
11
|
+
* nothing. The markup was right throughout (`role="menu"`, `menuitem`,
|
|
12
|
+
* `aria-checked`), which is why nothing flagged it.
|
|
13
|
+
*
|
|
14
|
+
* The contract now:
|
|
15
|
+
*
|
|
16
|
+
* - Opening from the keyboard moves focus INTO the menu: Enter, Space and
|
|
17
|
+
* ArrowDown land on the first enabled row, ArrowUp on the last. A pointer
|
|
18
|
+
* open leaves focus where the pointer put it; an arrow on the trigger of an
|
|
19
|
+
* already-open menu then moves it in.
|
|
20
|
+
* - In the menu: ArrowDown/ArrowUp move between enabled rows and WRAP;
|
|
21
|
+
* Home/End jump to the ends; Enter and Space activate the row — a checkbox
|
|
22
|
+
* row toggles, a radio row selects, and a row's `keepOpen` still decides
|
|
23
|
+
* whether the menu closes. react-native-web presses a `menuitem`, `checkbox`
|
|
24
|
+
* or `radio` on Enter only (`PressResponder.isValidKeyPress` limits Space to
|
|
25
|
+
* `role="button"`), so Space is supplied here.
|
|
26
|
+
* - Tab closes the menu and returns focus to the trigger — a menu is not in
|
|
27
|
+
* the page's tab sequence. Escape closes the innermost surface
|
|
28
|
+
* (`escape-stack.ts`) and focus returns the same way.
|
|
29
|
+
* - The sub-menu keys stay `menu-sub-flyout.tsx`'s: → on a sub trigger opens
|
|
30
|
+
* the flyout and focuses its first row, ← inside it closes it and refocuses
|
|
31
|
+
* the trigger row.
|
|
32
|
+
*
|
|
33
|
+
* DOM listeners rather than props, like the sub-menu's: a row is
|
|
34
|
+
* `shared.tsx`'s `MenuRowShell`, the trigger may be the caller's own element
|
|
35
|
+
* under `asChild`, and the order of rows is whatever the caller rendered —
|
|
36
|
+
* the DOM already holds all of it. Every entry point is inert without a DOM
|
|
37
|
+
* node, so native (the menu is a bottom sheet there) is untouched.
|
|
38
|
+
*/
|
|
39
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
40
|
+
import { isSpaceKey, rovingItems, rovingMove, rovingTarget } from "../hooks/roving-focus.js";
|
|
41
|
+
import { MENU_MOTION_DURATION } from "./constants.js";
|
|
42
|
+
|
|
43
|
+
/** Every role a menu ROW can carry — the rows a pointer or a key can land on. */
|
|
44
|
+
export const MENU_ROW_SELECTOR = '[role="menuitem"], [role="menuitemcheckbox"], [role="menuitemradio"], [role="checkbox"], [role="radio"]';
|
|
45
|
+
|
|
46
|
+
/** A panel, so a nested panel's rows are never counted as this one's. */
|
|
47
|
+
const MENU_PANEL_SELECTOR = '[role="menu"]';
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Where focus should land the next time the menu's panel is ready — set by a
|
|
51
|
+
* key on the trigger, consumed by the panel. Owned by the family ROOT, which is
|
|
52
|
+
* the one component both the trigger and the content can reach.
|
|
53
|
+
*/
|
|
54
|
+
|
|
55
|
+
export function useMenuFocusIntent() {
|
|
56
|
+
const edge = useRef(null);
|
|
57
|
+
const [tick, setTick] = useState(0);
|
|
58
|
+
const request = useCallback(next => {
|
|
59
|
+
edge.current = next;
|
|
60
|
+
setTick(count => count + 1);
|
|
61
|
+
}, []);
|
|
62
|
+
return useMemo(() => ({
|
|
63
|
+
edge,
|
|
64
|
+
tick,
|
|
65
|
+
request
|
|
66
|
+
}), [tick, request]);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/** A react-native-web host ref, read as the DOM element it is on web. */
|
|
70
|
+
export function hostElement(node) {
|
|
71
|
+
if (!node || typeof node !== 'object') return null;
|
|
72
|
+
const scrollable = node.getScrollableNode?.();
|
|
73
|
+
const element = scrollable ?? node;
|
|
74
|
+
return typeof element.querySelector === 'function' && typeof element.addEventListener === 'function' ? element : null;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/** The trigger's own focusable control inside its anchor wrapper. */
|
|
78
|
+
export function triggerControl(anchor) {
|
|
79
|
+
const wrapper = hostElement(anchor);
|
|
80
|
+
return wrapper?.querySelector('[aria-haspopup]') ?? wrapper?.querySelector('[tabindex]') ?? null;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Hand focus back to the trigger when a surface closes with focus inside it.
|
|
85
|
+
*
|
|
86
|
+
* `isInside` says whether an element belongs to the surface. Checked AT the
|
|
87
|
+
* close, when the panel is still mounted for its exit animation, so a row that
|
|
88
|
+
* was just activated still counts. Focus that has already gone somewhere real
|
|
89
|
+
* — a dialog the row opened, a field the pointer clicked — is left alone. The
|
|
90
|
+
* one deferred case is focus left on a node the exit is about to UNMOUNT (the
|
|
91
|
+
* outside-press backdrop): once the exit has run and focus has fallen to
|
|
92
|
+
* `<body>`, it goes back to the trigger too.
|
|
93
|
+
*/
|
|
94
|
+
export function useReturnFocusOnClose(anchorRef, open, isInside) {
|
|
95
|
+
const wasOpen = useRef(open);
|
|
96
|
+
const isInsideRef = useRef(isInside);
|
|
97
|
+
isInsideRef.current = isInside;
|
|
98
|
+
useEffect(() => {
|
|
99
|
+
const closed = wasOpen.current && !open;
|
|
100
|
+
wasOpen.current = open;
|
|
101
|
+
if (!closed || typeof document === 'undefined') return undefined;
|
|
102
|
+
const active = document.activeElement;
|
|
103
|
+
if (!active || active === document.body || isInsideRef.current(active)) {
|
|
104
|
+
triggerControl(anchorRef.current)?.focus({
|
|
105
|
+
preventScroll: true
|
|
106
|
+
});
|
|
107
|
+
return undefined;
|
|
108
|
+
}
|
|
109
|
+
const timer = setTimeout(() => {
|
|
110
|
+
if (document.activeElement === document.body && !active.isConnected) {
|
|
111
|
+
triggerControl(anchorRef.current)?.focus({
|
|
112
|
+
preventScroll: true
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}, MENU_MOTION_DURATION + 50);
|
|
116
|
+
return () => clearTimeout(timer);
|
|
117
|
+
}, [open, anchorRef]);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/** Whether an element is one of the menu surfaces — any panel, any depth. */
|
|
121
|
+
export function isInMenuSurface(element) {
|
|
122
|
+
return element.closest(MENU_PANEL_SELECTOR) !== null;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* The menu trigger's keys, on its anchor wrapper: Enter/Space mark a closed
|
|
127
|
+
* menu's open as a keyboard one (the press itself is the button's own);
|
|
128
|
+
* ArrowDown/ArrowUp open it — or, open already, move focus in — landing on the
|
|
129
|
+
* first/last row. Plus the focus return on close.
|
|
130
|
+
*/
|
|
131
|
+
export function useMenuTriggerKeys(anchorRef, {
|
|
132
|
+
open,
|
|
133
|
+
setOpen,
|
|
134
|
+
disabled,
|
|
135
|
+
intent
|
|
136
|
+
}) {
|
|
137
|
+
const edge = intent?.edge;
|
|
138
|
+
const request = intent?.request;
|
|
139
|
+
useEffect(() => {
|
|
140
|
+
const wrapper = hostElement(anchorRef.current);
|
|
141
|
+
if (!wrapper || disabled || !edge || !request) return undefined;
|
|
142
|
+
const onKeyDown = event => {
|
|
143
|
+
if (event.defaultPrevented) return;
|
|
144
|
+
if (event.key === 'Enter' || isSpaceKey(event.key)) {
|
|
145
|
+
if (!open) edge.current = 'first';
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
if (event.key !== 'ArrowDown' && event.key !== 'ArrowUp') return;
|
|
149
|
+
event.preventDefault();
|
|
150
|
+
if (!open) setOpen(true);
|
|
151
|
+
request(event.key === 'ArrowDown' ? 'first' : 'last');
|
|
152
|
+
};
|
|
153
|
+
wrapper.addEventListener('keydown', onKeyDown);
|
|
154
|
+
return () => wrapper.removeEventListener('keydown', onKeyDown);
|
|
155
|
+
}, [anchorRef, disabled, open, setOpen, edge, request]);
|
|
156
|
+
|
|
157
|
+
// A pointer open must not inherit a stale keyboard intent from a key that
|
|
158
|
+
// did not open anything (a disabled row, a prevented press).
|
|
159
|
+
useEffect(() => {
|
|
160
|
+
if (!open && edge) edge.current = null;
|
|
161
|
+
}, [open, edge]);
|
|
162
|
+
useReturnFocusOnClose(anchorRef, open, isInMenuSurface);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/** The enabled rows that belong to `panel`, in document order. */
|
|
166
|
+
function menuRows(panel) {
|
|
167
|
+
// The owner is the nearest `role="menu"` — the panel itself, or (for a sub
|
|
168
|
+
// panel, whose rows sit in an inner scroller) the panel around it.
|
|
169
|
+
const owner = panel.closest(MENU_PANEL_SELECTOR) ?? panel;
|
|
170
|
+
return rovingItems(owner, MENU_ROW_SELECTOR, {
|
|
171
|
+
owner: MENU_PANEL_SELECTOR
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* The keys inside an open menu panel: arrows (wrapping), Home/End, Space, Tab.
|
|
177
|
+
* `intent`, when given, lands focus on the first/last row as the panel opens
|
|
178
|
+
* from the keyboard (a sub-panel focuses its own first row and passes none).
|
|
179
|
+
*/
|
|
180
|
+
export function useMenuPanelKeys(panel, {
|
|
181
|
+
open,
|
|
182
|
+
onTab,
|
|
183
|
+
intent
|
|
184
|
+
}) {
|
|
185
|
+
const onTabRef = useRef(onTab);
|
|
186
|
+
onTabRef.current = onTab;
|
|
187
|
+
const edge = intent?.edge;
|
|
188
|
+
const tick = intent?.tick;
|
|
189
|
+
useEffect(() => {
|
|
190
|
+
if (!open || !panel || !edge?.current) return;
|
|
191
|
+
const rows = menuRows(panel);
|
|
192
|
+
const target = edge.current === 'last' ? rows[rows.length - 1] : rows[0];
|
|
193
|
+
edge.current = null;
|
|
194
|
+
target?.focus({
|
|
195
|
+
preventScroll: true
|
|
196
|
+
});
|
|
197
|
+
}, [open, panel, edge, tick]);
|
|
198
|
+
useEffect(() => {
|
|
199
|
+
if (!panel || !open) return undefined;
|
|
200
|
+
const onKeyDown = event => {
|
|
201
|
+
if (event.defaultPrevented) return;
|
|
202
|
+
const active = typeof document !== 'undefined' ? document.activeElement : null;
|
|
203
|
+
const current = active?.closest?.(MENU_ROW_SELECTOR) ?? null;
|
|
204
|
+
if (event.key === 'Tab') {
|
|
205
|
+
event.preventDefault();
|
|
206
|
+
onTabRef.current();
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
if (isSpaceKey(event.key)) {
|
|
210
|
+
if (!current || current.getAttribute('aria-disabled') === 'true') return;
|
|
211
|
+
event.preventDefault();
|
|
212
|
+
current.click();
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
const move = rovingMove(event.key, {
|
|
216
|
+
orientation: 'vertical',
|
|
217
|
+
homeEnd: true
|
|
218
|
+
});
|
|
219
|
+
if (move === null) return;
|
|
220
|
+
event.preventDefault();
|
|
221
|
+
rovingTarget(menuRows(panel), current, move, true)?.focus();
|
|
222
|
+
};
|
|
223
|
+
panel.addEventListener('keydown', onKeyDown);
|
|
224
|
+
return () => panel.removeEventListener('keydown', onKeyDown);
|
|
225
|
+
}, [panel, open]);
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=menu-keyboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","isSpaceKey","rovingItems","rovingMove","rovingTarget","MENU_MOTION_DURATION","MENU_ROW_SELECTOR","MENU_PANEL_SELECTOR","useMenuFocusIntent","edge","tick","setTick","request","next","current","count","hostElement","node","scrollable","getScrollableNode","element","querySelector","addEventListener","triggerControl","anchor","wrapper","useReturnFocusOnClose","anchorRef","open","isInside","wasOpen","isInsideRef","closed","document","undefined","active","activeElement","body","focus","preventScroll","timer","setTimeout","isConnected","clearTimeout","isInMenuSurface","closest","useMenuTriggerKeys","setOpen","disabled","intent","onKeyDown","event","defaultPrevented","key","preventDefault","removeEventListener","menuRows","panel","owner","useMenuPanelKeys","onTab","onTabRef","rows","target","length","getAttribute","click","move","orientation","homeEnd"],"sourceRoot":"../../../src","sources":["floating/menu-keyboard.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -40,7 +40,10 @@ import { RiArrowRightSLine as ChevronRightIcon } from "../icons/remix/RiArrowRig
|
|
|
40
40
|
import { StyledView } from "../styles/styled-primitives.js";
|
|
41
41
|
import { useMenuPalette } from "./menu-palette.js";
|
|
42
42
|
import { MENU_SUB_PANEL_CLASS, MENU_SUB_SCROLL_CLASS, MENU_SUB_SIDE_OFFSET, ROW_ICON_SIZE } from "./constants.js";
|
|
43
|
+
import { useMenuSurface } from "./context.js";
|
|
44
|
+
import { pushFloatingEscape } from "./escape-stack.js";
|
|
43
45
|
import { FloatingPanel } from "./FloatingPanel.js";
|
|
46
|
+
import { hostElement, MENU_ROW_SELECTOR, useMenuPanelKeys } from "./menu-keyboard.js";
|
|
44
47
|
import { cx, MenuRowChevron, MenuRowShell, splitChildren, SUB_TRIGGER_CLASS } from "./shared.js";
|
|
45
48
|
import { useFrameThrottle } from "./use-frame-throttle.js";
|
|
46
49
|
|
|
@@ -91,7 +94,7 @@ function isHoverPointer(event) {
|
|
|
91
94
|
}
|
|
92
95
|
|
|
93
96
|
/** Every role a menu ROW can carry — the rows a pointer can actually land on. */
|
|
94
|
-
const MENU_ITEM_SELECTOR =
|
|
97
|
+
const MENU_ITEM_SELECTOR = MENU_ROW_SELECTOR;
|
|
95
98
|
|
|
96
99
|
/**
|
|
97
100
|
* Did the pointer leave for another ROW, rather than for the gap this sub's
|
|
@@ -461,22 +464,31 @@ export function createFlyoutMenuSub(prefix) {
|
|
|
461
464
|
};
|
|
462
465
|
}, [node, sub]);
|
|
463
466
|
|
|
464
|
-
// Escape
|
|
465
|
-
// `
|
|
466
|
-
//
|
|
467
|
-
//
|
|
468
|
-
//
|
|
469
|
-
//
|
|
467
|
+
// Escape closes this flyout and leaves the menu open. The flyout's panel is
|
|
468
|
+
// `dismissible={false}` (a press outside it is the parent's business), so it
|
|
469
|
+
// takes its own entry on the escape stack — pushed after the parent's, so it
|
|
470
|
+
// is the one Escape reaches first (`escape-stack.ts`). This used to be a
|
|
471
|
+
// document CAPTURE listener with `stopImmediatePropagation`, which also took
|
|
472
|
+
// Escape away from any field inside the flyout.
|
|
473
|
+
const {
|
|
474
|
+
open: subOpen,
|
|
475
|
+
closeAndRefocus
|
|
476
|
+
} = sub;
|
|
477
|
+
const closeRef = useRef(closeAndRefocus);
|
|
478
|
+
closeRef.current = closeAndRefocus;
|
|
470
479
|
useEffect(() => {
|
|
471
|
-
if (!
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
+
if (!subOpen || typeof document === 'undefined') return undefined;
|
|
481
|
+
return pushFloatingEscape(() => closeRef.current());
|
|
482
|
+
}, [subOpen]);
|
|
483
|
+
|
|
484
|
+
// Arrows (wrapping), Home/End, Space and Tab among the flyout's own rows —
|
|
485
|
+
// the same keys as the menu it flew out of (`menu-keyboard.ts`). Tab closes
|
|
486
|
+
// the WHOLE menu, not just this flyout: the menu is not in the tab order.
|
|
487
|
+
const surface = useMenuSurface();
|
|
488
|
+
useMenuPanelKeys(hostElement(node), {
|
|
489
|
+
open: sub.open,
|
|
490
|
+
onTab: surface.close
|
|
491
|
+
});
|
|
480
492
|
|
|
481
493
|
// Move focus onto the panel once it has been placed, so Right genuinely
|
|
482
494
|
// ENTERS the submenu rather than only opening it.
|