@tutti-os/workbench-surface 0.0.173 → 0.0.174

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/index.d.ts CHANGED
@@ -608,6 +608,12 @@ interface WorkbenchHostDockEntry {
608
608
  * `launch` keeps clicks on the launch request path even when matching nodes
609
609
  * already exist.
610
610
  */
611
+ /**
612
+ * When false, hides the dock hover-popup "New window" tile even for
613
+ * multi-instance entries. Context-menu "New window" remains available unless
614
+ * the entry is otherwise disabled. Defaults to true.
615
+ */
616
+ allowNewWindowInDockPopup?: boolean;
611
617
  clickBehavior?: "default" | "launch";
612
618
  hoverActions?: readonly WorkbenchHostDockEntryAction[];
613
619
  icon: ReactNode;
@@ -923,4 +929,46 @@ declare function getWorkbenchLayoutFrame(surfaceSize: WorkbenchSize, constraints
923
929
 
924
930
  declare function selectFocusedWorkbenchNode<TData>(state: WorkbenchState<TData>): WorkbenchNode<TData> | null;
925
931
 
926
- export { type CreateWorkbenchNodeInput, type CreateWorkbenchSnapshotFromStateOptions, type WorkbenchContribution, type WorkbenchController, type WorkbenchDebugDiagnostics, type WorkbenchDisplayMode, WorkbenchDockComponentPreviewFrame, type WorkbenchDockComponentPreviewFrameProps, type WorkbenchDockContext, type WorkbenchDockPlacement, type WorkbenchDockPreviewCache, type WorkbenchDockPreviewCacheKey, type WorkbenchDockPreviewCacheKeyResolver, type WorkbenchDockPreviewContent, type WorkbenchFrame, type WorkbenchFullscreenHeaderMode, WorkbenchHost, type WorkbenchHostActivation, type WorkbenchHostActivationTarget, type WorkbenchHostChromeRenderContext, type WorkbenchHostCloseDialogRequest, type WorkbenchHostCloseDialogScope, type WorkbenchHostCloseDialogVariant, type WorkbenchHostCloseEffect, type WorkbenchHostClosePreparationContext, type WorkbenchHostClosePreparer, type WorkbenchHostDockEntry, type WorkbenchHostDockEntryAction, type WorkbenchHostDockEntryBadge, type WorkbenchHostDockEntryDynamicState, type WorkbenchHostDockEntryLaunchBehavior, type WorkbenchHostDockEntryPresentationOverride, type WorkbenchHostDockEntryPresentationOverrides, type WorkbenchHostDockEntryState, type WorkbenchHostDockEntryStateKind, type WorkbenchHostDockEntryStateSource, type WorkbenchHostDockEntryVisibility, type WorkbenchHostDockPopupItemDescriptor, type WorkbenchHostDockPopupItemInput, type WorkbenchHostExternalStateLookupInput, type WorkbenchHostExternalStateSource, type WorkbenchHostHandle, type WorkbenchHostLaunchFramePolicy, type WorkbenchHostLaunchInput, type WorkbenchHostLaunchReason, type WorkbenchHostLaunchRequest, type WorkbenchHostLaunchResult, type WorkbenchHostMissionControlMode, type WorkbenchHostMissionControlProps, type WorkbenchHostMultiInstanceStrategy, type WorkbenchHostNodeBodyContext, type WorkbenchHostNodeCloseDecision, type WorkbenchHostNodeCloseRequest, type WorkbenchHostNodeData, type WorkbenchHostNodeDefinition, type WorkbenchHostNodeHeaderContext, type WorkbenchHostNodeHeaderFrameRenderKey, type WorkbenchHostNodeHeaderWindowActions, type WorkbenchHostNodeIdentityInput, type WorkbenchHostNodeInstanceStrategy, type WorkbenchHostNodeMinimizedDockCapability, type WorkbenchHostNodeWindowCapabilities, type WorkbenchHostProjectedNode, type WorkbenchHostProjectedNodeSubject, type WorkbenchHostProps, type WorkbenchHostSingleInstanceStrategy, type WorkbenchHostSnapshotRepository, type WorkbenchHostWindowCloseEffectContext, type WorkbenchLayoutConstraints, type WorkbenchLayoutConstraintsInput, type WorkbenchLayoutPreset, type WorkbenchMissionControlAdapter, type WorkbenchMissionControlMode, type WorkbenchMissionControlSnapshot, type WorkbenchNode, type WorkbenchNodeRenderFrame, type WorkbenchNodeSizeConstraints, type WorkbenchQuickLayoutTarget, type WorkbenchRenderNode, type WorkbenchRenderNodeContext, type WorkbenchRenderWindowActions, type WorkbenchRenderWindowHeader, type WorkbenchResolveFullscreenHeaderMode, type WorkbenchResolveWindowChromeMode, type WorkbenchResolveWindowChromeModeContext, type WorkbenchSafeArea, type WorkbenchSize, type WorkbenchState, WorkbenchSurface, type WorkbenchSurfacePresentation, type WorkbenchSurfaceProps, type WorkbenchSurfaceWallpaper, type WorkbenchSurfaceWallpaperFit, type WorkbenchWindowActionContext, WorkbenchWindowChromeI18nRuntime, type WorkbenchWindowChromeMode, type WorkbenchWindowHeaderContext, type WorkbenchWindowManagementConfig, createWorkbenchController, createWorkbenchHostLaunchedNodeId, createWorkbenchHostProjectedNodeId, createWorkbenchNode, createWorkbenchNodeFromSnapshot, createWorkbenchSnapshotFromState, createWorkbenchStateFromSnapshot, getWorkbenchLayoutFrame, isEditableShortcutTarget, resolveWorkbenchHostPrepareClose, selectFocusedWorkbenchNode, useWorkbenchSelector, workbenchFocusInputActivationType };
932
+ type WorkbenchHostDockNodeState = "closed" | "minimized" | "open";
933
+ interface ResolvedWorkbenchHostDockEntry {
934
+ anchorKey: string;
935
+ dockNodeState: WorkbenchHostDockNodeState;
936
+ entry: WorkbenchHostDockEntry;
937
+ hasMatchingNodes: boolean;
938
+ matchedNodes: WorkbenchNode<WorkbenchHostNodeData>[];
939
+ sectionBreakBefore: boolean;
940
+ }
941
+ type WorkbenchHostDockClickResolution = {
942
+ actionId: string;
943
+ kind: "action";
944
+ } | {
945
+ kind: "blocked";
946
+ } | {
947
+ kind: "focus-node";
948
+ nodeId: string;
949
+ } | {
950
+ kind: "launch";
951
+ } | {
952
+ kind: "open-popup";
953
+ };
954
+ declare function matchWorkbenchDockEntryNode(entry: WorkbenchHostDockEntry, node: WorkbenchNode<WorkbenchHostNodeData>): boolean;
955
+ declare function resolveWorkbenchDockEntries(input: {
956
+ dockEntries: readonly WorkbenchHostDockEntry[];
957
+ minimizedNodeIds: ReadonlySet<string>;
958
+ nodes: readonly WorkbenchNode<WorkbenchHostNodeData>[];
959
+ }): ResolvedWorkbenchHostDockEntry[];
960
+ declare function resolveWorkbenchDockEntryClick(input: {
961
+ entry: WorkbenchHostDockEntry;
962
+ instanceMode?: WorkbenchHostNodeInstanceStrategy["mode"];
963
+ matchedNodes: readonly WorkbenchNode<WorkbenchHostNodeData>[];
964
+ }): WorkbenchHostDockClickResolution;
965
+ declare function canCreateNewWindow(entry: WorkbenchHostDockEntry, instanceMode?: WorkbenchHostNodeInstanceStrategy["mode"]): boolean;
966
+ declare function canCreateNewWindowInDockPopup(entry: WorkbenchHostDockEntry, instanceMode?: WorkbenchHostNodeInstanceStrategy["mode"]): boolean;
967
+ declare function createDockNewWindowLaunchPayload(launchPayload?: unknown): Record<string, unknown>;
968
+ interface CreateMultiInstanceDockEntryOptionsInput {
969
+ allowNewWindowInDockPopup?: boolean;
970
+ }
971
+ declare function createMultiInstanceDockEntryOptions(launchPayload?: unknown, input?: CreateMultiInstanceDockEntryOptionsInput): Pick<WorkbenchHostDockEntry, "allowNewWindowInDockPopup" | "instanceMode" | "launchBehavior" | "launchPayload" | "newWindowLaunchPayload">;
972
+ declare function resolveWorkbenchDockCountBadge(activeNodeCount: number): WorkbenchHostDockEntry["badge"];
973
+
974
+ export { type CreateWorkbenchNodeInput, type CreateWorkbenchSnapshotFromStateOptions, type ResolvedWorkbenchHostDockEntry, type WorkbenchContribution, type WorkbenchController, type WorkbenchDebugDiagnostics, type WorkbenchDisplayMode, WorkbenchDockComponentPreviewFrame, type WorkbenchDockComponentPreviewFrameProps, type WorkbenchDockContext, type WorkbenchDockPlacement, type WorkbenchDockPreviewCache, type WorkbenchDockPreviewCacheKey, type WorkbenchDockPreviewCacheKeyResolver, type WorkbenchDockPreviewContent, type WorkbenchFrame, type WorkbenchFullscreenHeaderMode, WorkbenchHost, type WorkbenchHostActivation, type WorkbenchHostActivationTarget, type WorkbenchHostChromeRenderContext, type WorkbenchHostCloseDialogRequest, type WorkbenchHostCloseDialogScope, type WorkbenchHostCloseDialogVariant, type WorkbenchHostCloseEffect, type WorkbenchHostClosePreparationContext, type WorkbenchHostClosePreparer, type WorkbenchHostDockClickResolution, type WorkbenchHostDockEntry, type WorkbenchHostDockEntryAction, type WorkbenchHostDockEntryBadge, type WorkbenchHostDockEntryDynamicState, type WorkbenchHostDockEntryLaunchBehavior, type WorkbenchHostDockEntryPresentationOverride, type WorkbenchHostDockEntryPresentationOverrides, type WorkbenchHostDockEntryState, type WorkbenchHostDockEntryStateKind, type WorkbenchHostDockEntryStateSource, type WorkbenchHostDockEntryVisibility, type WorkbenchHostDockNodeState, type WorkbenchHostDockPopupItemDescriptor, type WorkbenchHostDockPopupItemInput, type WorkbenchHostExternalStateLookupInput, type WorkbenchHostExternalStateSource, type WorkbenchHostHandle, type WorkbenchHostLaunchFramePolicy, type WorkbenchHostLaunchInput, type WorkbenchHostLaunchReason, type WorkbenchHostLaunchRequest, type WorkbenchHostLaunchResult, type WorkbenchHostMissionControlMode, type WorkbenchHostMissionControlProps, type WorkbenchHostMultiInstanceStrategy, type WorkbenchHostNodeBodyContext, type WorkbenchHostNodeCloseDecision, type WorkbenchHostNodeCloseRequest, type WorkbenchHostNodeData, type WorkbenchHostNodeDefinition, type WorkbenchHostNodeHeaderContext, type WorkbenchHostNodeHeaderFrameRenderKey, type WorkbenchHostNodeHeaderWindowActions, type WorkbenchHostNodeIdentityInput, type WorkbenchHostNodeInstanceStrategy, type WorkbenchHostNodeMinimizedDockCapability, type WorkbenchHostNodeWindowCapabilities, type WorkbenchHostProjectedNode, type WorkbenchHostProjectedNodeSubject, type WorkbenchHostProps, type WorkbenchHostSingleInstanceStrategy, type WorkbenchHostSnapshotRepository, type WorkbenchHostWindowCloseEffectContext, type WorkbenchLayoutConstraints, type WorkbenchLayoutConstraintsInput, type WorkbenchLayoutPreset, type WorkbenchMissionControlAdapter, type WorkbenchMissionControlMode, type WorkbenchMissionControlSnapshot, type WorkbenchNode, type WorkbenchNodeRenderFrame, type WorkbenchNodeSizeConstraints, type WorkbenchQuickLayoutTarget, type WorkbenchRenderNode, type WorkbenchRenderNodeContext, type WorkbenchRenderWindowActions, type WorkbenchRenderWindowHeader, type WorkbenchResolveFullscreenHeaderMode, type WorkbenchResolveWindowChromeMode, type WorkbenchResolveWindowChromeModeContext, type WorkbenchSafeArea, type WorkbenchSize, type WorkbenchState, WorkbenchSurface, type WorkbenchSurfacePresentation, type WorkbenchSurfaceProps, type WorkbenchSurfaceWallpaper, type WorkbenchSurfaceWallpaperFit, type WorkbenchWindowActionContext, WorkbenchWindowChromeI18nRuntime, type WorkbenchWindowChromeMode, type WorkbenchWindowHeaderContext, type WorkbenchWindowManagementConfig, canCreateNewWindow, canCreateNewWindowInDockPopup, createDockNewWindowLaunchPayload, createMultiInstanceDockEntryOptions, createWorkbenchController, createWorkbenchHostLaunchedNodeId, createWorkbenchHostProjectedNodeId, createWorkbenchNode, createWorkbenchNodeFromSnapshot, createWorkbenchSnapshotFromState, createWorkbenchStateFromSnapshot, getWorkbenchLayoutFrame, isEditableShortcutTarget, matchWorkbenchDockEntryNode, resolveWorkbenchDockCountBadge, resolveWorkbenchDockEntries, resolveWorkbenchDockEntryClick, resolveWorkbenchHostPrepareClose, selectFocusedWorkbenchNode, useWorkbenchSelector, workbenchFocusInputActivationType };
package/dist/index.js CHANGED
@@ -8094,6 +8094,40 @@ function resolveWorkbenchDockEntryClick(input) {
8094
8094
  }
8095
8095
  return { kind: "launch" };
8096
8096
  }
8097
+ function canCreateNewWindow(entry, instanceMode) {
8098
+ const stateKind = entry.state?.kind ?? "enabled";
8099
+ if (stateKind === "disabled" || stateKind === "loading" || stateKind === "unavailable" || (entry.launchBehavior ?? "enabled") !== "enabled") {
8100
+ return false;
8101
+ }
8102
+ return instanceMode === "multi" || entry.newWindowLaunchPayload !== void 0;
8103
+ }
8104
+ function canCreateNewWindowInDockPopup(entry, instanceMode) {
8105
+ if (entry.allowNewWindowInDockPopup === false) {
8106
+ return false;
8107
+ }
8108
+ return canCreateNewWindow(entry, instanceMode);
8109
+ }
8110
+ function createDockNewWindowLaunchPayload(launchPayload) {
8111
+ if (launchPayload && typeof launchPayload === "object" && !Array.isArray(launchPayload)) {
8112
+ return {
8113
+ ...launchPayload,
8114
+ openInNewWindow: true
8115
+ };
8116
+ }
8117
+ return { openInNewWindow: true };
8118
+ }
8119
+ function createMultiInstanceDockEntryOptions(launchPayload, input = {}) {
8120
+ return {
8121
+ ...input.allowNewWindowInDockPopup === false ? { allowNewWindowInDockPopup: false } : {},
8122
+ instanceMode: "single",
8123
+ launchBehavior: "enabled",
8124
+ ...launchPayload === void 0 ? {} : { launchPayload },
8125
+ newWindowLaunchPayload: createDockNewWindowLaunchPayload(launchPayload)
8126
+ };
8127
+ }
8128
+ function resolveWorkbenchDockCountBadge(activeNodeCount) {
8129
+ return activeNodeCount > 1 ? { kind: "count", value: activeNodeCount } : void 0;
8130
+ }
8097
8131
  function isWorkbenchDockEntryBlocked(entry) {
8098
8132
  const stateKind = entry.state?.kind ?? "enabled";
8099
8133
  return stateKind === "disabled" || stateKind === "loading" || stateKind === "unavailable" || (entry.launchBehavior ?? "enabled") !== "enabled";
@@ -9377,9 +9411,11 @@ function WorkbenchHostDockPopup({
9377
9411
  resolveDockPreviewCacheKey: resolveDockPreviewCacheKey2,
9378
9412
  showAllWindowsLabel,
9379
9413
  showCreateNew,
9414
+ showCreateNewInContextMenu,
9380
9415
  showOpen,
9381
9416
  variant
9382
9417
  }) {
9418
+ const resolvedShowCreateNewInContextMenu = showCreateNewInContextMenu ?? showCreateNew;
9383
9419
  const resolvedLabelMode = labelMode ?? "hover-overlay";
9384
9420
  const resolvedVariant = variant ?? "default";
9385
9421
  const isMinimizedStack = resolvedVariant === "minimized-stack";
@@ -9858,7 +9894,7 @@ function WorkbenchHostDockPopup({
9858
9894
  children: isContextMenu ? /* @__PURE__ */ jsx11(
9859
9895
  WorkbenchHostDockContextMenu,
9860
9896
  {
9861
- canCreateNew: showCreateNew !== false,
9897
+ canCreateNew: resolvedShowCreateNewInContextMenu !== false,
9862
9898
  canEnterFullscreen: canEnterFullscreen === true,
9863
9899
  canShowAllWindows: canShowAllWindows === true,
9864
9900
  dockRetention,
@@ -12339,7 +12375,11 @@ function WorkbenchHostDock({
12339
12375
  closePopup();
12340
12376
  },
12341
12377
  quitLabel: i18n.t("dockContextMenu.quit"),
12342
- showCreateNew: canCreateNewWindow(
12378
+ showCreateNew: canCreateNewWindowInDockPopup(
12379
+ popupEntry.entry,
12380
+ dockContextMenuInstanceMode
12381
+ ),
12382
+ showCreateNewInContextMenu: canCreateNewWindow(
12343
12383
  popupEntry.entry,
12344
12384
  dockContextMenuInstanceMode
12345
12385
  ),
@@ -12856,10 +12896,6 @@ function WorkbenchHostDockHoverPanel({
12856
12896
  function resolveDockEntryInstanceMode(entry, nodeDefinitions) {
12857
12897
  return entry.instanceMode ?? nodeDefinitions.get(entry.typeId)?.instance?.mode;
12858
12898
  }
12859
- function canCreateNewWindow(entry, instanceMode) {
12860
- const stateKind = entry.state?.kind ?? "enabled";
12861
- return instanceMode === "multi" && (entry.launchBehavior ?? "enabled") === "enabled" && stateKind !== "disabled" && stateKind !== "loading" && stateKind !== "unavailable";
12862
- }
12863
12899
  function anchorKeyFromPopupEntry(entry) {
12864
12900
  return entry.anchorKey;
12865
12901
  }
@@ -14340,6 +14376,10 @@ export {
14340
14376
  WorkbenchDockComponentPreviewFrame,
14341
14377
  WorkbenchHost,
14342
14378
  WorkbenchSurface,
14379
+ canCreateNewWindow,
14380
+ canCreateNewWindowInDockPopup,
14381
+ createDockNewWindowLaunchPayload,
14382
+ createMultiInstanceDockEntryOptions,
14343
14383
  createWorkbenchController,
14344
14384
  createWorkbenchHostI18nRuntime,
14345
14385
  createWorkbenchHostLaunchedNodeId,
@@ -14351,6 +14391,10 @@ export {
14351
14391
  createWorkbenchWindowChromeI18nRuntime,
14352
14392
  getWorkbenchLayoutFrame,
14353
14393
  isEditableShortcutTarget,
14394
+ matchWorkbenchDockEntryNode,
14395
+ resolveWorkbenchDockCountBadge,
14396
+ resolveWorkbenchDockEntries,
14397
+ resolveWorkbenchDockEntryClick,
14354
14398
  resolveWorkbenchHostPrepareClose,
14355
14399
  selectFocusedWorkbenchNode,
14356
14400
  useWorkbenchSelector,