@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 +4 -1
- package/dist/index.js +116 -0
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
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,
|