zidane-ui 9.1.6 → 9.1.9
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/dist/adapters/run-host.js +17 -20
- package/dist/adapters/server-files-host.js +3 -1
- package/dist/adapters/server-host.js +18 -11
- package/dist/adapters/server-machines-host.js +3 -1
- package/dist/adapters/server-session-host.js +2 -1
- package/dist/adapters/server-settings-accounts.js +2 -1
- package/dist/adapters/server-settings-host.js +3 -3
- package/dist/adapters/sse-host.js +9 -7
- package/dist/chat/SessionGroupHeader.js +2 -2
- package/dist/chat/SessionHostHeader.js +1 -1
- package/dist/chat/StatusDot.js +24 -20
- package/dist/chat/composer/Composer.d.ts +13 -8
- package/dist/chat/composer/Composer.js +14 -10
- package/dist/chat/composer/ComposerEditor.js +1 -1
- package/dist/chat/composer/HostComposer.d.ts +1 -1
- package/dist/chat/composer/HostComposer.js +7 -10
- package/dist/chat/composer/RunStatusChip.js +13 -1
- package/dist/chat/composer/attachment-ingest.d.ts +4 -1
- package/dist/chat/composer/attachment-ingest.js +27 -10
- package/dist/chat/composer/composer-bus.d.ts +9 -1
- package/dist/chat/composer/composer-bus.js +49 -6
- package/dist/chat/composer/index.d.ts +2 -2
- package/dist/chat/composer/index.js +2 -2
- package/dist/chat/composer/use-draft-target.d.ts +4 -0
- package/dist/chat/composer/use-draft-target.js +15 -4
- package/dist/chat/composer/use-send-prompt.d.ts +5 -1
- package/dist/chat/composer/use-send-prompt.js +2 -12
- package/dist/chat/headless/chip-labels.d.ts +2 -0
- package/dist/chat/headless/chip-labels.js +3 -1
- package/dist/chat/headless/composer/labels-editor.d.ts +2 -0
- package/dist/chat/headless/composer/labels-editor.js +2 -0
- package/dist/chat/headless/file-chip.d.ts +12 -13
- package/dist/chat/headless/file-chip.js +40 -2
- package/dist/chat/headless/fixture-host.js +14 -17
- package/dist/chat/headless/host.d.ts +24 -6
- package/dist/chat/headless/index.d.ts +4 -4
- package/dist/chat/headless/index.js +4 -4
- package/dist/chat/headless/labels.d.ts +16 -0
- package/dist/chat/headless/labels.js +15 -2
- package/dist/chat/headless/send-flow.d.ts +21 -4
- package/dist/chat/headless/send-flow.js +25 -6
- package/dist/chat/headless/session-list.d.ts +11 -0
- package/dist/chat/headless/sidebar/index.js +1 -1
- package/dist/chat/headless/sidebar/labels.d.ts +12 -1
- package/dist/chat/headless/transcript-host.d.ts +8 -1
- package/dist/chat/headless/transcript-labels.d.ts +2 -0
- package/dist/chat/index.d.ts +3 -3
- package/dist/chat/index.js +2 -2
- package/dist/chat/interactions/InboxPanel.js +2 -2
- package/dist/chat/interactions/QuestionField.js +2 -2
- package/dist/chat/rich-composer/RichComposer.d.ts +9 -2
- package/dist/chat/rich-composer/RichComposer.js +28 -7
- package/dist/chat/rich-composer/composer-extensions.d.ts +2 -0
- package/dist/chat/rich-composer/composer-extensions.js +2 -2
- package/dist/chat/rich-composer/composer-keys.js +1 -1
- package/dist/chat/rich-composer/use-composer-bus.js +2 -1
- package/dist/chat/rich-composer/use-composer-editor.d.ts +4 -1
- package/dist/chat/rich-composer/use-composer-editor.js +2 -1
- package/dist/chat/sidebar/SessionSidebar.js +1 -2
- package/dist/chat/sidebar/SidebarSearchRow.js +1 -1
- package/dist/chat/sidebar/useSidebarKeyboardNav.d.ts +0 -2
- package/dist/chat/sidebar/useSidebarKeyboardNav.js +7 -13
- package/dist/chat/testing/contract.d.ts +1 -1
- package/dist/chat/testing/contract.js +8 -7
- package/dist/chat/transcript/BadgeMenu.d.ts +12 -3
- package/dist/chat/transcript/BadgeMenu.js +20 -3
- package/dist/chat/transcript/CodemodeScript.js +147 -44
- package/dist/chat/transcript/EditDiffBlock.js +1 -4
- package/dist/chat/transcript/FileChip.js +60 -14
- package/dist/chat/transcript/LiveOutput.js +7 -3
- package/dist/chat/transcript/badges.js +2 -2
- package/dist/chat/transcript/index.d.ts +2 -2
- package/dist/chat/transcript/markdown-context.d.ts +4 -1
- package/dist/chat/transcript/rolling.d.ts +12 -0
- package/dist/chat/transcript/rolling.js +22 -0
- package/dist/chat/transcript/script-input.d.ts +1 -1
- package/dist/chat/transcript/shell-block.js +70 -60
- package/dist/chat/transcript/tool-row.js +21 -5
- package/dist/code/editor/FileTree.d.ts +3 -1
- package/dist/code/editor/FileTree.js +29 -1
- package/dist/components/Restricted.d.ts +25 -0
- package/dist/components/Restricted.js +32 -0
- package/dist/components/StepFrame.d.ts +1 -1
- package/dist/components/ZidaneMark.d.ts +28 -0
- package/dist/components/ZidaneMark.js +114 -0
- package/dist/components/palette/PalettePanel.d.ts +7 -1
- package/dist/components/palette/PalettePanel.js +37 -11
- package/dist/components/zidane-mark.d.ts +52 -0
- package/dist/components/zidane-mark.js +94 -0
- package/dist/core.css +59 -6
- package/dist/dist/{index-DqCio7Nd.d.ts → index-Bq87OcGy.d.ts} +19 -12
- package/dist/dist/index.d.ts +1 -1
- package/dist/extensions/ExtensionSettingsSection.d.ts +18 -0
- package/dist/extensions/ExtensionSettingsSection.js +227 -0
- package/dist/extensions/headless/host.d.ts +1 -1
- package/dist/extensions/headless/labels.d.ts +41 -1
- package/dist/extensions/headless/labels.js +57 -0
- package/dist/extensions/headless/select.js +1 -2
- package/dist/extensions/index.d.ts +2 -1
- package/dist/extensions/index.js +2 -1
- package/dist/files/FilesTab.js +2 -0
- package/dist/files/TreeColumn.d.ts +5 -1
- package/dist/files/TreeColumn.js +6 -0
- package/dist/files/headless/fixture-host.js +5 -3
- package/dist/files/headless/host.d.ts +24 -6
- package/dist/files/headless/index.d.ts +2 -2
- package/dist/files/headless/labels.d.ts +1 -0
- package/dist/files/headless/labels.js +1 -0
- package/dist/files/testing/contract.js +9 -2
- package/dist/files/useWorkspace.d.ts +14 -2
- package/dist/files/useWorkspace.js +87 -9
- package/dist/git/BranchMenu.js +1 -1
- package/dist/git/MoveSessionDialog.js +1 -1
- package/dist/git/RemoteFolderPicker.js +1 -1
- package/dist/git/WherePicker.js +1 -1
- package/dist/git/headless/index.js +1 -1
- package/dist/git/useEnvironmentChoices.js +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.js +4 -2
- package/dist/keybindings/headless/catalog.js +1 -1
- package/dist/labels.d.ts +1 -0
- package/dist/labels.js +1 -0
- package/dist/machines/DaemonMenu.js +1 -1
- package/dist/machines/HostCapabilities.d.ts +23 -1
- package/dist/machines/HostCapabilities.js +149 -65
- package/dist/machines/HostSyncPanel.js +129 -123
- package/dist/machines/HostsSection.js +5 -1
- package/dist/machines/ServerCard.d.ts +4 -2
- package/dist/machines/ServerCard.js +222 -99
- package/dist/machines/ServerMachinesPanel.js +16 -13
- package/dist/machines/ServerUpdatePanel.js +31 -21
- package/dist/machines/TokensPanel.js +75 -53
- package/dist/machines/headless/fixture-host.d.ts +5 -0
- package/dist/machines/headless/fixture-host.js +13 -4
- package/dist/machines/headless/fixtures.js +1 -1
- package/dist/machines/headless/host.d.ts +22 -2
- package/dist/machines/headless/index.d.ts +2 -2
- package/dist/machines/headless/labels.d.ts +22 -1
- package/dist/machines/headless/labels.js +22 -2
- package/dist/machines/testing/contract.d.ts +3 -1
- package/dist/machines/testing/contract.js +9 -0
- package/dist/motion/size.d.ts +22 -1
- package/dist/motion/size.js +82 -4
- package/dist/onboarding/demos/delivery.d.ts +16 -0
- package/dist/onboarding/demos/delivery.js +132 -0
- package/dist/onboarding/demos/index.d.ts +2 -1
- package/dist/onboarding/demos/index.js +2 -1
- package/dist/onboarding/headless/labels.d.ts +8 -0
- package/dist/onboarding/headless/labels.js +7 -0
- package/dist/onboarding/index.d.ts +2 -1
- package/dist/onboarding/index.js +2 -1
- package/dist/onboarding/steps/ConversationStep.js +46 -4
- package/dist/palette/CommandPalette.js +3 -0
- package/dist/palette/PaletteDialog.js +7 -3
- package/dist/palette/usePaletteController.d.ts +10 -0
- package/dist/palette/usePaletteController.js +25 -3
- package/dist/server/sse-handler.js +6 -1
- package/dist/session/ArtifactsPanel.js +1 -1
- package/dist/session/SideChat.js +1 -2
- package/dist/session/UsagePanel.js +1 -1
- package/dist/session/headless/host.d.ts +3 -1
- package/dist/session/headless/index.js +2 -2
- package/dist/settings/SettingsRestricted.d.ts +25 -0
- package/dist/settings/SettingsRestricted.js +44 -0
- package/dist/settings/SettingsRowsPage.js +31 -37
- package/dist/settings/headless/catalog.js +7 -6
- package/dist/settings/headless/labels.d.ts +4 -2
- package/dist/settings/headless/labels.js +4 -2
- package/dist/settings/headless/layout.js +1 -1
- package/dist/settings/headless/providers.d.ts +2 -0
- package/dist/settings/headless/search.d.ts +1 -1
- package/dist/settings/index.d.ts +2 -2
- package/dist/settings/index.js +2 -2
- package/dist/settings/rows.d.ts +51 -8
- package/dist/settings/rows.js +81 -26
- package/dist/settings/sections/enabled-list/EnabledListSection.js +3 -2
- package/dist/settings/sections/environments/EnvironmentsSection.js +4 -3
- package/dist/settings/sections/extensions/ExtensionConfigRows.d.ts +2 -2
- package/dist/settings/sections/extensions/ExtensionConfigRows.js +22 -25
- package/dist/settings/sections/extensions/ExtensionOptionsSection.js +3 -2
- package/dist/settings/sections/extensions/options-labels.d.ts +2 -2
- package/dist/settings/sections/extensions/options-labels.js +2 -2
- package/dist/settings/sections/host-catalog/HostCatalogSection.d.ts +5 -3
- package/dist/settings/sections/host-catalog/HostCatalogSection.js +7 -4
- package/dist/settings/sections/instructions/InstructionsSection.js +24 -17
- package/dist/settings/sections/logs/LogsSection.d.ts +2 -1
- package/dist/settings/sections/logs/LogsSection.js +64 -56
- package/dist/settings/sections/mcp/McpSection.d.ts +1 -1
- package/dist/settings/sections/mcp/McpSection.js +18 -17
- package/dist/settings/sections/models/ModelRows.d.ts +3 -3
- package/dist/settings/sections/models/ModelRows.js +8 -7
- package/dist/settings/sections/performance/PerformanceSection.js +13 -4
- package/dist/settings/sections/performance/labels.d.ts +0 -1
- package/dist/settings/sections/performance/labels.js +0 -1
- package/dist/settings/sections/providers/CredentialSources.js +18 -8
- package/dist/settings/sections/providers/ProvidersSection.d.ts +2 -2
- package/dist/settings/sections/providers/ProvidersSection.js +20 -17
- package/dist/settings/sections/providers/ServerProvidersSection.d.ts +1 -1
- package/dist/settings/sections/providers/ServerProvidersSection.js +10 -14
- package/dist/settings/sections/shared/catalog.js +3 -2
- package/dist/settings/sections/skills/SkillList.js +3 -2
- package/dist/settings/testing/accounts-demo.js +1 -0
- package/dist/settings/testing/accounts.contract.js +2 -0
- package/dist/styles.css +160 -24
- package/dist/terminal/HostTerminalSurface.js +1 -1
- package/dist/terminal/headless/links.d.ts +19 -1
- package/dist/terminal/headless/links.js +26 -2
- package/dist/theme/css-vars.js +1 -0
- package/dist/theme/derive.d.ts +4 -0
- package/dist/theme/derive.js +2 -0
- package/dist/workspace/PanelContentView.js +1 -1
- package/dist/workspace/PanelHome.d.ts +3 -1
- package/dist/workspace/PanelHome.js +4 -3
- package/dist/workspace/SidePanel.d.ts +3 -1
- package/dist/workspace/SidePanel.js +3 -2
- package/dist/workspace/headless/open-target.d.ts +1 -1
- package/dist/workspace/headless/open-target.js +2 -2
- package/package.json +2 -2
- package/src/styles/chat.css +10 -10
- package/src/styles/motion.css +37 -0
- package/src/styles/primitives.css +11 -3
- package/src/styles/sidebar.css +12 -0
- package/src/styles/tokens.css +6 -0
- package/src/styles/transcript.css +69 -5
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
//#region src/extensions/headless/labels.ts
|
|
2
|
+
const CATALOG_KIND = {
|
|
3
|
+
tools: "tool",
|
|
4
|
+
agents: "agent",
|
|
5
|
+
subagents: "sub-agent",
|
|
6
|
+
models: "model",
|
|
7
|
+
providers: "provider",
|
|
8
|
+
mcp: "MCP server",
|
|
9
|
+
skills: "skill"
|
|
10
|
+
};
|
|
2
11
|
/** The default English strings of the extensions components. */
|
|
3
12
|
const DEFAULT_EXTENSIONS_LABELS = {
|
|
4
13
|
/** A slot item's running arc. */
|
|
@@ -29,6 +38,54 @@ const DEFAULT_EXTENSIONS_LABELS = {
|
|
|
29
38
|
extensionSettingRunning: "Running",
|
|
30
39
|
/** A settings page or form with no rows. */
|
|
31
40
|
extensionSettingsNone: "Nothing to set",
|
|
41
|
+
/** Settings › Extensions' extension host part (`ExtensionSettingsSection`), for assistive tech. */
|
|
42
|
+
extensionSettingsSection: "Extension settings",
|
|
43
|
+
/** Its heading over the values a declarative config entry locks. */
|
|
44
|
+
extensionSettingsLockedHeading: "Set by the config file",
|
|
45
|
+
/** A locked value's tag. */
|
|
46
|
+
extensionSettingsLockedTag: "locked",
|
|
47
|
+
/** Its heading over the catalog items extensions added, changed or hid. */
|
|
48
|
+
extensionSettingsChangesHeading: "Changed by extensions",
|
|
49
|
+
/** Its heading over the integrations. */
|
|
50
|
+
extensionSettingsIntegrationsHeading: "Integrations",
|
|
51
|
+
/** A changed catalog item's kind. */
|
|
52
|
+
extensionCatalogKind: (kind) => CATALOG_KIND[kind],
|
|
53
|
+
/** Who added, changed or hid a catalog item (the TUI's wording). */
|
|
54
|
+
extensionProvenance: (p) => {
|
|
55
|
+
if (p.removed) return `hidden by ${p.removedBy ?? p.changedBy.at(-1) ?? "an extension"}`;
|
|
56
|
+
if (p.origin.kind === "extension" && p.changedBy.length <= 1) return `added by ${p.origin.id ?? p.changedBy[0] ?? "an extension"}`;
|
|
57
|
+
return `modified by ${p.changedBy.join(", ")}`;
|
|
58
|
+
},
|
|
59
|
+
/** An integration with no account connected. */
|
|
60
|
+
extensionIntegrationNotConnected: "Not connected",
|
|
61
|
+
/** An integration with one account connected. */
|
|
62
|
+
extensionIntegrationConnected: "Connected",
|
|
63
|
+
/** An integration with several accounts connected. */
|
|
64
|
+
extensionIntegrationAccountCount: (count) => `${count} accounts`,
|
|
65
|
+
/** The list of an integration's accounts. */
|
|
66
|
+
extensionIntegrationAccounts: (integration) => `${integration} accounts`,
|
|
67
|
+
/** The default account's tag. */
|
|
68
|
+
extensionIntegrationDefault: "Default",
|
|
69
|
+
/** Makes an account the default. */
|
|
70
|
+
extensionIntegrationMakeDefault: "Make default",
|
|
71
|
+
/** Makes an account the default, for assistive tech. */
|
|
72
|
+
extensionIntegrationMakeDefaultLabel: (account) => `Make ${account} the default`,
|
|
73
|
+
/** Removes an account. */
|
|
74
|
+
extensionIntegrationDisconnect: "Disconnect",
|
|
75
|
+
/** Removes an account, for assistive tech. */
|
|
76
|
+
extensionIntegrationDisconnectLabel: (account) => `Disconnect ${account}`,
|
|
77
|
+
/** Connects the first account (an API key method's submit). */
|
|
78
|
+
extensionIntegrationConnect: "Connect",
|
|
79
|
+
/** Connects another account with an API key. */
|
|
80
|
+
extensionIntegrationAddAccount: "Add account",
|
|
81
|
+
/** Connects another account through a method. */
|
|
82
|
+
extensionIntegrationAddAccountWith: (method) => `Add account with ${method}`,
|
|
83
|
+
/** Words a failed integration action. */
|
|
84
|
+
extensionIntegrationError: (error) => {
|
|
85
|
+
if (error.code === "refused") return error.message ?? (error.reason === "locked" ? "Locked by the config file." : "Refused.");
|
|
86
|
+
if (error.code === "unavailable") return "Not available here.";
|
|
87
|
+
return error.message;
|
|
88
|
+
},
|
|
32
89
|
/** A screen whose id no extension offers (any more). */
|
|
33
90
|
extensionScreenMissing: "This screen is no longer available",
|
|
34
91
|
/** Closes a screen. */
|
|
@@ -4,6 +4,7 @@ import { ExtensionRenderer, ExtensionRendererProps } from "./ExtensionRenderer.j
|
|
|
4
4
|
import { ExtensionScreen, ExtensionScreenProps, useExtensionScreen } from "./ExtensionScreen.js";
|
|
5
5
|
import { ExtensionSettingsPage, ExtensionSettingsPageProps } from "./ExtensionSettingsPage.js";
|
|
6
6
|
import { ExtensionSettingsPages, ExtensionSettingsPagesProps } from "./ExtensionSettingsPages.js";
|
|
7
|
+
import { ExtensionSettingsSection, ExtensionSettingsSectionProps } from "./ExtensionSettingsSection.js";
|
|
7
8
|
import { ExtensionSettingsSections, ExtensionSettingsSectionsOptions, ExtensionSettingsWirePage, ExtensionSettingsWirePageProps, extensionSettingsEntryId, extensionSettingsGroupId, extensionSettingsPageId, useExtensionSettingsSections } from "./ExtensionSettingsSidebar.js";
|
|
8
9
|
import { ExtensionSlot, ExtensionSlotProps, ExtensionTitlebar, ExtensionTitlebarProps } from "./ExtensionSlot.js";
|
|
9
10
|
import { ExtensionWebview, ExtensionWebviewProps } from "./ExtensionWebview.js";
|
|
@@ -12,4 +13,4 @@ import { SettingsWireActionState, SettingsWireForm, SettingsWireFormProps } from
|
|
|
12
13
|
import { ExtensionEffectHandler, ExtensionEffectsOptions, ExtensionInfo, ExtensionSettingsView, KIT_EFFECT_PRIORITY, RpcClient, RpcMethodCaller, UseStoreOptions, useExtension, useExtensionEffects, useExtensionSettings, useRpc, useStore } from "./hooks.js";
|
|
13
14
|
import { LinkOpenOptions, LinkRouter, LinkRouterSource, LinkSessionScope, LinkSessionScopeProps, RoutedLink, RoutedLinkProps, useLinkRouter } from "./links.js";
|
|
14
15
|
import { useExtensionsLabels } from "./useExtensionsLabels.js";
|
|
15
|
-
export { ExtensionComponent, ExtensionComponentProps, ExtensionComponentsProvider, ExtensionComponentsProviderProps, ExtensionDialogHost, ExtensionDialogHostProps, ExtensionDialogView, ExtensionDialogViewProps, ExtensionEffectHandler, ExtensionEffectsOptions, ExtensionInfo, ExtensionModuleLoader, ExtensionRenderer, ExtensionRendererProps, ExtensionScope, ExtensionScopeProps, ExtensionScreen, ExtensionScreenProps, ExtensionSettingsPage, ExtensionSettingsPageProps, ExtensionSettingsPages, ExtensionSettingsPagesProps, ExtensionSettingsSections, ExtensionSettingsSectionsOptions, ExtensionSettingsView, ExtensionSettingsWirePage, ExtensionSettingsWirePageProps, ExtensionSlot, ExtensionSlotProps, ExtensionTitlebar, ExtensionTitlebarProps, ExtensionWebview, ExtensionWebviewProps, ExtensionsProvider, ExtensionsProviderProps, KIT_EFFECT_PRIORITY, LinkOpenOptions, LinkRouter, LinkRouterSource, LinkSessionScope, LinkSessionScopeProps, RoutedLink, RoutedLinkProps, RpcClient, RpcMethodCaller, SettingsWireActionState, SettingsWireForm, SettingsWireFormProps, UseStoreOptions, extensionSettingsEntryId, extensionSettingsGroupId, extensionSettingsPageId, useCarryExtensionsContext, useExtension, useExtensionEffectRouter, useExtensionEffects, useExtensionExport, useExtensionItems, useExtensionModuleLoader, useExtensionScope, useExtensionScreen, useExtensionSettings, useExtensionSettingsSections, useExtensionsHost, useExtensionsLabels, useLinkRouter, useRpc, useStore };
|
|
16
|
+
export { ExtensionComponent, ExtensionComponentProps, ExtensionComponentsProvider, ExtensionComponentsProviderProps, ExtensionDialogHost, ExtensionDialogHostProps, ExtensionDialogView, ExtensionDialogViewProps, ExtensionEffectHandler, ExtensionEffectsOptions, ExtensionInfo, ExtensionModuleLoader, ExtensionRenderer, ExtensionRendererProps, ExtensionScope, ExtensionScopeProps, ExtensionScreen, ExtensionScreenProps, ExtensionSettingsPage, ExtensionSettingsPageProps, ExtensionSettingsPages, ExtensionSettingsPagesProps, ExtensionSettingsSection, ExtensionSettingsSectionProps, ExtensionSettingsSections, ExtensionSettingsSectionsOptions, ExtensionSettingsView, ExtensionSettingsWirePage, ExtensionSettingsWirePageProps, ExtensionSlot, ExtensionSlotProps, ExtensionTitlebar, ExtensionTitlebarProps, ExtensionWebview, ExtensionWebviewProps, ExtensionsProvider, ExtensionsProviderProps, KIT_EFFECT_PRIORITY, LinkOpenOptions, LinkRouter, LinkRouterSource, LinkSessionScope, LinkSessionScopeProps, RoutedLink, RoutedLinkProps, RpcClient, RpcMethodCaller, SettingsWireActionState, SettingsWireForm, SettingsWireFormProps, UseStoreOptions, extensionSettingsEntryId, extensionSettingsGroupId, extensionSettingsPageId, useCarryExtensionsContext, useExtension, useExtensionEffectRouter, useExtensionEffects, useExtensionExport, useExtensionItems, useExtensionModuleLoader, useExtensionScope, useExtensionScreen, useExtensionSettings, useExtensionSettingsSections, useExtensionsHost, useExtensionsLabels, useLinkRouter, useRpc, useStore };
|
package/dist/extensions/index.js
CHANGED
|
@@ -11,5 +11,6 @@ import { SettingsWireForm } from "./SettingsWireForm.js";
|
|
|
11
11
|
import { ExtensionDialogHost, ExtensionDialogView } from "./ExtensionDialogHost.js";
|
|
12
12
|
import { ExtensionSettingsPage } from "./ExtensionSettingsPage.js";
|
|
13
13
|
import { ExtensionSettingsPages } from "./ExtensionSettingsPages.js";
|
|
14
|
+
import { ExtensionSettingsSection } from "./ExtensionSettingsSection.js";
|
|
14
15
|
import { ExtensionSettingsWirePage, extensionSettingsEntryId, extensionSettingsGroupId, extensionSettingsPageId, useExtensionSettingsSections } from "./ExtensionSettingsSidebar.js";
|
|
15
|
-
export { ExtensionComponent, ExtensionComponentsProvider, ExtensionDialogHost, ExtensionDialogView, ExtensionRenderer, ExtensionScope, ExtensionScreen, ExtensionSettingsPage, ExtensionSettingsPages, ExtensionSettingsWirePage, ExtensionSlot, ExtensionTitlebar, ExtensionWebview, ExtensionsProvider, KIT_EFFECT_PRIORITY, LinkSessionScope, RoutedLink, SettingsWireForm, extensionSettingsEntryId, extensionSettingsGroupId, extensionSettingsPageId, useCarryExtensionsContext, useExtension, useExtensionEffectRouter, useExtensionEffects, useExtensionExport, useExtensionItems, useExtensionModuleLoader, useExtensionScope, useExtensionScreen, useExtensionSettings, useExtensionSettingsSections, useExtensionsHost, useExtensionsLabels, useLinkRouter, useRpc, useStore };
|
|
16
|
+
export { ExtensionComponent, ExtensionComponentsProvider, ExtensionDialogHost, ExtensionDialogView, ExtensionRenderer, ExtensionScope, ExtensionScreen, ExtensionSettingsPage, ExtensionSettingsPages, ExtensionSettingsSection, ExtensionSettingsWirePage, ExtensionSlot, ExtensionTitlebar, ExtensionWebview, ExtensionsProvider, KIT_EFFECT_PRIORITY, LinkSessionScope, RoutedLink, SettingsWireForm, extensionSettingsEntryId, extensionSettingsGroupId, extensionSettingsPageId, useCarryExtensionsContext, useExtension, useExtensionEffectRouter, useExtensionEffects, useExtensionExport, useExtensionItems, useExtensionModuleLoader, useExtensionScope, useExtensionScreen, useExtensionSettings, useExtensionSettingsSections, useExtensionsHost, useExtensionsLabels, useLinkRouter, useRpc, useStore };
|
package/dist/files/FilesTab.js
CHANGED
|
@@ -283,6 +283,8 @@ function FilesTab({ scope, layout: layoutStore, chat = null, useEdits = useNoEdi
|
|
|
283
283
|
width: layout.filesTreeWidth ?? TREE_WIDTH.default,
|
|
284
284
|
controlRef: treeControl,
|
|
285
285
|
entries,
|
|
286
|
+
truncated: workspace.truncated,
|
|
287
|
+
onExpandFolder: workspace.openFolder,
|
|
286
288
|
gitStatus: workspace.status,
|
|
287
289
|
selectedPath: selected,
|
|
288
290
|
onSelect: setSelected,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FilesTreeSide } from "../appearance/headless/prefs.js";
|
|
2
|
-
import { GitStatusEntry, WorkspaceEntry } from "./headless/host.js";
|
|
2
|
+
import { GitStatusEntry, WorkspaceEntry, WorkspaceListing } from "./headless/host.js";
|
|
3
3
|
import { FileTreeControl, FileTreeEditing } from "../code/editor/FileTree.js";
|
|
4
4
|
import { FilesLayoutStore } from "./headless/view.js";
|
|
5
5
|
import { FileActionTarget } from "./file-actions.js";
|
|
@@ -21,6 +21,10 @@ interface TreeColumnProps {
|
|
|
21
21
|
width: number;
|
|
22
22
|
controlRef: RefObject<FileTreeControl | null>;
|
|
23
23
|
entries: WorkspaceEntry[] | null;
|
|
24
|
+
/** The listing was cut: a line under the toolbar says how much shows. */
|
|
25
|
+
truncated?: WorkspaceListing['truncated'] | null;
|
|
26
|
+
/** An ignored folder (one node) was opened: list what is under it. */
|
|
27
|
+
onExpandFolder?: (path: string) => void;
|
|
24
28
|
gitStatus: GitStatusEntry[];
|
|
25
29
|
selectedPath: string | null;
|
|
26
30
|
onSelect: (path: string | null) => void;
|
package/dist/files/TreeColumn.js
CHANGED
|
@@ -154,6 +154,11 @@ const TreeColumn = memo(function TreeColumn(p) {
|
|
|
154
154
|
})
|
|
155
155
|
]
|
|
156
156
|
}),
|
|
157
|
+
p.truncated && !p.search && /* @__PURE__ */ jsx("p", {
|
|
158
|
+
className: "zg-meta shrink-0 mx-3 mb-1 truncate",
|
|
159
|
+
title: labels.filesTruncated(p.truncated.shown, p.truncated.total, !!p.truncated.atLeast),
|
|
160
|
+
children: labels.filesTruncated(p.truncated.shown, p.truncated.total, !!p.truncated.atLeast)
|
|
161
|
+
}),
|
|
157
162
|
p.notice && !p.search && /* @__PURE__ */ jsxs("div", {
|
|
158
163
|
role: "alert",
|
|
159
164
|
className: "zg-well shrink-0 flex items-center gap-1.5 h-7 mx-2 mb-1 pl-2 pr-1 text-xs",
|
|
@@ -190,6 +195,7 @@ const TreeColumn = memo(function TreeColumn(p) {
|
|
|
190
195
|
onOpen: p.onOpen,
|
|
191
196
|
onContextMenu: p.onContextMenu,
|
|
192
197
|
openPaths: p.openPaths,
|
|
198
|
+
...p.onExpandFolder ? { onExpandFolder: p.onExpandFolder } : {},
|
|
193
199
|
...p.editing ? { editing: p.editing } : {},
|
|
194
200
|
className: "flex-1 min-h-0"
|
|
195
201
|
})
|
|
@@ -158,14 +158,16 @@ function createFixtureFilesHost(options = {}) {
|
|
|
158
158
|
},
|
|
159
159
|
emptyDirs: () => emptyDirsOf(files, dirs)
|
|
160
160
|
},
|
|
161
|
-
async list() {
|
|
162
|
-
|
|
161
|
+
async list(_cwd, options) {
|
|
162
|
+
const entries = [...[...files.keys()].map((path) => ({
|
|
163
163
|
path,
|
|
164
164
|
kind: "file"
|
|
165
165
|
})), ...emptyDirsOf(files, dirs).map((path) => ({
|
|
166
166
|
path: `${path}/`,
|
|
167
167
|
kind: "dir"
|
|
168
|
-
}))]
|
|
168
|
+
}))];
|
|
169
|
+
const dir = options?.dir?.replace(/\/+$/, "");
|
|
170
|
+
return { entries: (dir ? entries.filter((e) => e.path.startsWith(`${dir}/`)) : entries).sort((a, b) => a.path.localeCompare(b.path)) };
|
|
169
171
|
},
|
|
170
172
|
async read(_cwd, path) {
|
|
171
173
|
const entry = files.get(path);
|
|
@@ -7,9 +7,20 @@ interface WorkspaceEntry {
|
|
|
7
7
|
path: string;
|
|
8
8
|
/** A file or a folder. */
|
|
9
9
|
kind: 'file' | 'dir';
|
|
10
|
-
/** Gitignored (only present when listed with `showIgnored`). */
|
|
10
|
+
/** Gitignored (only present when listed with `showIgnored`). An ignored folder is one node: list it with `dir` to open it. */
|
|
11
11
|
ignored?: boolean;
|
|
12
12
|
}
|
|
13
|
+
/** A folder's listing: its entries, and whether the host cut it at its cap. */
|
|
14
|
+
interface WorkspaceListing {
|
|
15
|
+
/** The entries. */
|
|
16
|
+
entries: WorkspaceEntry[];
|
|
17
|
+
/** Set when the listing was cut: how many it holds and how many there are (`atLeast`: more than that). */
|
|
18
|
+
truncated?: {
|
|
19
|
+
shown: number;
|
|
20
|
+
total: number;
|
|
21
|
+
atLeast?: boolean;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
13
24
|
/** The media kinds a browser plays on its own. */
|
|
14
25
|
type MediaKind = 'image' | 'video' | 'audio' | 'pdf';
|
|
15
26
|
/** A file the page shows as media, with its MIME type. */
|
|
@@ -275,8 +286,11 @@ interface FilesLsp {
|
|
|
275
286
|
interface FilesSystem {
|
|
276
287
|
/** Whether files of `cwd` are on this machine (not a sandbox's or a server's): only those can be opened elsewhere. */
|
|
277
288
|
isLocal(cwd: string): boolean;
|
|
278
|
-
/** Opens an absolute path in the default editor. Resolves false when it could not. */
|
|
279
|
-
openPath(path: string
|
|
289
|
+
/** Opens an absolute path in the default editor, at `at` (1-based) when the editor takes a position. Resolves false when it could not. */
|
|
290
|
+
openPath(path: string, at?: {
|
|
291
|
+
line: number;
|
|
292
|
+
column?: number;
|
|
293
|
+
}): Promise<boolean>;
|
|
280
294
|
/** Shows an absolute path in the file manager. Resolves false when it could not. */
|
|
281
295
|
revealPath(path: string): Promise<boolean>;
|
|
282
296
|
}
|
|
@@ -334,10 +348,14 @@ interface FilesEntries {
|
|
|
334
348
|
}
|
|
335
349
|
/** The files host. Every member is optional. */
|
|
336
350
|
interface FilesHost {
|
|
337
|
-
/**
|
|
351
|
+
/**
|
|
352
|
+
* The folder's entries (files, and empty folders). `dir`: only what is under that folder (relative to `cwd`, the
|
|
353
|
+
* paths still relative to `cwd`), how an ignored folder opens. Rejects when the folder can't be read.
|
|
354
|
+
*/
|
|
338
355
|
list?(cwd: string, options?: {
|
|
339
356
|
showIgnored?: boolean;
|
|
340
|
-
|
|
357
|
+
dir?: string;
|
|
358
|
+
}): Promise<WorkspaceListing>;
|
|
341
359
|
/** A file, or `null` when it is gone (moved, deleted, outside the folder). */
|
|
342
360
|
read?(cwd: string, path: string): Promise<WorkspaceFile | null>;
|
|
343
361
|
/** Writes a file, refused when its version moved past `expectedMtimeMs`. Absent: files are read-only. */
|
|
@@ -373,4 +391,4 @@ interface FilesHost {
|
|
|
373
391
|
mediaUrl?(source: MediaSource): string;
|
|
374
392
|
}
|
|
375
393
|
//#endregion
|
|
376
|
-
export { ContentMatch, ContentSearchOptions, ContentSearchResult, Diagnostic, DiagnosticSeverity, DiagnosticsResult, DiagnosticsRunOptions, DroppedItem, FilesDiagnostics, FilesEntries, FilesEntryRefusal, FilesEntryResult, FilesHost, FilesImportResult, FilesLsp, FilesRemoval, FilesScope, FilesSystem, FolderChange, GitStatusEntry, LspCompletionDetail, LspCompletionItem, LspCompletionList, LspDefinition, LspHover, LspLocation, LspRange, LspTextChange, MediaKind, MediaSource, MediaType, TextMatchOptions, WorkspaceEntry, WorkspaceFile, WorkspaceWriteResult };
|
|
394
|
+
export { ContentMatch, ContentSearchOptions, ContentSearchResult, Diagnostic, DiagnosticSeverity, DiagnosticsResult, DiagnosticsRunOptions, DroppedItem, FilesDiagnostics, FilesEntries, FilesEntryRefusal, FilesEntryResult, FilesHost, FilesImportResult, FilesLsp, FilesRemoval, FilesScope, FilesSystem, FolderChange, GitStatusEntry, LspCompletionDetail, LspCompletionItem, LspCompletionList, LspDefinition, LspHover, LspLocation, LspRange, LspTextChange, MediaKind, MediaSource, MediaType, TextMatchOptions, WorkspaceEntry, WorkspaceFile, WorkspaceListing, WorkspaceWriteResult };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { AutoSurround, DEFAULT_EDITOR, DIAGNOSTICS_TIMEOUT, DiagnosticsMode, DiagnosticsRun, EDITOR_STORAGE_KEY, EditorPrefs, EditorPrefsStorage, EditorState, LSP_IDLE, SaveOn, StorageEditorPrefsOptions, createStorageEditorPrefs, parseEditor } from "./editor-prefs.js";
|
|
2
|
-
import { ContentMatch, ContentSearchOptions, ContentSearchResult, Diagnostic, DiagnosticSeverity, DiagnosticsResult, DiagnosticsRunOptions, DroppedItem, FilesDiagnostics, FilesEntries, FilesEntryRefusal, FilesEntryResult, FilesHost, FilesImportResult, FilesLsp, FilesRemoval, FilesScope, FilesSystem, FolderChange, GitStatusEntry, LspCompletionDetail, LspCompletionItem, LspCompletionList, LspDefinition, LspHover, LspLocation, LspRange, LspTextChange, MediaKind, MediaSource, MediaType, TextMatchOptions, WorkspaceEntry, WorkspaceFile, WorkspaceWriteResult } from "./host.js";
|
|
2
|
+
import { ContentMatch, ContentSearchOptions, ContentSearchResult, Diagnostic, DiagnosticSeverity, DiagnosticsResult, DiagnosticsRunOptions, DroppedItem, FilesDiagnostics, FilesEntries, FilesEntryRefusal, FilesEntryResult, FilesHost, FilesImportResult, FilesLsp, FilesRemoval, FilesScope, FilesSystem, FolderChange, GitStatusEntry, LspCompletionDetail, LspCompletionItem, LspCompletionList, LspDefinition, LspHover, LspLocation, LspRange, LspTextChange, MediaKind, MediaSource, MediaType, TextMatchOptions, WorkspaceEntry, WorkspaceFile, WorkspaceListing, WorkspaceWriteResult } from "./host.js";
|
|
3
3
|
import { DEFAULT_FILES_LAYOUT, FilesChatTarget, FilesKeyScope, FilesLayout, FilesLayoutStore, createMemoryFilesLayout, filesRootOf, filesScopeKey, steppedIndex } from "./view.js";
|
|
4
4
|
import { DEFAULT_FILES_LABELS, FilesLabels } from "./labels.js";
|
|
5
5
|
import { EntryClipboard, droppedImportItems, droppedItems, entryRefusalText, hasDroppedFiles, inFolder, isUnder, movedPath, nameOf, parentOf, topLevelPaths } from "./entries.js";
|
|
6
6
|
import { matchRanges } from "./search.js";
|
|
7
7
|
import { mediaTypeOfPath } from "./media.js";
|
|
8
|
-
export { AutoSurround, ContentMatch, ContentSearchOptions, ContentSearchResult, DEFAULT_EDITOR, DEFAULT_FILES_LABELS, DEFAULT_FILES_LAYOUT, DIAGNOSTICS_TIMEOUT, Diagnostic, DiagnosticSeverity, DiagnosticsMode, DiagnosticsResult, DiagnosticsRun, DiagnosticsRunOptions, DroppedItem, EDITOR_STORAGE_KEY, EditorPrefs, EditorPrefsStorage, EditorState, EntryClipboard, FilesChatTarget, FilesDiagnostics, FilesEntries, FilesEntryRefusal, FilesEntryResult, FilesHost, FilesImportResult, FilesKeyScope, FilesLabels, FilesLayout, FilesLayoutStore, FilesLsp, FilesRemoval, FilesScope, FilesSystem, FolderChange, GitStatusEntry, LSP_IDLE, LspCompletionDetail, LspCompletionItem, LspCompletionList, LspDefinition, LspHover, LspLocation, LspRange, LspTextChange, MediaKind, MediaSource, MediaType, SaveOn, StorageEditorPrefsOptions, TextMatchOptions, WorkspaceEntry, WorkspaceFile, WorkspaceWriteResult, createMemoryFilesLayout, createStorageEditorPrefs, droppedImportItems, droppedItems, entryRefusalText, filesRootOf, filesScopeKey, hasDroppedFiles, inFolder, isUnder, matchRanges, mediaTypeOfPath, movedPath, nameOf, parentOf, parseEditor, steppedIndex, topLevelPaths };
|
|
8
|
+
export { AutoSurround, ContentMatch, ContentSearchOptions, ContentSearchResult, DEFAULT_EDITOR, DEFAULT_FILES_LABELS, DEFAULT_FILES_LAYOUT, DIAGNOSTICS_TIMEOUT, Diagnostic, DiagnosticSeverity, DiagnosticsMode, DiagnosticsResult, DiagnosticsRun, DiagnosticsRunOptions, DroppedItem, EDITOR_STORAGE_KEY, EditorPrefs, EditorPrefsStorage, EditorState, EntryClipboard, FilesChatTarget, FilesDiagnostics, FilesEntries, FilesEntryRefusal, FilesEntryResult, FilesHost, FilesImportResult, FilesKeyScope, FilesLabels, FilesLayout, FilesLayoutStore, FilesLsp, FilesRemoval, FilesScope, FilesSystem, FolderChange, GitStatusEntry, LSP_IDLE, LspCompletionDetail, LspCompletionItem, LspCompletionList, LspDefinition, LspHover, LspLocation, LspRange, LspTextChange, MediaKind, MediaSource, MediaType, SaveOn, StorageEditorPrefsOptions, TextMatchOptions, WorkspaceEntry, WorkspaceFile, WorkspaceListing, WorkspaceWriteResult, createMemoryFilesLayout, createStorageEditorPrefs, droppedImportItems, droppedItems, entryRefusalText, filesRootOf, filesScopeKey, hasDroppedFiles, inFolder, isUnder, matchRanges, mediaTypeOfPath, movedPath, nameOf, parentOf, parseEditor, steppedIndex, topLevelPaths };
|
|
@@ -19,6 +19,7 @@ declare const DEFAULT_FILES_LABELS: {
|
|
|
19
19
|
filesRefresh: string;
|
|
20
20
|
filesNoChanged: string;
|
|
21
21
|
filesEmptyFolder: string;
|
|
22
|
+
filesTruncated: (shown: number, total: number, atLeast: boolean) => string;
|
|
22
23
|
filesOpenFiles: string;
|
|
23
24
|
filesPickFile: string;
|
|
24
25
|
filesNotFound: string;
|
|
@@ -20,6 +20,7 @@ const DEFAULT_FILES_LABELS = {
|
|
|
20
20
|
filesRefresh: "Refresh",
|
|
21
21
|
filesNoChanged: "No changed files",
|
|
22
22
|
filesEmptyFolder: "Empty folder",
|
|
23
|
+
filesTruncated: (shown, total, atLeast) => `Showing ${shown.toLocaleString()} of ${total.toLocaleString()}${atLeast ? "+" : ""}: search to find more`,
|
|
23
24
|
filesOpenFiles: "Open files",
|
|
24
25
|
filesPickFile: "Pick a file to view it",
|
|
25
26
|
filesNotFound: "File not found at this path",
|
|
@@ -81,9 +81,16 @@ function describeFilesHostContract(name, makeHarness, capabilities) {
|
|
|
81
81
|
});
|
|
82
82
|
it.skipIf(!has("list"))("lists the folder's files", async () => {
|
|
83
83
|
const { host } = await setup();
|
|
84
|
-
const
|
|
84
|
+
const { entries } = await host.list(CWD);
|
|
85
|
+
const files = entries.filter((e) => e.kind === "file").map((e) => e.path);
|
|
85
86
|
expect(files.sort()).toEqual(Object.keys(FILES).sort());
|
|
86
87
|
});
|
|
88
|
+
it.skipIf(!has("list"))("lists one folder with dir, its paths still relative to the root", async () => {
|
|
89
|
+
const { host } = await setup();
|
|
90
|
+
const { entries } = await host.list(CWD, { dir: "src" });
|
|
91
|
+
const files = entries.filter((e) => e.kind === "file").map((e) => e.path);
|
|
92
|
+
expect(files.sort()).toEqual(Object.keys(FILES).filter((p) => p.startsWith("src/")).sort());
|
|
93
|
+
});
|
|
87
94
|
it.skipIf(!has("read"))("reads a file with its size and version, and null for a missing one", async () => {
|
|
88
95
|
const { host } = await setup();
|
|
89
96
|
const file = await host.read(CWD, "src/a.ts");
|
|
@@ -149,7 +156,7 @@ function describeFilesHostContract(name, makeHarness, capabilities) {
|
|
|
149
156
|
reason: "invalid"
|
|
150
157
|
});
|
|
151
158
|
if (has("list")) {
|
|
152
|
-
const listed = (await host.list(CWD)).map((e) => e.path);
|
|
159
|
+
const listed = (await host.list(CWD)).entries.map((e) => e.path);
|
|
153
160
|
expect(listed).toContain("src/new/c.ts");
|
|
154
161
|
expect(listed).toContain("docs/");
|
|
155
162
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FilesScope, GitStatusEntry, WorkspaceEntry } from "./headless/host.js";
|
|
1
|
+
import { FilesScope, GitStatusEntry, WorkspaceEntry, WorkspaceListing } from "./headless/host.js";
|
|
2
2
|
import { SessionEditEvent } from "../session/headless/session-diffs.js";
|
|
3
3
|
import { SessionEditsHook } from "./tab-hooks.js";
|
|
4
4
|
//#region src/files/useWorkspace.d.ts
|
|
@@ -12,10 +12,22 @@ interface Workspace {
|
|
|
12
12
|
refresh: () => Promise<void>;
|
|
13
13
|
/** Fires after the folder may have changed, debounced (same trigger as `refresh`). */
|
|
14
14
|
onToolResult: (handler: () => void) => () => void;
|
|
15
|
+
/** The listing was cut at the host's cap: how many rows show of how many. */
|
|
16
|
+
truncated: WorkspaceListing['truncated'] | null;
|
|
17
|
+
/** Lists what is under an ignored folder (relative, no trailing `/`) into `entries`. */
|
|
18
|
+
openFolder: (dir: string) => void;
|
|
15
19
|
}
|
|
16
20
|
declare function useWorkspace(scope: FilesScope, showIgnored: boolean,
|
|
17
21
|
/** The tab is on screen; while hidden a burst only marks the listing stale. */
|
|
18
22
|
visible: boolean, useEdits: SessionEditsHook): Workspace;
|
|
23
|
+
/**
|
|
24
|
+
* The listing with what each opened folder holds: an opened folder's own node (`dist/`) gives way to its contents,
|
|
25
|
+
* unless it holds nothing.
|
|
26
|
+
*
|
|
27
|
+
* @param listed - The folder's listing (`null`: not read yet).
|
|
28
|
+
* @param opened - What each opened folder holds, by folder (relative, no trailing `/`).
|
|
29
|
+
*/
|
|
30
|
+
declare function withOpenedFolders(listed: WorkspaceEntry[] | null, opened: ReadonlyMap<string, readonly WorkspaceEntry[]>): WorkspaceEntry[] | null;
|
|
19
31
|
/**
|
|
20
32
|
* Keep files in `changed`, and folders that contain one.
|
|
21
33
|
*
|
|
@@ -24,4 +36,4 @@ visible: boolean, useEdits: SessionEditsHook): Workspace;
|
|
|
24
36
|
*/
|
|
25
37
|
declare function filterChanged(entries: readonly WorkspaceEntry[], changed: ReadonlySet<string>): WorkspaceEntry[];
|
|
26
38
|
//#endregion
|
|
27
|
-
export { Workspace, filterChanged, useWorkspace };
|
|
39
|
+
export { Workspace, filterChanged, useWorkspace, withOpenedFolders };
|
|
@@ -10,11 +10,20 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
|
10
10
|
* Refreshes after tool results from any session working in the folder and
|
|
11
11
|
* when the repository moves (`folder-changes`), debounced: a run emitting
|
|
12
12
|
* ten results in a second costs one listing, not ten.
|
|
13
|
+
*
|
|
14
|
+
* An ignored folder comes as one node; `openFolder` lists what is under it
|
|
15
|
+
* (`FilesHost.list` with `dir`) when the tree opens it, and every refresh
|
|
16
|
+
* lists the opened ones again. `truncated`: the host cut the listing.
|
|
13
17
|
*/
|
|
14
18
|
const TOOL_RESULT_DEBOUNCE_MS = 400;
|
|
19
|
+
const NO_FOLDERS = /* @__PURE__ */ new Map();
|
|
15
20
|
function useWorkspace(scope, showIgnored, visible, useEdits) {
|
|
16
21
|
const host = useFilesHost();
|
|
17
|
-
const [
|
|
22
|
+
const [listed, setListed] = useState(null);
|
|
23
|
+
const [truncated, setTruncated] = useState(null);
|
|
24
|
+
const [opened, setOpened] = useState(NO_FOLDERS);
|
|
25
|
+
const openedRef = useRef(opened);
|
|
26
|
+
openedRef.current = opened;
|
|
18
27
|
const [status, setStatus] = useState([]);
|
|
19
28
|
const cwd = filesRootOf(scope) || null;
|
|
20
29
|
const edits = useEdits(scope.session ?? null);
|
|
@@ -23,26 +32,70 @@ function useWorkspace(scope, showIgnored, visible, useEdits) {
|
|
|
23
32
|
const refresh = useCallback(async () => {
|
|
24
33
|
if (!cwd) return;
|
|
25
34
|
const mine = ++reads.current;
|
|
26
|
-
|
|
35
|
+
const folders = [...openedRef.current.keys()];
|
|
36
|
+
let listing;
|
|
27
37
|
let git;
|
|
38
|
+
let inFolders;
|
|
28
39
|
try {
|
|
29
|
-
[
|
|
40
|
+
[listing, git, inFolders] = await Promise.all([
|
|
41
|
+
host.list ? host.list(cwd, { showIgnored }) : { entries: [] },
|
|
42
|
+
host.gitStatus ? host.gitStatus(cwd) : [],
|
|
43
|
+
Promise.all(folders.map(async (dir) => host.list ? (await host.list(cwd, {
|
|
44
|
+
showIgnored,
|
|
45
|
+
dir
|
|
46
|
+
})).entries : []))
|
|
47
|
+
]);
|
|
30
48
|
} catch {
|
|
31
|
-
if (mine === reads.current)
|
|
49
|
+
if (mine === reads.current) setListed((prev) => prev ?? []);
|
|
32
50
|
return;
|
|
33
51
|
}
|
|
34
52
|
if (mine !== reads.current) return;
|
|
35
|
-
|
|
53
|
+
const list = listing.entries;
|
|
54
|
+
setListed((prev) => sameEntries(prev, list) ? prev : list);
|
|
55
|
+
setTruncated((prev) => sameTruncation(prev, listing.truncated) ? prev : listing.truncated ?? null);
|
|
36
56
|
setStatus((prev) => sameStatus(prev, git) ? prev : git);
|
|
57
|
+
if (folders.length > 0) setOpened((prev) => {
|
|
58
|
+
let changed = false;
|
|
59
|
+
const next = new Map(prev);
|
|
60
|
+
folders.forEach((dir, i) => {
|
|
61
|
+
const fresh = inFolders[i];
|
|
62
|
+
if (sameEntries(prev.get(dir) ?? null, fresh)) return;
|
|
63
|
+
changed = true;
|
|
64
|
+
next.set(dir, fresh);
|
|
65
|
+
});
|
|
66
|
+
return changed ? next : prev;
|
|
67
|
+
});
|
|
37
68
|
}, [
|
|
38
69
|
host,
|
|
39
70
|
cwd,
|
|
40
71
|
showIgnored
|
|
41
72
|
]);
|
|
73
|
+
const generation = useRef(0);
|
|
42
74
|
useEffect(() => {
|
|
43
|
-
|
|
75
|
+
generation.current++;
|
|
76
|
+
setListed(null);
|
|
77
|
+
setTruncated(null);
|
|
78
|
+
setOpened(NO_FOLDERS);
|
|
79
|
+
openedRef.current = NO_FOLDERS;
|
|
44
80
|
refresh();
|
|
45
81
|
}, [refresh]);
|
|
82
|
+
const openFolder = useCallback((dir) => {
|
|
83
|
+
const list = host.list;
|
|
84
|
+
if (!cwd || !list || openedRef.current.has(dir)) return;
|
|
85
|
+
const mine = generation.current;
|
|
86
|
+
list(cwd, {
|
|
87
|
+
showIgnored,
|
|
88
|
+
dir
|
|
89
|
+
}).then(({ entries: inside }) => {
|
|
90
|
+
if (mine !== generation.current) return;
|
|
91
|
+
setOpened((prev) => prev.has(dir) ? prev : new Map(prev).set(dir, inside));
|
|
92
|
+
}, () => void 0);
|
|
93
|
+
}, [
|
|
94
|
+
host,
|
|
95
|
+
cwd,
|
|
96
|
+
showIgnored
|
|
97
|
+
]);
|
|
98
|
+
const entries = useMemo(() => withOpenedFolders(listed, opened), [listed, opened]);
|
|
46
99
|
const onToolResult = useCallback((handler) => {
|
|
47
100
|
let timer = null;
|
|
48
101
|
const off = onFolderChange(() => {
|
|
@@ -90,16 +143,41 @@ function useWorkspace(scope, showIgnored, visible, useEdits) {
|
|
|
90
143
|
changedPaths,
|
|
91
144
|
edits,
|
|
92
145
|
refresh,
|
|
93
|
-
onToolResult
|
|
146
|
+
onToolResult,
|
|
147
|
+
truncated,
|
|
148
|
+
openFolder
|
|
94
149
|
}), [
|
|
95
150
|
entries,
|
|
96
151
|
status,
|
|
97
152
|
changedPaths,
|
|
98
153
|
edits,
|
|
99
154
|
refresh,
|
|
100
|
-
onToolResult
|
|
155
|
+
onToolResult,
|
|
156
|
+
truncated,
|
|
157
|
+
openFolder
|
|
101
158
|
]);
|
|
102
159
|
}
|
|
160
|
+
function sameTruncation(a, b) {
|
|
161
|
+
if (!a || !b) return !a && !b;
|
|
162
|
+
return a.shown === b.shown && a.total === b.total && a.atLeast === b.atLeast;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* The listing with what each opened folder holds: an opened folder's own node (`dist/`) gives way to its contents,
|
|
166
|
+
* unless it holds nothing.
|
|
167
|
+
*
|
|
168
|
+
* @param listed - The folder's listing (`null`: not read yet).
|
|
169
|
+
* @param opened - What each opened folder holds, by folder (relative, no trailing `/`).
|
|
170
|
+
*/
|
|
171
|
+
function withOpenedFolders(listed, opened) {
|
|
172
|
+
if (!listed || opened.size === 0) return listed;
|
|
173
|
+
const all = [...listed, ...[...opened.values()].flat()];
|
|
174
|
+
const seen = /* @__PURE__ */ new Set();
|
|
175
|
+
return all.filter((e) => {
|
|
176
|
+
if (seen.has(e.path)) return false;
|
|
177
|
+
seen.add(e.path);
|
|
178
|
+
return !(e.kind === "dir" && (opened.get(e.path.replace(/\/$/, ""))?.length ?? 0) > 0);
|
|
179
|
+
});
|
|
180
|
+
}
|
|
103
181
|
/**
|
|
104
182
|
* Keep files in `changed`, and folders that contain one.
|
|
105
183
|
*
|
|
@@ -115,4 +193,4 @@ function filterChanged(entries, changed) {
|
|
|
115
193
|
});
|
|
116
194
|
}
|
|
117
195
|
//#endregion
|
|
118
|
-
export { filterChanged, useWorkspace };
|
|
196
|
+
export { filterChanged, useWorkspace, withOpenedFolders };
|
package/dist/git/BranchMenu.js
CHANGED
|
@@ -3,11 +3,11 @@ import { CopyButton } from "../components/CopyButton.js";
|
|
|
3
3
|
import { Tooltip } from "../components/Tooltip.js";
|
|
4
4
|
import { MenuNote } from "../components/Menu.js";
|
|
5
5
|
import { FloatingSurface } from "../components/floating/FloatingSurface.js";
|
|
6
|
+
import { environmentKindIcon } from "./headless/environment.js";
|
|
6
7
|
import { gitErrorText } from "./headless/labels.js";
|
|
7
8
|
import { useGitHost, useGitLabels } from "./GitProvider.js";
|
|
8
9
|
import { useLinkRouter } from "../extensions/links.js";
|
|
9
10
|
import { relativeTime } from "../chat/headless/session-list.js";
|
|
10
|
-
import { environmentKindIcon } from "./headless/environment.js";
|
|
11
11
|
import { ageIsDuration, clockTime, compactCount, readPullRequests, switcherCacheOf, switcherCreates, switcherKey, switcherSections } from "./headless/switcher.js";
|
|
12
12
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
13
13
|
import { memo, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
|
|
@@ -3,10 +3,10 @@ import { Checkbox, MetaChip } from "../components/Form.js";
|
|
|
3
3
|
import { MenuNote, MenuRow } from "../components/Menu.js";
|
|
4
4
|
import { compactPath } from "../path.js";
|
|
5
5
|
import { useDisplayPath } from "../hooks/useDisplayPath.js";
|
|
6
|
+
import { environmentKindIcon } from "./headless/environment.js";
|
|
6
7
|
import { gitErrorText } from "./headless/labels.js";
|
|
7
8
|
import { useGitHost, useGitLabels } from "./GitProvider.js";
|
|
8
9
|
import { useOptionalModal } from "../app/ModalProvider.js";
|
|
9
|
-
import { environmentKindIcon } from "./headless/environment.js";
|
|
10
10
|
import { RemoteFolderBrowser } from "./RemoteFolderPicker.js";
|
|
11
11
|
import { leavesWorktree, moveChoices, moveListingCwd } from "./headless/move.js";
|
|
12
12
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { IconButton } from "../components/IconButton.js";
|
|
2
2
|
import { Menu, MenuNote, MenuRow, MenuSection, MenuSeparator, focusMenuRow } from "../components/Menu.js";
|
|
3
3
|
import { Popover } from "../components/floating/Popover.js";
|
|
4
|
+
import { folderName } from "./headless/environment.js";
|
|
4
5
|
import { gitErrorText } from "./headless/labels.js";
|
|
5
6
|
import { useGitHost, useGitLabels } from "./GitProvider.js";
|
|
6
|
-
import { folderName } from "./headless/environment.js";
|
|
7
7
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
8
8
|
import { useEffect, useRef, useState } from "react";
|
|
9
9
|
//#region src/git/RemoteFolderPicker.tsx
|
package/dist/git/WherePicker.js
CHANGED
|
@@ -2,10 +2,10 @@ import { Tooltip } from "../components/Tooltip.js";
|
|
|
2
2
|
import { MetaChip } from "../components/Form.js";
|
|
3
3
|
import { MenuNote, MenuRow, MenuSection, MenuSeparator, handleMenuKeyDown } from "../components/Menu.js";
|
|
4
4
|
import { Popover } from "../components/floating/Popover.js";
|
|
5
|
+
import { environmentBaseKind, environmentKindIcon, machinesOf, resolveDraftDescriptor } from "./headless/environment.js";
|
|
5
6
|
import { useGitLabels } from "./GitProvider.js";
|
|
6
7
|
import { hostReachable, hostStatusLabel } from "../chat/headless/hosts.js";
|
|
7
8
|
import { HostBadge } from "../chat/HostBadge.js";
|
|
8
|
-
import { environmentBaseKind, environmentKindIcon, machinesOf, resolveDraftDescriptor } from "./headless/environment.js";
|
|
9
9
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
10
10
|
import { useRef } from "react";
|
|
11
11
|
import { isolationLabel, parseMachineKind } from "zidane/chat/pure";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { DEFAULT_GIT_LABELS, gitErrorText } from "./labels.js";
|
|
2
1
|
import { environmentBaseKind, environmentKindIcon, folderName, machinesOf, resolveDraftDescriptor, resolveDraftEnvironment, withMachines } from "./environment.js";
|
|
2
|
+
import { DEFAULT_GIT_LABELS, gitErrorText } from "./labels.js";
|
|
3
3
|
import { resolveRemoteClone } from "./remote-clone.js";
|
|
4
4
|
import { SWITCHER_SECTIONS, ageIsDuration, clockTime, compactCount, createSwitcherCache, prMatches, readPullRequests, switcherCacheOf, switcherCreates, switcherKey, switcherSections } from "./switcher.js";
|
|
5
5
|
import { syncAction, syncSummary, syncTooltip } from "./sync.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { useGitHost } from "./GitProvider.js";
|
|
2
1
|
import { withMachines } from "./headless/environment.js";
|
|
2
|
+
import { useGitHost } from "./GitProvider.js";
|
|
3
3
|
import { useEffect, useState } from "react";
|
|
4
4
|
//#region src/git/useEnvironmentChoices.ts
|
|
5
5
|
const NO_DESCRIPTORS = [];
|
package/dist/index.d.ts
CHANGED
|
@@ -37,6 +37,7 @@ import { PanelEmpty, PanelEmptyProps, PanelLoading, PanelLoadingProps } from "./
|
|
|
37
37
|
import { BadgeTone, DiffCounts, DiffCountsProps, PANEL_ROW, PANEL_ROW_HOVER, RowBadge, RowBadgeProps } from "./components/PanelRows.js";
|
|
38
38
|
import { PreviewWindow, PreviewWindowProps } from "./components/PreviewWindow.js";
|
|
39
39
|
import { ReorderTabState, ReorderTabs, ReorderTabsProps } from "./components/ReorderTabs.js";
|
|
40
|
+
import { Restricted, RestrictedProps } from "./components/Restricted.js";
|
|
40
41
|
import { SegmentSpinner, SegmentSpinnerProps } from "./components/SegmentSpinner.js";
|
|
41
42
|
import { Segmented, SegmentedOption, SegmentedProps } from "./components/Segmented.js";
|
|
42
43
|
import { StepActions, StepActionsProps, StepFrame, StepFrameProps } from "./components/StepFrame.js";
|
|
@@ -47,6 +48,7 @@ import { SwitchGlyph, SwitchGlyphProps } from "./components/SwitchGlyph.js";
|
|
|
47
48
|
import { ThemeThumb, ThemeThumbProps } from "./components/ThemeThumb.js";
|
|
48
49
|
import { ToggleCard, ToggleCardProps } from "./components/ToggleCard.js";
|
|
49
50
|
import { Tooltip, TooltipProps } from "./components/Tooltip.js";
|
|
51
|
+
import { ZidaneMark, ZidaneMarkProps } from "./components/ZidaneMark.js";
|
|
50
52
|
import { MAX_REAL_SCALE } from "./components/zoom.js";
|
|
51
53
|
import { ZoomableImage, ZoomableImageHandle, ZoomableImageProps } from "./components/ZoomableImage.js";
|
|
52
54
|
import { BTN_DANGER, BTN_DANGER_CONFIRM, BTN_LG_DANGER, BTN_LG_PRIMARY, BTN_LG_SECONDARY, BTN_LG_SOLID, BTN_PRIMARY, BTN_SECONDARY, ButtonVariant, buttonClass } from "./components/button.js";
|
|
@@ -71,7 +73,7 @@ import { MotionLevel, useMotionLevel, useReducedMotion } from "./motion/reduced.
|
|
|
71
73
|
import { MotionProvider, MotionProviderProps } from "./motion/provider.js";
|
|
72
74
|
import { RollDirection, RollingText, RollingTextProps, readRollMs, rollCells } from "./motion/roll.js";
|
|
73
75
|
import { SHIMMER_MS, syncShimmer } from "./motion/shimmer.js";
|
|
74
|
-
import { HeldWidth, HeldWidthProps, SmoothWidth, SmoothWidthProps } from "./motion/size.js";
|
|
76
|
+
import { HeldWidth, HeldWidthProps, SmoothHeight, SmoothHeightProps, SmoothWidth, SmoothWidthProps } from "./motion/size.js";
|
|
75
77
|
import { ApplyMotionOptions, DEFAULT_PANEL_MS, FADE_KEYS, HOVER_MOTION, INSTANT, MENU_FADE_RATIO, MOTIONS, MOTION_NAMES, MotionName, MotionPrefs, REDUCED_FADE, applyMotionVars, cssMotionVars, currentMotionPrefs, currentMotionTransition, currentWithFade, fadeTransition, menuTransition, motionTransition, motionVars, panelMotionVars, useMenuTransition, useMotionPrefs, useMotionTransition, useSprings, useTabExit, useWithFade, withFade } from "./motion/springs.js";
|
|
76
78
|
import { Crossfade, CrossfadeProps, Presence, PresenceProps, useCadencedValue } from "./motion/swap.js";
|
|
77
79
|
import { SwapIcon, SwapIconProps } from "./motion/SwapIcon.js";
|
|
@@ -84,4 +86,4 @@ import { IconCollection, RuntimeIconsOptions, watchRuntimeIcons } from "./theme/
|
|
|
84
86
|
import { themeCssVars, themeStylesheet } from "./theme/stylesheet.js";
|
|
85
87
|
import { withoutTransitions } from "./theme/without-transitions.js";
|
|
86
88
|
import { basename, compactPath, formatPathForCwd, splitPath, tildePath, tildeText } from "./path.js";
|
|
87
|
-
export { ACCENT_PRESETS, AccentPreset, AddressBar, AddressBarProps, Align, Anchor, Appearance, ApplyMotionOptions, BRAND_MARKS, BTN_DANGER, BTN_DANGER_CONFIRM, BTN_LG_DANGER, BTN_LG_PRIMARY, BTN_LG_SECONDARY, BTN_LG_SOLID, BTN_PRIMARY, BTN_SECONDARY, BUILTIN_THEMES, BadgeTone, BrandMark, BrandMarkData, BrandMarkPath, BrandMarkProps, BrandMarkSize, Breadcrumb, BreadcrumbProps, BrowserSignIn, BrowserSignInProps, BrowserSignInState, ButtonVariant, CONFIRM_TITLE_ID, CONTRAST, Checkbox, CheckboxProps, ChipColors, ChipKind, ChoiceCardOption, ChoiceCards, ChoiceCardsProps, CodeFrame, CodeFrameProps, CodeHighlightProvider, CodeHighlightProviderProps, CodeHighlighter, CodeHighlighterOptions, CodePanel, CodePanelProps, CodeWrapProvider, CodeWrapProviderProps, ConfirmDialog, ConfirmDialogProps, ConfirmOptions, CopyButton, CopyButtonProps, CountBadge, CountBadgeProps, CountTone, Crossfade, CrossfadeProps, CssVarMap, DARK_LUMINANCE_THRESHOLD, DEFAULT_EDITOR_SETTINGS, DEFAULT_LABELS, DEFAULT_PANEL_MS, DEFAULT_THEME, DiffColors, DiffCounts, DiffCountsProps, DismissHandlers, DotColors, EditableTitle, EditableTitleProps, EditorEnvironment, EditorEnvironmentProvider, EditorEnvironmentProviderProps, EditorSettings, EmptyState, EmptyStateProps, ErrorBoundary, ErrorBoundaryProps, ErrorDetails, ErrorDetailsProps, ErrorFallback, ErrorFallbackFrameProps, ErrorFallbackProps, ErrorNote, ErrorNoteProps, ErrorReport, ErrorReportOptions, ErrorReportSink, FADE_KEYS, FIELD_LABEL_CLASS, FORM_CARD_CLASS, FloatingSurface, FloatingSurfaceProps, FormCard, FormCardProps, FormSection, FormSectionProps, Grow, GrowPresence, GrowProps, HOVER_MOTION, HeldWidth, HeldWidthProps, HighlightRequest, HighlightResponse, Highlighted, HighlightedCode, HighlightedCodeProps, HighlightedProps, HostRow, HostRowProps, HoverCard, HoverCardProps, HoverCardTriggerProps, HowItWorks, HowItWorksProps, HowItWorksStep, INPUT_CLASS, INSTANT, IconButton, IconButtonLook, IconButtonProps, IconButtonRenderProps, IconButtonSize, IconCollection, IconToggle, IconToggleProps, KeyCombo, KeyComboProps, Keycap, KeycapProps, KeyedStore, LabelOverrides, Labels, LabelsProvider, LabelsProviderProps, LayerOptions, LightboxItem, LoadError, LoadErrorProps, MAX_REAL_SCALE, MENU_FADE_RATIO, MOTIONS, MOTION_NAMES, MatchedTitle, MatchedTitleProps, MediaNav, type MediaNavProps, Menu, MenuNote, MenuNoteProps, MenuProps, MenuRow, MenuRowProps, MenuRowRenderProps, MenuSection, MenuSectionProps, MenuSeparator, MenuSeparatorProps, MenuSwitch, MenuSwitchProps, Meta, MetaChip, MetaChipProps, MetaProps, MotionLevel, MotionName, MotionPrefs, MotionProvider, MotionProviderProps, NavButton, NavButtonProps, NavRow, NavRowProps, Oklch, OpLine, OpLineProps, Overlay, OverlayProps, PANEL_ROW, PANEL_ROW_HOVER, PUNCTUATION_CODES, PaletteEntry, PaletteIcon, PaletteIconProps, PaletteKeys, PaletteList, PaletteListProps, PaletteNotice, PaletteOption, PaletteOptionProps, PalettePanel, PalettePanelProps, PaletteRow, PaletteRowData, PaletteRowProps, PaletteSection, PanelEmpty, PanelEmptyProps, PanelLoading, PanelLoadingProps, PathDisplay, PathDisplayProvider, PathDisplayProviderProps, PathDisplayScope, PathDisplayScopeProps, Placement, Popover, PopoverProps, PopoverState, PopoverTriggerProps, Presence, type Presence$1 as PresenceHandle, type PresenceOptions, PresenceProps, type PresenceState, PreviewWindow, PreviewWindowProps, REDUCED_FADE, ROW_BUTTON_CLASS, ROW_CLASS, ROW_HOST_CLASS, ROW_TRIGGER_CLASS, Raised, RaisedProps, Rect, ReorderTabState, ReorderTabs, ReorderTabsProps, ResizeDrag, ResizeDragHandleProps, ResizeDragOptions, ResolvedPalette, Rgb, RollDirection, RollingText, RollingTextProps, RowActionItem, RowActionsMenu, RowActionsMenuProps, RowBadge, RowBadgeProps, RowText, RowTextProps, RuntimeIconsOptions, SHIMMER_MS, SectionLabel, SectionLabelProps, SegmentSpinner, SegmentSpinnerProps, Segmented, SegmentedOption, SegmentedProps, SegmentedRow, SegmentedRowProps, Side, SliderRow, SliderRowProps, SmoothWidth, SmoothWidthProps, SphereShading, StepActions, StepActionsProps, StepFrame, StepFrameProps, Stepper, StepperProps, StepperStep, SurfaceLadder, SwapIcon, SwapIconProps, Swatch, SwatchPicker, SwatchPickerProps, Switch, SwitchGlyph, SwitchGlyphProps, SwitchProps, SwitchRow, SwitchRowProps, SyntaxStyles, SyntaxTokenStyle, TEXTAREA_CLASS, TabDragBounds, TabPill, TabPillProps, Theme, ThemeColors, ThemeDiff, ThemeSeed, ThemeSelect, ThemeSurfaces, ThemeThumb, ThemeThumbProps, TitleText, TitleTextProps, ToggleCard, ToggleCardProps, ToggleSwitch, ToggleSwitchProps, Tooltip, TooltipProps, Tray, TrayProps, ZoomableImage, type ZoomableImageHandle, type ZoomableImageProps, _resetKeyboardLayout, anchorNudge, applyMotionVars, basename, beginLayoutAnimation, buttonClass, capChroma, clampWidth, compactPath, configureErrorReports, contrastRatio, contrastToCssVars, createCodeHighlighter, createKeyedStore, cssMotionVars, currentMotionPrefs, currentMotionTransition, currentWithFade, defaultPaletteKeys, defaultShikiTheme, depthToCssVars, derivePalette, ensureContrast, errorMessage, errorStacksShown, extendLabels, fadeTransition, focusMenuRow, formatColor, formatPathForCwd, handleMenuKeyDown, hasBrandMark, iconButtonClass, inferAppearance, installRendererErrorHandlers, isDark, isLayoutAnimating, layoutKeyLabel, luminance, menuTransition, mix, motionTransition, motionVars, moveId, oklch, oklchToRgb, oneOf, paletteToCssVars, paletteVerb, panelMotionVars, parseBoolean, parseColor, placeSurface, presetFor, pulseLayout, readDurationVar, readExitMs, readMenuExitMs, readMotionMs, readPanelMs, readPersisted, readRollMs, readableOn, reportRendererError, resetReportedErrors, resolveTheme, returnFocus, rgbToOklch, rollCells, scrollRootOf, seedFromTheme, shikiThemeFor, splitPath, subscribeLayoutAnimating, syncShimmer, themeCssVars, themeStylesheet, tildePath, tildeText, tintedNeutral, toOklch, transitionState, typesStandIn, useAnchoredPosition, useCadencedValue, useCodeHighlight, useDismiss, useDisplayPath, useDocumentAppearance, useEditorEnvironment, useKeyboardLayout, useKeyedValue, useLabels, useLayer, useLightbox, useMenuTransition, useMinuteTick, useMotionLevel, useMotionPrefs, useMotionTransition, useNearViewport, usePersistedState, usePopover, usePresence, useReducedMotion, useResizeDrag, useRowHint, useScrollLock, useSprings, useStaysMounted, useTabDrag, useTabExit, useWithFade, watchRuntimeIcons, withAlpha, withFade, withLightness, withoutTransitions, writePersisted };
|
|
89
|
+
export { ACCENT_PRESETS, AccentPreset, AddressBar, AddressBarProps, Align, Anchor, Appearance, ApplyMotionOptions, BRAND_MARKS, BTN_DANGER, BTN_DANGER_CONFIRM, BTN_LG_DANGER, BTN_LG_PRIMARY, BTN_LG_SECONDARY, BTN_LG_SOLID, BTN_PRIMARY, BTN_SECONDARY, BUILTIN_THEMES, BadgeTone, BrandMark, BrandMarkData, BrandMarkPath, BrandMarkProps, BrandMarkSize, Breadcrumb, BreadcrumbProps, BrowserSignIn, BrowserSignInProps, BrowserSignInState, ButtonVariant, CONFIRM_TITLE_ID, CONTRAST, Checkbox, CheckboxProps, ChipColors, ChipKind, ChoiceCardOption, ChoiceCards, ChoiceCardsProps, CodeFrame, CodeFrameProps, CodeHighlightProvider, CodeHighlightProviderProps, CodeHighlighter, CodeHighlighterOptions, CodePanel, CodePanelProps, CodeWrapProvider, CodeWrapProviderProps, ConfirmDialog, ConfirmDialogProps, ConfirmOptions, CopyButton, CopyButtonProps, CountBadge, CountBadgeProps, CountTone, Crossfade, CrossfadeProps, CssVarMap, DARK_LUMINANCE_THRESHOLD, DEFAULT_EDITOR_SETTINGS, DEFAULT_LABELS, DEFAULT_PANEL_MS, DEFAULT_THEME, DiffColors, DiffCounts, DiffCountsProps, DismissHandlers, DotColors, EditableTitle, EditableTitleProps, EditorEnvironment, EditorEnvironmentProvider, EditorEnvironmentProviderProps, EditorSettings, EmptyState, EmptyStateProps, ErrorBoundary, ErrorBoundaryProps, ErrorDetails, ErrorDetailsProps, ErrorFallback, ErrorFallbackFrameProps, ErrorFallbackProps, ErrorNote, ErrorNoteProps, ErrorReport, ErrorReportOptions, ErrorReportSink, FADE_KEYS, FIELD_LABEL_CLASS, FORM_CARD_CLASS, FloatingSurface, FloatingSurfaceProps, FormCard, FormCardProps, FormSection, FormSectionProps, Grow, GrowPresence, GrowProps, HOVER_MOTION, HeldWidth, HeldWidthProps, HighlightRequest, HighlightResponse, Highlighted, HighlightedCode, HighlightedCodeProps, HighlightedProps, HostRow, HostRowProps, HoverCard, HoverCardProps, HoverCardTriggerProps, HowItWorks, HowItWorksProps, HowItWorksStep, INPUT_CLASS, INSTANT, IconButton, IconButtonLook, IconButtonProps, IconButtonRenderProps, IconButtonSize, IconCollection, IconToggle, IconToggleProps, KeyCombo, KeyComboProps, Keycap, KeycapProps, KeyedStore, LabelOverrides, Labels, LabelsProvider, LabelsProviderProps, LayerOptions, LightboxItem, LoadError, LoadErrorProps, MAX_REAL_SCALE, MENU_FADE_RATIO, MOTIONS, MOTION_NAMES, MatchedTitle, MatchedTitleProps, MediaNav, type MediaNavProps, Menu, MenuNote, MenuNoteProps, MenuProps, MenuRow, MenuRowProps, MenuRowRenderProps, MenuSection, MenuSectionProps, MenuSeparator, MenuSeparatorProps, MenuSwitch, MenuSwitchProps, Meta, MetaChip, MetaChipProps, MetaProps, MotionLevel, MotionName, MotionPrefs, MotionProvider, MotionProviderProps, NavButton, NavButtonProps, NavRow, NavRowProps, Oklch, OpLine, OpLineProps, Overlay, OverlayProps, PANEL_ROW, PANEL_ROW_HOVER, PUNCTUATION_CODES, PaletteEntry, PaletteIcon, PaletteIconProps, PaletteKeys, PaletteList, PaletteListProps, PaletteNotice, PaletteOption, PaletteOptionProps, PalettePanel, PalettePanelProps, PaletteRow, PaletteRowData, PaletteRowProps, PaletteSection, PanelEmpty, PanelEmptyProps, PanelLoading, PanelLoadingProps, PathDisplay, PathDisplayProvider, PathDisplayProviderProps, PathDisplayScope, PathDisplayScopeProps, Placement, Popover, PopoverProps, PopoverState, PopoverTriggerProps, Presence, type Presence$1 as PresenceHandle, type PresenceOptions, PresenceProps, type PresenceState, PreviewWindow, PreviewWindowProps, REDUCED_FADE, ROW_BUTTON_CLASS, ROW_CLASS, ROW_HOST_CLASS, ROW_TRIGGER_CLASS, Raised, RaisedProps, Rect, ReorderTabState, ReorderTabs, ReorderTabsProps, ResizeDrag, ResizeDragHandleProps, ResizeDragOptions, ResolvedPalette, Restricted, RestrictedProps, Rgb, RollDirection, RollingText, RollingTextProps, RowActionItem, RowActionsMenu, RowActionsMenuProps, RowBadge, RowBadgeProps, RowText, RowTextProps, RuntimeIconsOptions, SHIMMER_MS, SectionLabel, SectionLabelProps, SegmentSpinner, SegmentSpinnerProps, Segmented, SegmentedOption, SegmentedProps, SegmentedRow, SegmentedRowProps, Side, SliderRow, SliderRowProps, SmoothHeight, SmoothHeightProps, SmoothWidth, SmoothWidthProps, SphereShading, StepActions, StepActionsProps, StepFrame, StepFrameProps, Stepper, StepperProps, StepperStep, SurfaceLadder, SwapIcon, SwapIconProps, Swatch, SwatchPicker, SwatchPickerProps, Switch, SwitchGlyph, SwitchGlyphProps, SwitchProps, SwitchRow, SwitchRowProps, SyntaxStyles, SyntaxTokenStyle, TEXTAREA_CLASS, TabDragBounds, TabPill, TabPillProps, Theme, ThemeColors, ThemeDiff, ThemeSeed, ThemeSelect, ThemeSurfaces, ThemeThumb, ThemeThumbProps, TitleText, TitleTextProps, ToggleCard, ToggleCardProps, ToggleSwitch, ToggleSwitchProps, Tooltip, TooltipProps, Tray, TrayProps, ZidaneMark, ZidaneMarkProps, ZoomableImage, type ZoomableImageHandle, type ZoomableImageProps, _resetKeyboardLayout, anchorNudge, applyMotionVars, basename, beginLayoutAnimation, buttonClass, capChroma, clampWidth, compactPath, configureErrorReports, contrastRatio, contrastToCssVars, createCodeHighlighter, createKeyedStore, cssMotionVars, currentMotionPrefs, currentMotionTransition, currentWithFade, defaultPaletteKeys, defaultShikiTheme, depthToCssVars, derivePalette, ensureContrast, errorMessage, errorStacksShown, extendLabels, fadeTransition, focusMenuRow, formatColor, formatPathForCwd, handleMenuKeyDown, hasBrandMark, iconButtonClass, inferAppearance, installRendererErrorHandlers, isDark, isLayoutAnimating, layoutKeyLabel, luminance, menuTransition, mix, motionTransition, motionVars, moveId, oklch, oklchToRgb, oneOf, paletteToCssVars, paletteVerb, panelMotionVars, parseBoolean, parseColor, placeSurface, presetFor, pulseLayout, readDurationVar, readExitMs, readMenuExitMs, readMotionMs, readPanelMs, readPersisted, readRollMs, readableOn, reportRendererError, resetReportedErrors, resolveTheme, returnFocus, rgbToOklch, rollCells, scrollRootOf, seedFromTheme, shikiThemeFor, splitPath, subscribeLayoutAnimating, syncShimmer, themeCssVars, themeStylesheet, tildePath, tildeText, tintedNeutral, toOklch, transitionState, typesStandIn, useAnchoredPosition, useCadencedValue, useCodeHighlight, useDismiss, useDisplayPath, useDocumentAppearance, useEditorEnvironment, useKeyboardLayout, useKeyedValue, useLabels, useLayer, useLightbox, useMenuTransition, useMinuteTick, useMotionLevel, useMotionPrefs, useMotionTransition, useNearViewport, usePersistedState, usePopover, usePresence, useReducedMotion, useResizeDrag, useRowHint, useScrollLock, useSprings, useStaysMounted, useTabDrag, useTabExit, useWithFade, watchRuntimeIcons, withAlpha, withFade, withLightness, withoutTransitions, writePersisted };
|