@flanksource/clicky-ui 0.3.44 → 0.3.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/ai.cjs +4 -2
- package/dist/ai.cjs.map +1 -1
- package/dist/ai.js +3 -1
- package/dist/components/MdxEditorField.cjs +40 -22
- package/dist/components/MdxEditorField.cjs.map +1 -1
- package/dist/components/MdxEditorField.d.ts.map +1 -1
- package/dist/components/MdxEditorField.js +41 -23
- package/dist/components/MdxEditorField.js.map +1 -1
- package/dist/components/json-schema-form-item-summary.cjs +6 -1
- package/dist/components/json-schema-form-item-summary.cjs.map +1 -1
- package/dist/components/json-schema-form-item-summary.d.ts.map +1 -1
- package/dist/components/json-schema-form-item-summary.js +6 -1
- package/dist/components/json-schema-form-item-summary.js.map +1 -1
- package/dist/data/CodeBlock.cjs +3 -2
- package/dist/data/CodeBlock.cjs.map +1 -1
- package/dist/data/CodeBlock.d.ts +3 -1
- package/dist/data/CodeBlock.d.ts.map +1 -1
- package/dist/data/CodeBlock.js +3 -2
- package/dist/data/CodeBlock.js.map +1 -1
- package/dist/data/GraphDiagram.cjs +18 -6
- package/dist/data/GraphDiagram.cjs.map +1 -1
- package/dist/data/GraphDiagram.d.ts +9 -1
- package/dist/data/GraphDiagram.d.ts.map +1 -1
- package/dist/data/GraphDiagram.js +18 -6
- package/dist/data/GraphDiagram.js.map +1 -1
- package/dist/data/GraphDiagramNodes.cjs +38 -29
- package/dist/data/GraphDiagramNodes.cjs.map +1 -1
- package/dist/data/GraphDiagramNodes.d.ts +8 -2
- package/dist/data/GraphDiagramNodes.d.ts.map +1 -1
- package/dist/data/GraphDiagramNodes.js +38 -29
- package/dist/data/GraphDiagramNodes.js.map +1 -1
- package/dist/data/JsonView.cjs +118 -49
- package/dist/data/JsonView.cjs.map +1 -1
- package/dist/data/JsonView.d.ts +13 -10
- package/dist/data/JsonView.d.ts.map +1 -1
- package/dist/data/JsonView.js +118 -49
- package/dist/data/JsonView.js.map +1 -1
- package/dist/data/MarkdownEditor.cjs +2 -2
- package/dist/data/MarkdownEditor.cjs.map +1 -1
- package/dist/data/MarkdownEditor.js +2 -2
- package/dist/data/MarkdownEditor.js.map +1 -1
- package/dist/data/ai/AdvancedChatConfig.cjs +90 -249
- package/dist/data/ai/AdvancedChatConfig.cjs.map +1 -1
- package/dist/data/ai/AdvancedChatConfig.d.ts +2 -5
- package/dist/data/ai/AdvancedChatConfig.d.ts.map +1 -1
- package/dist/data/ai/AdvancedChatConfig.js +91 -250
- package/dist/data/ai/AdvancedChatConfig.js.map +1 -1
- package/dist/data/ai/ChatButton.cjs +2 -0
- package/dist/data/ai/ChatButton.cjs.map +1 -1
- package/dist/data/ai/ChatButton.d.ts +1 -1
- package/dist/data/ai/ChatButton.d.ts.map +1 -1
- package/dist/data/ai/ChatButton.js +2 -0
- package/dist/data/ai/ChatButton.js.map +1 -1
- package/dist/data/ai/ChatFab.cjs +5 -1
- package/dist/data/ai/ChatFab.cjs.map +1 -1
- package/dist/data/ai/ChatFab.d.ts +5 -1
- package/dist/data/ai/ChatFab.d.ts.map +1 -1
- package/dist/data/ai/ChatFab.js +5 -1
- package/dist/data/ai/ChatFab.js.map +1 -1
- package/dist/data/ai/ChatWindow.cjs +2 -8
- package/dist/data/ai/ChatWindow.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.js +2 -8
- package/dist/data/ai/ChatWindow.js.map +1 -1
- package/dist/data/ai/ChatWindow.runtime.cjs +0 -5
- package/dist/data/ai/ChatWindow.runtime.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.runtime.d.ts +0 -2
- package/dist/data/ai/ChatWindow.runtime.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.runtime.js +0 -5
- package/dist/data/ai/ChatWindow.runtime.js.map +1 -1
- package/dist/data/ai/PromptRunEditor/runtimeActions.cjs +2 -2
- package/dist/data/ai/PromptRunEditor/runtimeActions.cjs.map +1 -1
- package/dist/data/ai/PromptRunEditor/runtimeActions.d.ts.map +1 -1
- package/dist/data/ai/PromptRunEditor/runtimeActions.js +2 -2
- package/dist/data/ai/PromptRunEditor/runtimeActions.js.map +1 -1
- package/dist/data/ai/SessionInspector.approvals.cjs +3 -6
- package/dist/data/ai/SessionInspector.approvals.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.approvals.js +3 -6
- package/dist/data/ai/SessionInspector.approvals.js.map +1 -1
- package/dist/data/ai/SessionViewer.cjs +13 -4
- package/dist/data/ai/SessionViewer.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.d.ts +5 -1
- package/dist/data/ai/SessionViewer.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.header.cjs +1 -1
- package/dist/data/ai/SessionViewer.header.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.header.js +1 -1
- package/dist/data/ai/SessionViewer.header.js.map +1 -1
- package/dist/data/ai/SessionViewer.js +13 -4
- package/dist/data/ai/SessionViewer.js.map +1 -1
- package/dist/data/ai/SessionViewer.model.cjs +2 -0
- package/dist/data/ai/SessionViewer.model.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.model.d.ts +1 -0
- package/dist/data/ai/SessionViewer.model.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.model.js +2 -0
- package/dist/data/ai/SessionViewer.model.js.map +1 -1
- package/dist/data/ai/SessionViewer.rows.cjs +41 -27
- package/dist/data/ai/SessionViewer.rows.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.rows.d.ts +4 -2
- package/dist/data/ai/SessionViewer.rows.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.rows.js +41 -27
- package/dist/data/ai/SessionViewer.rows.js.map +1 -1
- package/dist/data/ai/SessionViewer.tokens.cjs +35 -0
- package/dist/data/ai/SessionViewer.tokens.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.tokens.d.ts +5 -0
- package/dist/data/ai/SessionViewer.tokens.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.tokens.js +35 -0
- package/dist/data/ai/SessionViewer.tokens.js.map +1 -0
- package/dist/data/ai/SessionViewer.tool-cost.cjs +128 -0
- package/dist/data/ai/SessionViewer.tool-cost.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.tool-cost.d.ts +6 -0
- package/dist/data/ai/SessionViewer.tool-cost.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.tool-cost.js +128 -0
- package/dist/data/ai/SessionViewer.tool-cost.js.map +1 -0
- package/dist/data/ai/SessionViewer.tool-details.cjs +3 -1
- package/dist/data/ai/SessionViewer.tool-details.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.tool-details.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.tool-details.js +3 -1
- package/dist/data/ai/SessionViewer.tool-details.js.map +1 -1
- package/dist/data/ai/SessionViewer.tool-row.cjs +55 -35
- package/dist/data/ai/SessionViewer.tool-row.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.tool-row.d.ts +2 -1
- package/dist/data/ai/SessionViewer.tool-row.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.tool-row.js +55 -35
- package/dist/data/ai/SessionViewer.tool-row.js.map +1 -1
- package/dist/data/ai/SessionViewer.unified.d.ts +4 -0
- package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
- package/dist/data/ai/SessionViewerMenu.cjs +18 -1
- package/dist/data/ai/SessionViewerMenu.cjs.map +1 -1
- package/dist/data/ai/SessionViewerMenu.d.ts +6 -1
- package/dist/data/ai/SessionViewerMenu.d.ts.map +1 -1
- package/dist/data/ai/SessionViewerMenu.js +18 -1
- package/dist/data/ai/SessionViewerMenu.js.map +1 -1
- package/dist/data/ai/ToolPreferences.cjs +149 -143
- package/dist/data/ai/ToolPreferences.cjs.map +1 -1
- package/dist/data/ai/ToolPreferences.d.ts +20 -6
- package/dist/data/ai/ToolPreferences.d.ts.map +1 -1
- package/dist/data/ai/ToolPreferences.js +151 -146
- package/dist/data/ai/ToolPreferences.js.map +1 -1
- package/dist/data/ai/ToolPreferences.model.cjs +14 -10
- package/dist/data/ai/ToolPreferences.model.cjs.map +1 -1
- package/dist/data/ai/ToolPreferences.model.d.ts +1 -0
- package/dist/data/ai/ToolPreferences.model.d.ts.map +1 -1
- package/dist/data/ai/ToolPreferences.model.js +15 -11
- package/dist/data/ai/ToolPreferences.model.js.map +1 -1
- package/dist/data/ai/ToolPreferencesList.cjs +1 -0
- package/dist/data/ai/ToolPreferencesList.cjs.map +1 -1
- package/dist/data/ai/ToolPreferencesList.d.ts +4 -1
- package/dist/data/ai/ToolPreferencesList.d.ts.map +1 -1
- package/dist/data/ai/ToolPreferencesList.js +2 -1
- package/dist/data/ai/ToolPreferencesList.js.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.cjs +52 -53
- package/dist/data/ai/ToolSchemaBrowser.cjs.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.d.ts +6 -3
- package/dist/data/ai/ToolSchemaBrowser.d.ts.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.directory-header.cjs +9 -13
- package/dist/data/ai/ToolSchemaBrowser.directory-header.cjs.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.directory-header.d.ts +5 -2
- package/dist/data/ai/ToolSchemaBrowser.directory-header.d.ts.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.directory-header.js +9 -13
- package/dist/data/ai/ToolSchemaBrowser.directory-header.js.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.js +53 -54
- package/dist/data/ai/ToolSchemaBrowser.js.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.model.cjs +19 -27
- package/dist/data/ai/ToolSchemaBrowser.model.cjs.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.model.d.ts +9 -6
- package/dist/data/ai/ToolSchemaBrowser.model.d.ts.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.model.js +20 -28
- package/dist/data/ai/ToolSchemaBrowser.model.js.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.sidebar.cjs +12 -213
- package/dist/data/ai/ToolSchemaBrowser.sidebar.cjs.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.sidebar.d.ts +1 -3
- package/dist/data/ai/ToolSchemaBrowser.sidebar.d.ts.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.sidebar.js +13 -214
- package/dist/data/ai/ToolSchemaBrowser.sidebar.js.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.strategies.cjs +54 -0
- package/dist/data/ai/ToolSchemaBrowser.strategies.cjs.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.strategies.d.ts +9 -0
- package/dist/data/ai/ToolSchemaBrowser.strategies.d.ts.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.strategies.js +54 -0
- package/dist/data/ai/ToolSchemaBrowser.strategies.js.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.tree.cjs +179 -0
- package/dist/data/ai/ToolSchemaBrowser.tree.cjs.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.tree.d.ts +20 -0
- package/dist/data/ai/ToolSchemaBrowser.tree.d.ts.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.tree.js +179 -0
- package/dist/data/ai/ToolSchemaBrowser.tree.js.map +1 -0
- package/dist/data/ai/index.d.ts +2 -2
- package/dist/data/ai/index.d.ts.map +1 -1
- package/dist/data/ai/runtime-profiles/PermissionStrategiesEditor.cjs +8 -28
- package/dist/data/ai/runtime-profiles/PermissionStrategiesEditor.cjs.map +1 -1
- package/dist/data/ai/runtime-profiles/PermissionStrategiesEditor.d.ts.map +1 -1
- package/dist/data/ai/runtime-profiles/PermissionStrategiesEditor.js +9 -29
- package/dist/data/ai/runtime-profiles/PermissionStrategiesEditor.js.map +1 -1
- package/dist/data/ai/session-token-sizing.d.ts +32 -0
- package/dist/data/ai/session-token-sizing.d.ts.map +1 -0
- package/dist/data/ai/use-session-token-sizing.cjs +73 -0
- package/dist/data/ai/use-session-token-sizing.cjs.map +1 -0
- package/dist/data/ai/use-session-token-sizing.d.ts +21 -0
- package/dist/data/ai/use-session-token-sizing.d.ts.map +1 -0
- package/dist/data/ai/use-session-token-sizing.js +73 -0
- package/dist/data/ai/use-session-token-sizing.js.map +1 -0
- package/dist/data/call-graph/CallGraph.cjs +250 -0
- package/dist/data/call-graph/CallGraph.cjs.map +1 -0
- package/dist/data/call-graph/CallGraph.d.ts +69 -0
- package/dist/data/call-graph/CallGraph.d.ts.map +1 -0
- package/dist/data/call-graph/CallGraph.js +250 -0
- package/dist/data/call-graph/CallGraph.js.map +1 -0
- package/dist/data/call-graph/CallGraphGlyphs.cjs +39 -0
- package/dist/data/call-graph/CallGraphGlyphs.cjs.map +1 -0
- package/dist/data/call-graph/CallGraphGlyphs.d.ts +19 -0
- package/dist/data/call-graph/CallGraphGlyphs.d.ts.map +1 -0
- package/dist/data/call-graph/CallGraphGlyphs.js +39 -0
- package/dist/data/call-graph/CallGraphGlyphs.js.map +1 -0
- package/dist/data/call-graph/CallGraphMembers.cjs +50 -0
- package/dist/data/call-graph/CallGraphMembers.cjs.map +1 -0
- package/dist/data/call-graph/CallGraphMembers.d.ts +22 -0
- package/dist/data/call-graph/CallGraphMembers.d.ts.map +1 -0
- package/dist/data/call-graph/CallGraphMembers.js +50 -0
- package/dist/data/call-graph/CallGraphMembers.js.map +1 -0
- package/dist/data/call-graph/CallGraphParts.cjs +204 -0
- package/dist/data/call-graph/CallGraphParts.cjs.map +1 -0
- package/dist/data/call-graph/CallGraphParts.d.ts +44 -0
- package/dist/data/call-graph/CallGraphParts.d.ts.map +1 -0
- package/dist/data/call-graph/CallGraphParts.js +204 -0
- package/dist/data/call-graph/CallGraphParts.js.map +1 -0
- package/dist/data/call-graph/CallGraphToolbar.cjs +186 -0
- package/dist/data/call-graph/CallGraphToolbar.cjs.map +1 -0
- package/dist/data/call-graph/CallGraphToolbar.d.ts +45 -0
- package/dist/data/call-graph/CallGraphToolbar.d.ts.map +1 -0
- package/dist/data/call-graph/CallGraphToolbar.js +186 -0
- package/dist/data/call-graph/CallGraphToolbar.js.map +1 -0
- package/dist/data/call-graph/call-graph-exclude.cjs +75 -0
- package/dist/data/call-graph/call-graph-exclude.cjs.map +1 -0
- package/dist/data/call-graph/call-graph-exclude.d.ts +31 -0
- package/dist/data/call-graph/call-graph-exclude.d.ts.map +1 -0
- package/dist/data/call-graph/call-graph-exclude.js +75 -0
- package/dist/data/call-graph/call-graph-exclude.js.map +1 -0
- package/dist/data/call-graph/call-graph-labels.cjs +96 -0
- package/dist/data/call-graph/call-graph-labels.cjs.map +1 -0
- package/dist/data/call-graph/call-graph-labels.d.ts +53 -0
- package/dist/data/call-graph/call-graph-labels.d.ts.map +1 -0
- package/dist/data/call-graph/call-graph-labels.js +96 -0
- package/dist/data/call-graph/call-graph-labels.js.map +1 -0
- package/dist/data/call-graph/call-graph-model.cjs +161 -0
- package/dist/data/call-graph/call-graph-model.cjs.map +1 -0
- package/dist/data/call-graph/call-graph-model.d.ts +102 -0
- package/dist/data/call-graph/call-graph-model.d.ts.map +1 -0
- package/dist/data/call-graph/call-graph-model.js +161 -0
- package/dist/data/call-graph/call-graph-model.js.map +1 -0
- package/dist/data/call-graph/call-graph-vocabulary.cjs +177 -0
- package/dist/data/call-graph/call-graph-vocabulary.cjs.map +1 -0
- package/dist/data/call-graph/call-graph-vocabulary.d.ts +72 -0
- package/dist/data/call-graph/call-graph-vocabulary.d.ts.map +1 -0
- package/dist/data/call-graph/call-graph-vocabulary.js +177 -0
- package/dist/data/call-graph/call-graph-vocabulary.js.map +1 -0
- package/dist/data/call-graph/call-graph.fixtures.d.ts +63 -0
- package/dist/data/call-graph/call-graph.fixtures.d.ts.map +1 -0
- package/dist/data/call-graph/index.d.ts +7 -0
- package/dist/data/call-graph/index.d.ts.map +1 -0
- package/dist/data/call-graph/types.cjs +5 -0
- package/dist/data/call-graph/types.cjs.map +1 -0
- package/dist/data/call-graph/types.d.ts +135 -0
- package/dist/data/call-graph/types.d.ts.map +1 -0
- package/dist/data/call-graph/types.js +5 -0
- package/dist/data/call-graph/types.js.map +1 -0
- package/dist/data/call-graph/use-call-graph.cjs +93 -0
- package/dist/data/call-graph/use-call-graph.cjs.map +1 -0
- package/dist/data/call-graph/use-call-graph.d.ts +24 -0
- package/dist/data/call-graph/use-call-graph.d.ts.map +1 -0
- package/dist/data/call-graph/use-call-graph.js +93 -0
- package/dist/data/call-graph/use-call-graph.js.map +1 -0
- package/dist/data/chat/Chat.cjs +39 -15
- package/dist/data/chat/Chat.cjs.map +1 -1
- package/dist/data/chat/Chat.d.ts.map +1 -1
- package/dist/data/chat/Chat.fixtures.cjs +2 -2
- package/dist/data/chat/Chat.fixtures.cjs.map +1 -1
- package/dist/data/chat/Chat.fixtures.js +2 -2
- package/dist/data/chat/Chat.fixtures.js.map +1 -1
- package/dist/data/chat/Chat.js +40 -16
- package/dist/data/chat/Chat.js.map +1 -1
- package/dist/data/chat/ChatRuntimeToolbar.cjs +3 -6
- 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 +3 -6
- package/dist/data/chat/ChatRuntimeToolbar.js.map +1 -1
- package/dist/data/chat/ContextMeter.bar.cjs +5 -8
- package/dist/data/chat/ContextMeter.bar.cjs.map +1 -1
- package/dist/data/chat/ContextMeter.bar.d.ts +1 -1
- package/dist/data/chat/ContextMeter.bar.d.ts.map +1 -1
- package/dist/data/chat/ContextMeter.bar.js +5 -8
- package/dist/data/chat/ContextMeter.bar.js.map +1 -1
- package/dist/data/chat/ContextMeter.cjs +18 -19
- package/dist/data/chat/ContextMeter.cjs.map +1 -1
- package/dist/data/chat/ContextMeter.d.ts +1 -1
- package/dist/data/chat/ContextMeter.d.ts.map +1 -1
- package/dist/data/chat/ContextMeter.js +18 -19
- package/dist/data/chat/ContextMeter.js.map +1 -1
- package/dist/data/chat/Conversation.cjs +2 -1
- package/dist/data/chat/Conversation.cjs.map +1 -1
- package/dist/data/chat/Conversation.d.ts +4 -1
- package/dist/data/chat/Conversation.d.ts.map +1 -1
- package/dist/data/chat/Conversation.js +2 -1
- package/dist/data/chat/Conversation.js.map +1 -1
- package/dist/data/chat/Message.cjs +39 -12
- package/dist/data/chat/Message.cjs.map +1 -1
- package/dist/data/chat/Message.d.ts +1 -1
- package/dist/data/chat/Message.d.ts.map +1 -1
- package/dist/data/chat/Message.js +40 -13
- package/dist/data/chat/Message.js.map +1 -1
- package/dist/data/chat/ToolCall.cjs +60 -5
- package/dist/data/chat/ToolCall.cjs.map +1 -1
- package/dist/data/chat/ToolCall.d.ts +7 -2
- package/dist/data/chat/ToolCall.d.ts.map +1 -1
- package/dist/data/chat/ToolCall.js +60 -5
- package/dist/data/chat/ToolCall.js.map +1 -1
- package/dist/data/chat/approval.cjs.map +1 -1
- package/dist/data/chat/approval.d.ts +2 -2
- package/dist/data/chat/approval.d.ts.map +1 -1
- package/dist/data/chat/approval.js.map +1 -1
- package/dist/data/chat/tool-policy.cjs +59 -2
- package/dist/data/chat/tool-policy.cjs.map +1 -1
- package/dist/data/chat/tool-policy.d.ts +9 -0
- package/dist/data/chat/tool-policy.d.ts.map +1 -1
- package/dist/data/chat/tool-policy.js +59 -2
- package/dist/data/chat/tool-policy.js.map +1 -1
- package/dist/data/chat/types.cjs +6 -0
- package/dist/data/chat/types.cjs.map +1 -1
- package/dist/data/chat/types.d.ts +13 -4
- package/dist/data/chat/types.d.ts.map +1 -1
- package/dist/data/chat/types.js +7 -1
- package/dist/data/chat/types.js.map +1 -1
- package/dist/data/chat/usage-snapshot.cjs +11 -6
- package/dist/data/chat/usage-snapshot.cjs.map +1 -1
- package/dist/data/chat/usage-snapshot.d.ts +0 -1
- package/dist/data/chat/usage-snapshot.d.ts.map +1 -1
- package/dist/data/chat/usage-snapshot.js +11 -6
- package/dist/data/chat/usage-snapshot.js.map +1 -1
- package/dist/data/diagnostics/StackFrameRow.cjs +3 -3
- package/dist/data/diagnostics/StackFrameRow.cjs.map +1 -1
- package/dist/data/diagnostics/StackFrameRow.js +3 -3
- package/dist/data/diagnostics/StackFrameRow.js.map +1 -1
- package/dist/data/graph-columns-layout.cjs +26 -10
- package/dist/data/graph-columns-layout.cjs.map +1 -1
- package/dist/data/graph-columns-layout.d.ts +8 -0
- package/dist/data/graph-columns-layout.d.ts.map +1 -1
- package/dist/data/graph-columns-layout.js +26 -10
- package/dist/data/graph-columns-layout.js.map +1 -1
- package/dist/data/graph-diagram-model.cjs.map +1 -1
- package/dist/data/graph-diagram-model.d.ts +5 -0
- package/dist/data/graph-diagram-model.d.ts.map +1 -1
- package/dist/data/graph-diagram-model.js.map +1 -1
- package/dist/data/graph-edge-routing.cjs +9 -3
- package/dist/data/graph-edge-routing.cjs.map +1 -1
- package/dist/data/graph-edge-routing.d.ts +2 -0
- package/dist/data/graph-edge-routing.d.ts.map +1 -1
- package/dist/data/graph-edge-routing.js +9 -3
- package/dist/data/graph-edge-routing.js.map +1 -1
- package/dist/data/json-view/JsonSource.cjs +84 -0
- package/dist/data/json-view/JsonSource.cjs.map +1 -0
- package/dist/data/json-view/JsonSource.d.ts +7 -0
- package/dist/data/json-view/JsonSource.d.ts.map +1 -0
- package/dist/data/json-view/JsonSource.js +84 -0
- package/dist/data/json-view/JsonSource.js.map +1 -0
- package/dist/data/json-view/parse-prefix.cjs +132 -0
- package/dist/data/json-view/parse-prefix.cjs.map +1 -0
- package/dist/data/json-view/parse-prefix.d.ts +11 -0
- package/dist/data/json-view/parse-prefix.d.ts.map +1 -0
- package/dist/data/json-view/parse-prefix.js +132 -0
- package/dist/data/json-view/parse-prefix.js.map +1 -0
- package/dist/data/json-view/parse-source.cjs +62 -0
- package/dist/data/json-view/parse-source.cjs.map +1 -0
- package/dist/data/json-view/parse-source.d.ts +16 -0
- package/dist/data/json-view/parse-source.d.ts.map +1 -0
- package/dist/data/json-view/parse-source.js +62 -0
- package/dist/data/json-view/parse-source.js.map +1 -0
- package/dist/data/json-view/story-fixtures.d.ts +6 -0
- package/dist/data/json-view/story-fixtures.d.ts.map +1 -0
- package/dist/data/json-view/types.d.ts +14 -0
- package/dist/data/json-view/types.d.ts.map +1 -0
- package/dist/data/runtime/RuntimeBar.cjs +2 -5
- package/dist/data/runtime/RuntimeBar.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBar.d.ts +2 -4
- package/dist/data/runtime/RuntimeBar.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBar.fields.cjs +2 -2
- package/dist/data/runtime/RuntimeBar.fields.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBar.fields.js +2 -2
- package/dist/data/runtime/RuntimeBar.fields.js.map +1 -1
- package/dist/data/runtime/RuntimeBar.js +2 -5
- package/dist/data/runtime/RuntimeBar.js.map +1 -1
- package/dist/data/runtime/RuntimeBar.selection.cjs +4 -1
- package/dist/data/runtime/RuntimeBar.selection.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBar.selection.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBar.selection.js +5 -2
- package/dist/data/runtime/RuntimeBar.selection.js.map +1 -1
- package/dist/data/runtime/RuntimeBarActions.cjs +1 -5
- package/dist/data/runtime/RuntimeBarActions.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBarActions.d.ts +1 -1
- package/dist/data/runtime/RuntimeBarActions.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBarActions.js +1 -5
- package/dist/data/runtime/RuntimeBarActions.js.map +1 -1
- package/dist/data/runtime/RuntimeBarIdentity.cjs +6 -14
- package/dist/data/runtime/RuntimeBarIdentity.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBarIdentity.d.ts +0 -1
- package/dist/data/runtime/RuntimeBarIdentity.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBarIdentity.js +6 -14
- package/dist/data/runtime/RuntimeBarIdentity.js.map +1 -1
- package/dist/data/runtime/RuntimeBarLayout.cjs +8 -27
- package/dist/data/runtime/RuntimeBarLayout.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBarLayout.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBarLayout.js +8 -27
- package/dist/data/runtime/RuntimeBarLayout.js.map +1 -1
- package/dist/data/runtime/RuntimeBarSegment.cjs +1 -5
- package/dist/data/runtime/RuntimeBarSegment.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBarSegment.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBarSegment.js +1 -5
- package/dist/data/runtime/RuntimeBarSegment.js.map +1 -1
- package/dist/data/runtime/use-runtime-bar-overflow.cjs +4 -10
- package/dist/data/runtime/use-runtime-bar-overflow.cjs.map +1 -1
- package/dist/data/runtime/use-runtime-bar-overflow.d.ts +1 -2
- package/dist/data/runtime/use-runtime-bar-overflow.d.ts.map +1 -1
- package/dist/data/runtime/use-runtime-bar-overflow.js +4 -10
- package/dist/data/runtime/use-runtime-bar-overflow.js.map +1 -1
- package/dist/data/test-runner/TestRunner.fixtures.d.ts +0 -20
- package/dist/data/test-runner/TestRunner.fixtures.d.ts.map +1 -1
- package/dist/data/test-runner/TestRunner.large-fixtures.d.ts +22 -0
- package/dist/data/test-runner/TestRunner.large-fixtures.d.ts.map +1 -0
- package/dist/data/use-pan-zoom.cjs +23 -10
- package/dist/data/use-pan-zoom.cjs.map +1 -1
- package/dist/data/use-pan-zoom.d.ts +16 -2
- package/dist/data/use-pan-zoom.d.ts.map +1 -1
- package/dist/data/use-pan-zoom.js +23 -10
- package/dist/data/use-pan-zoom.js.map +1 -1
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.js +3 -3
- package/dist/data.cjs +26 -2
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +1 -0
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +24 -0
- package/dist/data.js.map +1 -1
- package/dist/index.cjs +28 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -1
- package/dist/layout/Workspace.cjs +13 -4
- package/dist/layout/Workspace.cjs.map +1 -1
- package/dist/layout/Workspace.d.ts +7 -2
- package/dist/layout/Workspace.d.ts.map +1 -1
- package/dist/layout/Workspace.js +13 -4
- package/dist/layout/Workspace.js.map +1 -1
- package/dist/lib/permission-strategies.cjs +71 -11
- package/dist/lib/permission-strategies.cjs.map +1 -1
- package/dist/lib/permission-strategies.d.ts +3 -0
- package/dist/lib/permission-strategies.d.ts.map +1 -1
- package/dist/lib/permission-strategies.js +71 -11
- package/dist/lib/permission-strategies.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +5 -3
- package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.cjs +0 -57
- package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.cjs.map +0 -1
- package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.d.ts +0 -7
- package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.d.ts.map +0 -1
- package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.js +0 -57
- package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.js.map +0 -1
- package/dist/data/runtime/RuntimeBar.context.cjs +0 -8
- package/dist/data/runtime/RuntimeBar.context.cjs.map +0 -1
- package/dist/data/runtime/RuntimeBar.context.d.ts +0 -2
- package/dist/data/runtime/RuntimeBar.context.d.ts.map +0 -1
- package/dist/data/runtime/RuntimeBar.context.js +0 -8
- package/dist/data/runtime/RuntimeBar.context.js.map +0 -1
package/dist/data.js
CHANGED
|
@@ -109,12 +109,17 @@ import { parseJavaStackTrace } from "./data/diagnostics/stacktrace-parse.js";
|
|
|
109
109
|
import { CopyBadge, ErrorDetails, PrettyStackTrace } from "./data/diagnostics/ErrorDetails.js";
|
|
110
110
|
import { compactStackPath, isApplicationStackFrame, normalizeErrorDiagnostics, parseDiagnosticsStackTrace, parseInlineJsonContextValue } from "./data/diagnostics/error-diagnostics.js";
|
|
111
111
|
import { HarEntryDetails, HarPanel } from "./data/har/HarPanel.js";
|
|
112
|
+
import { CALL_GRAPH_ACCESS } from "./data/call-graph/types.js";
|
|
113
|
+
import { CALL_GRAPH_DATA_GLYPHS, DATA_KIND_WORDS, UIR_CALL_GRAPH_VOCABULARY, callsItself, dataNodeBacking, dataNodeStatus, interfaceMethods, isDataNode } from "./data/call-graph/call-graph-vocabulary.js";
|
|
114
|
+
import { CALL_GRAPH_DEFAULT_DEPTH, CALL_GRAPH_MAX_DEPTH, mergeGraph, toggleAccess } from "./data/call-graph/call-graph-model.js";
|
|
115
|
+
import { EXCLUDE_EXTERNAL, callGraphGroupFacts, formatExclude, matchesExclude, parseExclude } from "./data/call-graph/call-graph-exclude.js";
|
|
112
116
|
import { CacheAdapterRegistry, createCacheRegistry, prefixAdapter } from "./data/cache-browser/adapter.js";
|
|
113
117
|
import { CacheBrowser } from "./data/cache-browser/CacheBrowser.js";
|
|
114
118
|
import { CacheDetailPanel } from "./data/cache-browser/CacheDetailPanel.js";
|
|
115
119
|
import { CacheNodeRow, CacheTree } from "./data/cache-browser/CacheTree.js";
|
|
116
120
|
import { CacheStatsOverview } from "./data/cache-browser/CacheStatsOverview.js";
|
|
117
121
|
import { CacheValue } from "./data/cache-browser/CacheValue.js";
|
|
122
|
+
import { CallGraph } from "./data/call-graph/CallGraph.js";
|
|
118
123
|
import { ClickyExportDialog } from "./data/clicky-export/ClickyExportDialog.js";
|
|
119
124
|
import { FixtureEditor } from "./data/FixtureEditor/FixtureEditor.js";
|
|
120
125
|
import { GitChangedFilesSummary, GitCommitList, GitDiffPanel, GitFileList } from "./data/git/GitChangeList.js";
|
|
@@ -725,6 +730,12 @@ export {
|
|
|
725
730
|
CALLOUT_TONES,
|
|
726
731
|
CALLOUT_VARIANTS,
|
|
727
732
|
CALLOUT_VARIANT_LABELS,
|
|
733
|
+
CALL_GRAPH_ACCESS,
|
|
734
|
+
CALL_GRAPH_DATA_GLYPHS,
|
|
735
|
+
DATA_KIND_WORDS as CALL_GRAPH_DATA_KIND_WORDS,
|
|
736
|
+
CALL_GRAPH_DEFAULT_DEPTH,
|
|
737
|
+
EXCLUDE_EXTERNAL as CALL_GRAPH_EXCLUDE_EXTERNAL,
|
|
738
|
+
CALL_GRAPH_MAX_DEPTH,
|
|
728
739
|
CacheAdapterRegistry,
|
|
729
740
|
CacheBrowser,
|
|
730
741
|
CacheDetailPanel,
|
|
@@ -732,6 +743,7 @@ export {
|
|
|
732
743
|
CacheStatsOverview,
|
|
733
744
|
CacheTree,
|
|
734
745
|
CacheValue,
|
|
746
|
+
CallGraph,
|
|
735
747
|
Callout,
|
|
736
748
|
CellFilterActions,
|
|
737
749
|
ClickyExportDialog,
|
|
@@ -832,6 +844,7 @@ export {
|
|
|
832
844
|
Tree,
|
|
833
845
|
TreeGroupHeader,
|
|
834
846
|
TreeNode,
|
|
847
|
+
UIR_CALL_GRAPH_VOCABULARY,
|
|
835
848
|
UiAccessProtected,
|
|
836
849
|
UiAccessProtectedDark,
|
|
837
850
|
UiAccessPublic,
|
|
@@ -1912,7 +1925,9 @@ export {
|
|
|
1912
1925
|
buildSchemaViewerTree,
|
|
1913
1926
|
buildStepBranchTree,
|
|
1914
1927
|
cacheQueryKeys,
|
|
1928
|
+
callGraphGroupFacts,
|
|
1915
1929
|
calloutVariantStyles,
|
|
1930
|
+
callsItself,
|
|
1916
1931
|
changeIconAliases,
|
|
1917
1932
|
chooseTimestampFormat,
|
|
1918
1933
|
clickyFormatForMarkdownPreview,
|
|
@@ -1933,6 +1948,8 @@ export {
|
|
|
1933
1948
|
createFenceMarkdown,
|
|
1934
1949
|
createTestRunnerRegistry,
|
|
1935
1950
|
cycleFilterState,
|
|
1951
|
+
dataNodeBacking,
|
|
1952
|
+
dataNodeStatus,
|
|
1936
1953
|
debugCaptureHeaders,
|
|
1937
1954
|
debugConsoleAvailable,
|
|
1938
1955
|
debugConsoleOpen,
|
|
@@ -1951,6 +1968,7 @@ export {
|
|
|
1951
1968
|
fixtureFenceSchemaAliases,
|
|
1952
1969
|
fixtureFenceSnippetInfo,
|
|
1953
1970
|
fixtureFrontmatterState,
|
|
1971
|
+
formatExclude as formatCallGraphExclude,
|
|
1954
1972
|
formatCount,
|
|
1955
1973
|
formatDateTimeRelative,
|
|
1956
1974
|
formatGitCommitDateHeader,
|
|
@@ -1972,7 +1990,9 @@ export {
|
|
|
1972
1990
|
humanizeName,
|
|
1973
1991
|
iconsByConsumerName,
|
|
1974
1992
|
inferColumns,
|
|
1993
|
+
interfaceMethods,
|
|
1975
1994
|
isApplicationStackFrame,
|
|
1995
|
+
isDataNode,
|
|
1976
1996
|
isFailedOrWarn,
|
|
1977
1997
|
isFlatMetadata,
|
|
1978
1998
|
isGroupCollapsedByDefault,
|
|
@@ -1983,7 +2003,9 @@ export {
|
|
|
1983
2003
|
latestOf,
|
|
1984
2004
|
logLevelColor,
|
|
1985
2005
|
markdownDocumentStats,
|
|
2006
|
+
matchesExclude as matchesCallGraphExclude,
|
|
1986
2007
|
matchesFilterState,
|
|
2008
|
+
mergeGraph as mergeCallGraph,
|
|
1987
2009
|
mergeSeries,
|
|
1988
2010
|
metadataEntries,
|
|
1989
2011
|
mockMarkdownPreview,
|
|
@@ -1993,6 +2015,7 @@ export {
|
|
|
1993
2015
|
normalizeStatus,
|
|
1994
2016
|
normalizeTags,
|
|
1995
2017
|
parseBoundsValue,
|
|
2018
|
+
parseExclude as parseCallGraphExclude,
|
|
1996
2019
|
parseDiagnosticsStackTrace,
|
|
1997
2020
|
parseDurationBoundsValue,
|
|
1998
2021
|
parseFixtureFrontmatter,
|
|
@@ -2060,6 +2083,7 @@ export {
|
|
|
2060
2083
|
taskStatusColor,
|
|
2061
2084
|
taskStatusIcon,
|
|
2062
2085
|
testStatus,
|
|
2086
|
+
toggleAccess as toggleCallGraphAccess,
|
|
2063
2087
|
totalDuration,
|
|
2064
2088
|
updateFilterSelection,
|
|
2065
2089
|
useClickyExport,
|
package/dist/data.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"data.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index.cjs
CHANGED
|
@@ -286,13 +286,18 @@ const clickyMetadata = require("./rpc/clickyMetadata.cjs");
|
|
|
286
286
|
const commandHref = require("./rpc/commandHref.cjs");
|
|
287
287
|
const router = require("./rpc/router.cjs");
|
|
288
288
|
const RouterProvider = require("./rpc/RouterProvider.cjs");
|
|
289
|
-
const types$
|
|
289
|
+
const types$2 = require("./rpc/types.cjs");
|
|
290
|
+
const types = require("./data/call-graph/types.cjs");
|
|
291
|
+
const callGraphVocabulary = require("./data/call-graph/call-graph-vocabulary.cjs");
|
|
292
|
+
const callGraphModel = require("./data/call-graph/call-graph-model.cjs");
|
|
293
|
+
const callGraphExclude = require("./data/call-graph/call-graph-exclude.cjs");
|
|
290
294
|
const adapter = require("./data/cache-browser/adapter.cjs");
|
|
291
295
|
const CacheBrowser = require("./data/cache-browser/CacheBrowser.cjs");
|
|
292
296
|
const CacheDetailPanel = require("./data/cache-browser/CacheDetailPanel.cjs");
|
|
293
297
|
const CacheTree = require("./data/cache-browser/CacheTree.cjs");
|
|
294
298
|
const CacheStatsOverview = require("./data/cache-browser/CacheStatsOverview.cjs");
|
|
295
299
|
const CacheValue = require("./data/cache-browser/CacheValue.cjs");
|
|
300
|
+
const CallGraph = require("./data/call-graph/CallGraph.cjs");
|
|
296
301
|
const ClickyExportDialog = require("./data/clicky-export/ClickyExportDialog.cjs");
|
|
297
302
|
const FixtureEditor = require("./data/FixtureEditor/FixtureEditor.cjs");
|
|
298
303
|
const GitChangeList = require("./data/git/GitChangeList.cjs");
|
|
@@ -890,7 +895,7 @@ const filterState = require("./data/test-runner/filterState.cjs");
|
|
|
890
895
|
const verifyReport = require("./data/verification/verify-report.cjs");
|
|
891
896
|
const gitDates = require("./data/git/git-dates.cjs");
|
|
892
897
|
const frameworkIcon = require("./data/test-runner/frameworkIcon.cjs");
|
|
893
|
-
const types = require("./data/cache-browser/types.cjs");
|
|
898
|
+
const types$1 = require("./data/cache-browser/types.cjs");
|
|
894
899
|
const programmingCatalog = require("./icons/programmingCatalog.cjs");
|
|
895
900
|
const graphEdgeRouting = require("./data/graph-edge-routing.cjs");
|
|
896
901
|
const useClickyExport = require("./data/clicky-export/useClickyExport.cjs");
|
|
@@ -1462,7 +1467,25 @@ exports.useBrowserRouter = router.useBrowserRouter;
|
|
|
1462
1467
|
exports.useMemoryRouter = router.useMemoryRouter;
|
|
1463
1468
|
exports.useRouter = router.useRouter;
|
|
1464
1469
|
exports.RouterProvider = RouterProvider.RouterProvider;
|
|
1465
|
-
exports.isPositionalParam = types$
|
|
1470
|
+
exports.isPositionalParam = types$2.isPositionalParam;
|
|
1471
|
+
exports.CALL_GRAPH_ACCESS = types.CALL_GRAPH_ACCESS;
|
|
1472
|
+
exports.CALL_GRAPH_DATA_GLYPHS = callGraphVocabulary.CALL_GRAPH_DATA_GLYPHS;
|
|
1473
|
+
exports.CALL_GRAPH_DATA_KIND_WORDS = callGraphVocabulary.DATA_KIND_WORDS;
|
|
1474
|
+
exports.UIR_CALL_GRAPH_VOCABULARY = callGraphVocabulary.UIR_CALL_GRAPH_VOCABULARY;
|
|
1475
|
+
exports.callsItself = callGraphVocabulary.callsItself;
|
|
1476
|
+
exports.dataNodeBacking = callGraphVocabulary.dataNodeBacking;
|
|
1477
|
+
exports.dataNodeStatus = callGraphVocabulary.dataNodeStatus;
|
|
1478
|
+
exports.interfaceMethods = callGraphVocabulary.interfaceMethods;
|
|
1479
|
+
exports.isDataNode = callGraphVocabulary.isDataNode;
|
|
1480
|
+
exports.CALL_GRAPH_DEFAULT_DEPTH = callGraphModel.CALL_GRAPH_DEFAULT_DEPTH;
|
|
1481
|
+
exports.CALL_GRAPH_MAX_DEPTH = callGraphModel.CALL_GRAPH_MAX_DEPTH;
|
|
1482
|
+
exports.mergeCallGraph = callGraphModel.mergeGraph;
|
|
1483
|
+
exports.toggleCallGraphAccess = callGraphModel.toggleAccess;
|
|
1484
|
+
exports.CALL_GRAPH_EXCLUDE_EXTERNAL = callGraphExclude.EXCLUDE_EXTERNAL;
|
|
1485
|
+
exports.callGraphGroupFacts = callGraphExclude.callGraphGroupFacts;
|
|
1486
|
+
exports.formatCallGraphExclude = callGraphExclude.formatExclude;
|
|
1487
|
+
exports.matchesCallGraphExclude = callGraphExclude.matchesExclude;
|
|
1488
|
+
exports.parseCallGraphExclude = callGraphExclude.parseExclude;
|
|
1466
1489
|
exports.CacheAdapterRegistry = adapter.CacheAdapterRegistry;
|
|
1467
1490
|
exports.createCacheRegistry = adapter.createCacheRegistry;
|
|
1468
1491
|
exports.prefixAdapter = adapter.prefixAdapter;
|
|
@@ -1472,6 +1495,7 @@ exports.CacheNodeRow = CacheTree.CacheNodeRow;
|
|
|
1472
1495
|
exports.CacheTree = CacheTree.CacheTree;
|
|
1473
1496
|
exports.CacheStatsOverview = CacheStatsOverview.CacheStatsOverview;
|
|
1474
1497
|
exports.CacheValue = CacheValue.CacheValue;
|
|
1498
|
+
exports.CallGraph = CallGraph.CallGraph;
|
|
1475
1499
|
exports.ClickyExportDialog = ClickyExportDialog.ClickyExportDialog;
|
|
1476
1500
|
exports.FixtureEditor = FixtureEditor.FixtureEditor;
|
|
1477
1501
|
exports.GitChangedFilesSummary = GitChangeList.GitChangedFilesSummary;
|
|
@@ -2605,7 +2629,7 @@ exports.emptyVerifySummary = verifyReport.emptyVerifySummary;
|
|
|
2605
2629
|
exports.summarizeVerifyNodes = verifyReport.summarizeVerifyNodes;
|
|
2606
2630
|
exports.formatGitCommitDateHeader = gitDates.formatGitCommitDateHeader;
|
|
2607
2631
|
exports.frameworkIcon = frameworkIcon.frameworkIcon;
|
|
2608
|
-
exports.isLeaf = types.isLeaf;
|
|
2632
|
+
exports.isLeaf = types$1.isLeaf;
|
|
2609
2633
|
exports.programmingIconCatalog = programmingCatalog.programmingIconCatalog;
|
|
2610
2634
|
exports.routeEdges = graphEdgeRouting.routeEdges;
|
|
2611
2635
|
exports.useClickyExport = useClickyExport.useClickyExport;
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index.js
CHANGED
|
@@ -285,12 +285,17 @@ import { buildCommandHref, withBasePath } from "./rpc/commandHref.js";
|
|
|
285
285
|
import { useBrowserRouter, useMemoryRouter, useRouter } from "./rpc/router.js";
|
|
286
286
|
import { RouterProvider } from "./rpc/RouterProvider.js";
|
|
287
287
|
import { isPositionalParam } from "./rpc/types.js";
|
|
288
|
+
import { CALL_GRAPH_ACCESS } from "./data/call-graph/types.js";
|
|
289
|
+
import { CALL_GRAPH_DATA_GLYPHS, DATA_KIND_WORDS, UIR_CALL_GRAPH_VOCABULARY, callsItself, dataNodeBacking, dataNodeStatus, interfaceMethods, isDataNode } from "./data/call-graph/call-graph-vocabulary.js";
|
|
290
|
+
import { CALL_GRAPH_DEFAULT_DEPTH, CALL_GRAPH_MAX_DEPTH, mergeGraph, toggleAccess } from "./data/call-graph/call-graph-model.js";
|
|
291
|
+
import { EXCLUDE_EXTERNAL, callGraphGroupFacts, formatExclude, matchesExclude, parseExclude } from "./data/call-graph/call-graph-exclude.js";
|
|
288
292
|
import { CacheAdapterRegistry, createCacheRegistry, prefixAdapter } from "./data/cache-browser/adapter.js";
|
|
289
293
|
import { CacheBrowser } from "./data/cache-browser/CacheBrowser.js";
|
|
290
294
|
import { CacheDetailPanel } from "./data/cache-browser/CacheDetailPanel.js";
|
|
291
295
|
import { CacheNodeRow, CacheTree } from "./data/cache-browser/CacheTree.js";
|
|
292
296
|
import { CacheStatsOverview } from "./data/cache-browser/CacheStatsOverview.js";
|
|
293
297
|
import { CacheValue } from "./data/cache-browser/CacheValue.js";
|
|
298
|
+
import { CallGraph } from "./data/call-graph/CallGraph.js";
|
|
294
299
|
import { ClickyExportDialog } from "./data/clicky-export/ClickyExportDialog.js";
|
|
295
300
|
import { FixtureEditor } from "./data/FixtureEditor/FixtureEditor.js";
|
|
296
301
|
import { GitChangedFilesSummary, GitCommitList, GitDiffPanel, GitFileList } from "./data/git/GitChangeList.js";
|
|
@@ -909,6 +914,12 @@ export {
|
|
|
909
914
|
CALLOUT_TONES,
|
|
910
915
|
CALLOUT_VARIANTS,
|
|
911
916
|
CALLOUT_VARIANT_LABELS,
|
|
917
|
+
CALL_GRAPH_ACCESS,
|
|
918
|
+
CALL_GRAPH_DATA_GLYPHS,
|
|
919
|
+
DATA_KIND_WORDS as CALL_GRAPH_DATA_KIND_WORDS,
|
|
920
|
+
CALL_GRAPH_DEFAULT_DEPTH,
|
|
921
|
+
EXCLUDE_EXTERNAL as CALL_GRAPH_EXCLUDE_EXTERNAL,
|
|
922
|
+
CALL_GRAPH_MAX_DEPTH,
|
|
912
923
|
CLICKY_COLUMN_FORMAT_OPTIONS,
|
|
913
924
|
CLICKY_COLUMN_UNIT_OPTIONS,
|
|
914
925
|
CLICKY_FORMAT_OPTIONS,
|
|
@@ -925,6 +936,7 @@ export {
|
|
|
925
936
|
CacheStatsOverview,
|
|
926
937
|
CacheTree,
|
|
927
938
|
CacheValue,
|
|
939
|
+
CallGraph,
|
|
928
940
|
Callout,
|
|
929
941
|
CellActionButton,
|
|
930
942
|
CellActions,
|
|
@@ -1157,6 +1169,7 @@ export {
|
|
|
1157
1169
|
TreePickerField,
|
|
1158
1170
|
TriStateMultiSelect,
|
|
1159
1171
|
TriStateToggle,
|
|
1172
|
+
UIR_CALL_GRAPH_VOCABULARY,
|
|
1160
1173
|
UiAccessProtected,
|
|
1161
1174
|
UiAccessProtectedDark,
|
|
1162
1175
|
UiAccessPublic,
|
|
@@ -2257,7 +2270,9 @@ export {
|
|
|
2257
2270
|
buttonVariants,
|
|
2258
2271
|
cacheQueryKeys,
|
|
2259
2272
|
calculateComboboxMenuPosition,
|
|
2273
|
+
callGraphGroupFacts,
|
|
2260
2274
|
calloutVariantStyles,
|
|
2275
|
+
callsItself,
|
|
2261
2276
|
changeIconAliases,
|
|
2262
2277
|
chooseTimestampFormat,
|
|
2263
2278
|
clickyFormatForMarkdownPreview,
|
|
@@ -2290,6 +2305,8 @@ export {
|
|
|
2290
2305
|
createTestRunnerRegistry,
|
|
2291
2306
|
createUnitFormExtensions,
|
|
2292
2307
|
cycleFilterState,
|
|
2308
|
+
dataNodeBacking,
|
|
2309
|
+
dataNodeStatus,
|
|
2293
2310
|
debugCaptureHeaders,
|
|
2294
2311
|
debugConsoleAvailable,
|
|
2295
2312
|
debugConsoleOpen,
|
|
@@ -2330,6 +2347,7 @@ export {
|
|
|
2330
2347
|
foldersFirst,
|
|
2331
2348
|
formatBytes,
|
|
2332
2349
|
formatBytesPerSecond,
|
|
2350
|
+
formatExclude as formatCallGraphExclude,
|
|
2333
2351
|
formatCount,
|
|
2334
2352
|
formatDateTimeRelative,
|
|
2335
2353
|
formatDuration,
|
|
@@ -2364,9 +2382,11 @@ export {
|
|
|
2364
2382
|
humanizeName,
|
|
2365
2383
|
iconsByConsumerName,
|
|
2366
2384
|
inferColumns,
|
|
2385
|
+
interfaceMethods,
|
|
2367
2386
|
isApplicationStackFrame,
|
|
2368
2387
|
isConnectionLoggingCapability,
|
|
2369
2388
|
isCountryCode,
|
|
2389
|
+
isDataNode,
|
|
2370
2390
|
isFailedOrWarn,
|
|
2371
2391
|
isFlatMetadata,
|
|
2372
2392
|
isGroupCollapsedByDefault,
|
|
@@ -2395,11 +2415,13 @@ export {
|
|
|
2395
2415
|
makeSurfaceDefinition,
|
|
2396
2416
|
markdownDocumentStats,
|
|
2397
2417
|
matchMentionsInBody,
|
|
2418
|
+
matchesExclude as matchesCallGraphExclude,
|
|
2398
2419
|
matchesFilterState,
|
|
2399
2420
|
matchesIf,
|
|
2400
2421
|
matchingTools,
|
|
2401
2422
|
mediaMatches,
|
|
2402
2423
|
memoryTourStorage,
|
|
2424
|
+
mergeGraph as mergeCallGraph,
|
|
2403
2425
|
mergeRuntimeSpec,
|
|
2404
2426
|
mergeSeries,
|
|
2405
2427
|
metadataEntries,
|
|
@@ -2422,6 +2444,7 @@ export {
|
|
|
2422
2444
|
onMediaChange,
|
|
2423
2445
|
paletteClass,
|
|
2424
2446
|
parseBoundsValue,
|
|
2447
|
+
parseExclude as parseCallGraphExclude,
|
|
2425
2448
|
parseDiagnosticsStackTrace,
|
|
2426
2449
|
parseDurationBoundsValue,
|
|
2427
2450
|
parseEndpointValue,
|
|
@@ -2539,6 +2562,7 @@ export {
|
|
|
2539
2562
|
taskStatusIcon,
|
|
2540
2563
|
templateValuePre,
|
|
2541
2564
|
testStatus,
|
|
2565
|
+
toggleAccess as toggleCallGraphAccess,
|
|
2542
2566
|
toneToBadgeTone,
|
|
2543
2567
|
toolFieldSuggestions,
|
|
2544
2568
|
totalDuration,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -61,6 +61,7 @@ function Workspace({
|
|
|
61
61
|
onValueChange,
|
|
62
62
|
storageKey,
|
|
63
63
|
slots,
|
|
64
|
+
collapsedSides,
|
|
64
65
|
className
|
|
65
66
|
}) {
|
|
66
67
|
Workspace_model.validateWorkspacePanes(panes);
|
|
@@ -131,6 +132,14 @@ function Workspace({
|
|
|
131
132
|
if (storageKey && value === void 0)
|
|
132
133
|
Workspace_model.writeWorkspaceLayoutState(storageKey, internal);
|
|
133
134
|
}, [internal, storageKey, value]);
|
|
135
|
+
const held = (location) => (collapsedSides == null ? void 0 : collapsedSides.includes(location)) ?? false;
|
|
136
|
+
const shown = (collapsedSides == null ? void 0 : collapsedSides.length) ? {
|
|
137
|
+
...state,
|
|
138
|
+
sideCollapsed: {
|
|
139
|
+
left: held("left") || state.sideCollapsed.left,
|
|
140
|
+
right: held("right") || state.sideCollapsed.right
|
|
141
|
+
}
|
|
142
|
+
} : state;
|
|
134
143
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
135
144
|
"div",
|
|
136
145
|
{
|
|
@@ -142,8 +151,8 @@ function Workspace({
|
|
|
142
151
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
143
152
|
WorkspaceTopRight,
|
|
144
153
|
{
|
|
145
|
-
hasLeft: groups.left.length > 0,
|
|
146
|
-
hasRight: groups.right.length > 0,
|
|
154
|
+
hasLeft: groups.left.length > 0 && !held("left"),
|
|
155
|
+
hasRight: groups.right.length > 0 && !held("right"),
|
|
147
156
|
...slots ? { slots } : {},
|
|
148
157
|
state,
|
|
149
158
|
update
|
|
@@ -154,7 +163,7 @@ function Workspace({
|
|
|
154
163
|
{
|
|
155
164
|
location: "left",
|
|
156
165
|
panes: groups.left,
|
|
157
|
-
state,
|
|
166
|
+
state: shown,
|
|
158
167
|
update
|
|
159
168
|
}
|
|
160
169
|
),
|
|
@@ -171,7 +180,7 @@ function Workspace({
|
|
|
171
180
|
{
|
|
172
181
|
location: "right",
|
|
173
182
|
panes: groups.right,
|
|
174
|
-
state,
|
|
183
|
+
state: shown,
|
|
175
184
|
update
|
|
176
185
|
}
|
|
177
186
|
),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Workspace.cjs","sources":["../../src/layout/Workspace.tsx"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport { UiSidebar } from \"../icons\";\nimport { cn } from \"../lib/utils\";\nimport {\n createWorkspaceLayoutState,\n readWorkspaceLayoutState,\n validateWorkspacePanes,\n writeWorkspaceLayoutState,\n type WorkspaceLayoutDefaults,\n type WorkspaceLayoutState,\n type WorkspacePaneSpec,\n} from \"./Workspace.model\";\nimport {\n WorkspaceSideRegion,\n WorkspaceSingleRegion,\n type WorkspaceUpdate,\n} from \"./Workspace.regions\";\n\nexport type {\n WorkspaceLayoutDefaults,\n WorkspaceLayoutState,\n WorkspacePaneLocation,\n WorkspacePaneSlots,\n WorkspacePaneSpec,\n WorkspaceSideLocation,\n} from \"./Workspace.model\";\n\nexport type WorkspaceSlots = {\n topRightActions?: ReactNode;\n};\n\nexport type WorkspaceProps = {\n panes: WorkspacePaneSpec[];\n value?: WorkspaceLayoutState;\n defaultValue?: WorkspaceLayoutDefaults;\n onValueChange?: (value: WorkspaceLayoutState) => void;\n storageKey?: string;\n slots?: WorkspaceSlots;\n className?: string;\n};\n\ntype WorkspaceTopRightProps = {\n hasLeft: boolean;\n hasRight: boolean;\n slots?: WorkspaceSlots;\n state: WorkspaceLayoutState;\n update: WorkspaceUpdate;\n};\n\nfunction WorkspaceTopRight({\n hasLeft,\n hasRight,\n slots,\n state,\n update,\n}: WorkspaceTopRightProps) {\n if (!hasLeft && !hasRight && !slots?.topRightActions) return null;\n const toggleSide = (location: \"left\" | \"right\") =>\n update((current) => ({\n ...current,\n sideCollapsed: {\n ...current.sideCollapsed,\n [location]: !current.sideCollapsed[location],\n },\n }));\n return (\n <div\n data-testid=\"workspace-top-right\"\n className=\"absolute right-1 top-1 z-30 flex h-7 items-center gap-1 rounded bg-muted/90 px-1 shadow-sm backdrop-blur\"\n >\n {slots?.topRightActions}\n {hasLeft && (\n <button\n type=\"button\"\n className=\"inline-flex size-6 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n aria-expanded={!state.sideCollapsed.left}\n aria-label={`${state.sideCollapsed.left ? \"Expand\" : \"Collapse\"} left side`}\n onClick={() => toggleSide(\"left\")}\n >\n <UiSidebar className=\"size-4\" />\n </button>\n )}\n {hasRight && (\n <button\n type=\"button\"\n className=\"inline-flex size-6 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n aria-expanded={!state.sideCollapsed.right}\n aria-label={`${state.sideCollapsed.right ? \"Expand\" : \"Collapse\"} right side`}\n onClick={() => toggleSide(\"right\")}\n >\n <UiSidebar className=\"size-4 -scale-x-100\" />\n </button>\n )}\n </div>\n );\n}\n\nexport function Workspace({\n panes,\n value,\n defaultValue = {},\n onValueChange,\n storageKey,\n slots,\n className,\n}: WorkspaceProps) {\n validateWorkspacePanes(panes);\n if (value !== undefined && storageKey !== undefined) {\n throw new Error(\"Workspace cannot combine value with storageKey\");\n }\n const [internal, setInternal] = useState(() =>\n storageKey\n ? readWorkspaceLayoutState(storageKey, panes, defaultValue)\n : createWorkspaceLayoutState(panes, defaultValue),\n );\n const seenLocations = useRef(new Set(panes.map((pane) => pane.location)));\n const seenPaneIds = useRef(new Set(panes.map((pane) => pane.id)));\n const state = value ?? internal;\n const groups = useMemo(\n () => ({\n left: panes.filter((pane) => pane.location === \"left\"),\n center: panes.find(\n (pane) => pane.location === \"center\",\n ) as WorkspacePaneSpec,\n right: panes.filter((pane) => pane.location === \"right\"),\n bottom: panes.find((pane) => pane.location === \"bottom\"),\n }),\n [panes],\n );\n\n useLayoutEffect(() => {\n const addedLocations = new Set(\n panes\n .map((pane) => pane.location)\n .filter((location) => !seenLocations.current.has(location)),\n );\n const addedPanes = panes.filter(\n (pane) => !seenPaneIds.current.has(pane.id),\n );\n panes.forEach((pane) => {\n seenLocations.current.add(pane.location);\n seenPaneIds.current.add(pane.id);\n });\n if (\n value !== undefined ||\n (addedLocations.size === 0 && addedPanes.length === 0)\n )\n return;\n const defaults = createWorkspaceLayoutState(panes, defaultValue);\n const addedStackHeights = addedPanes.reduce<Record<string, number>>(\n (heights, pane) => {\n if (pane.height !== undefined) heights[pane.id] = pane.height;\n return heights;\n },\n {},\n );\n setInternal((current) => ({\n ...current,\n ...(addedLocations.has(\"left\") ? { leftWidth: defaults.leftWidth } : {}),\n ...(addedLocations.has(\"right\")\n ? { rightWidth: defaults.rightWidth }\n : {}),\n ...(addedLocations.has(\"bottom\")\n ? { bottomHeight: defaults.bottomHeight }\n : {}),\n stackHeights: { ...current.stackHeights, ...addedStackHeights },\n collapsed: {\n ...current.collapsed,\n ...Object.fromEntries(\n addedPanes.map((pane) => [pane.id, pane.defaultCollapsed ?? false]),\n ),\n },\n }));\n }, [defaultValue, panes, value]);\n\n const update = useCallback<WorkspaceUpdate>(\n (change) => {\n const next = change(state);\n if (value === undefined) setInternal(next);\n onValueChange?.(next);\n },\n [onValueChange, state, value],\n );\n\n useEffect(() => {\n if (storageKey && value === undefined)\n writeWorkspaceLayoutState(storageKey, internal);\n }, [internal, storageKey, value]);\n\n return (\n <div\n className={cn(\n \"relative grid min-h-0 w-full grid-cols-1 overflow-auto bg-background md:h-full md:grid-cols-[auto_minmax(0,1fr)_auto] md:grid-rows-[minmax(0,1fr)_auto] md:overflow-hidden\",\n className,\n )}\n >\n <WorkspaceTopRight\n hasLeft={groups.left.length > 0}\n hasRight={groups.right.length > 0}\n {...(slots ? { slots } : {})}\n state={state}\n update={update}\n />\n <WorkspaceSideRegion\n location=\"left\"\n panes={groups.left}\n state={state}\n update={update}\n />\n <WorkspaceSingleRegion\n pane={groups.center}\n state={state}\n update={update}\n />\n <WorkspaceSideRegion\n location=\"right\"\n panes={groups.right}\n state={state}\n update={update}\n />\n {groups.bottom && (\n <WorkspaceSingleRegion\n pane={groups.bottom}\n state={state}\n update={update}\n />\n )}\n </div>\n );\n}\n"],"names":["jsxs","jsx","UiSidebar","validateWorkspacePanes","useState","readWorkspaceLayoutState","createWorkspaceLayoutState","useRef","useMemo","useLayoutEffect","useCallback","useEffect","writeWorkspaceLayoutState","cn","WorkspaceSideRegion","WorkspaceSingleRegion"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Workspace.cjs","sources":["../../src/layout/Workspace.tsx"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport { UiSidebar } from \"../icons\";\nimport { cn } from \"../lib/utils\";\nimport {\n createWorkspaceLayoutState,\n readWorkspaceLayoutState,\n validateWorkspacePanes,\n writeWorkspaceLayoutState,\n type WorkspaceLayoutDefaults,\n type WorkspaceLayoutState,\n type WorkspacePaneSpec,\n type WorkspaceSideLocation,\n} from \"./Workspace.model\";\nimport {\n WorkspaceSideRegion,\n WorkspaceSingleRegion,\n type WorkspaceUpdate,\n} from \"./Workspace.regions\";\n\nexport type {\n WorkspaceLayoutDefaults,\n WorkspaceLayoutState,\n WorkspacePaneLocation,\n WorkspacePaneSlots,\n WorkspacePaneSpec,\n WorkspaceSideLocation,\n} from \"./Workspace.model\";\n\nexport type WorkspaceSlots = {\n topRightActions?: ReactNode;\n};\n\nexport type WorkspaceProps = {\n panes: WorkspacePaneSpec[];\n value?: WorkspaceLayoutState;\n defaultValue?: WorkspaceLayoutDefaults;\n onValueChange?: (value: WorkspaceLayoutState) => void;\n storageKey?: string;\n slots?: WorkspaceSlots;\n /**\n * Sides the host holds collapsed for now, such as while the center shows something that needs the\n * full width: they render collapsed and lose their toggle, and the layout state keeps how they were.\n */\n collapsedSides?: WorkspaceSideLocation[];\n className?: string;\n};\n\ntype WorkspaceTopRightProps = {\n hasLeft: boolean;\n hasRight: boolean;\n slots?: WorkspaceSlots;\n state: WorkspaceLayoutState;\n update: WorkspaceUpdate;\n};\n\nfunction WorkspaceTopRight({\n hasLeft,\n hasRight,\n slots,\n state,\n update,\n}: WorkspaceTopRightProps) {\n if (!hasLeft && !hasRight && !slots?.topRightActions) return null;\n const toggleSide = (location: \"left\" | \"right\") =>\n update((current) => ({\n ...current,\n sideCollapsed: {\n ...current.sideCollapsed,\n [location]: !current.sideCollapsed[location],\n },\n }));\n return (\n <div\n data-testid=\"workspace-top-right\"\n className=\"absolute right-1 top-1 z-30 flex h-7 items-center gap-1 rounded bg-muted/90 px-1 shadow-sm backdrop-blur\"\n >\n {slots?.topRightActions}\n {hasLeft && (\n <button\n type=\"button\"\n className=\"inline-flex size-6 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n aria-expanded={!state.sideCollapsed.left}\n aria-label={`${state.sideCollapsed.left ? \"Expand\" : \"Collapse\"} left side`}\n onClick={() => toggleSide(\"left\")}\n >\n <UiSidebar className=\"size-4\" />\n </button>\n )}\n {hasRight && (\n <button\n type=\"button\"\n className=\"inline-flex size-6 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n aria-expanded={!state.sideCollapsed.right}\n aria-label={`${state.sideCollapsed.right ? \"Expand\" : \"Collapse\"} right side`}\n onClick={() => toggleSide(\"right\")}\n >\n <UiSidebar className=\"size-4 -scale-x-100\" />\n </button>\n )}\n </div>\n );\n}\n\nexport function Workspace({\n panes,\n value,\n defaultValue = {},\n onValueChange,\n storageKey,\n slots,\n collapsedSides,\n className,\n}: WorkspaceProps) {\n validateWorkspacePanes(panes);\n if (value !== undefined && storageKey !== undefined) {\n throw new Error(\"Workspace cannot combine value with storageKey\");\n }\n const [internal, setInternal] = useState(() =>\n storageKey\n ? readWorkspaceLayoutState(storageKey, panes, defaultValue)\n : createWorkspaceLayoutState(panes, defaultValue),\n );\n const seenLocations = useRef(new Set(panes.map((pane) => pane.location)));\n const seenPaneIds = useRef(new Set(panes.map((pane) => pane.id)));\n const state = value ?? internal;\n const groups = useMemo(\n () => ({\n left: panes.filter((pane) => pane.location === \"left\"),\n center: panes.find(\n (pane) => pane.location === \"center\",\n ) as WorkspacePaneSpec,\n right: panes.filter((pane) => pane.location === \"right\"),\n bottom: panes.find((pane) => pane.location === \"bottom\"),\n }),\n [panes],\n );\n\n useLayoutEffect(() => {\n const addedLocations = new Set(\n panes\n .map((pane) => pane.location)\n .filter((location) => !seenLocations.current.has(location)),\n );\n const addedPanes = panes.filter(\n (pane) => !seenPaneIds.current.has(pane.id),\n );\n panes.forEach((pane) => {\n seenLocations.current.add(pane.location);\n seenPaneIds.current.add(pane.id);\n });\n if (\n value !== undefined ||\n (addedLocations.size === 0 && addedPanes.length === 0)\n )\n return;\n const defaults = createWorkspaceLayoutState(panes, defaultValue);\n const addedStackHeights = addedPanes.reduce<Record<string, number>>(\n (heights, pane) => {\n if (pane.height !== undefined) heights[pane.id] = pane.height;\n return heights;\n },\n {},\n );\n setInternal((current) => ({\n ...current,\n ...(addedLocations.has(\"left\") ? { leftWidth: defaults.leftWidth } : {}),\n ...(addedLocations.has(\"right\")\n ? { rightWidth: defaults.rightWidth }\n : {}),\n ...(addedLocations.has(\"bottom\")\n ? { bottomHeight: defaults.bottomHeight }\n : {}),\n stackHeights: { ...current.stackHeights, ...addedStackHeights },\n collapsed: {\n ...current.collapsed,\n ...Object.fromEntries(\n addedPanes.map((pane) => [pane.id, pane.defaultCollapsed ?? false]),\n ),\n },\n }));\n }, [defaultValue, panes, value]);\n\n const update = useCallback<WorkspaceUpdate>(\n (change) => {\n const next = change(state);\n if (value === undefined) setInternal(next);\n onValueChange?.(next);\n },\n [onValueChange, state, value],\n );\n\n useEffect(() => {\n if (storageKey && value === undefined)\n writeWorkspaceLayoutState(storageKey, internal);\n }, [internal, storageKey, value]);\n\n const held = (location: WorkspaceSideLocation) =>\n collapsedSides?.includes(location) ?? false;\n const shown: WorkspaceLayoutState = collapsedSides?.length\n ? {\n ...state,\n sideCollapsed: {\n left: held(\"left\") || state.sideCollapsed.left,\n right: held(\"right\") || state.sideCollapsed.right,\n },\n }\n : state;\n\n return (\n <div\n className={cn(\n \"relative grid min-h-0 w-full grid-cols-1 overflow-auto bg-background md:h-full md:grid-cols-[auto_minmax(0,1fr)_auto] md:grid-rows-[minmax(0,1fr)_auto] md:overflow-hidden\",\n className,\n )}\n >\n <WorkspaceTopRight\n hasLeft={groups.left.length > 0 && !held(\"left\")}\n hasRight={groups.right.length > 0 && !held(\"right\")}\n {...(slots ? { slots } : {})}\n state={state}\n update={update}\n />\n <WorkspaceSideRegion\n location=\"left\"\n panes={groups.left}\n state={shown}\n update={update}\n />\n <WorkspaceSingleRegion\n pane={groups.center}\n state={state}\n update={update}\n />\n <WorkspaceSideRegion\n location=\"right\"\n panes={groups.right}\n state={shown}\n update={update}\n />\n {groups.bottom && (\n <WorkspaceSingleRegion\n pane={groups.bottom}\n state={state}\n update={update}\n />\n )}\n </div>\n );\n}\n"],"names":["jsxs","jsx","UiSidebar","validateWorkspacePanes","useState","readWorkspaceLayoutState","createWorkspaceLayoutState","useRef","useMemo","useLayoutEffect","useCallback","useEffect","writeWorkspaceLayoutState","cn","WorkspaceSideRegion","WorkspaceSingleRegion"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
-
import { WorkspaceLayoutDefaults, WorkspaceLayoutState, WorkspacePaneSpec } from './Workspace.model.js';
|
|
2
|
+
import { WorkspaceLayoutDefaults, WorkspaceLayoutState, WorkspacePaneSpec, WorkspaceSideLocation } from './Workspace.model.js';
|
|
3
3
|
export type { WorkspaceLayoutDefaults, WorkspaceLayoutState, WorkspacePaneLocation, WorkspacePaneSlots, WorkspacePaneSpec, WorkspaceSideLocation, } from './Workspace.model.js';
|
|
4
4
|
export type WorkspaceSlots = {
|
|
5
5
|
topRightActions?: ReactNode;
|
|
@@ -11,7 +11,12 @@ export type WorkspaceProps = {
|
|
|
11
11
|
onValueChange?: (value: WorkspaceLayoutState) => void;
|
|
12
12
|
storageKey?: string;
|
|
13
13
|
slots?: WorkspaceSlots;
|
|
14
|
+
/**
|
|
15
|
+
* Sides the host holds collapsed for now, such as while the center shows something that needs the
|
|
16
|
+
* full width: they render collapsed and lose their toggle, and the layout state keeps how they were.
|
|
17
|
+
*/
|
|
18
|
+
collapsedSides?: WorkspaceSideLocation[];
|
|
14
19
|
className?: string;
|
|
15
20
|
};
|
|
16
|
-
export declare function Workspace({ panes, value, defaultValue, onValueChange, storageKey, slots, className, }: WorkspaceProps): import("react").JSX.Element;
|
|
21
|
+
export declare function Workspace({ panes, value, defaultValue, onValueChange, storageKey, slots, collapsedSides, className, }: WorkspaceProps): import("react").JSX.Element;
|
|
17
22
|
//# sourceMappingURL=Workspace.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Workspace.d.ts","sourceRoot":"","sources":["../../src/layout/Workspace.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,EAKL,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,
|
|
1
|
+
{"version":3,"file":"Workspace.d.ts","sourceRoot":"","sources":["../../src/layout/Workspace.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,EAKL,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC3B,MAAM,mBAAmB,CAAC;AAO3B,YAAY,EACV,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,cAAc,GAAG;IAC3B,eAAe,CAAC,EAAE,SAAS,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,oBAAoB,CAAC;IAC7B,YAAY,CAAC,EAAE,uBAAuB,CAAC;IACvC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB;;;OAGG;IACH,cAAc,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AA0DF,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,YAAiB,EACjB,aAAa,EACb,UAAU,EACV,KAAK,EACL,cAAc,EACd,SAAS,GACV,EAAE,cAAc,+BAwIhB"}
|
package/dist/layout/Workspace.js
CHANGED
|
@@ -59,6 +59,7 @@ function Workspace({
|
|
|
59
59
|
onValueChange,
|
|
60
60
|
storageKey,
|
|
61
61
|
slots,
|
|
62
|
+
collapsedSides,
|
|
62
63
|
className
|
|
63
64
|
}) {
|
|
64
65
|
validateWorkspacePanes(panes);
|
|
@@ -129,6 +130,14 @@ function Workspace({
|
|
|
129
130
|
if (storageKey && value === void 0)
|
|
130
131
|
writeWorkspaceLayoutState(storageKey, internal);
|
|
131
132
|
}, [internal, storageKey, value]);
|
|
133
|
+
const held = (location) => (collapsedSides == null ? void 0 : collapsedSides.includes(location)) ?? false;
|
|
134
|
+
const shown = (collapsedSides == null ? void 0 : collapsedSides.length) ? {
|
|
135
|
+
...state,
|
|
136
|
+
sideCollapsed: {
|
|
137
|
+
left: held("left") || state.sideCollapsed.left,
|
|
138
|
+
right: held("right") || state.sideCollapsed.right
|
|
139
|
+
}
|
|
140
|
+
} : state;
|
|
132
141
|
return /* @__PURE__ */ jsxs(
|
|
133
142
|
"div",
|
|
134
143
|
{
|
|
@@ -140,8 +149,8 @@ function Workspace({
|
|
|
140
149
|
/* @__PURE__ */ jsx(
|
|
141
150
|
WorkspaceTopRight,
|
|
142
151
|
{
|
|
143
|
-
hasLeft: groups.left.length > 0,
|
|
144
|
-
hasRight: groups.right.length > 0,
|
|
152
|
+
hasLeft: groups.left.length > 0 && !held("left"),
|
|
153
|
+
hasRight: groups.right.length > 0 && !held("right"),
|
|
145
154
|
...slots ? { slots } : {},
|
|
146
155
|
state,
|
|
147
156
|
update
|
|
@@ -152,7 +161,7 @@ function Workspace({
|
|
|
152
161
|
{
|
|
153
162
|
location: "left",
|
|
154
163
|
panes: groups.left,
|
|
155
|
-
state,
|
|
164
|
+
state: shown,
|
|
156
165
|
update
|
|
157
166
|
}
|
|
158
167
|
),
|
|
@@ -169,7 +178,7 @@ function Workspace({
|
|
|
169
178
|
{
|
|
170
179
|
location: "right",
|
|
171
180
|
panes: groups.right,
|
|
172
|
-
state,
|
|
181
|
+
state: shown,
|
|
173
182
|
update
|
|
174
183
|
}
|
|
175
184
|
),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Workspace.js","sources":["../../src/layout/Workspace.tsx"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport { UiSidebar } from \"../icons\";\nimport { cn } from \"../lib/utils\";\nimport {\n createWorkspaceLayoutState,\n readWorkspaceLayoutState,\n validateWorkspacePanes,\n writeWorkspaceLayoutState,\n type WorkspaceLayoutDefaults,\n type WorkspaceLayoutState,\n type WorkspacePaneSpec,\n} from \"./Workspace.model\";\nimport {\n WorkspaceSideRegion,\n WorkspaceSingleRegion,\n type WorkspaceUpdate,\n} from \"./Workspace.regions\";\n\nexport type {\n WorkspaceLayoutDefaults,\n WorkspaceLayoutState,\n WorkspacePaneLocation,\n WorkspacePaneSlots,\n WorkspacePaneSpec,\n WorkspaceSideLocation,\n} from \"./Workspace.model\";\n\nexport type WorkspaceSlots = {\n topRightActions?: ReactNode;\n};\n\nexport type WorkspaceProps = {\n panes: WorkspacePaneSpec[];\n value?: WorkspaceLayoutState;\n defaultValue?: WorkspaceLayoutDefaults;\n onValueChange?: (value: WorkspaceLayoutState) => void;\n storageKey?: string;\n slots?: WorkspaceSlots;\n className?: string;\n};\n\ntype WorkspaceTopRightProps = {\n hasLeft: boolean;\n hasRight: boolean;\n slots?: WorkspaceSlots;\n state: WorkspaceLayoutState;\n update: WorkspaceUpdate;\n};\n\nfunction WorkspaceTopRight({\n hasLeft,\n hasRight,\n slots,\n state,\n update,\n}: WorkspaceTopRightProps) {\n if (!hasLeft && !hasRight && !slots?.topRightActions) return null;\n const toggleSide = (location: \"left\" | \"right\") =>\n update((current) => ({\n ...current,\n sideCollapsed: {\n ...current.sideCollapsed,\n [location]: !current.sideCollapsed[location],\n },\n }));\n return (\n <div\n data-testid=\"workspace-top-right\"\n className=\"absolute right-1 top-1 z-30 flex h-7 items-center gap-1 rounded bg-muted/90 px-1 shadow-sm backdrop-blur\"\n >\n {slots?.topRightActions}\n {hasLeft && (\n <button\n type=\"button\"\n className=\"inline-flex size-6 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n aria-expanded={!state.sideCollapsed.left}\n aria-label={`${state.sideCollapsed.left ? \"Expand\" : \"Collapse\"} left side`}\n onClick={() => toggleSide(\"left\")}\n >\n <UiSidebar className=\"size-4\" />\n </button>\n )}\n {hasRight && (\n <button\n type=\"button\"\n className=\"inline-flex size-6 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n aria-expanded={!state.sideCollapsed.right}\n aria-label={`${state.sideCollapsed.right ? \"Expand\" : \"Collapse\"} right side`}\n onClick={() => toggleSide(\"right\")}\n >\n <UiSidebar className=\"size-4 -scale-x-100\" />\n </button>\n )}\n </div>\n );\n}\n\nexport function Workspace({\n panes,\n value,\n defaultValue = {},\n onValueChange,\n storageKey,\n slots,\n className,\n}: WorkspaceProps) {\n validateWorkspacePanes(panes);\n if (value !== undefined && storageKey !== undefined) {\n throw new Error(\"Workspace cannot combine value with storageKey\");\n }\n const [internal, setInternal] = useState(() =>\n storageKey\n ? readWorkspaceLayoutState(storageKey, panes, defaultValue)\n : createWorkspaceLayoutState(panes, defaultValue),\n );\n const seenLocations = useRef(new Set(panes.map((pane) => pane.location)));\n const seenPaneIds = useRef(new Set(panes.map((pane) => pane.id)));\n const state = value ?? internal;\n const groups = useMemo(\n () => ({\n left: panes.filter((pane) => pane.location === \"left\"),\n center: panes.find(\n (pane) => pane.location === \"center\",\n ) as WorkspacePaneSpec,\n right: panes.filter((pane) => pane.location === \"right\"),\n bottom: panes.find((pane) => pane.location === \"bottom\"),\n }),\n [panes],\n );\n\n useLayoutEffect(() => {\n const addedLocations = new Set(\n panes\n .map((pane) => pane.location)\n .filter((location) => !seenLocations.current.has(location)),\n );\n const addedPanes = panes.filter(\n (pane) => !seenPaneIds.current.has(pane.id),\n );\n panes.forEach((pane) => {\n seenLocations.current.add(pane.location);\n seenPaneIds.current.add(pane.id);\n });\n if (\n value !== undefined ||\n (addedLocations.size === 0 && addedPanes.length === 0)\n )\n return;\n const defaults = createWorkspaceLayoutState(panes, defaultValue);\n const addedStackHeights = addedPanes.reduce<Record<string, number>>(\n (heights, pane) => {\n if (pane.height !== undefined) heights[pane.id] = pane.height;\n return heights;\n },\n {},\n );\n setInternal((current) => ({\n ...current,\n ...(addedLocations.has(\"left\") ? { leftWidth: defaults.leftWidth } : {}),\n ...(addedLocations.has(\"right\")\n ? { rightWidth: defaults.rightWidth }\n : {}),\n ...(addedLocations.has(\"bottom\")\n ? { bottomHeight: defaults.bottomHeight }\n : {}),\n stackHeights: { ...current.stackHeights, ...addedStackHeights },\n collapsed: {\n ...current.collapsed,\n ...Object.fromEntries(\n addedPanes.map((pane) => [pane.id, pane.defaultCollapsed ?? false]),\n ),\n },\n }));\n }, [defaultValue, panes, value]);\n\n const update = useCallback<WorkspaceUpdate>(\n (change) => {\n const next = change(state);\n if (value === undefined) setInternal(next);\n onValueChange?.(next);\n },\n [onValueChange, state, value],\n );\n\n useEffect(() => {\n if (storageKey && value === undefined)\n writeWorkspaceLayoutState(storageKey, internal);\n }, [internal, storageKey, value]);\n\n return (\n <div\n className={cn(\n \"relative grid min-h-0 w-full grid-cols-1 overflow-auto bg-background md:h-full md:grid-cols-[auto_minmax(0,1fr)_auto] md:grid-rows-[minmax(0,1fr)_auto] md:overflow-hidden\",\n className,\n )}\n >\n <WorkspaceTopRight\n hasLeft={groups.left.length > 0}\n hasRight={groups.right.length > 0}\n {...(slots ? { slots } : {})}\n state={state}\n update={update}\n />\n <WorkspaceSideRegion\n location=\"left\"\n panes={groups.left}\n state={state}\n update={update}\n />\n <WorkspaceSingleRegion\n pane={groups.center}\n state={state}\n update={update}\n />\n <WorkspaceSideRegion\n location=\"right\"\n panes={groups.right}\n state={state}\n update={update}\n />\n {groups.bottom && (\n <WorkspaceSingleRegion\n pane={groups.bottom}\n state={state}\n update={update}\n />\n )}\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Workspace.js","sources":["../../src/layout/Workspace.tsx"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport { UiSidebar } from \"../icons\";\nimport { cn } from \"../lib/utils\";\nimport {\n createWorkspaceLayoutState,\n readWorkspaceLayoutState,\n validateWorkspacePanes,\n writeWorkspaceLayoutState,\n type WorkspaceLayoutDefaults,\n type WorkspaceLayoutState,\n type WorkspacePaneSpec,\n type WorkspaceSideLocation,\n} from \"./Workspace.model\";\nimport {\n WorkspaceSideRegion,\n WorkspaceSingleRegion,\n type WorkspaceUpdate,\n} from \"./Workspace.regions\";\n\nexport type {\n WorkspaceLayoutDefaults,\n WorkspaceLayoutState,\n WorkspacePaneLocation,\n WorkspacePaneSlots,\n WorkspacePaneSpec,\n WorkspaceSideLocation,\n} from \"./Workspace.model\";\n\nexport type WorkspaceSlots = {\n topRightActions?: ReactNode;\n};\n\nexport type WorkspaceProps = {\n panes: WorkspacePaneSpec[];\n value?: WorkspaceLayoutState;\n defaultValue?: WorkspaceLayoutDefaults;\n onValueChange?: (value: WorkspaceLayoutState) => void;\n storageKey?: string;\n slots?: WorkspaceSlots;\n /**\n * Sides the host holds collapsed for now, such as while the center shows something that needs the\n * full width: they render collapsed and lose their toggle, and the layout state keeps how they were.\n */\n collapsedSides?: WorkspaceSideLocation[];\n className?: string;\n};\n\ntype WorkspaceTopRightProps = {\n hasLeft: boolean;\n hasRight: boolean;\n slots?: WorkspaceSlots;\n state: WorkspaceLayoutState;\n update: WorkspaceUpdate;\n};\n\nfunction WorkspaceTopRight({\n hasLeft,\n hasRight,\n slots,\n state,\n update,\n}: WorkspaceTopRightProps) {\n if (!hasLeft && !hasRight && !slots?.topRightActions) return null;\n const toggleSide = (location: \"left\" | \"right\") =>\n update((current) => ({\n ...current,\n sideCollapsed: {\n ...current.sideCollapsed,\n [location]: !current.sideCollapsed[location],\n },\n }));\n return (\n <div\n data-testid=\"workspace-top-right\"\n className=\"absolute right-1 top-1 z-30 flex h-7 items-center gap-1 rounded bg-muted/90 px-1 shadow-sm backdrop-blur\"\n >\n {slots?.topRightActions}\n {hasLeft && (\n <button\n type=\"button\"\n className=\"inline-flex size-6 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n aria-expanded={!state.sideCollapsed.left}\n aria-label={`${state.sideCollapsed.left ? \"Expand\" : \"Collapse\"} left side`}\n onClick={() => toggleSide(\"left\")}\n >\n <UiSidebar className=\"size-4\" />\n </button>\n )}\n {hasRight && (\n <button\n type=\"button\"\n className=\"inline-flex size-6 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n aria-expanded={!state.sideCollapsed.right}\n aria-label={`${state.sideCollapsed.right ? \"Expand\" : \"Collapse\"} right side`}\n onClick={() => toggleSide(\"right\")}\n >\n <UiSidebar className=\"size-4 -scale-x-100\" />\n </button>\n )}\n </div>\n );\n}\n\nexport function Workspace({\n panes,\n value,\n defaultValue = {},\n onValueChange,\n storageKey,\n slots,\n collapsedSides,\n className,\n}: WorkspaceProps) {\n validateWorkspacePanes(panes);\n if (value !== undefined && storageKey !== undefined) {\n throw new Error(\"Workspace cannot combine value with storageKey\");\n }\n const [internal, setInternal] = useState(() =>\n storageKey\n ? readWorkspaceLayoutState(storageKey, panes, defaultValue)\n : createWorkspaceLayoutState(panes, defaultValue),\n );\n const seenLocations = useRef(new Set(panes.map((pane) => pane.location)));\n const seenPaneIds = useRef(new Set(panes.map((pane) => pane.id)));\n const state = value ?? internal;\n const groups = useMemo(\n () => ({\n left: panes.filter((pane) => pane.location === \"left\"),\n center: panes.find(\n (pane) => pane.location === \"center\",\n ) as WorkspacePaneSpec,\n right: panes.filter((pane) => pane.location === \"right\"),\n bottom: panes.find((pane) => pane.location === \"bottom\"),\n }),\n [panes],\n );\n\n useLayoutEffect(() => {\n const addedLocations = new Set(\n panes\n .map((pane) => pane.location)\n .filter((location) => !seenLocations.current.has(location)),\n );\n const addedPanes = panes.filter(\n (pane) => !seenPaneIds.current.has(pane.id),\n );\n panes.forEach((pane) => {\n seenLocations.current.add(pane.location);\n seenPaneIds.current.add(pane.id);\n });\n if (\n value !== undefined ||\n (addedLocations.size === 0 && addedPanes.length === 0)\n )\n return;\n const defaults = createWorkspaceLayoutState(panes, defaultValue);\n const addedStackHeights = addedPanes.reduce<Record<string, number>>(\n (heights, pane) => {\n if (pane.height !== undefined) heights[pane.id] = pane.height;\n return heights;\n },\n {},\n );\n setInternal((current) => ({\n ...current,\n ...(addedLocations.has(\"left\") ? { leftWidth: defaults.leftWidth } : {}),\n ...(addedLocations.has(\"right\")\n ? { rightWidth: defaults.rightWidth }\n : {}),\n ...(addedLocations.has(\"bottom\")\n ? { bottomHeight: defaults.bottomHeight }\n : {}),\n stackHeights: { ...current.stackHeights, ...addedStackHeights },\n collapsed: {\n ...current.collapsed,\n ...Object.fromEntries(\n addedPanes.map((pane) => [pane.id, pane.defaultCollapsed ?? false]),\n ),\n },\n }));\n }, [defaultValue, panes, value]);\n\n const update = useCallback<WorkspaceUpdate>(\n (change) => {\n const next = change(state);\n if (value === undefined) setInternal(next);\n onValueChange?.(next);\n },\n [onValueChange, state, value],\n );\n\n useEffect(() => {\n if (storageKey && value === undefined)\n writeWorkspaceLayoutState(storageKey, internal);\n }, [internal, storageKey, value]);\n\n const held = (location: WorkspaceSideLocation) =>\n collapsedSides?.includes(location) ?? false;\n const shown: WorkspaceLayoutState = collapsedSides?.length\n ? {\n ...state,\n sideCollapsed: {\n left: held(\"left\") || state.sideCollapsed.left,\n right: held(\"right\") || state.sideCollapsed.right,\n },\n }\n : state;\n\n return (\n <div\n className={cn(\n \"relative grid min-h-0 w-full grid-cols-1 overflow-auto bg-background md:h-full md:grid-cols-[auto_minmax(0,1fr)_auto] md:grid-rows-[minmax(0,1fr)_auto] md:overflow-hidden\",\n className,\n )}\n >\n <WorkspaceTopRight\n hasLeft={groups.left.length > 0 && !held(\"left\")}\n hasRight={groups.right.length > 0 && !held(\"right\")}\n {...(slots ? { slots } : {})}\n state={state}\n update={update}\n />\n <WorkspaceSideRegion\n location=\"left\"\n panes={groups.left}\n state={shown}\n update={update}\n />\n <WorkspaceSingleRegion\n pane={groups.center}\n state={state}\n update={update}\n />\n <WorkspaceSideRegion\n location=\"right\"\n panes={groups.right}\n state={shown}\n update={update}\n />\n {groups.bottom && (\n <WorkspaceSingleRegion\n pane={groups.bottom}\n state={state}\n update={update}\n />\n )}\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|