@tutti-os/workbench-surface 0.0.168 → 0.0.170
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 -1
- package/dist/index.d.ts +18 -1
- package/dist/index.js +355 -240
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -43,12 +43,20 @@ When a node body or header needs host-owned business state, pass an
|
|
|
43
43
|
`externalNodeState` and `externalWorkspaceState`. If the source exposes
|
|
44
44
|
`subscribe(...)`, the host re-renders when that subscription notifies.
|
|
45
45
|
|
|
46
|
-
Node body
|
|
46
|
+
Node body and header contexts expose `isDragging` and `isResizing`. The Workbench
|
|
47
47
|
shell continues applying live frame geometry during direct manipulation, while
|
|
48
48
|
an expensive body adapter may use these flags to suppress frame-only renders
|
|
49
49
|
until the interaction settles. The adapter must still observe both interaction
|
|
50
50
|
transitions so the final committed frame reaches responsive body layout.
|
|
51
51
|
|
|
52
|
+
Headers keep live frame renders by default. A definition may provide
|
|
53
|
+
`getHeaderFrameRenderKey(context)` when several intermediate frames produce the
|
|
54
|
+
same visible header layout. During drag or resize, equal primitive keys skip
|
|
55
|
+
`renderHeader`; changes to node data, external state, focus, or interaction
|
|
56
|
+
state still render. Call `context.windowActions.getFrame()` inside actions that
|
|
57
|
+
need execution-time geometry instead of closing over a frame omitted from the
|
|
58
|
+
key.
|
|
59
|
+
|
|
52
60
|
Host-owned business instances are represented with `projectedNodes`. A
|
|
53
61
|
projected node tells the workbench that a shell should currently exist for a
|
|
54
62
|
host-owned instance; the workbench reconciles that presence with snapshot
|
package/dist/index.d.ts
CHANGED
|
@@ -326,11 +326,16 @@ interface WorkbenchWindowHeaderContext<TData = unknown> {
|
|
|
326
326
|
node: WorkbenchNode<TData>;
|
|
327
327
|
controller: WorkbenchController<TData>;
|
|
328
328
|
surfaceSize: WorkbenchSize;
|
|
329
|
+
isDragging: boolean;
|
|
330
|
+
isFocused: boolean;
|
|
331
|
+
isResizing: boolean;
|
|
329
332
|
genie: {
|
|
330
333
|
minimizeNodeToAnchor(nodeID: string, minimize?: () => void): void;
|
|
331
334
|
};
|
|
332
335
|
defaultActions: ReactNode;
|
|
333
336
|
dragHandleProps: WorkbenchWindowHeaderDragHandleProps;
|
|
337
|
+
/** Stable while the non-node inputs used to build header chrome are unchanged. */
|
|
338
|
+
renderRevision: object;
|
|
334
339
|
}
|
|
335
340
|
type WorkbenchRenderNode<TData = unknown> = (context: WorkbenchRenderNodeContext<TData>) => ReactNode;
|
|
336
341
|
type WorkbenchRenderWindowActions<TData = unknown> = (context: WorkbenchWindowActionContext<TData>) => ReactNode;
|
|
@@ -707,6 +712,7 @@ interface WorkbenchHostNodeHeaderWindowActions {
|
|
|
707
712
|
applyQuickLayout(target: WorkbenchQuickLayoutTarget): void;
|
|
708
713
|
close(): void;
|
|
709
714
|
focus(): void;
|
|
715
|
+
getFrame(): WorkbenchFrame;
|
|
710
716
|
minimize(): void;
|
|
711
717
|
resize(frame: WorkbenchFrame): void;
|
|
712
718
|
toggleDisplayMode(): void;
|
|
@@ -720,7 +726,9 @@ interface WorkbenchHostNodeHeaderContext<TExternalNodeState = unknown, TExternal
|
|
|
720
726
|
externalWorkspaceState: TExternalWorkspaceState;
|
|
721
727
|
instanceId: string;
|
|
722
728
|
instanceKey?: string | null;
|
|
729
|
+
isDragging: boolean;
|
|
723
730
|
isFocused: boolean;
|
|
731
|
+
isResizing: boolean;
|
|
724
732
|
node: WorkbenchNode<WorkbenchHostNodeData>;
|
|
725
733
|
surfaceSize: WorkbenchSize;
|
|
726
734
|
windowActions: WorkbenchHostNodeHeaderWindowActions;
|
|
@@ -732,6 +740,10 @@ type WorkbenchHostBodyRenderer<TExternalNodeState = unknown, TExternalWorkspaceS
|
|
|
732
740
|
type WorkbenchHostHeaderRenderer<TExternalNodeState = unknown, TExternalWorkspaceState = unknown> = {
|
|
733
741
|
bivarianceHack(context: WorkbenchHostNodeHeaderContext<TExternalNodeState, TExternalWorkspaceState>): ReactNode;
|
|
734
742
|
}["bivarianceHack"];
|
|
743
|
+
type WorkbenchHostNodeHeaderFrameRenderKey = boolean | number | string | null;
|
|
744
|
+
type WorkbenchHostHeaderFrameRenderKeyResolver<TExternalNodeState = unknown, TExternalWorkspaceState = unknown> = {
|
|
745
|
+
bivarianceHack(context: WorkbenchHostNodeHeaderContext<TExternalNodeState, TExternalWorkspaceState>): WorkbenchHostNodeHeaderFrameRenderKey;
|
|
746
|
+
}["bivarianceHack"];
|
|
735
747
|
type WorkbenchHostWindowCloseEffectResolver<TExternalNodeState = unknown, TExternalWorkspaceState = unknown> = {
|
|
736
748
|
bivarianceHack(context: WorkbenchHostWindowCloseEffectContext<TExternalNodeState, TExternalWorkspaceState>): Promise<WorkbenchHostCloseEffect | null | void> | WorkbenchHostCloseEffect | null | void;
|
|
737
749
|
}["bivarianceHack"];
|
|
@@ -740,6 +752,11 @@ interface WorkbenchHostNodeDefinition<TExternalNodeState = unknown, TExternalWor
|
|
|
740
752
|
description?: string;
|
|
741
753
|
frame: WorkbenchFrame;
|
|
742
754
|
getWindowCloseEffect?: WorkbenchHostWindowCloseEffectResolver<TExternalNodeState, TExternalWorkspaceState>;
|
|
755
|
+
/**
|
|
756
|
+
* Projects frame-derived header presentation during direct manipulation.
|
|
757
|
+
* Equal keys skip renderHeader; omitted definitions keep live frame renders.
|
|
758
|
+
*/
|
|
759
|
+
getHeaderFrameRenderKey?: WorkbenchHostHeaderFrameRenderKeyResolver<TExternalNodeState, TExternalWorkspaceState>;
|
|
743
760
|
instance?: WorkbenchHostNodeInstanceStrategy;
|
|
744
761
|
onBodyRenderErrorChange?: (input: {
|
|
745
762
|
hasError: boolean;
|
|
@@ -906,4 +923,4 @@ declare function getWorkbenchLayoutFrame(surfaceSize: WorkbenchSize, constraints
|
|
|
906
923
|
|
|
907
924
|
declare function selectFocusedWorkbenchNode<TData>(state: WorkbenchState<TData>): WorkbenchNode<TData> | null;
|
|
908
925
|
|
|
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 };
|
|
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 };
|