@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,13 +1,23 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { inferredFilterKind, PROFILE_FILTER_DEFAULT_LIMIT, PROFILE_FILTER_MAX_LIMIT,
|
|
5
|
-
import { UiFilter } from "../../icons/components/UiFilter.js";
|
|
6
|
-
import { UiFunnelData } from "../../icons/components/UiFunnelData.js";
|
|
2
|
+
import { EditorField, inputClassName } from "./profileFieldControls.js";
|
|
3
|
+
import { profileFilterKindIcon } from "./profileFieldIcons.js";
|
|
4
|
+
import { inferredFilterKind, PROFILE_FILTER_DEFAULT_LIMIT, PROFILE_FILTER_MAX_LIMIT, PROFILE_FILTER_KIND_OPTIONS, patchColumnFilter } from "../wizard/profileWizardModel.js";
|
|
7
5
|
import { UiDatabase } from "../../icons/components/UiDatabase.js";
|
|
8
6
|
import { UiListDashes } from "../../icons/components/UiListDashes.js";
|
|
9
7
|
import { UiListOrdered } from "../../icons/components/UiListOrdered.js";
|
|
10
8
|
import { UiListChecks } from "../../icons/components/UiListChecks.js";
|
|
9
|
+
import { UiMagicWand } from "../../icons/components/UiMagicWand.js";
|
|
10
|
+
import { UiProhibit } from "../../icons/components/UiProhibit.js";
|
|
11
|
+
const FILTER_SEGMENTS = [
|
|
12
|
+
{ value: "auto", label: "Auto", icon: /* @__PURE__ */ jsx(UiMagicWand, {}) },
|
|
13
|
+
{ value: "off", label: "Off", icon: /* @__PURE__ */ jsx(UiProhibit, {}) },
|
|
14
|
+
...PROFILE_FILTER_KIND_OPTIONS.filter(
|
|
15
|
+
(option) => option.value !== "none"
|
|
16
|
+
).map((option) => ({
|
|
17
|
+
...option,
|
|
18
|
+
icon: profileFilterKindIcon(option.value)
|
|
19
|
+
}))
|
|
20
|
+
];
|
|
11
21
|
function ProfileFieldFilterEditor({
|
|
12
22
|
field,
|
|
13
23
|
columns,
|
|
@@ -15,107 +25,186 @@ function ProfileFieldFilterEditor({
|
|
|
15
25
|
}) {
|
|
16
26
|
var _a;
|
|
17
27
|
const filter = field.filter ?? {};
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
28
|
+
const state = filter.disabled || filter.kind === "none" ? "off" : filter.kind || "auto";
|
|
29
|
+
const effectiveKind = state === "auto" ? inferredFilterKind(field) : state;
|
|
30
|
+
const enabled = state !== "off" && effectiveKind !== "none";
|
|
31
|
+
const picksFromAList = effectiveKind === "terms";
|
|
32
|
+
const supportsMultiple = picksFromAList || effectiveKind === "exact";
|
|
21
33
|
const enumerated = (((_a = filter.options) == null ? void 0 : _a.length) ?? 0) > 0;
|
|
22
34
|
const looksUp = picksFromAList && !enumerated && (filter.lookup ?? true);
|
|
23
|
-
const enabled = !filter.disabled;
|
|
24
35
|
const wide = columns === 2 ? "sm:col-span-2" : "";
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
36
|
+
const set = (patch) => onChange({ filter: patchColumnFilter(field.filter, patch) });
|
|
37
|
+
const selectState = (next) => {
|
|
38
|
+
if (next === "off") {
|
|
39
|
+
set({
|
|
40
|
+
disabled: true,
|
|
41
|
+
kind: filter.kind === "none" ? void 0 : filter.kind
|
|
42
|
+
});
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const kind = next === "auto" ? inferredFilterKind(field) : next;
|
|
46
|
+
const selected = patchColumnFilter(filter, {
|
|
47
|
+
disabled: void 0,
|
|
48
|
+
kind: next === "auto" ? void 0 : next
|
|
49
|
+
});
|
|
50
|
+
onChange({ filter: filterForKind(selected, kind) });
|
|
51
|
+
};
|
|
52
|
+
return /* @__PURE__ */ jsxs("section", { className: `grid gap-4 ${wide}`, "aria-label": "Filtering", children: [
|
|
53
|
+
/* @__PURE__ */ jsxs("div", { className: "grid gap-1.5", children: [
|
|
54
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm font-medium", children: "Filter type" }),
|
|
55
|
+
/* @__PURE__ */ jsx(
|
|
56
|
+
"div",
|
|
57
|
+
{
|
|
58
|
+
role: "radiogroup",
|
|
59
|
+
"aria-label": "Filter type",
|
|
60
|
+
className: "flex flex-wrap gap-1 rounded-md border bg-muted/30 p-1",
|
|
61
|
+
children: FILTER_SEGMENTS.map((segment) => {
|
|
62
|
+
const selected = state === segment.value;
|
|
63
|
+
return /* @__PURE__ */ jsxs(
|
|
64
|
+
"label",
|
|
65
|
+
{
|
|
66
|
+
title: segment.label,
|
|
67
|
+
className: `flex h-9 cursor-pointer items-center gap-1.5 rounded px-2 text-xs transition-colors focus-within:ring-2 focus-within:ring-primary/30 ${selected ? "bg-background font-medium text-foreground shadow-sm" : "text-muted-foreground hover:bg-background/70 hover:text-foreground"}`,
|
|
68
|
+
children: [
|
|
69
|
+
/* @__PURE__ */ jsx(
|
|
70
|
+
"input",
|
|
71
|
+
{
|
|
72
|
+
type: "radio",
|
|
73
|
+
name: `filter-type-${field.name}`,
|
|
74
|
+
value: segment.value,
|
|
75
|
+
checked: selected,
|
|
76
|
+
"aria-label": segment.label,
|
|
77
|
+
className: "sr-only",
|
|
78
|
+
onChange: () => selectState(segment.value)
|
|
79
|
+
}
|
|
80
|
+
),
|
|
81
|
+
/* @__PURE__ */ jsx("span", { className: "text-[15px]", children: segment.icon }),
|
|
82
|
+
/* @__PURE__ */ jsx("span", { children: segment.label })
|
|
83
|
+
]
|
|
84
|
+
},
|
|
85
|
+
segment.value
|
|
86
|
+
);
|
|
87
|
+
})
|
|
88
|
+
}
|
|
89
|
+
),
|
|
90
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground", children: "Auto derives the control from the data type; choose a type to override it." })
|
|
30
91
|
] }),
|
|
31
|
-
/* @__PURE__ */ jsxs("div", { className: `
|
|
32
|
-
/* @__PURE__ */
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
),
|
|
41
|
-
"Filter",
|
|
42
|
-
/* @__PURE__ */ jsx("span", { className: "text-xs font-normal text-muted-foreground", children: "Offer a filter for this column" })
|
|
43
|
-
] }),
|
|
44
|
-
enabled ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
45
|
-
/* @__PURE__ */ jsx(
|
|
46
|
-
EnumField,
|
|
47
|
-
{
|
|
48
|
-
label: "Filter type",
|
|
49
|
-
icon: /* @__PURE__ */ jsx(UiFunnelData, {}),
|
|
50
|
-
help: "Overrides the control derived from Type; set it where the rendered type and the backend storage disagree.",
|
|
51
|
-
value: filter.kind ?? "",
|
|
52
|
-
options: profileFilterKindOptions,
|
|
53
|
-
placeholder: `From Type (${filterKindLabel(kind)})`,
|
|
54
|
-
onChange: (next) => set({ kind: next })
|
|
55
|
-
}
|
|
56
|
-
),
|
|
57
|
-
/* @__PURE__ */ jsx(EditorField, { label: "Backend field", icon: /* @__PURE__ */ jsx(UiDatabase, {}), help: "The indexed field for a document store, the result column for SQL; blank infers it from the column.", children: /* @__PURE__ */ jsx("input", { "aria-label": "Backend field", value: filter.field ?? "", className: inputClassName, placeholder: field.source || field.name, onChange: (event) => set({ field: event.target.value || void 0 }) }) }),
|
|
58
|
-
picksFromAList ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
59
|
-
/* @__PURE__ */ jsx("div", { className: wide, children: /* @__PURE__ */ jsx(EditorField, { label: "Values", icon: /* @__PURE__ */ jsx(UiListDashes, {}), help: "Comma-separated values to offer instead of asking the backend; leave blank to enumerate from the data.", children: /* @__PURE__ */ jsx(
|
|
92
|
+
enabled ? /* @__PURE__ */ jsxs("div", { className: `grid gap-4 ${columns === 2 ? "sm:grid-cols-2" : ""}`, children: [
|
|
93
|
+
/* @__PURE__ */ jsx(
|
|
94
|
+
EditorField,
|
|
95
|
+
{
|
|
96
|
+
label: "Backend field",
|
|
97
|
+
icon: /* @__PURE__ */ jsx(UiDatabase, {}),
|
|
98
|
+
help: "The indexed field for a document store, or the result column for SQL; blank infers it from the column.",
|
|
99
|
+
children: /* @__PURE__ */ jsx(
|
|
60
100
|
"input",
|
|
61
101
|
{
|
|
62
|
-
"aria-label": "
|
|
63
|
-
value:
|
|
102
|
+
"aria-label": "Backend field",
|
|
103
|
+
value: filter.field ?? "",
|
|
64
104
|
className: inputClassName,
|
|
65
|
-
placeholder:
|
|
66
|
-
onChange: (event) => set({
|
|
105
|
+
placeholder: field.source || field.name,
|
|
106
|
+
onChange: (event) => set({ field: event.target.value || void 0 })
|
|
67
107
|
}
|
|
68
|
-
)
|
|
69
|
-
|
|
70
|
-
|
|
108
|
+
)
|
|
109
|
+
}
|
|
110
|
+
),
|
|
111
|
+
picksFromAList ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
112
|
+
/* @__PURE__ */ jsx("div", { className: wide, children: /* @__PURE__ */ jsx(
|
|
113
|
+
EditorField,
|
|
114
|
+
{
|
|
115
|
+
label: "Values",
|
|
116
|
+
icon: /* @__PURE__ */ jsx(UiListDashes, {}),
|
|
117
|
+
help: "Comma-separated values to offer instead of asking the backend; leave blank to enumerate from the data.",
|
|
118
|
+
children: /* @__PURE__ */ jsx(
|
|
71
119
|
"input",
|
|
72
120
|
{
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
121
|
+
"aria-label": "Values",
|
|
122
|
+
value: (filter.options ?? []).join(", "),
|
|
123
|
+
className: inputClassName,
|
|
124
|
+
placeholder: "Ask the backend",
|
|
125
|
+
onChange: (event) => set({ options: parseFilterOptions(event.target.value) })
|
|
77
126
|
}
|
|
78
|
-
)
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
127
|
+
)
|
|
128
|
+
}
|
|
129
|
+
) }),
|
|
130
|
+
/* @__PURE__ */ jsxs("label", { className: "flex items-center gap-2 text-sm font-medium", children: [
|
|
131
|
+
/* @__PURE__ */ jsx(
|
|
82
132
|
"input",
|
|
83
133
|
{
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
value: filter.limit ?? "",
|
|
89
|
-
disabled: !looksUp,
|
|
90
|
-
className: inputClassName,
|
|
91
|
-
placeholder: String(PROFILE_FILTER_DEFAULT_LIMIT),
|
|
92
|
-
onChange: (event) => set({ limit: event.target.value ? Number(event.target.value) : void 0 })
|
|
134
|
+
type: "checkbox",
|
|
135
|
+
checked: looksUp,
|
|
136
|
+
disabled: enumerated,
|
|
137
|
+
onChange: (event) => set({ lookup: event.target.checked })
|
|
93
138
|
}
|
|
94
|
-
)
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
139
|
+
),
|
|
140
|
+
/* @__PURE__ */ jsx(
|
|
141
|
+
"span",
|
|
142
|
+
{
|
|
143
|
+
className: enumerated ? "text-muted-foreground" : void 0,
|
|
144
|
+
children: enumerated ? "Values are listed above" : "Look values up from the data"
|
|
145
|
+
}
|
|
146
|
+
)
|
|
147
|
+
] }),
|
|
148
|
+
/* @__PURE__ */ jsx(
|
|
149
|
+
EditorField,
|
|
150
|
+
{
|
|
151
|
+
label: "Values offered",
|
|
152
|
+
icon: /* @__PURE__ */ jsx(UiListOrdered, {}),
|
|
153
|
+
help: `How many distinct values the control lists before the rest have to be typed. Blank uses ${PROFILE_FILTER_DEFAULT_LIMIT}.`,
|
|
154
|
+
children: /* @__PURE__ */ jsx(
|
|
155
|
+
"input",
|
|
156
|
+
{
|
|
157
|
+
"aria-label": "Values offered",
|
|
158
|
+
type: "number",
|
|
159
|
+
min: 1,
|
|
160
|
+
max: PROFILE_FILTER_MAX_LIMIT,
|
|
161
|
+
value: filter.limit ?? "",
|
|
162
|
+
disabled: !looksUp,
|
|
163
|
+
className: inputClassName,
|
|
164
|
+
placeholder: String(PROFILE_FILTER_DEFAULT_LIMIT),
|
|
165
|
+
onChange: (event) => set({
|
|
166
|
+
limit: event.target.value ? Number(event.target.value) : void 0
|
|
167
|
+
})
|
|
168
|
+
}
|
|
169
|
+
)
|
|
170
|
+
}
|
|
171
|
+
)
|
|
172
|
+
] }) : null,
|
|
173
|
+
supportsMultiple ? /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-2 text-sm font-medium", children: [
|
|
174
|
+
/* @__PURE__ */ jsx(
|
|
175
|
+
"input",
|
|
176
|
+
{
|
|
177
|
+
type: "checkbox",
|
|
178
|
+
checked: filter.multi ?? true,
|
|
179
|
+
onChange: (event) => set({ multi: event.target.checked })
|
|
180
|
+
}
|
|
181
|
+
),
|
|
182
|
+
/* @__PURE__ */ jsx(UiListChecks, { className: "text-[15px] text-muted-foreground" }),
|
|
183
|
+
"Allow several values at once"
|
|
101
184
|
] }) : null
|
|
102
|
-
] })
|
|
185
|
+
] }) : null
|
|
103
186
|
] });
|
|
104
187
|
}
|
|
188
|
+
function filterForKind(filter, kind) {
|
|
189
|
+
if (kind === "terms") return filter;
|
|
190
|
+
if (kind === "exact") {
|
|
191
|
+
return patchColumnFilter(filter, {
|
|
192
|
+
options: void 0,
|
|
193
|
+
lookup: void 0,
|
|
194
|
+
limit: void 0
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
return patchColumnFilter(filter, {
|
|
198
|
+
options: void 0,
|
|
199
|
+
lookup: void 0,
|
|
200
|
+
limit: void 0,
|
|
201
|
+
multi: void 0
|
|
202
|
+
});
|
|
203
|
+
}
|
|
105
204
|
function parseFilterOptions(raw) {
|
|
106
205
|
const values = raw.split(",").map((value) => value.trim()).filter(Boolean);
|
|
107
206
|
return values.length ? values : void 0;
|
|
108
207
|
}
|
|
109
|
-
function filterKindLabel(kind) {
|
|
110
|
-
var _a;
|
|
111
|
-
return ((_a = PROFILE_FILTER_KIND_OPTIONS.find((option) => option.value === kind)) == null ? void 0 : _a.label) ?? kind;
|
|
112
|
-
}
|
|
113
|
-
function summarizeFilter(kind, enumerated, looksUp, limit) {
|
|
114
|
-
const control = filterKindLabel(kind);
|
|
115
|
-
if (enumerated) return `${control}, listed`;
|
|
116
|
-
if (!looksUp) return control;
|
|
117
|
-
return `${control}, top ${limit ?? PROFILE_FILTER_DEFAULT_LIMIT}`;
|
|
118
|
-
}
|
|
119
208
|
export {
|
|
120
209
|
ProfileFieldFilterEditor
|
|
121
210
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profileFieldFilterEditor.js","sources":["../../../src/profiles/fields/profileFieldFilterEditor.tsx"],"sourcesContent":["import { UiDatabase, UiFilter, UiFunnelData, UiListChecks, UiListDashes, UiListOrdered } from \"../../icons\";\nimport { EditorField, EnumField, inputClassName } from \"./profileFieldControls\";\nimport { profileFilterKindOptions } from \"./profileFieldIcons\";\nimport {\n inferredFilterKind,\n patchColumnFilter,\n PROFILE_FILTER_DEFAULT_LIMIT,\n PROFILE_FILTER_KIND_OPTIONS,\n PROFILE_FILTER_MAX_LIMIT,\n type Patch,\n type ProfileColumn,\n type ProfileColumnFilter,\n} from \"../wizard/profileWizardModel\";\n\n/**\n * How this column is filtered. Collapsed by default: every field here overrides\n * an inference the server already makes correctly for most columns, so opening\n * it should be a deliberate act rather than the price of editing a label.\n *\n * The Filter toggle leads and gates the rest: a column that offers no filter has\n * nothing to say about its control, its backend field or its values, so those\n * are hidden rather than left editable and inert.\n */\nexport function ProfileFieldFilterEditor({\n field,\n columns,\n onChange,\n}: {\n field: ProfileColumn;\n columns: 1 | 2;\n onChange: (patch: Patch<ProfileColumn>) => void;\n}) {\n const filter = field.filter ?? {};\n const set = (patch: Patch<ProfileColumnFilter>) =>\n onChange({ filter: patchColumnFilter(field.filter, patch) });\n\n // A value selection is the only kind with a list to enumerate; a range, a\n // toggle and a substring are typed rather than picked.\n const kind = filter.kind ?? inferredFilterKind(field);\n const picksFromAList = kind === \"terms\";\n const enumerated = (filter.options?.length ?? 0) > 0;\n // Declaring the values IS the answer the lookup would go and fetch, so the two\n // are mutually exclusive — the server enforces this and the form mirrors it.\n const looksUp = picksFromAList && !enumerated && (filter.lookup ?? true);\n const enabled = !filter.disabled;\n const wide = columns === 2 ? \"sm:col-span-2\" : \"\";\n\n return (\n <details className=\"rounded-md border px-3 py-2\">\n <summary className=\"flex cursor-pointer items-center gap-2 text-sm font-medium\">\n <UiFilter className=\"shrink-0 text-[15px] text-muted-foreground\" />\n Filtering\n <span className=\"text-xs font-normal text-muted-foreground\">\n {enabled ? summarizeFilter(kind, enumerated, looksUp, filter.limit) : \"off\"}\n </span>\n </summary>\n <div className={`mt-3 grid gap-4 ${columns === 2 ? \"sm:grid-cols-2\" : \"\"}`}>\n <label className={`flex items-center gap-2 text-sm font-medium ${wide}`}>\n <input\n type=\"checkbox\"\n checked={enabled}\n onChange={(event) => set({ disabled: event.target.checked ? undefined : true })}\n />\n Filter\n <span className=\"text-xs font-normal text-muted-foreground\">\n Offer a filter for this column\n </span>\n </label>\n {enabled ? (\n <>\n <EnumField\n label=\"Filter type\"\n icon={<UiFunnelData />}\n help=\"Overrides the control derived from Type; set it where the rendered type and the backend storage disagree.\"\n value={filter.kind ?? \"\"}\n options={profileFilterKindOptions}\n placeholder={`From Type (${filterKindLabel(kind)})`}\n onChange={(next) => set({ kind: next })}\n />\n <EditorField label=\"Backend field\" icon={<UiDatabase />} help=\"The indexed field for a document store, the result column for SQL; blank infers it from the column.\">\n <input aria-label=\"Backend field\" value={filter.field ?? \"\"} className={inputClassName} placeholder={field.source || field.name} onChange={(event) => set({ field: event.target.value || undefined })} />\n </EditorField>\n {picksFromAList ? (\n <>\n <div className={wide}>\n <EditorField label=\"Values\" icon={<UiListDashes />} help=\"Comma-separated values to offer instead of asking the backend; leave blank to enumerate from the data.\">\n <input\n aria-label=\"Values\"\n value={(filter.options ?? []).join(\", \")}\n className={inputClassName}\n placeholder=\"Ask the backend\"\n onChange={(event) => set({ options: parseFilterOptions(event.target.value) })}\n />\n </EditorField>\n </div>\n <label className=\"flex items-center gap-2 text-sm font-medium\">\n <input\n type=\"checkbox\"\n checked={looksUp}\n disabled={enumerated}\n onChange={(event) => set({ lookup: event.target.checked })}\n />\n <span className={enumerated ? \"text-muted-foreground\" : undefined}>\n {enumerated ? \"Values are listed above\" : \"Look values up from the data\"}\n </span>\n </label>\n <EditorField label=\"Values offered\" icon={<UiListOrdered />} help={`How many distinct values the control lists before the rest have to be typed for. Blank uses ${PROFILE_FILTER_DEFAULT_LIMIT}.`}>\n <input\n aria-label=\"Values offered\"\n type=\"number\"\n min={1}\n max={PROFILE_FILTER_MAX_LIMIT}\n value={filter.limit ?? \"\"}\n disabled={!looksUp}\n className={inputClassName}\n placeholder={String(PROFILE_FILTER_DEFAULT_LIMIT)}\n onChange={(event) => set({ limit: event.target.value ? Number(event.target.value) : undefined })}\n />\n </EditorField>\n </>\n ) : null}\n <label className=\"flex items-center gap-2 text-sm font-medium\">\n <input type=\"checkbox\" checked={filter.multi ?? true} onChange={(event) => set({ multi: event.target.checked })} />\n <UiListChecks className=\"text-[15px] text-muted-foreground\" />\n Allow several values at once\n </label>\n </>\n ) : null}\n </div>\n </details>\n );\n}\n\nfunction parseFilterOptions(raw: string): string[] | undefined {\n const values = raw.split(\",\").map((value) => value.trim()).filter(Boolean);\n return values.length ? values : undefined;\n}\n\nfunction filterKindLabel(kind: string): string {\n return PROFILE_FILTER_KIND_OPTIONS.find((option) => option.value === kind)?.label ?? kind;\n}\n\nfunction summarizeFilter(kind: string, enumerated: boolean, looksUp: boolean, limit?: number) {\n const control = filterKindLabel(kind);\n if (enumerated) return `${control}, listed`;\n if (!looksUp) return control;\n return `${control}, top ${limit ?? PROFILE_FILTER_DEFAULT_LIMIT}`;\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"profileFieldFilterEditor.js","sources":["../../../src/profiles/fields/profileFieldFilterEditor.tsx"],"sourcesContent":["import {\n UiDatabase,\n UiListChecks,\n UiListDashes,\n UiListOrdered,\n UiMagicWand,\n UiProhibit,\n} from \"../../icons\";\nimport { EditorField, inputClassName } from \"./profileFieldControls\";\nimport { profileFilterKindIcon } from \"./profileFieldIcons\";\nimport {\n inferredFilterKind,\n patchColumnFilter,\n PROFILE_FILTER_DEFAULT_LIMIT,\n PROFILE_FILTER_KIND_OPTIONS,\n PROFILE_FILTER_MAX_LIMIT,\n type Patch,\n type ProfileColumn,\n type ProfileColumnFilter,\n} from \"../wizard/profileWizardModel\";\n\ntype FilterState = \"auto\" | \"off\" | string;\n\nconst FILTER_SEGMENTS = [\n { value: \"auto\", label: \"Auto\", icon: <UiMagicWand /> },\n { value: \"off\", label: \"Off\", icon: <UiProhibit /> },\n ...PROFILE_FILTER_KIND_OPTIONS.filter(\n (option) => option.value !== \"none\",\n ).map((option) => ({\n ...option,\n icon: profileFilterKindIcon(option.value),\n })),\n] as const;\n\nexport function ProfileFieldFilterEditor({\n field,\n columns,\n onChange,\n}: {\n field: ProfileColumn;\n columns: 1 | 2;\n onChange: (patch: Patch<ProfileColumn>) => void;\n}) {\n const filter = field.filter ?? {};\n const state: FilterState =\n filter.disabled || filter.kind === \"none\" ? \"off\" : filter.kind || \"auto\";\n const effectiveKind = state === \"auto\" ? inferredFilterKind(field) : state;\n const enabled = state !== \"off\" && effectiveKind !== \"none\";\n const picksFromAList = effectiveKind === \"terms\";\n const supportsMultiple = picksFromAList || effectiveKind === \"exact\";\n const enumerated = (filter.options?.length ?? 0) > 0;\n const looksUp = picksFromAList && !enumerated && (filter.lookup ?? true);\n const wide = columns === 2 ? \"sm:col-span-2\" : \"\";\n\n const set = (patch: Patch<ProfileColumnFilter>) =>\n onChange({ filter: patchColumnFilter(field.filter, patch) });\n const selectState = (next: FilterState) => {\n if (next === \"off\") {\n set({\n disabled: true,\n kind: filter.kind === \"none\" ? undefined : filter.kind,\n });\n return;\n }\n const kind = next === \"auto\" ? inferredFilterKind(field) : next;\n const selected = patchColumnFilter(filter, {\n disabled: undefined,\n kind: next === \"auto\" ? undefined : next,\n });\n onChange({ filter: filterForKind(selected, kind) });\n };\n\n return (\n <section className={`grid gap-4 ${wide}`} aria-label=\"Filtering\">\n <div className=\"grid gap-1.5\">\n <span className=\"text-sm font-medium\">Filter type</span>\n <div\n role=\"radiogroup\"\n aria-label=\"Filter type\"\n className=\"flex flex-wrap gap-1 rounded-md border bg-muted/30 p-1\"\n >\n {FILTER_SEGMENTS.map((segment) => {\n const selected = state === segment.value;\n return (\n <label\n key={segment.value}\n title={segment.label}\n className={`flex h-9 cursor-pointer items-center gap-1.5 rounded px-2 text-xs transition-colors focus-within:ring-2 focus-within:ring-primary/30 ${\n selected\n ? \"bg-background font-medium text-foreground shadow-sm\"\n : \"text-muted-foreground hover:bg-background/70 hover:text-foreground\"\n }`}\n >\n <input\n type=\"radio\"\n name={`filter-type-${field.name}`}\n value={segment.value}\n checked={selected}\n aria-label={segment.label}\n className=\"sr-only\"\n onChange={() => selectState(segment.value)}\n />\n <span className=\"text-[15px]\">{segment.icon}</span>\n <span>{segment.label}</span>\n </label>\n );\n })}\n </div>\n <span className=\"text-xs text-muted-foreground\">\n Auto derives the control from the data type; choose a type to override it.\n </span>\n </div>\n\n {enabled ? (\n <div className={`grid gap-4 ${columns === 2 ? \"sm:grid-cols-2\" : \"\"}`}>\n <EditorField\n label=\"Backend field\"\n icon={<UiDatabase />}\n help=\"The indexed field for a document store, or the result column for SQL; blank infers it from the column.\"\n >\n <input\n aria-label=\"Backend field\"\n value={filter.field ?? \"\"}\n className={inputClassName}\n placeholder={field.source || field.name}\n onChange={(event) =>\n set({ field: event.target.value || undefined })\n }\n />\n </EditorField>\n {picksFromAList ? (\n <>\n <div className={wide}>\n <EditorField\n label=\"Values\"\n icon={<UiListDashes />}\n help=\"Comma-separated values to offer instead of asking the backend; leave blank to enumerate from the data.\"\n >\n <input\n aria-label=\"Values\"\n value={(filter.options ?? []).join(\", \")}\n className={inputClassName}\n placeholder=\"Ask the backend\"\n onChange={(event) =>\n set({ options: parseFilterOptions(event.target.value) })\n }\n />\n </EditorField>\n </div>\n <label className=\"flex items-center gap-2 text-sm font-medium\">\n <input\n type=\"checkbox\"\n checked={looksUp}\n disabled={enumerated}\n onChange={(event) => set({ lookup: event.target.checked })}\n />\n <span\n className={enumerated ? \"text-muted-foreground\" : undefined}\n >\n {enumerated\n ? \"Values are listed above\"\n : \"Look values up from the data\"}\n </span>\n </label>\n <EditorField\n label=\"Values offered\"\n icon={<UiListOrdered />}\n help={`How many distinct values the control lists before the rest have to be typed. Blank uses ${PROFILE_FILTER_DEFAULT_LIMIT}.`}\n >\n <input\n aria-label=\"Values offered\"\n type=\"number\"\n min={1}\n max={PROFILE_FILTER_MAX_LIMIT}\n value={filter.limit ?? \"\"}\n disabled={!looksUp}\n className={inputClassName}\n placeholder={String(PROFILE_FILTER_DEFAULT_LIMIT)}\n onChange={(event) =>\n set({\n limit: event.target.value\n ? Number(event.target.value)\n : undefined,\n })\n }\n />\n </EditorField>\n </>\n ) : null}\n {supportsMultiple ? (\n <label className=\"flex items-center gap-2 text-sm font-medium\">\n <input\n type=\"checkbox\"\n checked={filter.multi ?? true}\n onChange={(event) => set({ multi: event.target.checked })}\n />\n <UiListChecks className=\"text-[15px] text-muted-foreground\" />\n Allow several values at once\n </label>\n ) : null}\n </div>\n ) : null}\n </section>\n );\n}\n\nfunction filterForKind(\n filter: ProfileColumnFilter | undefined,\n kind: string,\n): ProfileColumnFilter | undefined {\n if (kind === \"terms\") return filter;\n if (kind === \"exact\") {\n return patchColumnFilter(filter, {\n options: undefined,\n lookup: undefined,\n limit: undefined,\n });\n }\n return patchColumnFilter(filter, {\n options: undefined,\n lookup: undefined,\n limit: undefined,\n multi: undefined,\n });\n}\n\nfunction parseFilterOptions(raw: string): string[] | undefined {\n const values = raw\n .split(\",\")\n .map((value) => value.trim())\n .filter(Boolean);\n return values.length ? values : undefined;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -19,10 +19,10 @@ const UiCursorText = require("../../icons/components/UiCursorText.cjs");
|
|
|
19
19
|
const UiCurrencyDollar = require("../../icons/components/UiCurrencyDollar.cjs");
|
|
20
20
|
const UiActivity = require("../../icons/components/UiActivity.cjs");
|
|
21
21
|
const UiChartPie = require("../../icons/components/UiChartPie.cjs");
|
|
22
|
+
const UiListChecks = require("../../icons/components/UiListChecks.cjs");
|
|
22
23
|
const UiProhibit = require("../../icons/components/UiProhibit.cjs");
|
|
23
24
|
const UiSliders = require("../../icons/components/UiSliders.cjs");
|
|
24
25
|
const UiFingerprint = require("../../icons/components/UiFingerprint.cjs");
|
|
25
|
-
const UiListChecks = require("../../icons/components/UiListChecks.cjs");
|
|
26
26
|
const TYPE_ICONS = {
|
|
27
27
|
string: /* @__PURE__ */ jsxRuntime.jsx(UiCursorText.UiCursorText, {}),
|
|
28
28
|
number: /* @__PURE__ */ jsxRuntime.jsx(UiSigma.UiSigma, {}),
|
|
@@ -74,6 +74,9 @@ const UNIT_ICONS = {
|
|
|
74
74
|
function profileTypeIcon(type) {
|
|
75
75
|
return (type && TYPE_ICONS[type]) ?? /* @__PURE__ */ jsxRuntime.jsx(UiColumns.UiColumns, {});
|
|
76
76
|
}
|
|
77
|
+
function profileFilterKindIcon(kind) {
|
|
78
|
+
return FILTER_KIND_ICONS[kind] ?? /* @__PURE__ */ jsxRuntime.jsx(UiListChecks.UiListChecks, {});
|
|
79
|
+
}
|
|
77
80
|
const profileTypeOptions = profileFieldTypes.PROFILE_FIELD_TYPES.map((type) => ({
|
|
78
81
|
value: type,
|
|
79
82
|
label: type,
|
|
@@ -90,10 +93,10 @@ const profileFormatOptions = profileWizardModel.PROFILE_COLUMN_FORMAT_OPTIONS.ma
|
|
|
90
93
|
const profileUnitOptions = profileWizardModel.PROFILE_COLUMN_UNIT_OPTIONS.map(
|
|
91
94
|
(option) => ({ ...option, icon: UNIT_ICONS[option.value] })
|
|
92
95
|
);
|
|
93
|
-
|
|
96
|
+
profileWizardModel.PROFILE_FILTER_KIND_OPTIONS.map(
|
|
94
97
|
(option) => ({ ...option, icon: FILTER_KIND_ICONS[option.value] })
|
|
95
98
|
);
|
|
96
|
-
exports.
|
|
99
|
+
exports.profileFilterKindIcon = profileFilterKindIcon;
|
|
97
100
|
exports.profileFormatOptions = profileFormatOptions;
|
|
98
101
|
exports.profileRoleOptions = profileRoleOptions;
|
|
99
102
|
exports.profileTypeIcon = profileTypeIcon;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profileFieldIcons.cjs","sources":["../../../src/profiles/fields/profileFieldIcons.tsx"],"sourcesContent":["/**\n * The glyphs a profile column's enums render with, and the Combobox options\n * built from them.\n *\n * The params editor gets these from the schema (`x-enum-icons`); the column\n * editor is hand-rolled, so its vocabulary lives here instead — one place both\n * the grid and the inspector read, rather than an icon picked twice.\n */\n\nimport type { ReactNode } from \"react\";\nimport type { ComboboxOption } from \"../../components/combobox-types\";\n// Monochrome UI glyphs only: the symbol icons (UiString, UiJson, UiField, …)\n// carry hardcoded IDE colours, which read as stray dots beside a form label.\nimport {\n UiActivity,\n UiBraces,\n UiCalendar,\n UiChartPie,\n UiClock,\n UiColumns,\n UiCurrencyDollar,\n UiCursorText,\n UiFingerprint,\n UiHardDrive,\n UiListChecks,\n UiListDashes,\n UiProhibit,\n UiPulse,\n UiShieldCheck,\n UiSigma,\n UiSliders,\n UiTag,\n UiTimer,\n UiToggleOn,\n} from \"../../icons\";\nimport { PROFILE_FIELD_TYPES } from \"./profileFieldTypes\";\nimport {\n PROFILE_COLUMN_FORMAT_OPTIONS,\n PROFILE_COLUMN_UNIT_OPTIONS,\n PROFILE_FILTER_KIND_OPTIONS,\n} from \"../wizard/profileWizardModel\";\n\nconst TYPE_ICONS: Record<string, ReactNode> = {\n string: <UiCursorText />,\n number: <UiSigma />,\n boolean: <UiToggleOn />,\n datetime: <UiCalendar />,\n duration: <UiTimer />,\n bytes: <UiHardDrive />,\n status: <UiPulse />,\n health: <UiShieldCheck />,\n key_value: <UiTag />,\n key_values: <UiListDashes />,\n json: <UiBraces />,\n};\n\n// A filter borrows the glyph of the type that infers it — duration from\n// UiTimer, date from UiCalendar — so the Type and the control it implies read\n// as one thing. Time keeps the clock, which is what makes the date/date-and-\n// time split legible at a glance.\nconst FILTER_KIND_ICONS: Record<string, ReactNode> = {\n terms: <UiListChecks />,\n exact: <UiFingerprint />,\n range: <UiSliders />,\n duration: <UiTimer />,\n date: <UiCalendar />,\n time: <UiClock />,\n boolean: <UiToggleOn />,\n text: <UiCursorText />,\n none: <UiProhibit />,\n};\n\nconst ROLE_ICONS: Record<string, ReactNode> = {\n timestamp: <UiClock />,\n tags: <UiTag />,\n status: <UiPulse />,\n};\n\nconst FORMAT_ICONS: Record<string, ReactNode> = {\n date: <UiCalendar />,\n float: <UiSigma />,\n duration: <UiTimer />,\n bytes: <UiHardDrive />,\n currency: <UiCurrencyDollar />,\n};\n\nconst UNIT_ICONS: Record<string, ReactNode> = {\n none: <UiSigma />,\n short: <UiSigma />,\n percent: <UiChartPie />,\n percentunit: <UiChartPie />,\n bytes: <UiHardDrive />,\n decbytes: <UiHardDrive />,\n Bps: <UiActivity />,\n binBps: <UiActivity />,\n ms: <UiTimer />,\n s: <UiTimer />,\n};\n\nexport function profileTypeIcon(type?: string): ReactNode {\n return (type && TYPE_ICONS[type]) ?? <UiColumns />;\n}\n\nexport function profileFilterKindIcon(kind: string): ReactNode {\n return FILTER_KIND_ICONS[kind] ?? <UiListChecks />;\n}\n\nexport const profileTypeOptions: ComboboxOption[] = PROFILE_FIELD_TYPES.map((type) => ({\n value: type,\n label: type,\n icon: TYPE_ICONS[type],\n}));\n\nexport const profileRoleOptions: ComboboxOption[] = [\n { value: \"timestamp\", label: \"Timestamp\", icon: ROLE_ICONS[\"timestamp\"] },\n { value: \"tags\", label: \"Tags\", icon: ROLE_ICONS[\"tags\"] },\n { value: \"status\", label: \"Status\", icon: ROLE_ICONS[\"status\"] },\n];\n\nexport const profileFormatOptions: ComboboxOption[] = PROFILE_COLUMN_FORMAT_OPTIONS.map(\n (option) => ({ ...option, icon: FORMAT_ICONS[option.value] }),\n);\n\nexport const profileUnitOptions: ComboboxOption[] = PROFILE_COLUMN_UNIT_OPTIONS.map(\n (option) => ({ ...option, icon: UNIT_ICONS[option.value] }),\n);\n\nexport const profileFilterKindOptions: ComboboxOption[] = PROFILE_FILTER_KIND_OPTIONS.map(\n (option) => ({ ...option, icon: FILTER_KIND_ICONS[option.value] }),\n);\n"],"names":["UiCursorText","UiSigma","UiToggleOn","UiCalendar","UiTimer","UiHardDrive","UiPulse","UiShieldCheck","UiTag","UiListDashes","UiBraces","UiListChecks","UiFingerprint","UiSliders","UiClock","UiProhibit","UiCurrencyDollar","UiChartPie","UiActivity","UiColumns","PROFILE_FIELD_TYPES","PROFILE_COLUMN_FORMAT_OPTIONS","PROFILE_COLUMN_UNIT_OPTIONS","PROFILE_FILTER_KIND_OPTIONS"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,MAAM,aAAwC;AAAA,EAC5C,uCAASA,aAAAA,cAAA,EAAa;AAAA,EACtB,uCAASC,QAAAA,SAAA,EAAQ;AAAA,EACjB,wCAAUC,WAAAA,YAAA,EAAW;AAAA,EACrB,yCAAWC,WAAAA,YAAA,EAAW;AAAA,EACtB,yCAAWC,QAAAA,SAAA,EAAQ;AAAA,EACnB,sCAAQC,YAAAA,aAAA,EAAY;AAAA,EACpB,uCAASC,QAAAA,SAAA,EAAQ;AAAA,EACjB,uCAASC,SAAAA,eAAA,EAAc;AAAA,EACvB,0CAAYC,MAAAA,OAAA,EAAM;AAAA,EAClB,2CAAaC,aAAAA,cAAA,EAAa;AAAA,EAC1B,qCAAOC,SAAAA,UAAA,CAAA,CAAS;AAClB;AAMA,MAAM,oBAA+C;AAAA,EACnD,sCAAQC,aAAAA,cAAA,EAAa;AAAA,EACrB,sCAAQC,cAAAA,eAAA,EAAc;AAAA,EACtB,sCAAQC,UAAAA,WAAA,EAAU;AAAA,EAClB,yCAAWT,QAAAA,SAAA,EAAQ;AAAA,EACnB,qCAAOD,WAAAA,YAAA,EAAW;AAAA,EAClB,qCAAOW,QAAAA,SAAA,EAAQ;AAAA,EACf,wCAAUZ,WAAAA,YAAA,EAAW;AAAA,EACrB,qCAAOF,aAAAA,cAAA,EAAa;AAAA,EACpB,qCAAOe,WAAAA,YAAA,CAAA,CAAW;AACpB;AAEA,MAAM,aAAwC;AAAA,EAC5C,0CAAYD,QAAAA,SAAA,EAAQ;AAAA,EACpB,qCAAON,MAAAA,OAAA,EAAM;AAAA,EACb,uCAASF,QAAAA,SAAA,CAAA,CAAQ;AACnB;AAEA,MAAM,eAA0C;AAAA,EAC9C,qCAAOH,WAAAA,YAAA,EAAW;AAAA,EAClB,sCAAQF,QAAAA,SAAA,EAAQ;AAAA,EAChB,yCAAWG,QAAAA,SAAA,EAAQ;AAAA,EACnB,sCAAQC,YAAAA,aAAA,EAAY;AAAA,EACpB,yCAAWW,iBAAAA,kBAAA,CAAA,CAAiB;AAC9B;AAEA,MAAM,aAAwC;AAAA,EAC5C,qCAAOf,QAAAA,SAAA,EAAQ;AAAA,EACf,sCAAQA,QAAAA,SAAA,EAAQ;AAAA,EAChB,wCAAUgB,WAAAA,YAAA,EAAW;AAAA,EACrB,4CAAcA,WAAAA,YAAA,EAAW;AAAA,EACzB,sCAAQZ,YAAAA,aAAA,EAAY;AAAA,EACpB,yCAAWA,YAAAA,aAAA,EAAY;AAAA,EACvB,oCAAMa,WAAAA,YAAA,EAAW;AAAA,EACjB,uCAASA,WAAAA,YAAA,EAAW;AAAA,EACpB,mCAAKd,QAAAA,SAAA,EAAQ;AAAA,EACb,kCAAIA,QAAAA,SAAA,CAAA,CAAQ;AACd;AAEO,SAAS,gBAAgB,MAA0B;AACxD,UAAQ,QAAQ,WAAW,IAAI,qCAAOe,UAAAA,WAAA,EAAU;AAClD;
|
|
1
|
+
{"version":3,"file":"profileFieldIcons.cjs","sources":["../../../src/profiles/fields/profileFieldIcons.tsx"],"sourcesContent":["/**\n * The glyphs a profile column's enums render with, and the Combobox options\n * built from them.\n *\n * The params editor gets these from the schema (`x-enum-icons`); the column\n * editor is hand-rolled, so its vocabulary lives here instead — one place both\n * the grid and the inspector read, rather than an icon picked twice.\n */\n\nimport type { ReactNode } from \"react\";\nimport type { ComboboxOption } from \"../../components/combobox-types\";\n// Monochrome UI glyphs only: the symbol icons (UiString, UiJson, UiField, …)\n// carry hardcoded IDE colours, which read as stray dots beside a form label.\nimport {\n UiActivity,\n UiBraces,\n UiCalendar,\n UiChartPie,\n UiClock,\n UiColumns,\n UiCurrencyDollar,\n UiCursorText,\n UiFingerprint,\n UiHardDrive,\n UiListChecks,\n UiListDashes,\n UiProhibit,\n UiPulse,\n UiShieldCheck,\n UiSigma,\n UiSliders,\n UiTag,\n UiTimer,\n UiToggleOn,\n} from \"../../icons\";\nimport { PROFILE_FIELD_TYPES } from \"./profileFieldTypes\";\nimport {\n PROFILE_COLUMN_FORMAT_OPTIONS,\n PROFILE_COLUMN_UNIT_OPTIONS,\n PROFILE_FILTER_KIND_OPTIONS,\n} from \"../wizard/profileWizardModel\";\n\nconst TYPE_ICONS: Record<string, ReactNode> = {\n string: <UiCursorText />,\n number: <UiSigma />,\n boolean: <UiToggleOn />,\n datetime: <UiCalendar />,\n duration: <UiTimer />,\n bytes: <UiHardDrive />,\n status: <UiPulse />,\n health: <UiShieldCheck />,\n key_value: <UiTag />,\n key_values: <UiListDashes />,\n json: <UiBraces />,\n};\n\n// A filter borrows the glyph of the type that infers it — duration from\n// UiTimer, date from UiCalendar — so the Type and the control it implies read\n// as one thing. Time keeps the clock, which is what makes the date/date-and-\n// time split legible at a glance.\nconst FILTER_KIND_ICONS: Record<string, ReactNode> = {\n terms: <UiListChecks />,\n exact: <UiFingerprint />,\n range: <UiSliders />,\n duration: <UiTimer />,\n date: <UiCalendar />,\n time: <UiClock />,\n boolean: <UiToggleOn />,\n text: <UiCursorText />,\n none: <UiProhibit />,\n};\n\nconst ROLE_ICONS: Record<string, ReactNode> = {\n timestamp: <UiClock />,\n tags: <UiTag />,\n status: <UiPulse />,\n};\n\nconst FORMAT_ICONS: Record<string, ReactNode> = {\n date: <UiCalendar />,\n float: <UiSigma />,\n duration: <UiTimer />,\n bytes: <UiHardDrive />,\n currency: <UiCurrencyDollar />,\n};\n\nconst UNIT_ICONS: Record<string, ReactNode> = {\n none: <UiSigma />,\n short: <UiSigma />,\n percent: <UiChartPie />,\n percentunit: <UiChartPie />,\n bytes: <UiHardDrive />,\n decbytes: <UiHardDrive />,\n Bps: <UiActivity />,\n binBps: <UiActivity />,\n ms: <UiTimer />,\n s: <UiTimer />,\n};\n\nexport function profileTypeIcon(type?: string): ReactNode {\n return (type && TYPE_ICONS[type]) ?? <UiColumns />;\n}\n\nexport function profileFilterKindIcon(kind: string): ReactNode {\n return FILTER_KIND_ICONS[kind] ?? <UiListChecks />;\n}\n\nexport const profileTypeOptions: ComboboxOption[] = PROFILE_FIELD_TYPES.map((type) => ({\n value: type,\n label: type,\n icon: TYPE_ICONS[type],\n}));\n\nexport const profileRoleOptions: ComboboxOption[] = [\n { value: \"timestamp\", label: \"Timestamp\", icon: ROLE_ICONS[\"timestamp\"] },\n { value: \"tags\", label: \"Tags\", icon: ROLE_ICONS[\"tags\"] },\n { value: \"status\", label: \"Status\", icon: ROLE_ICONS[\"status\"] },\n];\n\nexport const profileFormatOptions: ComboboxOption[] = PROFILE_COLUMN_FORMAT_OPTIONS.map(\n (option) => ({ ...option, icon: FORMAT_ICONS[option.value] }),\n);\n\nexport const profileUnitOptions: ComboboxOption[] = PROFILE_COLUMN_UNIT_OPTIONS.map(\n (option) => ({ ...option, icon: UNIT_ICONS[option.value] }),\n);\n\nexport const profileFilterKindOptions: ComboboxOption[] = PROFILE_FILTER_KIND_OPTIONS.map(\n (option) => ({ ...option, icon: FILTER_KIND_ICONS[option.value] }),\n);\n"],"names":["UiCursorText","UiSigma","UiToggleOn","UiCalendar","UiTimer","UiHardDrive","UiPulse","UiShieldCheck","UiTag","UiListDashes","UiBraces","UiListChecks","UiFingerprint","UiSliders","UiClock","UiProhibit","UiCurrencyDollar","UiChartPie","UiActivity","UiColumns","jsx","PROFILE_FIELD_TYPES","PROFILE_COLUMN_FORMAT_OPTIONS","PROFILE_COLUMN_UNIT_OPTIONS","PROFILE_FILTER_KIND_OPTIONS"],"mappings":"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"}
|
|
@@ -17,10 +17,10 @@ import { UiCursorText } from "../../icons/components/UiCursorText.js";
|
|
|
17
17
|
import { UiCurrencyDollar } from "../../icons/components/UiCurrencyDollar.js";
|
|
18
18
|
import { UiActivity } from "../../icons/components/UiActivity.js";
|
|
19
19
|
import { UiChartPie } from "../../icons/components/UiChartPie.js";
|
|
20
|
+
import { UiListChecks } from "../../icons/components/UiListChecks.js";
|
|
20
21
|
import { UiProhibit } from "../../icons/components/UiProhibit.js";
|
|
21
22
|
import { UiSliders } from "../../icons/components/UiSliders.js";
|
|
22
23
|
import { UiFingerprint } from "../../icons/components/UiFingerprint.js";
|
|
23
|
-
import { UiListChecks } from "../../icons/components/UiListChecks.js";
|
|
24
24
|
const TYPE_ICONS = {
|
|
25
25
|
string: /* @__PURE__ */ jsx(UiCursorText, {}),
|
|
26
26
|
number: /* @__PURE__ */ jsx(UiSigma, {}),
|
|
@@ -72,6 +72,9 @@ const UNIT_ICONS = {
|
|
|
72
72
|
function profileTypeIcon(type) {
|
|
73
73
|
return (type && TYPE_ICONS[type]) ?? /* @__PURE__ */ jsx(UiColumns, {});
|
|
74
74
|
}
|
|
75
|
+
function profileFilterKindIcon(kind) {
|
|
76
|
+
return FILTER_KIND_ICONS[kind] ?? /* @__PURE__ */ jsx(UiListChecks, {});
|
|
77
|
+
}
|
|
75
78
|
const profileTypeOptions = PROFILE_FIELD_TYPES.map((type) => ({
|
|
76
79
|
value: type,
|
|
77
80
|
label: type,
|
|
@@ -88,11 +91,11 @@ const profileFormatOptions = PROFILE_COLUMN_FORMAT_OPTIONS.map(
|
|
|
88
91
|
const profileUnitOptions = PROFILE_COLUMN_UNIT_OPTIONS.map(
|
|
89
92
|
(option) => ({ ...option, icon: UNIT_ICONS[option.value] })
|
|
90
93
|
);
|
|
91
|
-
|
|
94
|
+
PROFILE_FILTER_KIND_OPTIONS.map(
|
|
92
95
|
(option) => ({ ...option, icon: FILTER_KIND_ICONS[option.value] })
|
|
93
96
|
);
|
|
94
97
|
export {
|
|
95
|
-
|
|
98
|
+
profileFilterKindIcon,
|
|
96
99
|
profileFormatOptions,
|
|
97
100
|
profileRoleOptions,
|
|
98
101
|
profileTypeIcon,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profileFieldIcons.js","sources":["../../../src/profiles/fields/profileFieldIcons.tsx"],"sourcesContent":["/**\n * The glyphs a profile column's enums render with, and the Combobox options\n * built from them.\n *\n * The params editor gets these from the schema (`x-enum-icons`); the column\n * editor is hand-rolled, so its vocabulary lives here instead — one place both\n * the grid and the inspector read, rather than an icon picked twice.\n */\n\nimport type { ReactNode } from \"react\";\nimport type { ComboboxOption } from \"../../components/combobox-types\";\n// Monochrome UI glyphs only: the symbol icons (UiString, UiJson, UiField, …)\n// carry hardcoded IDE colours, which read as stray dots beside a form label.\nimport {\n UiActivity,\n UiBraces,\n UiCalendar,\n UiChartPie,\n UiClock,\n UiColumns,\n UiCurrencyDollar,\n UiCursorText,\n UiFingerprint,\n UiHardDrive,\n UiListChecks,\n UiListDashes,\n UiProhibit,\n UiPulse,\n UiShieldCheck,\n UiSigma,\n UiSliders,\n UiTag,\n UiTimer,\n UiToggleOn,\n} from \"../../icons\";\nimport { PROFILE_FIELD_TYPES } from \"./profileFieldTypes\";\nimport {\n PROFILE_COLUMN_FORMAT_OPTIONS,\n PROFILE_COLUMN_UNIT_OPTIONS,\n PROFILE_FILTER_KIND_OPTIONS,\n} from \"../wizard/profileWizardModel\";\n\nconst TYPE_ICONS: Record<string, ReactNode> = {\n string: <UiCursorText />,\n number: <UiSigma />,\n boolean: <UiToggleOn />,\n datetime: <UiCalendar />,\n duration: <UiTimer />,\n bytes: <UiHardDrive />,\n status: <UiPulse />,\n health: <UiShieldCheck />,\n key_value: <UiTag />,\n key_values: <UiListDashes />,\n json: <UiBraces />,\n};\n\n// A filter borrows the glyph of the type that infers it — duration from\n// UiTimer, date from UiCalendar — so the Type and the control it implies read\n// as one thing. Time keeps the clock, which is what makes the date/date-and-\n// time split legible at a glance.\nconst FILTER_KIND_ICONS: Record<string, ReactNode> = {\n terms: <UiListChecks />,\n exact: <UiFingerprint />,\n range: <UiSliders />,\n duration: <UiTimer />,\n date: <UiCalendar />,\n time: <UiClock />,\n boolean: <UiToggleOn />,\n text: <UiCursorText />,\n none: <UiProhibit />,\n};\n\nconst ROLE_ICONS: Record<string, ReactNode> = {\n timestamp: <UiClock />,\n tags: <UiTag />,\n status: <UiPulse />,\n};\n\nconst FORMAT_ICONS: Record<string, ReactNode> = {\n date: <UiCalendar />,\n float: <UiSigma />,\n duration: <UiTimer />,\n bytes: <UiHardDrive />,\n currency: <UiCurrencyDollar />,\n};\n\nconst UNIT_ICONS: Record<string, ReactNode> = {\n none: <UiSigma />,\n short: <UiSigma />,\n percent: <UiChartPie />,\n percentunit: <UiChartPie />,\n bytes: <UiHardDrive />,\n decbytes: <UiHardDrive />,\n Bps: <UiActivity />,\n binBps: <UiActivity />,\n ms: <UiTimer />,\n s: <UiTimer />,\n};\n\nexport function profileTypeIcon(type?: string): ReactNode {\n return (type && TYPE_ICONS[type]) ?? <UiColumns />;\n}\n\nexport function profileFilterKindIcon(kind: string): ReactNode {\n return FILTER_KIND_ICONS[kind] ?? <UiListChecks />;\n}\n\nexport const profileTypeOptions: ComboboxOption[] = PROFILE_FIELD_TYPES.map((type) => ({\n value: type,\n label: type,\n icon: TYPE_ICONS[type],\n}));\n\nexport const profileRoleOptions: ComboboxOption[] = [\n { value: \"timestamp\", label: \"Timestamp\", icon: ROLE_ICONS[\"timestamp\"] },\n { value: \"tags\", label: \"Tags\", icon: ROLE_ICONS[\"tags\"] },\n { value: \"status\", label: \"Status\", icon: ROLE_ICONS[\"status\"] },\n];\n\nexport const profileFormatOptions: ComboboxOption[] = PROFILE_COLUMN_FORMAT_OPTIONS.map(\n (option) => ({ ...option, icon: FORMAT_ICONS[option.value] }),\n);\n\nexport const profileUnitOptions: ComboboxOption[] = PROFILE_COLUMN_UNIT_OPTIONS.map(\n (option) => ({ ...option, icon: UNIT_ICONS[option.value] }),\n);\n\nexport const profileFilterKindOptions: ComboboxOption[] = PROFILE_FILTER_KIND_OPTIONS.map(\n (option) => ({ ...option, icon: FILTER_KIND_ICONS[option.value] }),\n);\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA0CA,MAAM,aAAwC;AAAA,EAC5C,4BAAS,cAAA,EAAa;AAAA,EACtB,4BAAS,SAAA,EAAQ;AAAA,EACjB,6BAAU,YAAA,EAAW;AAAA,EACrB,8BAAW,YAAA,EAAW;AAAA,EACtB,8BAAW,SAAA,EAAQ;AAAA,EACnB,2BAAQ,aAAA,EAAY;AAAA,EACpB,4BAAS,SAAA,EAAQ;AAAA,EACjB,4BAAS,eAAA,EAAc;AAAA,EACvB,+BAAY,OAAA,EAAM;AAAA,EAClB,gCAAa,cAAA,EAAa;AAAA,EAC1B,0BAAO,UAAA,CAAA,CAAS;AAClB;AAMA,MAAM,oBAA+C;AAAA,EACnD,2BAAQ,cAAA,EAAa;AAAA,EACrB,2BAAQ,eAAA,EAAc;AAAA,EACtB,2BAAQ,WAAA,EAAU;AAAA,EAClB,8BAAW,SAAA,EAAQ;AAAA,EACnB,0BAAO,YAAA,EAAW;AAAA,EAClB,0BAAO,SAAA,EAAQ;AAAA,EACf,6BAAU,YAAA,EAAW;AAAA,EACrB,0BAAO,cAAA,EAAa;AAAA,EACpB,0BAAO,YAAA,CAAA,CAAW;AACpB;AAEA,MAAM,aAAwC;AAAA,EAC5C,+BAAY,SAAA,EAAQ;AAAA,EACpB,0BAAO,OAAA,EAAM;AAAA,EACb,4BAAS,SAAA,CAAA,CAAQ;AACnB;AAEA,MAAM,eAA0C;AAAA,EAC9C,0BAAO,YAAA,EAAW;AAAA,EAClB,2BAAQ,SAAA,EAAQ;AAAA,EAChB,8BAAW,SAAA,EAAQ;AAAA,EACnB,2BAAQ,aAAA,EAAY;AAAA,EACpB,8BAAW,kBAAA,CAAA,CAAiB;AAC9B;AAEA,MAAM,aAAwC;AAAA,EAC5C,0BAAO,SAAA,EAAQ;AAAA,EACf,2BAAQ,SAAA,EAAQ;AAAA,EAChB,6BAAU,YAAA,EAAW;AAAA,EACrB,iCAAc,YAAA,EAAW;AAAA,EACzB,2BAAQ,aAAA,EAAY;AAAA,EACpB,8BAAW,aAAA,EAAY;AAAA,EACvB,yBAAM,YAAA,EAAW;AAAA,EACjB,4BAAS,YAAA,EAAW;AAAA,EACpB,wBAAK,SAAA,EAAQ;AAAA,EACb,uBAAI,SAAA,CAAA,CAAQ;AACd;AAEO,SAAS,gBAAgB,MAA0B;AACxD,UAAQ,QAAQ,WAAW,IAAI,0BAAO,WAAA,EAAU;AAClD;
|
|
1
|
+
{"version":3,"file":"profileFieldIcons.js","sources":["../../../src/profiles/fields/profileFieldIcons.tsx"],"sourcesContent":["/**\n * The glyphs a profile column's enums render with, and the Combobox options\n * built from them.\n *\n * The params editor gets these from the schema (`x-enum-icons`); the column\n * editor is hand-rolled, so its vocabulary lives here instead — one place both\n * the grid and the inspector read, rather than an icon picked twice.\n */\n\nimport type { ReactNode } from \"react\";\nimport type { ComboboxOption } from \"../../components/combobox-types\";\n// Monochrome UI glyphs only: the symbol icons (UiString, UiJson, UiField, …)\n// carry hardcoded IDE colours, which read as stray dots beside a form label.\nimport {\n UiActivity,\n UiBraces,\n UiCalendar,\n UiChartPie,\n UiClock,\n UiColumns,\n UiCurrencyDollar,\n UiCursorText,\n UiFingerprint,\n UiHardDrive,\n UiListChecks,\n UiListDashes,\n UiProhibit,\n UiPulse,\n UiShieldCheck,\n UiSigma,\n UiSliders,\n UiTag,\n UiTimer,\n UiToggleOn,\n} from \"../../icons\";\nimport { PROFILE_FIELD_TYPES } from \"./profileFieldTypes\";\nimport {\n PROFILE_COLUMN_FORMAT_OPTIONS,\n PROFILE_COLUMN_UNIT_OPTIONS,\n PROFILE_FILTER_KIND_OPTIONS,\n} from \"../wizard/profileWizardModel\";\n\nconst TYPE_ICONS: Record<string, ReactNode> = {\n string: <UiCursorText />,\n number: <UiSigma />,\n boolean: <UiToggleOn />,\n datetime: <UiCalendar />,\n duration: <UiTimer />,\n bytes: <UiHardDrive />,\n status: <UiPulse />,\n health: <UiShieldCheck />,\n key_value: <UiTag />,\n key_values: <UiListDashes />,\n json: <UiBraces />,\n};\n\n// A filter borrows the glyph of the type that infers it — duration from\n// UiTimer, date from UiCalendar — so the Type and the control it implies read\n// as one thing. Time keeps the clock, which is what makes the date/date-and-\n// time split legible at a glance.\nconst FILTER_KIND_ICONS: Record<string, ReactNode> = {\n terms: <UiListChecks />,\n exact: <UiFingerprint />,\n range: <UiSliders />,\n duration: <UiTimer />,\n date: <UiCalendar />,\n time: <UiClock />,\n boolean: <UiToggleOn />,\n text: <UiCursorText />,\n none: <UiProhibit />,\n};\n\nconst ROLE_ICONS: Record<string, ReactNode> = {\n timestamp: <UiClock />,\n tags: <UiTag />,\n status: <UiPulse />,\n};\n\nconst FORMAT_ICONS: Record<string, ReactNode> = {\n date: <UiCalendar />,\n float: <UiSigma />,\n duration: <UiTimer />,\n bytes: <UiHardDrive />,\n currency: <UiCurrencyDollar />,\n};\n\nconst UNIT_ICONS: Record<string, ReactNode> = {\n none: <UiSigma />,\n short: <UiSigma />,\n percent: <UiChartPie />,\n percentunit: <UiChartPie />,\n bytes: <UiHardDrive />,\n decbytes: <UiHardDrive />,\n Bps: <UiActivity />,\n binBps: <UiActivity />,\n ms: <UiTimer />,\n s: <UiTimer />,\n};\n\nexport function profileTypeIcon(type?: string): ReactNode {\n return (type && TYPE_ICONS[type]) ?? <UiColumns />;\n}\n\nexport function profileFilterKindIcon(kind: string): ReactNode {\n return FILTER_KIND_ICONS[kind] ?? <UiListChecks />;\n}\n\nexport const profileTypeOptions: ComboboxOption[] = PROFILE_FIELD_TYPES.map((type) => ({\n value: type,\n label: type,\n icon: TYPE_ICONS[type],\n}));\n\nexport const profileRoleOptions: ComboboxOption[] = [\n { value: \"timestamp\", label: \"Timestamp\", icon: ROLE_ICONS[\"timestamp\"] },\n { value: \"tags\", label: \"Tags\", icon: ROLE_ICONS[\"tags\"] },\n { value: \"status\", label: \"Status\", icon: ROLE_ICONS[\"status\"] },\n];\n\nexport const profileFormatOptions: ComboboxOption[] = PROFILE_COLUMN_FORMAT_OPTIONS.map(\n (option) => ({ ...option, icon: FORMAT_ICONS[option.value] }),\n);\n\nexport const profileUnitOptions: ComboboxOption[] = PROFILE_COLUMN_UNIT_OPTIONS.map(\n (option) => ({ ...option, icon: UNIT_ICONS[option.value] }),\n);\n\nexport const profileFilterKindOptions: ComboboxOption[] = PROFILE_FILTER_KIND_OPTIONS.map(\n (option) => ({ ...option, icon: FILTER_KIND_ICONS[option.value] }),\n);\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA0CA,MAAM,aAAwC;AAAA,EAC5C,4BAAS,cAAA,EAAa;AAAA,EACtB,4BAAS,SAAA,EAAQ;AAAA,EACjB,6BAAU,YAAA,EAAW;AAAA,EACrB,8BAAW,YAAA,EAAW;AAAA,EACtB,8BAAW,SAAA,EAAQ;AAAA,EACnB,2BAAQ,aAAA,EAAY;AAAA,EACpB,4BAAS,SAAA,EAAQ;AAAA,EACjB,4BAAS,eAAA,EAAc;AAAA,EACvB,+BAAY,OAAA,EAAM;AAAA,EAClB,gCAAa,cAAA,EAAa;AAAA,EAC1B,0BAAO,UAAA,CAAA,CAAS;AAClB;AAMA,MAAM,oBAA+C;AAAA,EACnD,2BAAQ,cAAA,EAAa;AAAA,EACrB,2BAAQ,eAAA,EAAc;AAAA,EACtB,2BAAQ,WAAA,EAAU;AAAA,EAClB,8BAAW,SAAA,EAAQ;AAAA,EACnB,0BAAO,YAAA,EAAW;AAAA,EAClB,0BAAO,SAAA,EAAQ;AAAA,EACf,6BAAU,YAAA,EAAW;AAAA,EACrB,0BAAO,cAAA,EAAa;AAAA,EACpB,0BAAO,YAAA,CAAA,CAAW;AACpB;AAEA,MAAM,aAAwC;AAAA,EAC5C,+BAAY,SAAA,EAAQ;AAAA,EACpB,0BAAO,OAAA,EAAM;AAAA,EACb,4BAAS,SAAA,CAAA,CAAQ;AACnB;AAEA,MAAM,eAA0C;AAAA,EAC9C,0BAAO,YAAA,EAAW;AAAA,EAClB,2BAAQ,SAAA,EAAQ;AAAA,EAChB,8BAAW,SAAA,EAAQ;AAAA,EACnB,2BAAQ,aAAA,EAAY;AAAA,EACpB,8BAAW,kBAAA,CAAA,CAAiB;AAC9B;AAEA,MAAM,aAAwC;AAAA,EAC5C,0BAAO,SAAA,EAAQ;AAAA,EACf,2BAAQ,SAAA,EAAQ;AAAA,EAChB,6BAAU,YAAA,EAAW;AAAA,EACrB,iCAAc,YAAA,EAAW;AAAA,EACzB,2BAAQ,aAAA,EAAY;AAAA,EACpB,8BAAW,aAAA,EAAY;AAAA,EACvB,yBAAM,YAAA,EAAW;AAAA,EACjB,4BAAS,YAAA,EAAW;AAAA,EACpB,wBAAK,SAAA,EAAQ;AAAA,EACb,uBAAI,SAAA,CAAA,CAAQ;AACd;AAEO,SAAS,gBAAgB,MAA0B;AACxD,UAAQ,QAAQ,WAAW,IAAI,0BAAO,WAAA,EAAU;AAClD;AAEO,SAAS,sBAAsB,MAAyB;AAC7D,SAAO,kBAAkB,IAAI,KAAK,oBAAC,cAAA,CAAA,CAAa;AAClD;AAEO,MAAM,qBAAuC,oBAAoB,IAAI,CAAC,UAAU;AAAA,EACrF,OAAO;AAAA,EACP,OAAO;AAAA,EACP,MAAM,WAAW,IAAI;AACvB,EAAE;AAEK,MAAM,qBAAuC;AAAA,EAClD,EAAE,OAAO,aAAa,OAAO,aAAa,MAAM,WAAW,WAAW,EAAA;AAAA,EACtE,EAAE,OAAO,QAAQ,OAAO,QAAQ,MAAM,WAAW,MAAM,EAAA;AAAA,EACvD,EAAE,OAAO,UAAU,OAAO,UAAU,MAAM,WAAW,QAAQ,EAAA;AAC/D;AAEO,MAAM,uBAAyC,8BAA8B;AAAA,EAClF,CAAC,YAAY,EAAE,GAAG,QAAQ,MAAM,aAAa,OAAO,KAAK,EAAA;AAC3D;AAEO,MAAM,qBAAuC,4BAA4B;AAAA,EAC9E,CAAC,YAAY,EAAE,GAAG,QAAQ,MAAM,WAAW,OAAO,KAAK,EAAA;AACzD;AAE0D,4BAA4B;AAAA,EACpF,CAAC,YAAY,EAAE,GAAG,QAAQ,MAAM,kBAAkB,OAAO,KAAK,EAAA;AAChE;"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const debugConsoleSignal = require("../../data/debugConsoleSignal.cjs");
|
|
4
|
+
const connectionBrowserModel = require("../connections/connectionBrowserModel.cjs");
|
|
5
|
+
const profileApi = require("../profileApi.cjs");
|
|
6
|
+
const jsonPathSample = require("./jsonPathSample.cjs");
|
|
7
|
+
async function lookupProfileSampleFilterValues(options) {
|
|
8
|
+
const profile = jsonPathSample.sampleRequestProfile(options.draft);
|
|
9
|
+
if (!profile) {
|
|
10
|
+
throw new Error("Cannot look up profile filters without a provider");
|
|
11
|
+
}
|
|
12
|
+
const response = await connectionBrowserModel.fetchJSON(
|
|
13
|
+
profileApi.profileApiPath("profile/sample/filters/values"),
|
|
14
|
+
{
|
|
15
|
+
method: "POST",
|
|
16
|
+
headers: {
|
|
17
|
+
"Content-Type": "application/json",
|
|
18
|
+
...debugConsoleSignal.debugCaptureHeaders()
|
|
19
|
+
},
|
|
20
|
+
body: JSON.stringify({
|
|
21
|
+
profile,
|
|
22
|
+
params: options.params,
|
|
23
|
+
filters: options.request.filters,
|
|
24
|
+
filterColumns: options.filterColumns,
|
|
25
|
+
filterKey: options.request.filterKey,
|
|
26
|
+
search: options.request.search,
|
|
27
|
+
limit: options.request.limit
|
|
28
|
+
})
|
|
29
|
+
}
|
|
30
|
+
);
|
|
31
|
+
return { options: response.options };
|
|
32
|
+
}
|
|
33
|
+
exports.lookupProfileSampleFilterValues = lookupProfileSampleFilterValues;
|
|
34
|
+
//# sourceMappingURL=profileSampleFilterLookup.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profileSampleFilterLookup.cjs","sources":["../../../src/profiles/query/profileSampleFilterLookup.ts"],"sourcesContent":["import type { QueryBrowserFilterLookupRequest } from \"../../data/query-browser/QueryBrowser.types\";\nimport type { DataTableFilterLookupResult } from \"../../data/data-table-server-filters\";\nimport { debugCaptureHeaders } from \"../../data/debugConsoleSignal\";\nimport { fetchJSON } from \"../connections/connectionBrowserModel\";\nimport { profileApiPath } from \"../profileApi\";\nimport type {\n ProfileColumn,\n ProfileWizardDraft,\n} from \"../wizard/profileWizardModel\";\nimport { sampleRequestProfile } from \"./jsonPathSample\";\n\ntype ProfileSampleFilterLookupOptions = {\n draft: ProfileWizardDraft;\n params: Record<string, unknown>;\n filterColumns: ProfileColumn[];\n request: QueryBrowserFilterLookupRequest;\n};\n\nexport async function lookupProfileSampleFilterValues(\n options: ProfileSampleFilterLookupOptions,\n): Promise<DataTableFilterLookupResult> {\n const profile = sampleRequestProfile(options.draft);\n if (!profile) {\n throw new Error(\"Cannot look up profile filters without a provider\");\n }\n const response = await fetchJSON<DataTableFilterLookupResult>(\n profileApiPath(\"profile/sample/filters/values\"),\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...debugCaptureHeaders(),\n },\n body: JSON.stringify({\n profile,\n params: options.params,\n filters: options.request.filters,\n filterColumns: options.filterColumns,\n filterKey: options.request.filterKey,\n search: options.request.search,\n limit: options.request.limit,\n }),\n },\n );\n return { options: response.options };\n}\n"],"names":["sampleRequestProfile","fetchJSON","profileApiPath","debugCaptureHeaders"],"mappings":";;;;;;AAkBA,eAAsB,gCACpB,SACsC;AACtC,QAAM,UAAUA,eAAAA,qBAAqB,QAAQ,KAAK;AAClD,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AACA,QAAM,WAAW,MAAMC,uBAAAA;AAAAA,IACrBC,WAAAA,eAAe,+BAA+B;AAAA,IAC9C;AAAA,MACE,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,GAAGC,mBAAAA,oBAAA;AAAA,MAAoB;AAAA,MAEzB,MAAM,KAAK,UAAU;AAAA,QACnB;AAAA,QACA,QAAQ,QAAQ;AAAA,QAChB,SAAS,QAAQ,QAAQ;AAAA,QACzB,eAAe,QAAQ;AAAA,QACvB,WAAW,QAAQ,QAAQ;AAAA,QAC3B,QAAQ,QAAQ,QAAQ;AAAA,QACxB,OAAO,QAAQ,QAAQ;AAAA,MAAA,CACxB;AAAA,IAAA;AAAA,EACH;AAEF,SAAO,EAAE,SAAS,SAAS,QAAA;AAC7B;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { QueryBrowserFilterLookupRequest } from '../../data/query-browser/QueryBrowser.types';
|
|
2
|
+
import { DataTableFilterLookupResult } from '../../data/data-table-server-filters';
|
|
3
|
+
import { ProfileColumn, ProfileWizardDraft } from '../wizard/profileWizardModel';
|
|
4
|
+
type ProfileSampleFilterLookupOptions = {
|
|
5
|
+
draft: ProfileWizardDraft;
|
|
6
|
+
params: Record<string, unknown>;
|
|
7
|
+
filterColumns: ProfileColumn[];
|
|
8
|
+
request: QueryBrowserFilterLookupRequest;
|
|
9
|
+
};
|
|
10
|
+
export declare function lookupProfileSampleFilterValues(options: ProfileSampleFilterLookupOptions): Promise<DataTableFilterLookupResult>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=profileSampleFilterLookup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profileSampleFilterLookup.d.ts","sourceRoot":"","sources":["../../../src/profiles/query/profileSampleFilterLookup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,6CAA6C,CAAC;AACnG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AAIxF,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EACnB,MAAM,8BAA8B,CAAC;AAGtC,KAAK,gCAAgC,GAAG;IACtC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,aAAa,EAAE,aAAa,EAAE,CAAC;IAC/B,OAAO,EAAE,+BAA+B,CAAC;CAC1C,CAAC;AAEF,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,2BAA2B,CAAC,CAyBtC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { debugCaptureHeaders } from "../../data/debugConsoleSignal.js";
|
|
2
|
+
import { fetchJSON } from "../connections/connectionBrowserModel.js";
|
|
3
|
+
import { profileApiPath } from "../profileApi.js";
|
|
4
|
+
import { sampleRequestProfile } from "./jsonPathSample.js";
|
|
5
|
+
async function lookupProfileSampleFilterValues(options) {
|
|
6
|
+
const profile = sampleRequestProfile(options.draft);
|
|
7
|
+
if (!profile) {
|
|
8
|
+
throw new Error("Cannot look up profile filters without a provider");
|
|
9
|
+
}
|
|
10
|
+
const response = await fetchJSON(
|
|
11
|
+
profileApiPath("profile/sample/filters/values"),
|
|
12
|
+
{
|
|
13
|
+
method: "POST",
|
|
14
|
+
headers: {
|
|
15
|
+
"Content-Type": "application/json",
|
|
16
|
+
...debugCaptureHeaders()
|
|
17
|
+
},
|
|
18
|
+
body: JSON.stringify({
|
|
19
|
+
profile,
|
|
20
|
+
params: options.params,
|
|
21
|
+
filters: options.request.filters,
|
|
22
|
+
filterColumns: options.filterColumns,
|
|
23
|
+
filterKey: options.request.filterKey,
|
|
24
|
+
search: options.request.search,
|
|
25
|
+
limit: options.request.limit
|
|
26
|
+
})
|
|
27
|
+
}
|
|
28
|
+
);
|
|
29
|
+
return { options: response.options };
|
|
30
|
+
}
|
|
31
|
+
export {
|
|
32
|
+
lookupProfileSampleFilterValues
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=profileSampleFilterLookup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profileSampleFilterLookup.js","sources":["../../../src/profiles/query/profileSampleFilterLookup.ts"],"sourcesContent":["import type { QueryBrowserFilterLookupRequest } from \"../../data/query-browser/QueryBrowser.types\";\nimport type { DataTableFilterLookupResult } from \"../../data/data-table-server-filters\";\nimport { debugCaptureHeaders } from \"../../data/debugConsoleSignal\";\nimport { fetchJSON } from \"../connections/connectionBrowserModel\";\nimport { profileApiPath } from \"../profileApi\";\nimport type {\n ProfileColumn,\n ProfileWizardDraft,\n} from \"../wizard/profileWizardModel\";\nimport { sampleRequestProfile } from \"./jsonPathSample\";\n\ntype ProfileSampleFilterLookupOptions = {\n draft: ProfileWizardDraft;\n params: Record<string, unknown>;\n filterColumns: ProfileColumn[];\n request: QueryBrowserFilterLookupRequest;\n};\n\nexport async function lookupProfileSampleFilterValues(\n options: ProfileSampleFilterLookupOptions,\n): Promise<DataTableFilterLookupResult> {\n const profile = sampleRequestProfile(options.draft);\n if (!profile) {\n throw new Error(\"Cannot look up profile filters without a provider\");\n }\n const response = await fetchJSON<DataTableFilterLookupResult>(\n profileApiPath(\"profile/sample/filters/values\"),\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...debugCaptureHeaders(),\n },\n body: JSON.stringify({\n profile,\n params: options.params,\n filters: options.request.filters,\n filterColumns: options.filterColumns,\n filterKey: options.request.filterKey,\n search: options.request.search,\n limit: options.request.limit,\n }),\n },\n );\n return { options: response.options };\n}\n"],"names":[],"mappings":";;;;AAkBA,eAAsB,gCACpB,SACsC;AACtC,QAAM,UAAU,qBAAqB,QAAQ,KAAK;AAClD,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AACA,QAAM,WAAW,MAAM;AAAA,IACrB,eAAe,+BAA+B;AAAA,IAC9C;AAAA,MACE,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,GAAG,oBAAA;AAAA,MAAoB;AAAA,MAEzB,MAAM,KAAK,UAAU;AAAA,QACnB;AAAA,QACA,QAAQ,QAAQ;AAAA,QAChB,SAAS,QAAQ,QAAQ;AAAA,QACzB,eAAe,QAAQ;AAAA,QACvB,WAAW,QAAQ,QAAQ;AAAA,QAC3B,QAAQ,QAAQ,QAAQ;AAAA,QACxB,OAAO,QAAQ,QAAQ;AAAA,MAAA,CACxB;AAAA,IAAA;AAAA,EACH;AAEF,SAAO,EAAE,SAAS,SAAS,QAAA;AAC7B;"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const jsonPathSample = require("./jsonPathSample.cjs");
|
|
4
|
-
function profileSamplePayload(
|
|
4
|
+
function profileSamplePayload(options) {
|
|
5
|
+
const { draft, request } = options;
|
|
5
6
|
const profile = jsonPathSample.sampleRequestProfile(draft);
|
|
6
7
|
if (!profile) throw new Error("Cannot sample a profile without a provider");
|
|
7
8
|
return {
|
|
8
9
|
profile,
|
|
9
|
-
params: {},
|
|
10
|
-
...request.
|
|
11
|
-
...
|
|
10
|
+
params: options.params ?? {},
|
|
11
|
+
...request.filters ? { filters: request.filters } : {},
|
|
12
|
+
...options.filterColumns ? { filterColumns: options.filterColumns } : {},
|
|
13
|
+
...request.pagination ? { pagination: request.pagination } : {}
|
|
12
14
|
};
|
|
13
15
|
}
|
|
14
16
|
exports.profileSamplePayload = profileSamplePayload;
|