@flanksource/clicky-ui 0.3.24 → 0.3.26
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/NOTICE.md +1 -0
- package/dist/ai.cjs +4 -0
- package/dist/ai.cjs.map +1 -1
- package/dist/ai.js +6 -2
- package/dist/ai.js.map +1 -1
- package/dist/chat.cjs +8 -0
- package/dist/chat.cjs.map +1 -1
- package/dist/chat.js +9 -1
- package/dist/chat.js.map +1 -1
- package/dist/comments/CommentCard.cjs +89 -14
- package/dist/comments/CommentCard.cjs.map +1 -1
- package/dist/comments/CommentCard.d.ts.map +1 -1
- package/dist/comments/CommentCard.js +90 -15
- package/dist/comments/CommentCard.js.map +1 -1
- package/dist/comments/CommentComposer.cjs +25 -2
- package/dist/comments/CommentComposer.cjs.map +1 -1
- package/dist/comments/CommentComposer.d.ts.map +1 -1
- package/dist/comments/CommentComposer.js +25 -2
- package/dist/comments/CommentComposer.js.map +1 -1
- package/dist/comments/CommentProvider.cjs +21 -14
- package/dist/comments/CommentProvider.cjs.map +1 -1
- package/dist/comments/CommentProvider.d.ts +1 -1
- package/dist/comments/CommentProvider.d.ts.map +1 -1
- package/dist/comments/CommentProvider.js +21 -14
- package/dist/comments/CommentProvider.js.map +1 -1
- package/dist/comments/CommentSidePanel.cjs +1 -1
- package/dist/comments/CommentSidePanel.cjs.map +1 -1
- package/dist/comments/CommentSidePanel.js +1 -1
- package/dist/comments/CommentSidePanel.js.map +1 -1
- package/dist/comments/comment-types.cjs.map +1 -1
- package/dist/comments/comment-types.d.ts +6 -0
- package/dist/comments/comment-types.d.ts.map +1 -1
- package/dist/comments/comment-types.js.map +1 -1
- package/dist/components/DimensionField.cjs +56 -0
- package/dist/components/DimensionField.cjs.map +1 -0
- package/dist/components/DimensionField.d.ts +17 -0
- package/dist/components/DimensionField.d.ts.map +1 -0
- package/dist/components/DimensionField.js +56 -0
- package/dist/components/DimensionField.js.map +1 -0
- package/dist/components.cjs +4 -0
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.ts +2 -0
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +4 -0
- package/dist/components.js.map +1 -1
- package/dist/data/Clicky.cjs +4 -5
- package/dist/data/Clicky.cjs.map +1 -1
- package/dist/data/Clicky.d.ts.map +1 -1
- package/dist/data/Clicky.js +4 -5
- package/dist/data/Clicky.js.map +1 -1
- package/dist/data/TaskExecDetails.cjs +8 -3
- package/dist/data/TaskExecDetails.cjs.map +1 -1
- package/dist/data/TaskExecDetails.d.ts +4 -0
- package/dist/data/TaskExecDetails.d.ts.map +1 -1
- package/dist/data/TaskExecDetails.js +9 -4
- package/dist/data/TaskExecDetails.js.map +1 -1
- package/dist/data/TaskManagerButton.cjs +101 -7
- package/dist/data/TaskManagerButton.cjs.map +1 -1
- package/dist/data/TaskManagerButton.d.ts +6 -1
- package/dist/data/TaskManagerButton.d.ts.map +1 -1
- package/dist/data/TaskManagerButton.js +103 -9
- package/dist/data/TaskManagerButton.js.map +1 -1
- package/dist/data/TaskProcessDetails.cjs +2 -0
- package/dist/data/TaskProcessDetails.cjs.map +1 -1
- package/dist/data/TaskProcessDetails.d.ts.map +1 -1
- package/dist/data/TaskProcessDetails.js +2 -0
- package/dist/data/TaskProcessDetails.js.map +1 -1
- package/dist/data/TaskProgress.cjs +14 -4
- package/dist/data/TaskProgress.cjs.map +1 -1
- package/dist/data/TaskProgress.js +14 -4
- package/dist/data/TaskProgress.js.map +1 -1
- package/dist/data/TaskSnapshot.cjs.map +1 -1
- package/dist/data/TaskSnapshot.d.ts +1 -0
- package/dist/data/TaskSnapshot.d.ts.map +1 -1
- package/dist/data/TaskSnapshot.js.map +1 -1
- package/dist/data/ai/ChatWindow.cjs +18 -23
- package/dist/data/ai/ChatWindow.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.d.ts +1 -1
- package/dist/data/ai/ChatWindow.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.js +19 -24
- package/dist/data/ai/ChatWindow.js.map +1 -1
- package/dist/data/ai/ChatWindow.preferences.cjs +12 -21
- package/dist/data/ai/ChatWindow.preferences.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.preferences.d.ts +3 -2
- package/dist/data/ai/ChatWindow.preferences.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.preferences.js +12 -21
- package/dist/data/ai/ChatWindow.preferences.js.map +1 -1
- package/dist/data/ai/ChatWindow.tool-catalog.cjs +21 -38
- package/dist/data/ai/ChatWindow.tool-catalog.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.tool-catalog.d.ts +5 -5
- package/dist/data/ai/ChatWindow.tool-catalog.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.tool-catalog.js +21 -38
- package/dist/data/ai/ChatWindow.tool-catalog.js.map +1 -1
- package/dist/data/ai/ChatWindow.types.d.ts +2 -2
- package/dist/data/ai/ChatWindow.types.d.ts.map +1 -1
- package/dist/data/ai/ChatWindowManager.cjs +2 -2
- package/dist/data/ai/ChatWindowManager.cjs.map +1 -1
- package/dist/data/ai/ChatWindowManager.js +2 -2
- package/dist/data/ai/ChatWindowManager.js.map +1 -1
- package/dist/data/ai/ChatWindowRequestBody.cjs +4 -2
- package/dist/data/ai/ChatWindowRequestBody.cjs.map +1 -1
- package/dist/data/ai/ChatWindowRequestBody.d.ts +15 -3
- package/dist/data/ai/ChatWindowRequestBody.d.ts.map +1 -1
- package/dist/data/ai/ChatWindowRequestBody.js +4 -2
- package/dist/data/ai/ChatWindowRequestBody.js.map +1 -1
- package/dist/data/ai/ToolPreferences.cjs +5 -5
- package/dist/data/ai/ToolPreferences.cjs.map +1 -1
- package/dist/data/ai/ToolPreferences.d.ts +6 -5
- package/dist/data/ai/ToolPreferences.d.ts.map +1 -1
- package/dist/data/ai/ToolPreferences.js +5 -5
- package/dist/data/ai/ToolPreferences.js.map +1 -1
- package/dist/data/ai/ToolPreferences.model.cjs +61 -37
- package/dist/data/ai/ToolPreferences.model.cjs.map +1 -1
- package/dist/data/ai/ToolPreferences.model.d.ts +32 -13
- package/dist/data/ai/ToolPreferences.model.d.ts.map +1 -1
- package/dist/data/ai/ToolPreferences.model.js +62 -38
- package/dist/data/ai/ToolPreferences.model.js.map +1 -1
- package/dist/data/ai/ToolPreferencesList.cjs +17 -20
- package/dist/data/ai/ToolPreferencesList.cjs.map +1 -1
- package/dist/data/ai/ToolPreferencesList.d.ts +16 -7
- package/dist/data/ai/ToolPreferencesList.d.ts.map +1 -1
- package/dist/data/ai/ToolPreferencesList.js +18 -21
- package/dist/data/ai/ToolPreferencesList.js.map +1 -1
- package/dist/data/ai/chat-window-context.cjs +1 -1
- package/dist/data/ai/chat-window-context.cjs.map +1 -1
- package/dist/data/ai/chat-window-context.d.ts +7 -7
- package/dist/data/ai/chat-window-context.d.ts.map +1 -1
- package/dist/data/ai/chat-window-context.js +1 -1
- package/dist/data/ai/chat-window-context.js.map +1 -1
- package/dist/data/ai/index.d.ts +3 -1
- package/dist/data/ai/index.d.ts.map +1 -1
- package/dist/data/chat/Chat.cjs +8 -4
- package/dist/data/chat/Chat.cjs.map +1 -1
- package/dist/data/chat/Chat.d.ts.map +1 -1
- package/dist/data/chat/Chat.js +8 -4
- package/dist/data/chat/Chat.js.map +1 -1
- package/dist/data/chat/ChatRuntimeToolbar.cjs +11 -7
- package/dist/data/chat/ChatRuntimeToolbar.cjs.map +1 -1
- package/dist/data/chat/ChatRuntimeToolbar.d.ts.map +1 -1
- package/dist/data/chat/ChatRuntimeToolbar.js +11 -7
- package/dist/data/chat/ChatRuntimeToolbar.js.map +1 -1
- package/dist/data/chat/ContextMeter.cjs +64 -27
- package/dist/data/chat/ContextMeter.cjs.map +1 -1
- package/dist/data/chat/ContextMeter.d.ts +11 -4
- package/dist/data/chat/ContextMeter.d.ts.map +1 -1
- package/dist/data/chat/ContextMeter.js +64 -27
- package/dist/data/chat/ContextMeter.js.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.cjs +2 -1
- package/dist/data/chat/clickyOperationsToTools.cjs.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.d.ts.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.js +2 -1
- package/dist/data/chat/clickyOperationsToTools.js.map +1 -1
- package/dist/data/chat/index.d.ts +2 -1
- package/dist/data/chat/index.d.ts.map +1 -1
- package/dist/data/chat/tool-policy.cjs +132 -0
- package/dist/data/chat/tool-policy.cjs.map +1 -0
- package/dist/data/chat/tool-policy.d.ts +81 -0
- package/dist/data/chat/tool-policy.d.ts.map +1 -0
- package/dist/data/chat/tool-policy.js +132 -0
- package/dist/data/chat/tool-policy.js.map +1 -0
- package/dist/data/chat/types.cjs +20 -0
- package/dist/data/chat/types.cjs.map +1 -1
- package/dist/data/chat/types.d.ts +41 -2
- package/dist/data/chat/types.d.ts.map +1 -1
- package/dist/data/chat/types.js +20 -0
- package/dist/data/chat/types.js.map +1 -1
- package/dist/data/chat/usage-snapshot.cjs +10 -1
- package/dist/data/chat/usage-snapshot.cjs.map +1 -1
- package/dist/data/chat/usage-snapshot.d.ts.map +1 -1
- package/dist/data/chat/usage-snapshot.js +10 -1
- package/dist/data/chat/usage-snapshot.js.map +1 -1
- package/dist/data/debugConsoleSignal.cjs +64 -0
- package/dist/data/debugConsoleSignal.cjs.map +1 -0
- package/dist/data/debugConsoleSignal.d.ts +83 -0
- package/dist/data/debugConsoleSignal.d.ts.map +1 -0
- package/dist/data/debugConsoleSignal.js +64 -0
- package/dist/data/debugConsoleSignal.js.map +1 -0
- package/dist/data/har/HarPanel.cjs +20 -14
- package/dist/data/har/HarPanel.cjs.map +1 -1
- package/dist/data/har/HarPanel.d.ts.map +1 -1
- package/dist/data/har/HarPanel.js +20 -14
- package/dist/data/har/HarPanel.js.map +1 -1
- package/dist/data/har/types.d.ts +18 -0
- package/dist/data/har/types.d.ts.map +1 -1
- package/dist/data/query-browser/QueryBrowser.cjs +4 -42
- package/dist/data/query-browser/QueryBrowser.cjs.map +1 -1
- package/dist/data/query-browser/QueryBrowser.d.ts.map +1 -1
- package/dist/data/query-browser/QueryBrowser.js +5 -43
- package/dist/data/query-browser/QueryBrowser.js.map +1 -1
- package/dist/data/query-browser/QueryBrowser.types.cjs.map +1 -1
- package/dist/data/query-browser/QueryBrowser.types.d.ts +0 -1
- package/dist/data/query-browser/QueryBrowser.types.d.ts.map +1 -1
- package/dist/data/query-browser/QueryBrowser.types.js.map +1 -1
- package/dist/data/useDebugAction.cjs +29 -0
- package/dist/data/useDebugAction.cjs.map +1 -0
- package/dist/data/useDebugAction.d.ts +16 -0
- package/dist/data/useDebugAction.d.ts.map +1 -0
- package/dist/data/useDebugAction.js +29 -0
- package/dist/data/useDebugAction.js.map +1 -0
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.js +3 -3
- package/dist/data.cjs +16 -8
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +3 -2
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +16 -8
- package/dist/devtools/DebugConsole.cjs +138 -0
- package/dist/devtools/DebugConsole.cjs.map +1 -0
- package/dist/devtools/DebugConsole.d.ts +23 -0
- package/dist/devtools/DebugConsole.d.ts.map +1 -0
- package/dist/devtools/DebugConsole.js +138 -0
- package/dist/devtools/DebugConsole.js.map +1 -0
- package/dist/devtools/DebugConsoleButton.cjs +59 -0
- package/dist/devtools/DebugConsoleButton.cjs.map +1 -0
- package/dist/devtools/DebugConsoleButton.d.ts +20 -0
- package/dist/devtools/DebugConsoleButton.d.ts.map +1 -0
- package/dist/devtools/DebugConsoleButton.js +59 -0
- package/dist/devtools/DebugConsoleButton.js.map +1 -0
- package/dist/devtools/DebugConsoleDock.cjs +112 -0
- package/dist/devtools/DebugConsoleDock.cjs.map +1 -0
- package/dist/devtools/DebugConsoleDock.d.ts +26 -0
- package/dist/devtools/DebugConsoleDock.d.ts.map +1 -0
- package/dist/devtools/DebugConsoleDock.js +112 -0
- package/dist/devtools/DebugConsoleDock.js.map +1 -0
- package/dist/devtools/ExecutionDetail.cjs +135 -0
- package/dist/devtools/ExecutionDetail.cjs.map +1 -0
- package/dist/devtools/ExecutionDetail.d.ts +19 -0
- package/dist/devtools/ExecutionDetail.d.ts.map +1 -0
- package/dist/devtools/ExecutionDetail.js +135 -0
- package/dist/devtools/ExecutionDetail.js.map +1 -0
- package/dist/devtools/debugClient.cjs +172 -0
- package/dist/devtools/debugClient.cjs.map +1 -0
- package/dist/devtools/debugClient.d.ts +98 -0
- package/dist/devtools/debugClient.d.ts.map +1 -0
- package/dist/devtools/debugClient.js +172 -0
- package/dist/devtools/debugClient.js.map +1 -0
- package/dist/devtools/debugStore.cjs +115 -0
- package/dist/devtools/debugStore.cjs.map +1 -0
- package/dist/devtools/debugStore.d.ts +83 -0
- package/dist/devtools/debugStore.d.ts.map +1 -0
- package/dist/devtools/debugStore.js +115 -0
- package/dist/devtools/debugStore.js.map +1 -0
- package/dist/devtools/dockState.cjs +51 -0
- package/dist/devtools/dockState.cjs.map +1 -0
- package/dist/devtools/dockState.d.ts +31 -0
- package/dist/devtools/dockState.d.ts.map +1 -0
- package/dist/devtools/dockState.js +51 -0
- package/dist/devtools/dockState.js.map +1 -0
- package/dist/devtools/tabs/ConsoleTab.cjs +36 -0
- package/dist/devtools/tabs/ConsoleTab.cjs.map +1 -0
- package/dist/devtools/tabs/ConsoleTab.d.ts +19 -0
- package/dist/devtools/tabs/ConsoleTab.d.ts.map +1 -0
- package/dist/devtools/tabs/ConsoleTab.js +36 -0
- package/dist/devtools/tabs/ConsoleTab.js.map +1 -0
- package/dist/devtools/tabs/InspectionCaches.cjs +150 -0
- package/dist/devtools/tabs/InspectionCaches.cjs.map +1 -0
- package/dist/devtools/tabs/InspectionCaches.d.ts +23 -0
- package/dist/devtools/tabs/InspectionCaches.d.ts.map +1 -0
- package/dist/devtools/tabs/InspectionCaches.js +150 -0
- package/dist/devtools/tabs/InspectionCaches.js.map +1 -0
- package/dist/devtools/tabs/InspectionTab.cjs +316 -0
- package/dist/devtools/tabs/InspectionTab.cjs.map +1 -0
- package/dist/devtools/tabs/InspectionTab.d.ts +27 -0
- package/dist/devtools/tabs/InspectionTab.d.ts.map +1 -0
- package/dist/devtools/tabs/InspectionTab.js +316 -0
- package/dist/devtools/tabs/InspectionTab.js.map +1 -0
- package/dist/devtools/tabs/NetworkTab.cjs +91 -0
- package/dist/devtools/tabs/NetworkTab.cjs.map +1 -0
- package/dist/devtools/tabs/NetworkTab.d.ts +20 -0
- package/dist/devtools/tabs/NetworkTab.d.ts.map +1 -0
- package/dist/devtools/tabs/NetworkTab.js +91 -0
- package/dist/devtools/tabs/NetworkTab.js.map +1 -0
- package/dist/devtools/tabs/QueriesTab.cjs +85 -0
- package/dist/devtools/tabs/QueriesTab.cjs.map +1 -0
- package/dist/devtools/tabs/QueriesTab.d.ts +24 -0
- package/dist/devtools/tabs/QueriesTab.d.ts.map +1 -0
- package/dist/devtools/tabs/QueriesTab.js +85 -0
- package/dist/devtools/tabs/QueriesTab.js.map +1 -0
- package/dist/devtools/types.cjs +26 -0
- package/dist/devtools/types.cjs.map +1 -0
- package/dist/devtools/types.d.ts +235 -0
- package/dist/devtools/types.d.ts.map +1 -0
- package/dist/devtools/types.js +26 -0
- package/dist/devtools/types.js.map +1 -0
- package/dist/devtools/useDebugStream.cjs +46 -0
- package/dist/devtools/useDebugStream.cjs.map +1 -0
- package/dist/devtools/useDebugStream.d.ts +23 -0
- package/dist/devtools/useDebugStream.d.ts.map +1 -0
- package/dist/devtools/useDebugStream.js +46 -0
- package/dist/devtools/useDebugStream.js.map +1 -0
- package/dist/devtools.cjs +51 -0
- package/dist/devtools.cjs.map +1 -0
- package/dist/devtools.d.ts +37 -0
- package/dist/devtools.d.ts.map +1 -0
- package/dist/devtools.js +51 -0
- package/dist/devtools.js.map +1 -0
- package/dist/icons/components/UiOpenScad.cjs +10 -0
- package/dist/icons/components/UiOpenScad.cjs.map +1 -0
- package/dist/icons/components/UiOpenScad.d.ts +9 -0
- package/dist/icons/components/UiOpenScad.d.ts.map +1 -0
- package/dist/icons/components/UiOpenScad.js +10 -0
- package/dist/icons/components/UiOpenScad.js.map +1 -0
- package/dist/icons/index.d.ts +1 -0
- package/dist/icons/index.d.ts.map +1 -1
- package/dist/icons/registry.cjs +2 -0
- package/dist/icons/registry.cjs.map +1 -1
- package/dist/icons/registry.d.ts.map +1 -1
- package/dist/icons/registry.js +2 -0
- package/dist/icons/registry.js.map +1 -1
- package/dist/icons.cjs +2 -0
- package/dist/icons.cjs.map +1 -1
- package/dist/icons.js +2 -0
- package/dist/icons.js.map +1 -1
- package/dist/index.cjs +20 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +20 -8
- package/dist/index.js.map +1 -1
- package/dist/layout/AppShell.cjs +15 -10
- package/dist/layout/AppShell.cjs.map +1 -1
- package/dist/layout/AppShell.d.ts +11 -0
- package/dist/layout/AppShell.d.ts.map +1 -1
- package/dist/layout/AppShell.js +15 -10
- package/dist/layout/AppShell.js.map +1 -1
- package/dist/layout/AppShell.nav.cjs +170 -49
- package/dist/layout/AppShell.nav.cjs.map +1 -1
- package/dist/layout/AppShell.nav.d.ts.map +1 -1
- package/dist/layout/AppShell.nav.js +170 -49
- package/dist/layout/AppShell.nav.js.map +1 -1
- package/dist/overlay/CellActions.cjs +18 -124
- package/dist/overlay/CellActions.cjs.map +1 -1
- package/dist/overlay/CellActions.d.ts +1 -1
- package/dist/overlay/CellActions.d.ts.map +1 -1
- package/dist/overlay/CellActions.js +18 -124
- package/dist/overlay/CellActions.js.map +1 -1
- package/dist/overlay/ContextMenu.cjs +144 -0
- package/dist/overlay/ContextMenu.cjs.map +1 -0
- package/dist/overlay/ContextMenu.d.ts +8 -0
- package/dist/overlay/ContextMenu.d.ts.map +1 -0
- package/dist/overlay/ContextMenu.js +144 -0
- package/dist/overlay/ContextMenu.js.map +1 -0
- package/dist/profiles/connections/connectionBrowserModel.cjs +14 -65
- package/dist/profiles/connections/connectionBrowserModel.cjs.map +1 -1
- package/dist/profiles/connections/connectionBrowserModel.d.ts +35 -35
- package/dist/profiles/connections/connectionBrowserModel.d.ts.map +1 -1
- package/dist/profiles/connections/connectionBrowserModel.js +14 -65
- package/dist/profiles/connections/connectionBrowserModel.js.map +1 -1
- package/dist/profiles/connections/connectionQueryWorkspace.cjs +29 -9
- package/dist/profiles/connections/connectionQueryWorkspace.cjs.map +1 -1
- package/dist/profiles/connections/connectionQueryWorkspace.d.ts +3 -2
- package/dist/profiles/connections/connectionQueryWorkspace.d.ts.map +1 -1
- package/dist/profiles/connections/connectionQueryWorkspace.js +30 -10
- package/dist/profiles/connections/connectionQueryWorkspace.js.map +1 -1
- package/dist/profiles/connections/connectionQueryWorkspaceModel.cjs +15 -0
- package/dist/profiles/connections/connectionQueryWorkspaceModel.cjs.map +1 -1
- package/dist/profiles/connections/connectionQueryWorkspaceModel.d.ts +22 -1
- package/dist/profiles/connections/connectionQueryWorkspaceModel.d.ts.map +1 -1
- package/dist/profiles/connections/connectionQueryWorkspaceModel.js +15 -0
- package/dist/profiles/connections/connectionQueryWorkspaceModel.js.map +1 -1
- package/dist/profiles/connections/index.d.ts +1 -0
- package/dist/profiles/connections/index.d.ts.map +1 -1
- package/dist/profiles/connections/inspectionStatus.cjs +44 -0
- package/dist/profiles/connections/inspectionStatus.cjs.map +1 -0
- package/dist/profiles/connections/inspectionStatus.d.ts +5 -0
- package/dist/profiles/connections/inspectionStatus.d.ts.map +1 -0
- package/dist/profiles/connections/inspectionStatus.js +44 -0
- package/dist/profiles/connections/inspectionStatus.js.map +1 -0
- package/dist/profiles/connections/useInspection.cjs +123 -0
- package/dist/profiles/connections/useInspection.cjs.map +1 -0
- package/dist/profiles/connections/useInspection.d.ts +35 -0
- package/dist/profiles/connections/useInspection.d.ts.map +1 -0
- package/dist/profiles/connections/useInspection.js +123 -0
- package/dist/profiles/connections/useInspection.js.map +1 -0
- package/dist/profiles/editor/profileBuilderWorkspace.cjs +55 -23
- package/dist/profiles/editor/profileBuilderWorkspace.cjs.map +1 -1
- package/dist/profiles/editor/profileBuilderWorkspace.d.ts.map +1 -1
- package/dist/profiles/editor/profileBuilderWorkspace.js +56 -24
- package/dist/profiles/editor/profileBuilderWorkspace.js.map +1 -1
- package/dist/profiles/elasticsearch/esQueryBuilder.cjs +12 -3
- package/dist/profiles/elasticsearch/esQueryBuilder.cjs.map +1 -1
- package/dist/profiles/elasticsearch/esQueryBuilder.d.ts +2 -2
- package/dist/profiles/elasticsearch/esQueryBuilder.d.ts.map +1 -1
- package/dist/profiles/elasticsearch/esQueryBuilder.js +12 -3
- package/dist/profiles/elasticsearch/esQueryBuilder.js.map +1 -1
- package/dist/profiles/fields/profileFieldEditor.cjs +137 -22
- package/dist/profiles/fields/profileFieldEditor.cjs.map +1 -1
- package/dist/profiles/fields/profileFieldEditor.d.ts.map +1 -1
- package/dist/profiles/fields/profileFieldEditor.js +137 -22
- package/dist/profiles/fields/profileFieldEditor.js.map +1 -1
- package/dist/profiles/fields/profileFieldFilterEditor.cjs +171 -82
- package/dist/profiles/fields/profileFieldFilterEditor.cjs.map +1 -1
- package/dist/profiles/fields/profileFieldFilterEditor.d.ts +0 -9
- package/dist/profiles/fields/profileFieldFilterEditor.d.ts.map +1 -1
- package/dist/profiles/fields/profileFieldFilterEditor.js +174 -85
- package/dist/profiles/fields/profileFieldFilterEditor.js.map +1 -1
- package/dist/profiles/fields/profileFieldIcons.cjs +6 -3
- package/dist/profiles/fields/profileFieldIcons.cjs.map +1 -1
- package/dist/profiles/fields/profileFieldIcons.js +6 -3
- package/dist/profiles/fields/profileFieldIcons.js.map +1 -1
- package/dist/profiles/query/profileSampleFilterLookup.cjs +34 -0
- package/dist/profiles/query/profileSampleFilterLookup.cjs.map +1 -0
- package/dist/profiles/query/profileSampleFilterLookup.d.ts +12 -0
- package/dist/profiles/query/profileSampleFilterLookup.d.ts.map +1 -0
- package/dist/profiles/query/profileSampleFilterLookup.js +34 -0
- package/dist/profiles/query/profileSampleFilterLookup.js.map +1 -0
- package/dist/profiles/query/profileSamplePayload.cjs +6 -4
- package/dist/profiles/query/profileSamplePayload.cjs.map +1 -1
- package/dist/profiles/query/profileSamplePayload.d.ts +11 -4
- package/dist/profiles/query/profileSamplePayload.d.ts.map +1 -1
- package/dist/profiles/query/profileSamplePayload.js +6 -4
- package/dist/profiles/query/profileSamplePayload.js.map +1 -1
- package/dist/profiles/query/profileSampleResult.cjs +26 -0
- package/dist/profiles/query/profileSampleResult.cjs.map +1 -0
- package/dist/profiles/query/profileSampleResult.d.ts +11 -0
- package/dist/profiles/query/profileSampleResult.d.ts.map +1 -0
- package/dist/profiles/query/profileSampleResult.js +26 -0
- package/dist/profiles/query/profileSampleResult.js.map +1 -0
- package/dist/profiles/query/queryTargetPicker.cjs +5 -3
- package/dist/profiles/query/queryTargetPicker.cjs.map +1 -1
- package/dist/profiles/query/queryTargetPicker.d.ts +3 -2
- package/dist/profiles/query/queryTargetPicker.d.ts.map +1 -1
- package/dist/profiles/query/queryTargetPicker.js +5 -3
- package/dist/profiles/query/queryTargetPicker.js.map +1 -1
- package/dist/profiles/wizard/profileWizard.cjs +14 -5
- package/dist/profiles/wizard/profileWizard.cjs.map +1 -1
- package/dist/profiles/wizard/profileWizard.d.ts.map +1 -1
- package/dist/profiles/wizard/profileWizard.js +15 -6
- package/dist/profiles/wizard/profileWizard.js.map +1 -1
- package/dist/profiles/wizard/profileWizardModel.cjs +35 -6
- package/dist/profiles/wizard/profileWizardModel.cjs.map +1 -1
- package/dist/profiles/wizard/profileWizardModel.d.ts +29 -4
- package/dist/profiles/wizard/profileWizardModel.d.ts.map +1 -1
- package/dist/profiles/wizard/profileWizardModel.js +35 -6
- package/dist/profiles/wizard/profileWizardModel.js.map +1 -1
- package/dist/profiles/wizard/profileWizardQueryStep.cjs +44 -11
- package/dist/profiles/wizard/profileWizardQueryStep.cjs.map +1 -1
- package/dist/profiles/wizard/profileWizardQueryStep.d.ts.map +1 -1
- package/dist/profiles/wizard/profileWizardQueryStep.js +46 -13
- package/dist/profiles/wizard/profileWizardQueryStep.js.map +1 -1
- package/dist/profiles/wizard/profileWizardSteps.cjs +33 -2
- package/dist/profiles/wizard/profileWizardSteps.cjs.map +1 -1
- package/dist/profiles/wizard/profileWizardSteps.d.ts +11 -2
- package/dist/profiles/wizard/profileWizardSteps.d.ts.map +1 -1
- package/dist/profiles/wizard/profileWizardSteps.js +33 -2
- package/dist/profiles/wizard/profileWizardSteps.js.map +1 -1
- package/dist/profiles.cjs +8 -2
- package/dist/profiles.cjs.map +1 -1
- package/dist/profiles.js +10 -4
- package/dist/profiles.js.map +1 -1
- package/dist/rpc/FilterForm.cjs +21 -237
- package/dist/rpc/FilterForm.cjs.map +1 -1
- package/dist/rpc/FilterForm.d.ts +3 -1
- package/dist/rpc/FilterForm.d.ts.map +1 -1
- package/dist/rpc/FilterForm.js +21 -237
- package/dist/rpc/FilterForm.js.map +1 -1
- package/dist/rpc/FilterFormFields.cjs +240 -0
- package/dist/rpc/FilterFormFields.cjs.map +1 -0
- package/dist/rpc/FilterFormFields.d.ts +12 -0
- package/dist/rpc/FilterFormFields.d.ts.map +1 -0
- package/dist/rpc/FilterFormFields.js +240 -0
- package/dist/rpc/FilterFormFields.js.map +1 -0
- package/dist/rpc/router.cjs +3 -2
- package/dist/rpc/router.cjs.map +1 -1
- package/dist/rpc/router.d.ts.map +1 -1
- package/dist/rpc/router.js +3 -2
- package/dist/rpc/router.js.map +1 -1
- package/dist/rpc/types.cjs.map +1 -1
- package/dist/rpc/types.d.ts +3 -1
- package/dist/rpc/types.d.ts.map +1 -1
- package/dist/rpc/types.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +6 -1
- package/dist/data/query-info/QueryInfoDialog.cjs +0 -106
- package/dist/data/query-info/QueryInfoDialog.cjs.map +0 -1
- package/dist/data/query-info/QueryInfoDialog.d.ts +0 -16
- package/dist/data/query-info/QueryInfoDialog.d.ts.map +0 -1
- package/dist/data/query-info/QueryInfoDialog.js +0 -106
- package/dist/data/query-info/QueryInfoDialog.js.map +0 -1
- package/dist/data/query-info/index.d.ts +0 -4
- package/dist/data/query-info/index.d.ts.map +0 -1
- package/dist/data/query-info/queryInfo.cjs +0 -42
- package/dist/data/query-info/queryInfo.cjs.map +0 -1
- package/dist/data/query-info/queryInfo.d.ts +0 -45
- package/dist/data/query-info/queryInfo.d.ts.map +0 -1
- package/dist/data/query-info/queryInfo.js +0 -42
- package/dist/data/query-info/queryInfo.js.map +0 -1
- package/dist/data/query-info/useQueryInfo.cjs +0 -48
- package/dist/data/query-info/useQueryInfo.cjs.map +0 -1
- package/dist/data/query-info/useQueryInfo.d.ts +0 -26
- package/dist/data/query-info/useQueryInfo.d.ts.map +0 -1
- package/dist/data/query-info/useQueryInfo.js +0 -48
- package/dist/data/query-info/useQueryInfo.js.map +0 -1
|
@@ -1,148 +1,42 @@
|
|
|
1
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
3
|
-
import { useState, useRef, useCallback, useEffect } from "react";
|
|
1
|
+
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect } from "react";
|
|
4
3
|
import { Icon } from "../data/Icon.js";
|
|
5
4
|
import { cn } from "../lib/utils.js";
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
import { useFloatingZIndex, useEscapeLayer } from "./modalStack.js";
|
|
9
|
-
function pointReference(x, y, contextElement) {
|
|
10
|
-
return {
|
|
11
|
-
contextElement,
|
|
12
|
-
getBoundingClientRect: () => ({
|
|
13
|
-
x,
|
|
14
|
-
y,
|
|
15
|
-
top: y,
|
|
16
|
-
left: x,
|
|
17
|
-
right: x,
|
|
18
|
-
bottom: y,
|
|
19
|
-
width: 0,
|
|
20
|
-
height: 0,
|
|
21
|
-
toJSON: () => ({})
|
|
22
|
-
})
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
function CellActionsRoot({
|
|
5
|
+
import { ContextMenu } from "./ContextMenu.js";
|
|
6
|
+
function CellActions({
|
|
26
7
|
contextTarget,
|
|
27
8
|
menuLabel,
|
|
28
9
|
menuItems,
|
|
29
10
|
children,
|
|
30
11
|
className
|
|
31
12
|
}) {
|
|
32
|
-
const [open, setOpen] = useState(false);
|
|
33
|
-
const [activeIndex, setActiveIndex] = useState(null);
|
|
34
|
-
const returnFocusRef = useRef(null);
|
|
35
|
-
const elementsRef = useRef([]);
|
|
36
|
-
const floatingZ = useFloatingZIndex();
|
|
37
|
-
const tree = useFloatingTree();
|
|
38
|
-
const nodeId = useFloatingNodeId();
|
|
39
|
-
const closeMenu = useCallback(() => {
|
|
40
|
-
setOpen(false);
|
|
41
|
-
queueMicrotask(() => {
|
|
42
|
-
var _a;
|
|
43
|
-
return (_a = returnFocusRef.current) == null ? void 0 : _a.focus({ preventScroll: true });
|
|
44
|
-
});
|
|
45
|
-
}, []);
|
|
46
|
-
const { refs, floatingStyles, context } = useFloating({
|
|
47
|
-
...nodeId ? { nodeId } : {},
|
|
48
|
-
open,
|
|
49
|
-
onOpenChange: (next) => next ? setOpen(true) : closeMenu(),
|
|
50
|
-
placement: "right-start",
|
|
51
|
-
middleware: [offset(4), flip({ padding: 8 }), shift({ padding: 8 })],
|
|
52
|
-
whileElementsMounted: autoUpdate
|
|
53
|
-
});
|
|
54
|
-
const dismiss = useDismiss(context, { escapeKey: false });
|
|
55
|
-
const role = useRole(context, { role: "menu" });
|
|
56
|
-
const listNavigation = useListNavigation(context, {
|
|
57
|
-
listRef: elementsRef,
|
|
58
|
-
activeIndex,
|
|
59
|
-
onNavigate: setActiveIndex,
|
|
60
|
-
loop: true
|
|
61
|
-
});
|
|
62
|
-
const { getFloatingProps, getItemProps } = useInteractions([
|
|
63
|
-
dismiss,
|
|
64
|
-
role,
|
|
65
|
-
listNavigation
|
|
66
|
-
]);
|
|
67
|
-
const openAt = useCallback(
|
|
68
|
-
(x, y) => {
|
|
69
|
-
if (!contextTarget || menuItems.length === 0) return;
|
|
70
|
-
const active = document.activeElement;
|
|
71
|
-
returnFocusRef.current = active instanceof HTMLElement ? active : contextTarget;
|
|
72
|
-
refs.setPositionReference(pointReference(x, y, contextTarget));
|
|
73
|
-
setActiveIndex(null);
|
|
74
|
-
setOpen(true);
|
|
75
|
-
},
|
|
76
|
-
[contextTarget, menuItems.length, refs]
|
|
77
|
-
);
|
|
78
13
|
useEffect(() => {
|
|
79
|
-
if (!contextTarget
|
|
14
|
+
if (!contextTarget) return;
|
|
80
15
|
contextTarget.classList.add("group/cell-actions");
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
openAt(event.clientX, event.clientY);
|
|
85
|
-
};
|
|
86
|
-
const onKeyDown = (event) => {
|
|
87
|
-
if (event.key !== "ContextMenu" && !(event.key === "F10" && event.shiftKey)) return;
|
|
88
|
-
event.preventDefault();
|
|
89
|
-
event.stopPropagation();
|
|
90
|
-
const rect = contextTarget.getBoundingClientRect();
|
|
91
|
-
openAt(rect.left + 8, rect.top + Math.min(rect.height, 24));
|
|
92
|
-
};
|
|
93
|
-
contextTarget.addEventListener("contextmenu", onContextMenu);
|
|
94
|
-
contextTarget.addEventListener("keydown", onKeyDown);
|
|
95
|
-
return () => {
|
|
96
|
-
contextTarget.classList.remove("group/cell-actions");
|
|
97
|
-
contextTarget.removeEventListener("contextmenu", onContextMenu);
|
|
98
|
-
contextTarget.removeEventListener("keydown", onKeyDown);
|
|
99
|
-
};
|
|
100
|
-
}, [contextTarget, menuItems.length, openAt]);
|
|
101
|
-
useEffect(() => {
|
|
102
|
-
if (!tree) return;
|
|
103
|
-
tree.events.on("click", closeMenu);
|
|
104
|
-
return () => tree.events.off("click", closeMenu);
|
|
105
|
-
}, [closeMenu, tree]);
|
|
106
|
-
useEscapeLayer(open, closeMenu);
|
|
107
|
-
return /* @__PURE__ */ jsxs(FloatingNode, { id: nodeId, children: [
|
|
16
|
+
return () => contextTarget.classList.remove("group/cell-actions");
|
|
17
|
+
}, [contextTarget]);
|
|
18
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
108
19
|
/* @__PURE__ */ jsx(
|
|
109
20
|
"span",
|
|
110
21
|
{
|
|
111
|
-
className: cn(
|
|
22
|
+
className: cn(
|
|
23
|
+
"ms-1 inline-flex items-center gap-0.5 align-middle",
|
|
24
|
+
className
|
|
25
|
+
),
|
|
112
26
|
contentEditable: false,
|
|
113
27
|
children
|
|
114
28
|
}
|
|
115
29
|
),
|
|
116
|
-
|
|
117
|
-
|
|
30
|
+
/* @__PURE__ */ jsx(
|
|
31
|
+
ContextMenu,
|
|
118
32
|
{
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
style: { ...floatingStyles, zIndex: floatingZ },
|
|
123
|
-
className: MENU_POPOVER_CLASS,
|
|
124
|
-
...getFloatingProps(),
|
|
125
|
-
children: /* @__PURE__ */ jsx(
|
|
126
|
-
MenuContext.Provider,
|
|
127
|
-
{
|
|
128
|
-
value: {
|
|
129
|
-
getItemProps,
|
|
130
|
-
activeIndex,
|
|
131
|
-
setActiveIndex,
|
|
132
|
-
setHasFocusInside: () => {
|
|
133
|
-
},
|
|
134
|
-
isOpen: open
|
|
135
|
-
},
|
|
136
|
-
children: /* @__PURE__ */ jsx(FloatingList, { elementsRef, children: /* @__PURE__ */ jsx(MenuItemList, { items: menuItems }) })
|
|
137
|
-
}
|
|
138
|
-
)
|
|
33
|
+
contextTarget,
|
|
34
|
+
menuLabel,
|
|
35
|
+
menuItems
|
|
139
36
|
}
|
|
140
|
-
)
|
|
37
|
+
)
|
|
141
38
|
] });
|
|
142
39
|
}
|
|
143
|
-
function CellActions(props) {
|
|
144
|
-
return /* @__PURE__ */ jsx(FloatingTree, { children: /* @__PURE__ */ jsx(CellActionsRoot, { ...props }) });
|
|
145
|
-
}
|
|
146
40
|
function CellActionButton({
|
|
147
41
|
label,
|
|
148
42
|
icon,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CellActions.js","sources":["../../src/overlay/CellActions.tsx"],"sourcesContent":["import {\n autoUpdate,\n flip,\n FloatingFocusManager,\n FloatingList,\n FloatingNode,\n FloatingPortal,\n FloatingTree,\n offset,\n shift,\n useDismiss,\n useFloating,\n useFloatingNodeId,\n useFloatingTree,\n useInteractions,\n useListNavigation,\n useRole,\n type VirtualElement,\n} from \"@floating-ui/react\";\nimport {\n useCallback,\n useEffect,\n useRef,\n useState,\n type ButtonHTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { Icon, type StaticIconComponent } from \"../data/Icon\";\nimport { cn } from \"../lib/utils\";\nimport type { DropdownMenuItem } from \"./DropdownMenu\";\nimport { MenuItemList } from \"./DropdownMenuSubmenu\";\nimport { MENU_POPOVER_CLASS, MenuContext } from \"./dropdownMenuContext\";\nimport { useEscapeLayer, useFloatingZIndex } from \"./modalStack\";\n\nexport type CellActionsProps = {\n contextTarget: HTMLElement | null;\n menuLabel: string;\n menuItems: DropdownMenuItem[];\n children: ReactNode;\n className?: string;\n};\n\nexport type CellActionButtonProps = Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n \"children\" | \"onClick\"\n> & {\n label: string;\n icon: StaticIconComponent;\n onSelect: () => void;\n};\n\nfunction pointReference(\n x: number,\n y: number,\n contextElement: HTMLElement,\n): VirtualElement {\n return {\n contextElement,\n getBoundingClientRect: () => ({\n x,\n y,\n top: y,\n left: x,\n right: x,\n bottom: y,\n width: 0,\n height: 0,\n toJSON: () => ({}),\n }),\n };\n}\n\nfunction CellActionsRoot({\n contextTarget,\n menuLabel,\n menuItems,\n children,\n className,\n}: CellActionsProps) {\n const [open, setOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n const returnFocusRef = useRef<HTMLElement | null>(null);\n const elementsRef = useRef<Array<HTMLElement | null>>([]);\n const floatingZ = useFloatingZIndex();\n const tree = useFloatingTree();\n const nodeId = useFloatingNodeId();\n\n const closeMenu = useCallback(() => {\n setOpen(false);\n queueMicrotask(() => returnFocusRef.current?.focus({ preventScroll: true }));\n }, []);\n\n const { refs, floatingStyles, context } = useFloating<HTMLDivElement>({\n ...(nodeId ? { nodeId } : {}),\n open,\n onOpenChange: (next) => (next ? setOpen(true) : closeMenu()),\n placement: \"right-start\",\n middleware: [offset(4), flip({ padding: 8 }), shift({ padding: 8 })],\n whileElementsMounted: autoUpdate,\n });\n\n const dismiss = useDismiss(context, { escapeKey: false });\n const role = useRole(context, { role: \"menu\" });\n const listNavigation = useListNavigation(context, {\n listRef: elementsRef,\n activeIndex,\n onNavigate: setActiveIndex,\n loop: true,\n });\n const { getFloatingProps, getItemProps } = useInteractions([\n dismiss,\n role,\n listNavigation,\n ]);\n\n const openAt = useCallback(\n (x: number, y: number) => {\n if (!contextTarget || menuItems.length === 0) return;\n const active = document.activeElement;\n returnFocusRef.current = active instanceof HTMLElement ? active : contextTarget;\n refs.setPositionReference(pointReference(x, y, contextTarget));\n setActiveIndex(null);\n setOpen(true);\n },\n [contextTarget, menuItems.length, refs],\n );\n\n useEffect(() => {\n if (!contextTarget || menuItems.length === 0) return;\n contextTarget.classList.add(\"group/cell-actions\");\n\n const onContextMenu = (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n openAt(event.clientX, event.clientY);\n };\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key !== \"ContextMenu\" && !(event.key === \"F10\" && event.shiftKey)) return;\n event.preventDefault();\n event.stopPropagation();\n const rect = contextTarget.getBoundingClientRect();\n openAt(rect.left + 8, rect.top + Math.min(rect.height, 24));\n };\n\n contextTarget.addEventListener(\"contextmenu\", onContextMenu);\n contextTarget.addEventListener(\"keydown\", onKeyDown);\n return () => {\n contextTarget.classList.remove(\"group/cell-actions\");\n contextTarget.removeEventListener(\"contextmenu\", onContextMenu);\n contextTarget.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [contextTarget, menuItems.length, openAt]);\n\n useEffect(() => {\n if (!tree) return;\n tree.events.on(\"click\", closeMenu);\n return () => tree.events.off(\"click\", closeMenu);\n }, [closeMenu, tree]);\n\n useEscapeLayer(open, closeMenu);\n\n return (\n <FloatingNode id={nodeId}>\n <span\n className={cn(\"ms-1 inline-flex items-center gap-0.5 align-middle\", className)}\n contentEditable={false}\n >\n {children}\n </span>\n {open && (\n <FloatingPortal>\n <FloatingFocusManager context={context} modal={false} returnFocus={false}>\n <div\n ref={refs.setFloating}\n role=\"menu\"\n aria-label={menuLabel}\n style={{ ...floatingStyles, zIndex: floatingZ }}\n className={MENU_POPOVER_CLASS}\n {...getFloatingProps()}\n >\n <MenuContext.Provider\n value={{\n getItemProps,\n activeIndex,\n setActiveIndex,\n setHasFocusInside: () => {},\n isOpen: open,\n }}\n >\n <FloatingList elementsRef={elementsRef}>\n <MenuItemList items={menuItems} />\n </FloatingList>\n </MenuContext.Provider>\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </FloatingNode>\n );\n}\n\nexport function CellActions(props: CellActionsProps) {\n return (\n <FloatingTree>\n <CellActionsRoot {...props} />\n </FloatingTree>\n );\n}\n\nexport function CellActionButton({\n label,\n icon,\n onSelect,\n className,\n title = label,\n onMouseDown,\n ...props\n}: CellActionButtonProps) {\n return (\n <button\n {...props}\n type=\"button\"\n title={title}\n aria-label={label}\n className={cn(\n \"inline-flex size-5 items-center justify-center rounded-full p-1 text-muted-foreground opacity-70 transition-colors transition-opacity hover:bg-primary/10 hover:text-primary hover:opacity-100 focus-visible:bg-primary/10 focus-visible:text-primary focus-visible:opacity-100 focus-visible:outline-none group-hover/cell-actions:opacity-95\",\n className,\n )}\n onMouseDown={(event) => {\n event.preventDefault();\n onMouseDown?.(event);\n }}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n onSelect();\n }}\n >\n <Icon icon={icon} className=\"text-sm\" />\n </button>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CellActions.js","sources":["../../src/overlay/CellActions.tsx"],"sourcesContent":["import { useEffect, type ButtonHTMLAttributes, type ReactNode } from \"react\";\nimport { Icon, type StaticIconComponent } from \"../data/Icon\";\nimport { cn } from \"../lib/utils\";\nimport type { DropdownMenuItem } from \"./DropdownMenu\";\nimport { ContextMenu } from \"./ContextMenu\";\n\nexport type CellActionsProps = {\n contextTarget: HTMLElement | null;\n menuLabel: string;\n menuItems: DropdownMenuItem[];\n children: ReactNode;\n className?: string;\n};\n\nexport type CellActionButtonProps = Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n \"children\" | \"onClick\"\n> & {\n label: string;\n icon: StaticIconComponent;\n onSelect: () => void;\n};\n\nexport function CellActions({\n contextTarget,\n menuLabel,\n menuItems,\n children,\n className,\n}: CellActionsProps) {\n useEffect(() => {\n if (!contextTarget) return;\n contextTarget.classList.add(\"group/cell-actions\");\n return () => contextTarget.classList.remove(\"group/cell-actions\");\n }, [contextTarget]);\n\n return (\n <>\n <span\n className={cn(\n \"ms-1 inline-flex items-center gap-0.5 align-middle\",\n className,\n )}\n contentEditable={false}\n >\n {children}\n </span>\n <ContextMenu\n contextTarget={contextTarget}\n menuLabel={menuLabel}\n menuItems={menuItems}\n />\n </>\n );\n}\n\nexport function CellActionButton({\n label,\n icon,\n onSelect,\n className,\n title = label,\n onMouseDown,\n ...props\n}: CellActionButtonProps) {\n return (\n <button\n {...props}\n type=\"button\"\n title={title}\n aria-label={label}\n className={cn(\n \"inline-flex size-5 items-center justify-center rounded-full p-1 text-muted-foreground opacity-70 transition-colors transition-opacity hover:bg-primary/10 hover:text-primary hover:opacity-100 focus-visible:bg-primary/10 focus-visible:text-primary focus-visible:opacity-100 focus-visible:outline-none group-hover/cell-actions:opacity-95\",\n className,\n )}\n onMouseDown={(event) => {\n event.preventDefault();\n onMouseDown?.(event);\n }}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n onSelect();\n }}\n >\n <Icon icon={icon} className=\"text-sm\" />\n </button>\n );\n}\n"],"names":[],"mappings":";;;;;AAuBO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAqB;AACnB,YAAU,MAAM;AACd,QAAI,CAAC,cAAe;AACpB,kBAAc,UAAU,IAAI,oBAAoB;AAChD,WAAO,MAAM,cAAc,UAAU,OAAO,oBAAoB;AAAA,EAClE,GAAG,CAAC,aAAa,CAAC;AAElB,SACE,qBAAA,UAAA,EACE,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QAAA;AAAA,QAEF,iBAAiB;AAAA,QAEhB;AAAA,MAAA;AAAA,IAAA;AAAA,IAEH;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;AAEO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA,GAAG;AACL,GAA0B;AACxB,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ,MAAK;AAAA,MACL;AAAA,MACA,cAAY;AAAA,MACZ,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAEF,aAAa,CAAC,UAAU;AACtB,cAAM,eAAA;AACN,mDAAc;AAAA,MAChB;AAAA,MACA,SAAS,CAAC,UAAU;AAClB,cAAM,eAAA;AACN,cAAM,gBAAA;AACN,iBAAA;AAAA,MACF;AAAA,MAEA,UAAA,oBAAC,MAAA,EAAK,MAAY,WAAU,UAAA,CAAU;AAAA,IAAA;AAAA,EAAA;AAG5C;"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const react = require("@floating-ui/react");
|
|
5
|
+
const react$1 = require("react");
|
|
6
|
+
const DropdownMenuSubmenu = require("./DropdownMenuSubmenu.cjs");
|
|
7
|
+
const dropdownMenuContext = require("./dropdownMenuContext.cjs");
|
|
8
|
+
const modalStack = require("./modalStack.cjs");
|
|
9
|
+
function pointReference(x, y, contextElement) {
|
|
10
|
+
return {
|
|
11
|
+
contextElement,
|
|
12
|
+
getBoundingClientRect: () => ({
|
|
13
|
+
x,
|
|
14
|
+
y,
|
|
15
|
+
top: y,
|
|
16
|
+
left: x,
|
|
17
|
+
right: x,
|
|
18
|
+
bottom: y,
|
|
19
|
+
width: 0,
|
|
20
|
+
height: 0,
|
|
21
|
+
toJSON: () => ({})
|
|
22
|
+
})
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function ContextMenuRoot({
|
|
26
|
+
contextTarget,
|
|
27
|
+
menuLabel,
|
|
28
|
+
menuItems
|
|
29
|
+
}) {
|
|
30
|
+
const [open, setOpen] = react$1.useState(false);
|
|
31
|
+
const [activeIndex, setActiveIndex] = react$1.useState(null);
|
|
32
|
+
const returnFocusRef = react$1.useRef(null);
|
|
33
|
+
const elementsRef = react$1.useRef([]);
|
|
34
|
+
const floatingZ = modalStack.useFloatingZIndex();
|
|
35
|
+
const tree = react.useFloatingTree();
|
|
36
|
+
const nodeId = react.useFloatingNodeId();
|
|
37
|
+
const closeMenu = react$1.useCallback(() => {
|
|
38
|
+
setOpen(false);
|
|
39
|
+
queueMicrotask(
|
|
40
|
+
() => {
|
|
41
|
+
var _a;
|
|
42
|
+
return (_a = returnFocusRef.current) == null ? void 0 : _a.focus({ preventScroll: true });
|
|
43
|
+
}
|
|
44
|
+
);
|
|
45
|
+
}, []);
|
|
46
|
+
const { refs, floatingStyles, context } = react.useFloating({
|
|
47
|
+
...nodeId ? { nodeId } : {},
|
|
48
|
+
open,
|
|
49
|
+
onOpenChange: (next) => next ? setOpen(true) : closeMenu(),
|
|
50
|
+
placement: "right-start",
|
|
51
|
+
middleware: [react.offset(4), react.flip({ padding: 8 }), react.shift({ padding: 8 })],
|
|
52
|
+
whileElementsMounted: react.autoUpdate
|
|
53
|
+
});
|
|
54
|
+
const dismiss = react.useDismiss(context, { escapeKey: false });
|
|
55
|
+
const role = react.useRole(context, { role: "menu" });
|
|
56
|
+
const listNavigation = react.useListNavigation(context, {
|
|
57
|
+
listRef: elementsRef,
|
|
58
|
+
activeIndex,
|
|
59
|
+
onNavigate: setActiveIndex,
|
|
60
|
+
loop: true
|
|
61
|
+
});
|
|
62
|
+
const { getFloatingProps, getItemProps } = react.useInteractions([
|
|
63
|
+
dismiss,
|
|
64
|
+
role,
|
|
65
|
+
listNavigation
|
|
66
|
+
]);
|
|
67
|
+
const openAt = react$1.useCallback(
|
|
68
|
+
(x, y) => {
|
|
69
|
+
if (!contextTarget || menuItems.length === 0) return;
|
|
70
|
+
const active = document.activeElement;
|
|
71
|
+
returnFocusRef.current = active instanceof HTMLElement ? active : contextTarget;
|
|
72
|
+
refs.setPositionReference(pointReference(x, y, contextTarget));
|
|
73
|
+
setActiveIndex(null);
|
|
74
|
+
setOpen(true);
|
|
75
|
+
},
|
|
76
|
+
[contextTarget, menuItems.length, refs]
|
|
77
|
+
);
|
|
78
|
+
react$1.useEffect(() => {
|
|
79
|
+
if (!contextTarget || menuItems.length === 0) return;
|
|
80
|
+
const onContextMenu = (event) => {
|
|
81
|
+
event.preventDefault();
|
|
82
|
+
event.stopPropagation();
|
|
83
|
+
openAt(event.clientX, event.clientY);
|
|
84
|
+
};
|
|
85
|
+
const onKeyDown = (event) => {
|
|
86
|
+
if (event.key !== "ContextMenu" && !(event.key === "F10" && event.shiftKey))
|
|
87
|
+
return;
|
|
88
|
+
event.preventDefault();
|
|
89
|
+
event.stopPropagation();
|
|
90
|
+
const rect = contextTarget.getBoundingClientRect();
|
|
91
|
+
openAt(rect.left + 8, rect.top + Math.min(rect.height, 24));
|
|
92
|
+
};
|
|
93
|
+
contextTarget.addEventListener("contextmenu", onContextMenu);
|
|
94
|
+
contextTarget.addEventListener("keydown", onKeyDown);
|
|
95
|
+
return () => {
|
|
96
|
+
contextTarget.removeEventListener("contextmenu", onContextMenu);
|
|
97
|
+
contextTarget.removeEventListener("keydown", onKeyDown);
|
|
98
|
+
};
|
|
99
|
+
}, [contextTarget, menuItems.length, openAt]);
|
|
100
|
+
react$1.useEffect(() => {
|
|
101
|
+
if (!tree) return;
|
|
102
|
+
tree.events.on("click", closeMenu);
|
|
103
|
+
return () => tree.events.off("click", closeMenu);
|
|
104
|
+
}, [closeMenu, tree]);
|
|
105
|
+
modalStack.useEscapeLayer(open, closeMenu);
|
|
106
|
+
return /* @__PURE__ */ jsxRuntime.jsx(react.FloatingNode, { id: nodeId, children: open && /* @__PURE__ */ jsxRuntime.jsx(react.FloatingPortal, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
107
|
+
react.FloatingFocusManager,
|
|
108
|
+
{
|
|
109
|
+
context,
|
|
110
|
+
modal: false,
|
|
111
|
+
returnFocus: false,
|
|
112
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
113
|
+
"div",
|
|
114
|
+
{
|
|
115
|
+
ref: refs.setFloating,
|
|
116
|
+
role: "menu",
|
|
117
|
+
"aria-label": menuLabel,
|
|
118
|
+
style: { ...floatingStyles, zIndex: floatingZ },
|
|
119
|
+
className: dropdownMenuContext.MENU_POPOVER_CLASS,
|
|
120
|
+
...getFloatingProps(),
|
|
121
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
122
|
+
dropdownMenuContext.MenuContext.Provider,
|
|
123
|
+
{
|
|
124
|
+
value: {
|
|
125
|
+
getItemProps,
|
|
126
|
+
activeIndex,
|
|
127
|
+
setActiveIndex,
|
|
128
|
+
setHasFocusInside: () => {
|
|
129
|
+
},
|
|
130
|
+
isOpen: open
|
|
131
|
+
},
|
|
132
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(react.FloatingList, { elementsRef, children: /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSubmenu.MenuItemList, { items: menuItems }) })
|
|
133
|
+
}
|
|
134
|
+
)
|
|
135
|
+
}
|
|
136
|
+
)
|
|
137
|
+
}
|
|
138
|
+
) }) });
|
|
139
|
+
}
|
|
140
|
+
function ContextMenu(props) {
|
|
141
|
+
return /* @__PURE__ */ jsxRuntime.jsx(react.FloatingTree, { children: /* @__PURE__ */ jsxRuntime.jsx(ContextMenuRoot, { ...props }) });
|
|
142
|
+
}
|
|
143
|
+
exports.ContextMenu = ContextMenu;
|
|
144
|
+
//# sourceMappingURL=ContextMenu.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextMenu.cjs","sources":["../../src/overlay/ContextMenu.tsx"],"sourcesContent":["import {\n autoUpdate,\n flip,\n FloatingFocusManager,\n FloatingList,\n FloatingNode,\n FloatingPortal,\n FloatingTree,\n offset,\n shift,\n useDismiss,\n useFloating,\n useFloatingNodeId,\n useFloatingTree,\n useInteractions,\n useListNavigation,\n useRole,\n type VirtualElement,\n} from \"@floating-ui/react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport type { DropdownMenuItem } from \"./DropdownMenu\";\nimport { MenuItemList } from \"./DropdownMenuSubmenu\";\nimport { MENU_POPOVER_CLASS, MenuContext } from \"./dropdownMenuContext\";\nimport { useEscapeLayer, useFloatingZIndex } from \"./modalStack\";\n\nexport type ContextMenuProps = {\n contextTarget: HTMLElement | null;\n menuLabel: string;\n menuItems: DropdownMenuItem[];\n};\n\nfunction pointReference(\n x: number,\n y: number,\n contextElement: HTMLElement,\n): VirtualElement {\n return {\n contextElement,\n getBoundingClientRect: () => ({\n x,\n y,\n top: y,\n left: x,\n right: x,\n bottom: y,\n width: 0,\n height: 0,\n toJSON: () => ({}),\n }),\n };\n}\n\nfunction ContextMenuRoot({\n contextTarget,\n menuLabel,\n menuItems,\n}: ContextMenuProps) {\n const [open, setOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n const returnFocusRef = useRef<HTMLElement | null>(null);\n const elementsRef = useRef<Array<HTMLElement | null>>([]);\n const floatingZ = useFloatingZIndex();\n const tree = useFloatingTree();\n const nodeId = useFloatingNodeId();\n\n const closeMenu = useCallback(() => {\n setOpen(false);\n queueMicrotask(() =>\n returnFocusRef.current?.focus({ preventScroll: true }),\n );\n }, []);\n\n const { refs, floatingStyles, context } = useFloating<HTMLDivElement>({\n ...(nodeId ? { nodeId } : {}),\n open,\n onOpenChange: (next) => (next ? setOpen(true) : closeMenu()),\n placement: \"right-start\",\n middleware: [offset(4), flip({ padding: 8 }), shift({ padding: 8 })],\n whileElementsMounted: autoUpdate,\n });\n\n const dismiss = useDismiss(context, { escapeKey: false });\n const role = useRole(context, { role: \"menu\" });\n const listNavigation = useListNavigation(context, {\n listRef: elementsRef,\n activeIndex,\n onNavigate: setActiveIndex,\n loop: true,\n });\n const { getFloatingProps, getItemProps } = useInteractions([\n dismiss,\n role,\n listNavigation,\n ]);\n\n const openAt = useCallback(\n (x: number, y: number) => {\n if (!contextTarget || menuItems.length === 0) return;\n const active = document.activeElement;\n returnFocusRef.current =\n active instanceof HTMLElement ? active : contextTarget;\n refs.setPositionReference(pointReference(x, y, contextTarget));\n setActiveIndex(null);\n setOpen(true);\n },\n [contextTarget, menuItems.length, refs],\n );\n\n useEffect(() => {\n if (!contextTarget || menuItems.length === 0) return;\n const onContextMenu = (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n openAt(event.clientX, event.clientY);\n };\n const onKeyDown = (event: KeyboardEvent) => {\n if (\n event.key !== \"ContextMenu\" &&\n !(event.key === \"F10\" && event.shiftKey)\n )\n return;\n event.preventDefault();\n event.stopPropagation();\n const rect = contextTarget.getBoundingClientRect();\n openAt(rect.left + 8, rect.top + Math.min(rect.height, 24));\n };\n\n contextTarget.addEventListener(\"contextmenu\", onContextMenu);\n contextTarget.addEventListener(\"keydown\", onKeyDown);\n return () => {\n contextTarget.removeEventListener(\"contextmenu\", onContextMenu);\n contextTarget.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [contextTarget, menuItems.length, openAt]);\n\n useEffect(() => {\n if (!tree) return;\n tree.events.on(\"click\", closeMenu);\n return () => tree.events.off(\"click\", closeMenu);\n }, [closeMenu, tree]);\n\n useEscapeLayer(open, closeMenu);\n\n return (\n <FloatingNode id={nodeId}>\n {open && (\n <FloatingPortal>\n <FloatingFocusManager\n context={context}\n modal={false}\n returnFocus={false}\n >\n <div\n ref={refs.setFloating}\n role=\"menu\"\n aria-label={menuLabel}\n style={{ ...floatingStyles, zIndex: floatingZ }}\n className={MENU_POPOVER_CLASS}\n {...getFloatingProps()}\n >\n <MenuContext.Provider\n value={{\n getItemProps,\n activeIndex,\n setActiveIndex,\n setHasFocusInside: () => {},\n isOpen: open,\n }}\n >\n <FloatingList elementsRef={elementsRef}>\n <MenuItemList items={menuItems} />\n </FloatingList>\n </MenuContext.Provider>\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </FloatingNode>\n );\n}\n\nexport function ContextMenu(props: ContextMenuProps) {\n return (\n <FloatingTree>\n <ContextMenuRoot {...props} />\n </FloatingTree>\n );\n}\n"],"names":["useState","useRef","useFloatingZIndex","useFloatingTree","useFloatingNodeId","useCallback","useFloating","offset","flip","shift","autoUpdate","useDismiss","useRole","useListNavigation","useInteractions","useEffect","useEscapeLayer","FloatingNode","FloatingPortal","jsx","FloatingFocusManager","MENU_POPOVER_CLASS","MenuContext","FloatingList","MenuItemList","FloatingTree"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DropdownMenuItem } from './DropdownMenu';
|
|
2
|
+
export type ContextMenuProps = {
|
|
3
|
+
contextTarget: HTMLElement | null;
|
|
4
|
+
menuLabel: string;
|
|
5
|
+
menuItems: DropdownMenuItem[];
|
|
6
|
+
};
|
|
7
|
+
export declare function ContextMenu(props: ContextMenuProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=ContextMenu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextMenu.d.ts","sourceRoot":"","sources":["../../src/overlay/ContextMenu.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAKvD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,aAAa,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,gBAAgB,EAAE,CAAC;CAC/B,CAAC;AAwJF,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,2CAMlD"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { FloatingTree, useFloatingTree, useFloatingNodeId, useFloating, autoUpdate, offset, flip, shift, useDismiss, useRole, useListNavigation, useInteractions, FloatingNode, FloatingPortal, FloatingFocusManager, FloatingList } from "@floating-ui/react";
|
|
3
|
+
import { useState, useRef, useCallback, useEffect } from "react";
|
|
4
|
+
import { MenuItemList } from "./DropdownMenuSubmenu.js";
|
|
5
|
+
import { MENU_POPOVER_CLASS, MenuContext } from "./dropdownMenuContext.js";
|
|
6
|
+
import { useFloatingZIndex, useEscapeLayer } from "./modalStack.js";
|
|
7
|
+
function pointReference(x, y, contextElement) {
|
|
8
|
+
return {
|
|
9
|
+
contextElement,
|
|
10
|
+
getBoundingClientRect: () => ({
|
|
11
|
+
x,
|
|
12
|
+
y,
|
|
13
|
+
top: y,
|
|
14
|
+
left: x,
|
|
15
|
+
right: x,
|
|
16
|
+
bottom: y,
|
|
17
|
+
width: 0,
|
|
18
|
+
height: 0,
|
|
19
|
+
toJSON: () => ({})
|
|
20
|
+
})
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function ContextMenuRoot({
|
|
24
|
+
contextTarget,
|
|
25
|
+
menuLabel,
|
|
26
|
+
menuItems
|
|
27
|
+
}) {
|
|
28
|
+
const [open, setOpen] = useState(false);
|
|
29
|
+
const [activeIndex, setActiveIndex] = useState(null);
|
|
30
|
+
const returnFocusRef = useRef(null);
|
|
31
|
+
const elementsRef = useRef([]);
|
|
32
|
+
const floatingZ = useFloatingZIndex();
|
|
33
|
+
const tree = useFloatingTree();
|
|
34
|
+
const nodeId = useFloatingNodeId();
|
|
35
|
+
const closeMenu = useCallback(() => {
|
|
36
|
+
setOpen(false);
|
|
37
|
+
queueMicrotask(
|
|
38
|
+
() => {
|
|
39
|
+
var _a;
|
|
40
|
+
return (_a = returnFocusRef.current) == null ? void 0 : _a.focus({ preventScroll: true });
|
|
41
|
+
}
|
|
42
|
+
);
|
|
43
|
+
}, []);
|
|
44
|
+
const { refs, floatingStyles, context } = useFloating({
|
|
45
|
+
...nodeId ? { nodeId } : {},
|
|
46
|
+
open,
|
|
47
|
+
onOpenChange: (next) => next ? setOpen(true) : closeMenu(),
|
|
48
|
+
placement: "right-start",
|
|
49
|
+
middleware: [offset(4), flip({ padding: 8 }), shift({ padding: 8 })],
|
|
50
|
+
whileElementsMounted: autoUpdate
|
|
51
|
+
});
|
|
52
|
+
const dismiss = useDismiss(context, { escapeKey: false });
|
|
53
|
+
const role = useRole(context, { role: "menu" });
|
|
54
|
+
const listNavigation = useListNavigation(context, {
|
|
55
|
+
listRef: elementsRef,
|
|
56
|
+
activeIndex,
|
|
57
|
+
onNavigate: setActiveIndex,
|
|
58
|
+
loop: true
|
|
59
|
+
});
|
|
60
|
+
const { getFloatingProps, getItemProps } = useInteractions([
|
|
61
|
+
dismiss,
|
|
62
|
+
role,
|
|
63
|
+
listNavigation
|
|
64
|
+
]);
|
|
65
|
+
const openAt = useCallback(
|
|
66
|
+
(x, y) => {
|
|
67
|
+
if (!contextTarget || menuItems.length === 0) return;
|
|
68
|
+
const active = document.activeElement;
|
|
69
|
+
returnFocusRef.current = active instanceof HTMLElement ? active : contextTarget;
|
|
70
|
+
refs.setPositionReference(pointReference(x, y, contextTarget));
|
|
71
|
+
setActiveIndex(null);
|
|
72
|
+
setOpen(true);
|
|
73
|
+
},
|
|
74
|
+
[contextTarget, menuItems.length, refs]
|
|
75
|
+
);
|
|
76
|
+
useEffect(() => {
|
|
77
|
+
if (!contextTarget || menuItems.length === 0) return;
|
|
78
|
+
const onContextMenu = (event) => {
|
|
79
|
+
event.preventDefault();
|
|
80
|
+
event.stopPropagation();
|
|
81
|
+
openAt(event.clientX, event.clientY);
|
|
82
|
+
};
|
|
83
|
+
const onKeyDown = (event) => {
|
|
84
|
+
if (event.key !== "ContextMenu" && !(event.key === "F10" && event.shiftKey))
|
|
85
|
+
return;
|
|
86
|
+
event.preventDefault();
|
|
87
|
+
event.stopPropagation();
|
|
88
|
+
const rect = contextTarget.getBoundingClientRect();
|
|
89
|
+
openAt(rect.left + 8, rect.top + Math.min(rect.height, 24));
|
|
90
|
+
};
|
|
91
|
+
contextTarget.addEventListener("contextmenu", onContextMenu);
|
|
92
|
+
contextTarget.addEventListener("keydown", onKeyDown);
|
|
93
|
+
return () => {
|
|
94
|
+
contextTarget.removeEventListener("contextmenu", onContextMenu);
|
|
95
|
+
contextTarget.removeEventListener("keydown", onKeyDown);
|
|
96
|
+
};
|
|
97
|
+
}, [contextTarget, menuItems.length, openAt]);
|
|
98
|
+
useEffect(() => {
|
|
99
|
+
if (!tree) return;
|
|
100
|
+
tree.events.on("click", closeMenu);
|
|
101
|
+
return () => tree.events.off("click", closeMenu);
|
|
102
|
+
}, [closeMenu, tree]);
|
|
103
|
+
useEscapeLayer(open, closeMenu);
|
|
104
|
+
return /* @__PURE__ */ jsx(FloatingNode, { id: nodeId, children: open && /* @__PURE__ */ jsx(FloatingPortal, { children: /* @__PURE__ */ jsx(
|
|
105
|
+
FloatingFocusManager,
|
|
106
|
+
{
|
|
107
|
+
context,
|
|
108
|
+
modal: false,
|
|
109
|
+
returnFocus: false,
|
|
110
|
+
children: /* @__PURE__ */ jsx(
|
|
111
|
+
"div",
|
|
112
|
+
{
|
|
113
|
+
ref: refs.setFloating,
|
|
114
|
+
role: "menu",
|
|
115
|
+
"aria-label": menuLabel,
|
|
116
|
+
style: { ...floatingStyles, zIndex: floatingZ },
|
|
117
|
+
className: MENU_POPOVER_CLASS,
|
|
118
|
+
...getFloatingProps(),
|
|
119
|
+
children: /* @__PURE__ */ jsx(
|
|
120
|
+
MenuContext.Provider,
|
|
121
|
+
{
|
|
122
|
+
value: {
|
|
123
|
+
getItemProps,
|
|
124
|
+
activeIndex,
|
|
125
|
+
setActiveIndex,
|
|
126
|
+
setHasFocusInside: () => {
|
|
127
|
+
},
|
|
128
|
+
isOpen: open
|
|
129
|
+
},
|
|
130
|
+
children: /* @__PURE__ */ jsx(FloatingList, { elementsRef, children: /* @__PURE__ */ jsx(MenuItemList, { items: menuItems }) })
|
|
131
|
+
}
|
|
132
|
+
)
|
|
133
|
+
}
|
|
134
|
+
)
|
|
135
|
+
}
|
|
136
|
+
) }) });
|
|
137
|
+
}
|
|
138
|
+
function ContextMenu(props) {
|
|
139
|
+
return /* @__PURE__ */ jsx(FloatingTree, { children: /* @__PURE__ */ jsx(ContextMenuRoot, { ...props }) });
|
|
140
|
+
}
|
|
141
|
+
export {
|
|
142
|
+
ContextMenu
|
|
143
|
+
};
|
|
144
|
+
//# sourceMappingURL=ContextMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextMenu.js","sources":["../../src/overlay/ContextMenu.tsx"],"sourcesContent":["import {\n autoUpdate,\n flip,\n FloatingFocusManager,\n FloatingList,\n FloatingNode,\n FloatingPortal,\n FloatingTree,\n offset,\n shift,\n useDismiss,\n useFloating,\n useFloatingNodeId,\n useFloatingTree,\n useInteractions,\n useListNavigation,\n useRole,\n type VirtualElement,\n} from \"@floating-ui/react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport type { DropdownMenuItem } from \"./DropdownMenu\";\nimport { MenuItemList } from \"./DropdownMenuSubmenu\";\nimport { MENU_POPOVER_CLASS, MenuContext } from \"./dropdownMenuContext\";\nimport { useEscapeLayer, useFloatingZIndex } from \"./modalStack\";\n\nexport type ContextMenuProps = {\n contextTarget: HTMLElement | null;\n menuLabel: string;\n menuItems: DropdownMenuItem[];\n};\n\nfunction pointReference(\n x: number,\n y: number,\n contextElement: HTMLElement,\n): VirtualElement {\n return {\n contextElement,\n getBoundingClientRect: () => ({\n x,\n y,\n top: y,\n left: x,\n right: x,\n bottom: y,\n width: 0,\n height: 0,\n toJSON: () => ({}),\n }),\n };\n}\n\nfunction ContextMenuRoot({\n contextTarget,\n menuLabel,\n menuItems,\n}: ContextMenuProps) {\n const [open, setOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n const returnFocusRef = useRef<HTMLElement | null>(null);\n const elementsRef = useRef<Array<HTMLElement | null>>([]);\n const floatingZ = useFloatingZIndex();\n const tree = useFloatingTree();\n const nodeId = useFloatingNodeId();\n\n const closeMenu = useCallback(() => {\n setOpen(false);\n queueMicrotask(() =>\n returnFocusRef.current?.focus({ preventScroll: true }),\n );\n }, []);\n\n const { refs, floatingStyles, context } = useFloating<HTMLDivElement>({\n ...(nodeId ? { nodeId } : {}),\n open,\n onOpenChange: (next) => (next ? setOpen(true) : closeMenu()),\n placement: \"right-start\",\n middleware: [offset(4), flip({ padding: 8 }), shift({ padding: 8 })],\n whileElementsMounted: autoUpdate,\n });\n\n const dismiss = useDismiss(context, { escapeKey: false });\n const role = useRole(context, { role: \"menu\" });\n const listNavigation = useListNavigation(context, {\n listRef: elementsRef,\n activeIndex,\n onNavigate: setActiveIndex,\n loop: true,\n });\n const { getFloatingProps, getItemProps } = useInteractions([\n dismiss,\n role,\n listNavigation,\n ]);\n\n const openAt = useCallback(\n (x: number, y: number) => {\n if (!contextTarget || menuItems.length === 0) return;\n const active = document.activeElement;\n returnFocusRef.current =\n active instanceof HTMLElement ? active : contextTarget;\n refs.setPositionReference(pointReference(x, y, contextTarget));\n setActiveIndex(null);\n setOpen(true);\n },\n [contextTarget, menuItems.length, refs],\n );\n\n useEffect(() => {\n if (!contextTarget || menuItems.length === 0) return;\n const onContextMenu = (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n openAt(event.clientX, event.clientY);\n };\n const onKeyDown = (event: KeyboardEvent) => {\n if (\n event.key !== \"ContextMenu\" &&\n !(event.key === \"F10\" && event.shiftKey)\n )\n return;\n event.preventDefault();\n event.stopPropagation();\n const rect = contextTarget.getBoundingClientRect();\n openAt(rect.left + 8, rect.top + Math.min(rect.height, 24));\n };\n\n contextTarget.addEventListener(\"contextmenu\", onContextMenu);\n contextTarget.addEventListener(\"keydown\", onKeyDown);\n return () => {\n contextTarget.removeEventListener(\"contextmenu\", onContextMenu);\n contextTarget.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [contextTarget, menuItems.length, openAt]);\n\n useEffect(() => {\n if (!tree) return;\n tree.events.on(\"click\", closeMenu);\n return () => tree.events.off(\"click\", closeMenu);\n }, [closeMenu, tree]);\n\n useEscapeLayer(open, closeMenu);\n\n return (\n <FloatingNode id={nodeId}>\n {open && (\n <FloatingPortal>\n <FloatingFocusManager\n context={context}\n modal={false}\n returnFocus={false}\n >\n <div\n ref={refs.setFloating}\n role=\"menu\"\n aria-label={menuLabel}\n style={{ ...floatingStyles, zIndex: floatingZ }}\n className={MENU_POPOVER_CLASS}\n {...getFloatingProps()}\n >\n <MenuContext.Provider\n value={{\n getItemProps,\n activeIndex,\n setActiveIndex,\n setHasFocusInside: () => {},\n isOpen: open,\n }}\n >\n <FloatingList elementsRef={elementsRef}>\n <MenuItemList items={menuItems} />\n </FloatingList>\n </MenuContext.Provider>\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </FloatingNode>\n );\n}\n\nexport function ContextMenu(props: ContextMenuProps) {\n return (\n <FloatingTree>\n <ContextMenuRoot {...props} />\n </FloatingTree>\n );\n}\n"],"names":[],"mappings":"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"}
|