@tutti-os/workbench-surface 0.0.234 → 0.0.236

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
@@ -954,6 +954,9 @@ declare function getWorkbenchLayoutFrame(surfaceSize: WorkbenchSize, constraints
954
954
 
955
955
  declare function selectFocusedWorkbenchNode<TData>(state: WorkbenchState<TData>): WorkbenchNode<TData> | null;
956
956
 
957
+ declare function selectVisuallyExposedWorkbenchNodeIDs<TData>(state: WorkbenchState<TData>): ReadonlySet<string>;
958
+ declare function selectWorkbenchNodeIsVisuallyExposed<TData>(state: WorkbenchState<TData>, nodeID: string): boolean;
959
+
957
960
  type WorkbenchHostDockNodeState = "closed" | "minimized" | "open";
958
961
  interface ResolvedWorkbenchHostDockEntry {
959
962
  anchorKey: string;
@@ -996,4 +999,4 @@ interface CreateMultiInstanceDockEntryOptionsInput {
996
999
  declare function createMultiInstanceDockEntryOptions(launchPayload?: unknown, input?: CreateMultiInstanceDockEntryOptionsInput): Pick<WorkbenchHostDockEntry, "allowNewWindowInDockPopup" | "instanceMode" | "launchBehavior" | "launchPayload" | "newWindowLaunchPayload">;
997
1000
  declare function resolveWorkbenchDockCountBadge(activeNodeCount: number): WorkbenchHostDockEntry["badge"];
998
1001
 
999
- 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 WorkbenchNodePreviewImageCapture, type WorkbenchNodePreviewImages, type WorkbenchNodePreviewImagesCapture, type WorkbenchNodeRenderFrame, type WorkbenchNodeSizeConstraints, type WorkbenchQuickLayoutTarget, type WorkbenchRenderNode, type WorkbenchRenderNodeContext, type WorkbenchRenderWindowActions, type WorkbenchRenderWindowHeader, type WorkbenchResolveFullscreenHeaderMode, type WorkbenchResolveWindowChromeMode, type WorkbenchResolveWindowChromeModeContext, type WorkbenchResolveWindowHeaderPresentation, type WorkbenchSafeArea, type WorkbenchSize, type WorkbenchState, WorkbenchSurface, type WorkbenchSurfacePresentation, type WorkbenchSurfaceProps, type WorkbenchSurfaceWallpaper, type WorkbenchSurfaceWallpaperFit, type WorkbenchWindowActionContext, WorkbenchWindowChromeI18nRuntime, type WorkbenchWindowChromeMode, type WorkbenchWindowHeaderContext, type WorkbenchWindowHeaderPresentation, type WorkbenchWindowManagementConfig, canCreateNewWindow, canCreateNewWindowInDockPopup, createDockNewWindowLaunchPayload, createMultiInstanceDockEntryOptions, createWorkbenchController, createWorkbenchHostLaunchedNodeId, createWorkbenchHostProjectedNodeId, createWorkbenchNode, createWorkbenchNodeFromSnapshot, createWorkbenchSnapshotFromState, createWorkbenchSnapshotLayoutBasis, createWorkbenchStateFromSnapshot, getWorkbenchLayoutFrame, isEditableShortcutTarget, matchWorkbenchDockEntryNode, resolveWorkbenchDockCountBadge, resolveWorkbenchDockEntries, resolveWorkbenchDockEntryClick, resolveWorkbenchHostPrepareClose, selectFocusedWorkbenchNode, useWorkbenchSelector, workbenchFocusInputActivationType };
1002
+ 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 WorkbenchNodePreviewImageCapture, type WorkbenchNodePreviewImages, type WorkbenchNodePreviewImagesCapture, type WorkbenchNodeRenderFrame, type WorkbenchNodeSizeConstraints, type WorkbenchQuickLayoutTarget, type WorkbenchRenderNode, type WorkbenchRenderNodeContext, type WorkbenchRenderWindowActions, type WorkbenchRenderWindowHeader, type WorkbenchResolveFullscreenHeaderMode, type WorkbenchResolveWindowChromeMode, type WorkbenchResolveWindowChromeModeContext, type WorkbenchResolveWindowHeaderPresentation, type WorkbenchSafeArea, type WorkbenchSize, type WorkbenchState, WorkbenchSurface, type WorkbenchSurfacePresentation, type WorkbenchSurfaceProps, type WorkbenchSurfaceWallpaper, type WorkbenchSurfaceWallpaperFit, type WorkbenchWindowActionContext, WorkbenchWindowChromeI18nRuntime, type WorkbenchWindowChromeMode, type WorkbenchWindowHeaderContext, type WorkbenchWindowHeaderPresentation, type WorkbenchWindowManagementConfig, canCreateNewWindow, canCreateNewWindowInDockPopup, createDockNewWindowLaunchPayload, createMultiInstanceDockEntryOptions, createWorkbenchController, createWorkbenchHostLaunchedNodeId, createWorkbenchHostProjectedNodeId, createWorkbenchNode, createWorkbenchNodeFromSnapshot, createWorkbenchSnapshotFromState, createWorkbenchSnapshotLayoutBasis, createWorkbenchStateFromSnapshot, getWorkbenchLayoutFrame, isEditableShortcutTarget, matchWorkbenchDockEntryNode, resolveWorkbenchDockCountBadge, resolveWorkbenchDockEntries, resolveWorkbenchDockEntryClick, resolveWorkbenchHostPrepareClose, selectFocusedWorkbenchNode, selectVisuallyExposedWorkbenchNodeIDs, selectWorkbenchNodeIsVisuallyExposed, useWorkbenchSelector, workbenchFocusInputActivationType };
package/dist/index.js CHANGED
@@ -15391,6 +15391,120 @@ function WorkbenchDockComponentPreviewFrame({
15391
15391
  }
15392
15392
  );
15393
15393
  }
