@tutti-os/workbench-surface 0.0.154 → 0.0.155
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -0
- package/dist/index.d.ts +8 -1
- package/dist/index.js +64 -1
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -61,6 +61,15 @@ Entries may also provide host-owned popup metadata through
|
|
|
61
61
|
`resolvePopupItem(...)` and `capturePopupItemPreview(...)`, plus custom badge
|
|
62
62
|
content when the default count or status shapes are not enough.
|
|
63
63
|
|
|
64
|
+
Component-based dock previews should render their host-owned body through
|
|
65
|
+
`WorkbenchDockComponentPreviewFrame`. The frame owns source-to-viewport
|
|
66
|
+
scaling, clipping, centering, and the non-interactive preview boundary. Preview
|
|
67
|
+
children are decorative and never participate in pointer hit testing; the Dock
|
|
68
|
+
button remains the only interaction owner even if frozen preview markup is
|
|
69
|
+
replaced between pointer events. Popup preview providers receive the canonical
|
|
70
|
+
target size through `item.previewViewport`; use that value instead of duplicating
|
|
71
|
+
Dock card dimensions in a consuming host.
|
|
72
|
+
|
|
64
73
|
Presentation-only changes to merged Dock entries belong in
|
|
65
74
|
`dockEntryPresentationOverrides`. `WorkbenchHost` applies these overrides by
|
|
66
75
|
entry id after contributions and explicit entries are merged, preserving Dock
|
package/dist/index.d.ts
CHANGED
|
@@ -893,10 +893,17 @@ interface WorkbenchHostNodeIdentityInput {
|
|
|
893
893
|
declare function createWorkbenchHostProjectedNodeId(input: WorkbenchHostNodeIdentityInput): string;
|
|
894
894
|
declare function createWorkbenchHostLaunchedNodeId(input: WorkbenchHostNodeIdentityInput): string;
|
|
895
895
|
|
|
896
|
+
interface WorkbenchDockComponentPreviewFrameProps {
|
|
897
|
+
children?: ReactNode;
|
|
898
|
+
sourceSize: WorkbenchSize;
|
|
899
|
+
viewport: WorkbenchSize;
|
|
900
|
+
}
|
|
901
|
+
declare function WorkbenchDockComponentPreviewFrame({ children, sourceSize, viewport }: WorkbenchDockComponentPreviewFrameProps): ReactNode;
|
|
902
|
+
|
|
896
903
|
declare function useWorkbenchSelector<TData, TResult>(selector: (state: WorkbenchState<TData>) => TResult): TResult;
|
|
897
904
|
|
|
898
905
|
declare function getWorkbenchLayoutFrame(surfaceSize: WorkbenchSize, constraints?: WorkbenchLayoutConstraints): WorkbenchFrame;
|
|
899
906
|
|
|
900
907
|
declare function selectFocusedWorkbenchNode<TData>(state: WorkbenchState<TData>): WorkbenchNode<TData> | null;
|
|
901
908
|
|
|
902
|
-
export { type CreateWorkbenchNodeInput, type CreateWorkbenchSnapshotFromStateOptions, type WorkbenchContribution, type WorkbenchController, type WorkbenchDebugDiagnostics, type WorkbenchDisplayMode, 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 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 };
|
|
909
|
+
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 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 };
|
package/dist/index.js
CHANGED
|
@@ -9213,6 +9213,12 @@ function resolveDockPopupVerticalClampOffsetPx(input) {
|
|
|
9213
9213
|
// src/host/WorkbenchHostDockPopup.tsx
|
|
9214
9214
|
import { Fragment as Fragment5, jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
9215
9215
|
var dockPopupCardWidthPx = 165;
|
|
9216
|
+
var dockPopupCardHeightPx = 103;
|
|
9217
|
+
var dockPopupPreviewInsetPx = 4;
|
|
9218
|
+
var workbenchHostDockPopupPreviewViewport = Object.freeze({
|
|
9219
|
+
height: dockPopupCardHeightPx - dockPopupPreviewInsetPx * 2,
|
|
9220
|
+
width: dockPopupCardWidthPx - dockPopupPreviewInsetPx * 2
|
|
9221
|
+
});
|
|
9216
9222
|
var dockPopupGridGapPx = 8;
|
|
9217
9223
|
var dockPopupPanelPaddingInlinePx = 12;
|
|
9218
9224
|
var dockPopupPanelBorderInlinePx = 2;
|
|
@@ -12137,7 +12143,8 @@ function WorkbenchHostDock({
|
|
|
12137
12143
|
host,
|
|
12138
12144
|
isFocused: context.focusedNodeId === node.id,
|
|
12139
12145
|
isMinimized: minimizedNodeIDs.has(node.id),
|
|
12140
|
-
node
|
|
12146
|
+
node,
|
|
12147
|
+
previewViewport: workbenchHostDockPopupPreviewViewport
|
|
12141
12148
|
};
|
|
12142
12149
|
const descriptor = popupEntry.entry.resolvePopupItem?.(item) ?? {};
|
|
12143
12150
|
const descriptorPreview = descriptor.preview ?? popupEntry.entry.providePopupItemPreview?.(item) ?? null;
|
|
@@ -14159,7 +14166,63 @@ function WorkbenchHost({
|
|
|
14159
14166
|
}
|
|
14160
14167
|
);
|
|
14161
14168
|
}
|
|
14169
|
+
|
|
14170
|
+
// src/react/WorkbenchDockComponentPreviewFrame.tsx
|
|
14171
|
+
import { jsx as jsx16 } from "react/jsx-runtime";
|
|
14172
|
+
function WorkbenchDockComponentPreviewFrame({
|
|
14173
|
+
children,
|
|
14174
|
+
sourceSize,
|
|
14175
|
+
viewport
|
|
14176
|
+
}) {
|
|
14177
|
+
const sourceHeight = Math.max(1, sourceSize.height);
|
|
14178
|
+
const sourceWidth = Math.max(1, sourceSize.width);
|
|
14179
|
+
const viewportHeight = Math.max(1, viewport.height);
|
|
14180
|
+
const viewportWidth = Math.max(1, viewport.width);
|
|
14181
|
+
const scale = Math.min(
|
|
14182
|
+
viewportWidth / sourceWidth,
|
|
14183
|
+
viewportHeight / sourceHeight
|
|
14184
|
+
);
|
|
14185
|
+
const frameStyle = {
|
|
14186
|
+
background: "transparent",
|
|
14187
|
+
borderRadius: "0.375rem",
|
|
14188
|
+
display: "block",
|
|
14189
|
+
height: `${viewportHeight}px`,
|
|
14190
|
+
overflow: "hidden",
|
|
14191
|
+
pointerEvents: "none",
|
|
14192
|
+
position: "relative",
|
|
14193
|
+
width: `${viewportWidth}px`
|
|
14194
|
+
};
|
|
14195
|
+
const contentStyle = {
|
|
14196
|
+
display: "block",
|
|
14197
|
+
height: `${sourceHeight}px`,
|
|
14198
|
+
left: "50%",
|
|
14199
|
+
overflow: "hidden",
|
|
14200
|
+
pointerEvents: "none",
|
|
14201
|
+
position: "absolute",
|
|
14202
|
+
top: "50%",
|
|
14203
|
+
transform: `translate(-50%, -50%) scale(${scale})`,
|
|
14204
|
+
transformOrigin: "center",
|
|
14205
|
+
width: `${sourceWidth}px`
|
|
14206
|
+
};
|
|
14207
|
+
return /* @__PURE__ */ jsx16(
|
|
14208
|
+
"span",
|
|
14209
|
+
{
|
|
14210
|
+
"aria-hidden": "true",
|
|
14211
|
+
"data-workbench-dock-component-preview-frame": "true",
|
|
14212
|
+
style: frameStyle,
|
|
14213
|
+
children: /* @__PURE__ */ jsx16(
|
|
14214
|
+
"span",
|
|
14215
|
+
{
|
|
14216
|
+
"data-workbench-dock-component-preview-content": "true",
|
|
14217
|
+
style: contentStyle,
|
|
14218
|
+
children
|
|
14219
|
+
}
|
|
14220
|
+
)
|
|
14221
|
+
}
|
|
14222
|
+
);
|
|
14223
|
+
}
|
|
14162
14224
|
export {
|
|
14225
|
+
WorkbenchDockComponentPreviewFrame,
|
|
14163
14226
|
WorkbenchHost,
|
|
14164
14227
|
WorkbenchSurface,
|
|
14165
14228
|
createWorkbenchController,
|