15394
+
15395
+ // src/core/visualOcclusion.ts
15396
+ var exposedNodeIDsByState = /* @__PURE__ */ new WeakMap();
15397
+ function selectVisuallyExposedWorkbenchNodeIDs(state) {
15398
+ const cached = exposedNodeIDsByState.get(state);
15399
+ if (cached) {
15400
+ return cached;
15401
+ }
15402
+ const nodeByID = new Map(state.nodes.map((node) => [node.id, node]));
15403
+ const stackedIDs = new Set(state.nodeStack);
15404
+ const orderedNodes = [
15405
+ ...state.nodes.filter((node) => !stackedIDs.has(node.id)),
15406
+ ...state.nodeStack.flatMap((nodeID) => {
15407
+ const node = nodeByID.get(nodeID);
15408
+ return node ? [node] : [];
15409
+ })
15410
+ ];
15411
+ const surfaceFrame = {
15412
+ x: 0,
15413
+ y: 0,
15414
+ width: state.surfaceSize.width,
15415
+ height: state.surfaceSize.height
15416
+ };
15417
+ const exposedNodeIDs = /* @__PURE__ */ new Set();
15418
+ orderedNodes.forEach((node, nodeIndex) => {
15419
+ if (node.isMinimized) {
15420
+ return;
15421
+ }
15422
+ const visibleFrame = intersectFrames(node.frame, surfaceFrame);
15423
+ if (!visibleFrame) {
15424
+ return;
15425
+ }
15426
+ let uncoveredFrames = [visibleFrame];
15427
+ for (let occluderIndex = nodeIndex + 1; occluderIndex < orderedNodes.length && uncoveredFrames.length > 0; occluderIndex += 1) {
15428
+ const occluder = orderedNodes[occluderIndex];
15429
+ if (!occluder || occluder.isMinimized) {
15430
+ continue;
15431
+ }
15432
+ uncoveredFrames = uncoveredFrames.flatMap(
15433
+ (frame) => subtractFrame(frame, occluder.frame)
15434
+ );
15435
+ }
15436
+ if (uncoveredFrames.length > 0) {
15437
+ exposedNodeIDs.add(node.id);
15438
+ }
15439
+ });
15440
+ exposedNodeIDsByState.set(state, exposedNodeIDs);
15441
+ return exposedNodeIDs;
15442
+ }
15443
+ function selectWorkbenchNodeIsVisuallyExposed(state, nodeID) {
15444
+ return selectVisuallyExposedWorkbenchNodeIDs(state).has(nodeID);
15445
+ }
15446
+ function intersectFrames(left, right) {
15447
+ const x = Math.max(left.x, right.x);
15448
+ const y = Math.max(left.y, right.y);
15449
+ const rightEdge = Math.min(
15450
+ left.x + Math.max(0, left.width),
15451
+ right.x + Math.max(0, right.width)
15452
+ );
15453
+ const bottomEdge = Math.min(
15454
+ left.y + Math.max(0, left.height),
15455
+ right.y + Math.max(0, right.height)
15456
+ );
15457
+ if (rightEdge <= x || bottomEdge <= y) {
15458
+ return null;
15459
+ }
15460
+ return {
15461
+ x,
15462
+ y,
15463
+ width: rightEdge - x,
15464
+ height: bottomEdge - y
15465
+ };
15466
+ }
15467
+ function subtractFrame(source, occluder) {
15468
+ const covered = intersectFrames(source, occluder);
15469
+ if (!covered) {
15470
+ return [source];
15471
+ }
15472
+ const sourceRight = source.x + source.width;
15473
+ const sourceBottom = source.y + source.height;
15474
+ const coveredRight = covered.x + covered.width;
15475
+ const coveredBottom = covered.y + covered.height;
15476
+ const remaining = [];
15477
+ pushFrame(remaining, {
15478
+ x: source.x,
15479
+ y: source.y,
15480
+ width: source.width,
15481
+ height: covered.y - source.y
15482
+ });
15483
+ pushFrame(remaining, {
15484
+ x: source.x,
15485
+ y: coveredBottom,
15486
+ width: source.width,
15487
+ height: sourceBottom - coveredBottom
15488
+ });
15489
+ pushFrame(remaining, {
15490
+ x: source.x,
15491
+ y: covered.y,
15492
+ width: covered.x - source.x,
15493
+ height: covered.height
15494
+ });
15495
+ pushFrame(remaining, {
15496
+ x: coveredRight,
15497
+ y: covered.y,
15498
+ width: sourceRight - coveredRight,
15499
+ height: covered.height
15500
+ });
15501
+ return remaining;
15502
+ }
15503
+ function pushFrame(frames, frame) {
15504
+ if (frame.width > 0 && frame.height > 0) {
15505
+ frames.push(frame);
15506
+ }
15507
+ }
15394
15508
  export {
15395
15509
  WorkbenchDockComponentPreviewFrame,
15396
15510
  WorkbenchHost,
@@ -15417,6 +15531,8 @@ export {
15417
15531
  resolveWorkbenchDockEntryClick,
15418
15532
  resolveWorkbenchHostPrepareClose,
15419
15533
  selectFocusedWorkbenchNode,
15534
+ selectVisuallyExposedWorkbenchNodeIDs,
15535
+ selectWorkbenchNodeIsVisuallyExposed,
15420
15536
  useWorkbenchSelector,
15421
15537
  workbenchFocusInputActivationType,
15422
15538
  workbenchHostI18nResources,