@tutti-os/workbench-surface 0.0.278 → 0.0.280

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.js CHANGED
@@ -9109,10 +9109,10 @@ import { Component, memo as memo3, useCallback as useCallback14, useMemo as useM
9109
9109
  import {
9110
9110
  useCallback as useCallback13,
9111
9111
  useEffect as useEffect13,
9112
- useLayoutEffect as useLayoutEffect7,
9112
+ useLayoutEffect as useLayoutEffect8,
9113
9113
  useMemo as useMemo10,
9114
- useRef as useRef11,
9115
- useState as useState11
9114
+ useRef as useRef12,
9115
+ useState as useState12
9116
9116
  } from "react";
9117
9117
  import {
9118
9118
  ArrowLeftIcon,
@@ -9257,6 +9257,127 @@ function scheduleDeferredPreview(run) {
9257
9257
  };
9258
9258
  }
9259
9259
 
9260
+ // src/host/WorkbenchHostDockMinimizedPreview.tsx
9261
+ import { useLayoutEffect as useLayoutEffect5, useRef as useRef6, useState as useState7 } from "react";
9262
+ import { jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
9263
+ function WorkbenchHostDockMinimizedNodePreview({
9264
+ capturePreview,
9265
+ className,
9266
+ deferPreview = false,
9267
+ dockPreviewCache,
9268
+ node,
9269
+ providePreview,
9270
+ workspaceId
9271
+ }) {
9272
+ const { componentPreview, previewImageUrl } = useWorkbenchMinimizedDockPreview({
9273
+ capturePreview,
9274
+ deferPreview,
9275
+ dockPreviewCache,
9276
+ node,
9277
+ providePreview,
9278
+ workspaceId
9279
+ });
9280
+ if (deferPreview) {
9281
+ return renderMinimizedDockPreviewPlaceholder(className);
9282
+ }
9283
+ if (previewImageUrl) {
9284
+ return renderMinimizedDockPreviewContent(
9285
+ { kind: "image", src: previewImageUrl },
9286
+ className
9287
+ );
9288
+ }
9289
+ if (componentPreview) {
9290
+ return renderMinimizedDockPreviewContent(componentPreview, className);
9291
+ }
9292
+ return renderMinimizedDockPreviewPlaceholder(className);
9293
+ }
9294
+ function renderMinimizedDockPreviewPlaceholder(className) {
9295
+ return /* @__PURE__ */ jsxs8(
9296
+ "span",
9297
+ {
9298
+ className: ["desktop-dock__minimized-preview", className].filter(Boolean).join(" "),
9299
+ "aria-hidden": "true",
9300
+ children: [
9301
+ /* @__PURE__ */ jsx11("span", { className: "desktop-dock__minimized-preview-line" }),
9302
+ /* @__PURE__ */ jsx11("span", { className: "desktop-dock__minimized-preview-line desktop-dock__minimized-preview-line--short" }),
9303
+ /* @__PURE__ */ jsx11("span", { className: "desktop-dock__minimized-preview-line desktop-dock__minimized-preview-line--accent" })
9304
+ ]
9305
+ }
9306
+ );
9307
+ }
9308
+ function renderMinimizedDockPreviewContent(preview, className) {
9309
+ if (preview.kind === "image") {
9310
+ return /* @__PURE__ */ jsx11(
9311
+ "span",
9312
+ {
9313
+ className: [
9314
+ "desktop-dock__minimized-preview",
9315
+ "desktop-dock__minimized-preview--snapshot",
9316
+ className
9317
+ ].filter(Boolean).join(" "),
9318
+ "aria-hidden": "true",
9319
+ children: /* @__PURE__ */ jsx11(
9320
+ "img",
9321
+ {
9322
+ alt: "",
9323
+ className: "desktop-dock__minimized-preview-image",
9324
+ draggable: false,
9325
+ src: preview.src
9326
+ }
9327
+ )
9328
+ }
9329
+ );
9330
+ }
9331
+ return /* @__PURE__ */ jsx11(
9332
+ WorkbenchHostDockFrozenComponentPreview,
9333
+ {
9334
+ className,
9335
+ preview
9336
+ }
9337
+ );
9338
+ }
9339
+ function WorkbenchHostDockFrozenComponentPreview({
9340
+ className,
9341
+ preview
9342
+ }) {
9343
+ const sourceRef = useRef6(null);
9344
+ const [frozenMarkup, setFrozenMarkup] = useState7(null);
9345
+ useLayoutEffect5(() => {
9346
+ if (frozenMarkup !== null) {
9347
+ return;
9348
+ }
9349
+ setFrozenMarkup(sourceRef.current?.innerHTML ?? "");
9350
+ }, [frozenMarkup]);
9351
+ return /* @__PURE__ */ jsx11(
9352
+ "span",
9353
+ {
9354
+ className: [
9355
+ "desktop-dock__minimized-preview",
9356
+ "desktop-dock__minimized-preview--component",
9357
+ className
9358
+ ].filter(Boolean).join(" "),
9359
+ "aria-hidden": "true",
9360
+ children: frozenMarkup === null ? /* @__PURE__ */ jsx11(
9361
+ "span",
9362
+ {
9363
+ ref: sourceRef,
9364
+ className: "desktop-dock__minimized-preview-freeze-source",
9365
+ children: preview.element
9366
+ }
9367
+ ) : /* @__PURE__ */ jsx11(
9368
+ "span",
9369
+ {
9370
+ className: "desktop-dock__minimized-preview-frozen-content",
9371
+ dangerouslySetInnerHTML: { __html: frozenMarkup }
9372
+ }
9373
+ )
9374
+ }
9375
+ );
9376
+ }
9377
+ function minimizedDockPreviewFreezeKey(node) {
9378
+ return `${node.id}:${node.minimizedAtUnixMs ?? "pending"}`;
9379
+ }
9380
+
9260
9381
  // src/host/dockEntries.ts
9261
9382
  function matchWorkbenchDockEntryNode(entry, node) {
9262
9383
  if (typeof node.data.dockEntryId === "string") {
@@ -9384,7 +9505,7 @@ function isWorkbenchDockEntryBlocked(entry) {
9384
9505
  }
9385
9506
 
9386
9507
  // src/host/dockMagnification.ts
9387
- import { useCallback as useCallback10, useEffect as useEffect8, useRef as useRef6 } from "react";
9508
+ import { useCallback as useCallback10, useEffect as useEffect8, useRef as useRef7 } from "react";
9388
9509
 
9389
9510
  // src/host/dockMagnificationBounds.ts
9390
9511
  var DOCK_MAGNIFICATION_CROSS_AXIS_PADDING = 8;
@@ -9759,26 +9880,26 @@ function useDockMagnification({
9759
9880
  dockViewportRef,
9760
9881
  slotRefs
9761
9882
  }) {
9762
- const pointerAxisRef = useRef6(null);
9763
- const pendingPointerAxisRef = useRef6(null);
9764
- const springsRef = useRef6(/* @__PURE__ */ new Map());
9765
- const appliedStylesRef = useRef6(
9883
+ const pointerAxisRef = useRef7(null);
9884
+ const pendingPointerAxisRef = useRef7(null);
9885
+ const springsRef = useRef7(/* @__PURE__ */ new Map());
9886
+ const appliedStylesRef = useRef7(
9766
9887
  /* @__PURE__ */ new Map()
9767
9888
  );
9768
- const animationFrameRef = useRef6(null);
9769
- const lastFrameTimeRef = useRef6(null);
9770
- const entryRampStartedAtRef = useRef6(null);
9771
- const centersRef = useRef6(null);
9772
- const hitBoundsRef = useRef6(null);
9773
- const visibleSlotRectsRef = useRef6(null);
9774
- const slotOrderRef = useRef6([]);
9775
- const geometryBasisRef = useRef6(null);
9776
- const magnifyActiveRef = useRef6(false);
9777
- const globalPointerTrackerRef = useRef6(null);
9778
- const handleGlobalPointerMoveRef = useRef6(() => {
9889
+ const animationFrameRef = useRef7(null);
9890
+ const lastFrameTimeRef = useRef7(null);
9891
+ const entryRampStartedAtRef = useRef7(null);
9892
+ const centersRef = useRef7(null);
9893
+ const hitBoundsRef = useRef7(null);
9894
+ const visibleSlotRectsRef = useRef7(null);
9895
+ const slotOrderRef = useRef7([]);
9896
+ const geometryBasisRef = useRef7(null);
9897
+ const magnifyActiveRef = useRef7(false);
9898
+ const globalPointerTrackerRef = useRef7(null);
9899
+ const handleGlobalPointerMoveRef = useRef7(() => {
9779
9900
  return;
9780
9901
  });
9781
- const handleGlobalPointerCancelRef = useRef6(() => {
9902
+ const handleGlobalPointerCancelRef = useRef7(() => {
9782
9903
  return;
9783
9904
  });
9784
9905
  const setMagnifyActive = useCallback10(
@@ -10393,7 +10514,7 @@ function orderWorkbenchMinimizedDockNodes(input) {
10393
10514
  }
10394
10515
 
10395
10516
  // src/host/minimizedDockStackPromotion.ts
10396
- import { useEffect as useEffect9, useRef as useRef7, useState as useState7 } from "react";
10517
+ import { useEffect as useEffect9, useRef as useRef8, useState as useState8 } from "react";
10397
10518
  var minimizedDockStackPromotionDurationMs = 520;
10398
10519
  function detectMinimizedDockStackPromotion(previous, next) {
10399
10520
  const previousVisibleNodeIds = new Set(
@@ -10413,10 +10534,10 @@ function detectMinimizedDockStackPromotion(previous, next) {
10413
10534
  return null;
10414
10535
  }
10415
10536
  function useMinimizedDockStackPromotion(slots) {
10416
- const previousSlotsRef = useRef7(slots);
10417
- const promotionTimerRef = useRef7(null);
10418
- const [promotedNodeId, setPromotedNodeId] = useState7(null);
10419
- const [stackDispatching, setStackDispatching] = useState7(false);
10537
+ const previousSlotsRef = useRef8(slots);
10538
+ const promotionTimerRef = useRef8(null);
10539
+ const [promotedNodeId, setPromotedNodeId] = useState8(null);
10540
+ const [stackDispatching, setStackDispatching] = useState8(false);
10420
10541
  useEffect9(() => {
10421
10542
  const promotedNodeId2 = detectMinimizedDockStackPromotion(
10422
10543
  previousSlotsRef.current,
@@ -10484,9 +10605,9 @@ function resolveWorkbenchMinimizedDockRestoreIntent(input) {
10484
10605
  import {
10485
10606
  useCallback as useCallback12,
10486
10607
  useEffect as useEffect12,
10487
- useLayoutEffect as useLayoutEffect6,
10488
- useRef as useRef10,
10489
- useState as useState10
10608
+ useLayoutEffect as useLayoutEffect7,
10609
+ useRef as useRef11,
10610
+ useState as useState11
10490
10611
  } from "react";
10491
10612
  import { createPortal as createPortal3 } from "react-dom";
10492
10613
  import { FileCreateIcon as FileCreateIcon2, cn as cn2 } from "@tutti-os/ui-system";
@@ -10641,8 +10762,8 @@ import {
10641
10762
  forwardRef,
10642
10763
  useCallback as useCallback11,
10643
10764
  useEffect as useEffect10,
10644
- useRef as useRef8,
10645
- useState as useState8
10765
+ useRef as useRef9,
10766
+ useState as useState9
10646
10767
  } from "react";
10647
10768
  import {
10648
10769
  Button as Button2,
@@ -10656,7 +10777,7 @@ import {
10656
10777
  PinIcon,
10657
10778
  cn
10658
10779
  } from "@tutti-os/ui-system";
10659
- import { Fragment as Fragment4, jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
10780
+ import { Fragment as Fragment4, jsx as jsx12, jsxs as jsxs9 } from "react/jsx-runtime";
10660
10781
  var dockPopupMinimizedStackLaunchDisappearMs = 0;
10661
10782
  var popupCardMagnificationRange = 160;
10662
10783
  var popupCardMaxScale = 1.16;
@@ -10721,14 +10842,14 @@ function WorkbenchHostDockContextMenu({
10721
10842
  const hasOpenCommand = !hasOpenWindows;
10722
10843
  const hasDockActionGroup = Boolean(dockRetention) || hasNewWindowCommand || hasOpenCommand;
10723
10844
  const hasWindowActionGroup = hasOpenWindows;
10724
- return /* @__PURE__ */ jsxs8(
10845
+ return /* @__PURE__ */ jsxs9(
10725
10846
  "div",
10726
10847
  {
10727
10848
  className: "flex min-w-0 flex-col gap-1",
10728
10849
  "data-desktop-dock-context-menu": "true",
10729
10850
  role: "menu",
10730
10851
  children: [
10731
- hasOpenWindows ? /* @__PURE__ */ jsx11("div", { className: "max-h-48 min-w-0 overflow-auto overscroll-contain", children: items.map((item) => /* @__PURE__ */ jsx11(
10852
+ hasOpenWindows ? /* @__PURE__ */ jsx12("div", { className: "max-h-48 min-w-0 overflow-auto overscroll-contain", children: items.map((item) => /* @__PURE__ */ jsx12(
10732
10853
  WorkbenchHostDockContextMenuItem,
10733
10854
  {
10734
10855
  checked: !item.isMinimized,
@@ -10737,12 +10858,12 @@ function WorkbenchHostDockContextMenu({
10737
10858
  },
10738
10859
  item.node.id
10739
10860
  )) }) : null,
10740
- hasOpenWindows && (hasDockActionGroup || hasWindowActionGroup) ? /* @__PURE__ */ jsx11(WorkbenchHostDockContextMenuSeparator, {}) : null,
10741
- dockRetention ? /* @__PURE__ */ jsx11(
10861
+ hasOpenWindows && (hasDockActionGroup || hasWindowActionGroup) ? /* @__PURE__ */ jsx12(WorkbenchHostDockContextMenuSeparator, {}) : null,
10862
+ dockRetention ? /* @__PURE__ */ jsx12(
10742
10863
  WorkbenchHostDockContextMenuItem,
10743
10864
  {
10744
10865
  checked: dockRetention.checked,
10745
- checkedIcon: /* @__PURE__ */ jsx11(
10866
+ checkedIcon: /* @__PURE__ */ jsx12(
10746
10867
  PinFilledIcon,
10747
10868
  {
10748
10869
  "aria-hidden": "true",
@@ -10750,61 +10871,61 @@ function WorkbenchHostDockContextMenu({
10750
10871
  }
10751
10872
  ),
10752
10873
  disabled: dockRetention.disabled,
10753
- icon: /* @__PURE__ */ jsx11(PinIcon, { "aria-hidden": "true", className: "size-4" }),
10874
+ icon: /* @__PURE__ */ jsx12(PinIcon, { "aria-hidden": "true", className: "size-4" }),
10754
10875
  label: dockRetention.pendingLabel ?? dockRetention.label,
10755
10876
  onSelect: onRunDockRetentionAction
10756
10877
  }
10757
10878
  ) : null,
10758
- hasNewWindowCommand ? /* @__PURE__ */ jsx11(
10879
+ hasNewWindowCommand ? /* @__PURE__ */ jsx12(
10759
10880
  WorkbenchHostDockContextMenuItem,
10760
10881
  {
10761
- icon: /* @__PURE__ */ jsx11(FileCreateIcon, { "aria-hidden": "true", className: "size-4" }),
10882
+ icon: /* @__PURE__ */ jsx12(FileCreateIcon, { "aria-hidden": "true", className: "size-4" }),
10762
10883
  label: newWindowLabel,
10763
10884
  onSelect: onCreateNew
10764
10885
  }
10765
10886
  ) : null,
10766
- hasOpenCommand ? /* @__PURE__ */ jsx11(
10887
+ hasOpenCommand ? /* @__PURE__ */ jsx12(
10767
10888
  WorkbenchHostDockContextMenuItem,
10768
10889
  {
10769
10890
  disabled: !showOpen,
10770
- icon: /* @__PURE__ */ jsx11(FileCreateIcon, { "aria-hidden": "true", className: "size-4" }),
10891
+ icon: /* @__PURE__ */ jsx12(FileCreateIcon, { "aria-hidden": "true", className: "size-4" }),
10771
10892
  label: newWindowLabel,
10772
10893
  onSelect: onCreateNew
10773
10894
  }
10774
10895
  ) : null,
10775
- hasOpenWindows ? /* @__PURE__ */ jsxs8(Fragment4, { children: [
10776
- hasDockActionGroup ? /* @__PURE__ */ jsx11(WorkbenchHostDockContextMenuSeparator, {}) : null,
10777
- canShowAllWindows && onShowAllWindows ? /* @__PURE__ */ jsx11(
10896
+ hasOpenWindows ? /* @__PURE__ */ jsxs9(Fragment4, { children: [
10897
+ hasDockActionGroup ? /* @__PURE__ */ jsx12(WorkbenchHostDockContextMenuSeparator, {}) : null,
10898
+ canShowAllWindows && onShowAllWindows ? /* @__PURE__ */ jsx12(
10778
10899
  WorkbenchHostDockContextMenuItem,
10779
10900
  {
10780
- icon: /* @__PURE__ */ jsx11(OverviewLayoutIcon, { "aria-hidden": "true", className: "size-4" }),
10901
+ icon: /* @__PURE__ */ jsx12(OverviewLayoutIcon, { "aria-hidden": "true", className: "size-4" }),
10781
10902
  label: showAllWindowsLabel,
10782
10903
  onSelect: onShowAllWindows
10783
10904
  }
10784
10905
  ) : null,
10785
- /* @__PURE__ */ jsx11(
10906
+ /* @__PURE__ */ jsx12(
10786
10907
  WorkbenchHostDockContextMenuItem,
10787
10908
  {
10788
10909
  disabled: !canEnterFullscreen || !onEnterFullscreen,
10789
- icon: /* @__PURE__ */ jsx11(MaximizeIcon, { "aria-hidden": "true", className: "size-4" }),
10910
+ icon: /* @__PURE__ */ jsx12(MaximizeIcon, { "aria-hidden": "true", className: "size-4" }),
10790
10911
  label: fullscreenLabel,
10791
10912
  onSelect: onEnterFullscreen
10792
10913
  }
10793
10914
  ),
10794
- /* @__PURE__ */ jsx11(
10915
+ /* @__PURE__ */ jsx12(
10795
10916
  WorkbenchHostDockContextMenuItem,
10796
10917
  {
10797
10918
  disabled: !onHide,
10798
- icon: /* @__PURE__ */ jsx11(MinimizeIcon, { "aria-hidden": "true", className: "size-4" }),
10919
+ icon: /* @__PURE__ */ jsx12(MinimizeIcon, { "aria-hidden": "true", className: "size-4" }),
10799
10920
  label: hideLabel,
10800
10921
  onSelect: onHide
10801
10922
  }
10802
10923
  ),
10803
- /* @__PURE__ */ jsx11(
10924
+ /* @__PURE__ */ jsx12(
10804
10925
  WorkbenchHostDockContextMenuItem,
10805
10926
  {
10806
10927
  disabled: !onQuit,
10807
- icon: /* @__PURE__ */ jsx11(CloseIcon, { "aria-hidden": "true", className: "size-4" }),
10928
+ icon: /* @__PURE__ */ jsx12(CloseIcon, { "aria-hidden": "true", className: "size-4" }),
10808
10929
  label: quitLabel,
10809
10930
  onSelect: onQuit
10810
10931
  }
@@ -10822,7 +10943,7 @@ function WorkbenchHostDockContextMenuItem({
10822
10943
  label,
10823
10944
  onSelect
10824
10945
  }) {
10825
- return /* @__PURE__ */ jsxs8(
10946
+ return /* @__PURE__ */ jsxs9(
10826
10947
  "button",
10827
10948
  {
10828
10949
  className: cn(
@@ -10839,20 +10960,20 @@ function WorkbenchHostDockContextMenuItem({
10839
10960
  onSelect();
10840
10961
  },
10841
10962
  children: [
10842
- /* @__PURE__ */ jsx11("span", { className: "flex size-4 shrink-0 items-center justify-center text-[var(--text-secondary)]", children: checked && checkedIcon ? checkedIcon : checked ? /* @__PURE__ */ jsx11(
10963
+ /* @__PURE__ */ jsx12("span", { className: "flex size-4 shrink-0 items-center justify-center text-[var(--text-secondary)]", children: checked && checkedIcon ? checkedIcon : checked ? /* @__PURE__ */ jsx12(
10843
10964
  CheckIcon,
10844
10965
  {
10845
10966
  "aria-hidden": "true",
10846
10967
  className: "size-4 text-[var(--tutti-purple)]"
10847
10968
  }
10848
10969
  ) : icon ?? null }),
10849
- /* @__PURE__ */ jsx11("span", { className: "min-w-0 truncate", children: label })
10970
+ /* @__PURE__ */ jsx12("span", { className: "min-w-0 truncate", children: label })
10850
10971
  ]
10851
10972
  }
10852
10973
  );
10853
10974
  }
10854
10975
  function WorkbenchHostDockContextMenuSeparator() {
10855
- return /* @__PURE__ */ jsx11(
10976
+ return /* @__PURE__ */ jsx12(
10856
10977
  "div",
10857
10978
  {
10858
10979
  "aria-hidden": "true",
@@ -10873,8 +10994,8 @@ var WorkbenchHostDockPopupCard = forwardRef(function WorkbenchHostDockPopupCard2
10873
10994
  }, ref) {
10874
10995
  const title = item.title?.trim() || item.node.title;
10875
10996
  const isMinimizedStack = variant === "minimized-stack";
10876
- const [isLaunching, setIsLaunching] = useState8(false);
10877
- const launchTimerRef = useRef8(null);
10997
+ const [isLaunching, setIsLaunching] = useState9(false);
10998
+ const launchTimerRef = useRef9(null);
10878
10999
  useEffect10(
10879
11000
  () => () => {
10880
11001
  if (launchTimerRef.current !== null) {
@@ -10908,7 +11029,7 @@ var WorkbenchHostDockPopupCard = forwardRef(function WorkbenchHostDockPopupCard2
10908
11029
  [handleSelect]
10909
11030
  );
10910
11031
  const hasReadyPreview = previewState.status === "ready";
10911
- return /* @__PURE__ */ jsxs8(
11032
+ return /* @__PURE__ */ jsxs9(
10912
11033
  "div",
10913
11034
  {
10914
11035
  ref,
@@ -10923,7 +11044,7 @@ var WorkbenchHostDockPopupCard = forwardRef(function WorkbenchHostDockPopupCard2
10923
11044
  "data-minimized": item.isMinimized ? "true" : void 0,
10924
11045
  style,
10925
11046
  children: [
10926
- /* @__PURE__ */ jsxs8(
11047
+ /* @__PURE__ */ jsxs9(
10927
11048
  "div",
10928
11049
  {
10929
11050
  "aria-label": title,
@@ -10937,12 +11058,12 @@ var WorkbenchHostDockPopupCard = forwardRef(function WorkbenchHostDockPopupCard2
10937
11058
  onClick: handleSelect,
10938
11059
  onKeyDown: handleSelectKeyDown,
10939
11060
  children: [
10940
- /* @__PURE__ */ jsx11(WorkbenchHostDockPopupCardPreview, { previewState }),
10941
- labelMode === "hover-overlay" && item.title?.trim() ? /* @__PURE__ */ jsx11(WorkbenchHostDockPopupCardLabel, { title: item.title }) : null
11061
+ /* @__PURE__ */ jsx12(WorkbenchHostDockPopupCardPreview, { previewState }),
11062
+ labelMode === "hover-overlay" && item.title?.trim() ? /* @__PURE__ */ jsx12(WorkbenchHostDockPopupCardLabel, { title: item.title }) : null
10942
11063
  ]
10943
11064
  }
10944
11065
  ),
10945
- /* @__PURE__ */ jsx11(
11066
+ /* @__PURE__ */ jsx12(
10946
11067
  Button2,
10947
11068
  {
10948
11069
  "aria-label": closeWindowLabel(title),
@@ -10956,10 +11077,10 @@ var WorkbenchHostDockPopupCard = forwardRef(function WorkbenchHostDockPopupCard2
10956
11077
  event.stopPropagation();
10957
11078
  onCloseNode(item.node.id);
10958
11079
  },
10959
- children: /* @__PURE__ */ jsx11(CloseIcon, { className: "size-3.5" })
11080
+ children: /* @__PURE__ */ jsx12(CloseIcon, { className: "size-3.5" })
10960
11081
  }
10961
11082
  ),
10962
- item.isFocused ? /* @__PURE__ */ jsx11(
11083
+ item.isFocused ? /* @__PURE__ */ jsx12(
10963
11084
  "span",
10964
11085
  {
10965
11086
  "aria-hidden": "true",
@@ -10967,7 +11088,7 @@ var WorkbenchHostDockPopupCard = forwardRef(function WorkbenchHostDockPopupCard2
10967
11088
  "data-desktop-dock-popup-card-active-overlay": "true"
10968
11089
  }
10969
11090
  ) : null,
10970
- isMinimizedStack ? /* @__PURE__ */ jsx11("span", { className: "desktop-dock-popup__fan-title-tip", title, children: title }) : null
11091
+ isMinimizedStack ? /* @__PURE__ */ jsx12("span", { className: "desktop-dock-popup__fan-title-tip", title, children: title }) : null
10971
11092
  ]
10972
11093
  }
10973
11094
  );
@@ -10976,22 +11097,22 @@ function WorkbenchHostDockPopupCardPreview({
10976
11097
  previewState
10977
11098
  }) {
10978
11099
  if (previewState.status === "loading") {
10979
- return /* @__PURE__ */ jsxs8(
11100
+ return /* @__PURE__ */ jsxs9(
10980
11101
  "span",
10981
11102
  {
10982
11103
  className: "flex min-h-0 min-w-0 flex-1 flex-col justify-center gap-[7px] rounded-md border border-[var(--border-1)] bg-transparency-block px-3 py-[11px]",
10983
11104
  "aria-hidden": "true",
10984
11105
  "data-preview-state": previewState.status,
10985
11106
  children: [
10986
- /* @__PURE__ */ jsx11("span", { className: "block h-[7px] w-[72%] rounded-full bg-transparency-hover" }),
10987
- /* @__PURE__ */ jsx11("span", { className: "block h-[7px] w-[58%] rounded-full bg-transparency-hover" }),
10988
- /* @__PURE__ */ jsx11("span", { className: "block h-[7px] w-[34%] rounded-full bg-transparency-hover" })
11107
+ /* @__PURE__ */ jsx12("span", { className: "block h-[7px] w-[72%] rounded-full bg-transparency-hover" }),
11108
+ /* @__PURE__ */ jsx12("span", { className: "block h-[7px] w-[58%] rounded-full bg-transparency-hover" }),
11109
+ /* @__PURE__ */ jsx12("span", { className: "block h-[7px] w-[34%] rounded-full bg-transparency-hover" })
10989
11110
  ]
10990
11111
  }
10991
11112
  );
10992
11113
  }
10993
11114
  if (previewState.status === "fallback") {
10994
- return /* @__PURE__ */ jsx11(
11115
+ return /* @__PURE__ */ jsx12(
10995
11116
  "span",
10996
11117
  {
10997
11118
  className: "flex min-h-0 min-w-0 flex-1 rounded-md border border-[var(--border-1)] bg-transparency-block",
@@ -11002,7 +11123,7 @@ function WorkbenchHostDockPopupCardPreview({
11002
11123
  }
11003
11124
  const preview = previewState.preview;
11004
11125
  if (preview.kind === "component") {
11005
- return /* @__PURE__ */ jsx11(
11126
+ return /* @__PURE__ */ jsx12(
11006
11127
  "span",
11007
11128
  {
11008
11129
  className: "block min-h-0 min-w-0 flex-1 overflow-hidden rounded-md",
@@ -11013,14 +11134,14 @@ function WorkbenchHostDockPopupCardPreview({
11013
11134
  }
11014
11135
  );
11015
11136
  }
11016
- return /* @__PURE__ */ jsx11(
11137
+ return /* @__PURE__ */ jsx12(
11017
11138
  "span",
11018
11139
  {
11019
11140
  className: "block min-h-0 min-w-0 flex-1 overflow-hidden rounded-md",
11020
11141
  "aria-hidden": "true",
11021
11142
  "data-preview-kind": preview.kind,
11022
11143
  "data-preview-state": previewState.status,
11023
- children: /* @__PURE__ */ jsx11(
11144
+ children: /* @__PURE__ */ jsx12(
11024
11145
  "img",
11025
11146
  {
11026
11147
  alt: "",
@@ -11033,7 +11154,7 @@ function WorkbenchHostDockPopupCardPreview({
11033
11154
  );
11034
11155
  }
11035
11156
  function WorkbenchHostDockPopupCardLabel({ title }) {
11036
- return /* @__PURE__ */ jsx11(
11157
+ return /* @__PURE__ */ jsx12(
11037
11158
  "span",
11038
11159
  {
11039
11160
  className: "pointer-events-none absolute inset-x-0 bottom-0 z-[1] flex h-[30px] items-end px-[10px] pb-0.5 text-[var(--white-stationary)] opacity-0 transition-opacity duration-150 [text-shadow:0_1px_2px_rgb(0_0_0_/_20%)] group-hover/dock-popup-card:opacity-100 group-focus-within/dock-popup-card:opacity-100",
@@ -11041,13 +11162,13 @@ function WorkbenchHostDockPopupCardLabel({ title }) {
11041
11162
  background: "linear-gradient(180deg, transparent 0%, color-mix(in srgb, hsl(var(--card)) 28%, transparent) 18%, color-mix(in srgb, hsl(var(--card)) 82%, transparent) 56%, color-mix(in srgb, hsl(var(--card)) 98%, transparent) 100%)"
11042
11163
  },
11043
11164
  title,
11044
- children: /* @__PURE__ */ jsx11("span", { className: "desktop-dock-popup__title-viewport block min-w-0 flex-1 overflow-hidden whitespace-nowrap", children: /* @__PURE__ */ jsx11("span", { className: "desktop-dock-popup__title-marquee inline-block max-w-full overflow-hidden text-[12px] font-semibold leading-5 text-ellipsis whitespace-nowrap", children: title }) })
11165
+ children: /* @__PURE__ */ jsx12("span", { className: "desktop-dock-popup__title-viewport block min-w-0 flex-1 overflow-hidden whitespace-nowrap", children: /* @__PURE__ */ jsx12("span", { className: "desktop-dock-popup__title-marquee inline-block max-w-full overflow-hidden text-[12px] font-semibold leading-5 text-ellipsis whitespace-nowrap", children: title }) })
11045
11166
  }
11046
11167
  );
11047
11168
  }
11048
11169
 
11049
11170
  // src/host/useWorkbenchHostDockPopupPreviewCapture.ts
11050
- import { useEffect as useEffect11, useLayoutEffect as useLayoutEffect5, useRef as useRef9, useState as useState9 } from "react";
11171
+ import { useEffect as useEffect11, useLayoutEffect as useLayoutEffect6, useRef as useRef10, useState as useState10 } from "react";
11051
11172
  var dockPopupPreviewCacheMaxEntries = 64;
11052
11173
  var dockPopupPreviewByMemoryKey = /* @__PURE__ */ new Map();
11053
11174
  var pendingDockPopupPreviewCaptureKeys = /* @__PURE__ */ new Set();
@@ -11061,15 +11182,15 @@ function useWorkbenchHostDockPopupPreviewCapture(input) {
11061
11182
  resolveDockPreviewCacheKey: resolveDockPreviewCacheKey2
11062
11183
  } = input;
11063
11184
  const hasCapturePreview = Boolean(capturePreview);
11064
- const [capturedPreviewByMemoryKey, setCapturedPreviewByMemoryKey] = useState9({});
11065
- const capturedPreviewByMemoryKeyRef = useRef9(capturedPreviewByMemoryKey);
11066
- const capturePreviewRef = useRef9(capturePreview);
11067
- const debugDiagnosticsRef = useRef9(debugDiagnostics);
11068
- const dockPreviewCacheRef = useRef9(dockPreviewCache);
11069
- const resolveDockPreviewCacheKeyRef = useRef9(resolveDockPreviewCacheKey2);
11070
- const isMountedRef = useRef9(false);
11071
- const isContextMenuRef = useRef9(isContextMenu);
11072
- const activePreviewCaptureItemStateKeysRef = useRef9(
11185
+ const [capturedPreviewByMemoryKey, setCapturedPreviewByMemoryKey] = useState10({});
11186
+ const capturedPreviewByMemoryKeyRef = useRef10(capturedPreviewByMemoryKey);
11187
+ const capturePreviewRef = useRef10(capturePreview);
11188
+ const debugDiagnosticsRef = useRef10(debugDiagnostics);
11189
+ const dockPreviewCacheRef = useRef10(dockPreviewCache);
11190
+ const resolveDockPreviewCacheKeyRef = useRef10(resolveDockPreviewCacheKey2);
11191
+ const isMountedRef = useRef10(false);
11192
+ const isContextMenuRef = useRef10(isContextMenu);
11193
+ const activePreviewCaptureItemStateKeysRef = useRef10(
11073
11194
  /* @__PURE__ */ new Set()
11074
11195
  );
11075
11196
  capturedPreviewByMemoryKeyRef.current = capturedPreviewByMemoryKey;
@@ -11084,7 +11205,7 @@ function useWorkbenchHostDockPopupPreviewCapture(input) {
11084
11205
  )
11085
11206
  );
11086
11207
  const previewCaptureKey = previewCaptureItemStateKeys.join("|");
11087
- useLayoutEffect5(() => {
11208
+ useLayoutEffect6(() => {
11088
11209
  isContextMenuRef.current = isContextMenu;
11089
11210
  activePreviewCaptureItemStateKeysRef.current = new Set(
11090
11211
  previewCaptureItemStateKeys
@@ -11457,7 +11578,7 @@ function previewCacheToken(preview) {
11457
11578
  }
11458
11579
 
11459
11580
  // src/host/WorkbenchHostDockPopup.tsx
11460
- import { Fragment as Fragment5, jsx as jsx12, jsxs as jsxs9 } from "react/jsx-runtime";
11581
+ import { Fragment as Fragment5, jsx as jsx13, jsxs as jsxs10 } from "react/jsx-runtime";
11461
11582
  var dockPopupCardWidthPx = 165;
11462
11583
  var dockPopupCardHeightPx = 103;
11463
11584
  var dockPopupPreviewInsetPx = 4;
@@ -11509,15 +11630,15 @@ function WorkbenchHostDockPopup({
11509
11630
  const isMinimizedStack = resolvedVariant === "minimized-stack";
11510
11631
  const isContextMenu = resolvedVariant === "context-menu";
11511
11632
  const createCardCount = showCreateNew === false ? 0 : 1;
11512
- const cardElementsRef = useRef10(/* @__PURE__ */ new Map());
11513
- const cardRefCallbacksRef = useRef10(
11633
+ const cardElementsRef = useRef11(/* @__PURE__ */ new Map());
11634
+ const cardRefCallbacksRef = useRef11(
11514
11635
  /* @__PURE__ */ new Map()
11515
11636
  );
11516
- const popupRootRef = useRef10(null);
11517
- const minimizedStackViewportRef = useRef10(null);
11518
- const [pointer, setPointer] = useState10(null);
11519
- const [minimizedStackScrollOffset, setMinimizedStackScrollOffset] = useState10(0);
11520
- const [verticalClampOffsetPx, setVerticalClampOffsetPx] = useState10(0);
11637
+ const popupRootRef = useRef11(null);
11638
+ const minimizedStackViewportRef = useRef11(null);
11639
+ const [pointer, setPointer] = useState11(null);
11640
+ const [minimizedStackScrollOffset, setMinimizedStackScrollOffset] = useState11(0);
11641
+ const [verticalClampOffsetPx, setVerticalClampOffsetPx] = useState11(0);
11521
11642
  const { previewStateFor } = useWorkbenchHostDockPopupPreviewCapture({
11522
11643
  capturePreview,
11523
11644
  debugDiagnostics,
@@ -11610,7 +11731,7 @@ function WorkbenchHostDockPopup({
11610
11731
  popupDiagnosticKey,
11611
11732
  resolvedVariant
11612
11733
  ]);
11613
- useLayoutEffect6(() => {
11734
+ useLayoutEffect7(() => {
11614
11735
  const rootElement = popupRootRef.current;
11615
11736
  const panelElement = rootElement?.querySelector(
11616
11737
  "[data-desktop-dock-popup-panel]"
@@ -11623,7 +11744,7 @@ function WorkbenchHostDockPopup({
11623
11744
  viewportWidth: window.innerWidth
11624
11745
  });
11625
11746
  }, [debugDiagnostics, popupDiagnosticKey]);
11626
- useLayoutEffect6(() => {
11747
+ useLayoutEffect7(() => {
11627
11748
  if (isMinimizedStack || typeof window === "undefined") {
11628
11749
  return;
11629
11750
  }
@@ -11741,7 +11862,7 @@ function WorkbenchHostDockPopup({
11741
11862
  viewport.addEventListener("wheel", handleWheel, { passive: false });
11742
11863
  return () => viewport.removeEventListener("wheel", handleWheel);
11743
11864
  }, [isMinimizedStack, minimizedStackMaxScrollOffset]);
11744
- const content = /* @__PURE__ */ jsx12(
11865
+ const content = /* @__PURE__ */ jsx13(
11745
11866
  "div",
11746
11867
  {
11747
11868
  ref: popupRootRef,
@@ -11750,7 +11871,7 @@ function WorkbenchHostDockPopup({
11750
11871
  "data-desktop-dock-popup-root": "true",
11751
11872
  "data-popup-variant": resolvedVariant,
11752
11873
  style: popupStyle,
11753
- children: /* @__PURE__ */ jsx12(
11874
+ children: /* @__PURE__ */ jsx13(
11754
11875
  "div",
11755
11876
  {
11756
11877
  "aria-label": label,
@@ -11766,7 +11887,7 @@ function WorkbenchHostDockPopup({
11766
11887
  onPointerLeave: isMinimizedStack ? () => setPointer(null) : void 0,
11767
11888
  role: "dialog",
11768
11889
  style: panelStyle,
11769
- children: isContextMenu ? /* @__PURE__ */ jsx12(
11890
+ children: isContextMenu ? /* @__PURE__ */ jsx13(
11770
11891
  WorkbenchHostDockContextMenu,
11771
11892
  {
11772
11893
  canCreateNew: resolvedShowCreateNewInContextMenu !== false,
@@ -11788,9 +11909,9 @@ function WorkbenchHostDockPopup({
11788
11909
  showAllWindowsLabel,
11789
11910
  showOpen: showOpen === true
11790
11911
  }
11791
- ) : /* @__PURE__ */ jsxs9(Fragment5, { children: [
11792
- /* @__PURE__ */ jsx12("div", { className: "mb-2.5 flex items-center justify-between", children: /* @__PURE__ */ jsx12("span", { className: "min-w-0 truncate text-sm font-semibold", children: label }) }),
11793
- isMinimizedStack ? /* @__PURE__ */ jsx12(
11912
+ ) : /* @__PURE__ */ jsxs10(Fragment5, { children: [
11913
+ /* @__PURE__ */ jsx13("div", { className: "mb-2.5 flex items-center justify-between", children: /* @__PURE__ */ jsx13("span", { className: "min-w-0 truncate text-sm font-semibold", children: label }) }),
11914
+ isMinimizedStack ? /* @__PURE__ */ jsx13(
11794
11915
  "div",
11795
11916
  {
11796
11917
  ref: minimizedStackViewportRef,
@@ -11799,7 +11920,7 @@ function WorkbenchHostDockPopup({
11799
11920
  height: minimizedStackViewportHeightPx,
11800
11921
  ...isLeftMinimizedStack ? { paddingLeft: minimizedStackLeftGutterPx } : {}
11801
11922
  },
11802
- children: /* @__PURE__ */ jsx12(
11923
+ children: /* @__PURE__ */ jsx13(
11803
11924
  "div",
11804
11925
  {
11805
11926
  className: "desktop-dock-popup__minimized-stack-track",
@@ -11809,7 +11930,7 @@ function WorkbenchHostDockPopup({
11809
11930
  },
11810
11931
  children: items.map((item, index) => {
11811
11932
  const previewState = previewStateFor(item);
11812
- return /* @__PURE__ */ jsx12(
11933
+ return /* @__PURE__ */ jsx13(
11813
11934
  WorkbenchHostDockPopupCard,
11814
11935
  {
11815
11936
  ref: registerCard(item.node.id),
@@ -11838,10 +11959,10 @@ function WorkbenchHostDockPopup({
11838
11959
  }
11839
11960
  )
11840
11961
  }
11841
- ) : /* @__PURE__ */ jsxs9("div", { className: "grid max-h-[min(52vh,420px)] grid-cols-[repeat(var(--desktop-dock-popup-columns,2),165px)] gap-2 overflow-auto overscroll-contain", children: [
11962
+ ) : /* @__PURE__ */ jsxs10("div", { className: "grid max-h-[min(52vh,420px)] grid-cols-[repeat(var(--desktop-dock-popup-columns,2),165px)] gap-2 overflow-auto overscroll-contain", children: [
11842
11963
  items.map((item) => {
11843
11964
  const previewState = previewStateFor(item);
11844
- return /* @__PURE__ */ jsx12(
11965
+ return /* @__PURE__ */ jsx13(
11845
11966
  WorkbenchHostDockPopupCard,
11846
11967
  {
11847
11968
  ref: registerCard(item.node.id),
@@ -11856,14 +11977,14 @@ function WorkbenchHostDockPopup({
11856
11977
  item.node.id
11857
11978
  );
11858
11979
  }),
11859
- showCreateNew !== false ? /* @__PURE__ */ jsxs9(
11980
+ showCreateNew !== false ? /* @__PURE__ */ jsxs10(
11860
11981
  "button",
11861
11982
  {
11862
11983
  className: "flex h-[103px] w-[165px] min-w-0 flex-col items-center justify-center gap-2 rounded-[8px] border border-dashed border-[var(--border-1)] bg-transparency-block text-center text-[var(--text-secondary)] transition-colors hover:bg-transparency-hover hover:text-[var(--text-primary)]",
11863
11984
  type: "button",
11864
11985
  onClick: onCreateNew,
11865
11986
  children: [
11866
- /* @__PURE__ */ jsx12(
11987
+ /* @__PURE__ */ jsx13(
11867
11988
  FileCreateIcon2,
11868
11989
  {
11869
11990
  "aria-hidden": "true",
@@ -11871,7 +11992,7 @@ function WorkbenchHostDockPopup({
11871
11992
  size: 28
11872
11993
  }
11873
11994
  ),
11874
- /* @__PURE__ */ jsx12("span", { className: "text-xs font-semibold text-[var(--text-primary)]", children: newWindowLabel })
11995
+ /* @__PURE__ */ jsx13("span", { className: "text-xs font-semibold text-[var(--text-primary)]", children: newWindowLabel })
11875
11996
  ]
11876
11997
  }
11877
11998
  ) : null
@@ -11911,7 +12032,7 @@ function styleToDiagnostic(element) {
11911
12032
  }
11912
12033
 
11913
12034
  // src/host/WorkbenchHostDock.tsx
11914
- import { jsx as jsx13, jsxs as jsxs10 } from "react/jsx-runtime";
12035
+ import { jsx as jsx14, jsxs as jsxs11 } from "react/jsx-runtime";
11915
12036
  var minimizedDockPreviewViewport = {
11916
12037
  height: 34.2,
11917
12038
  width: 46.8
@@ -11960,59 +12081,59 @@ function WorkbenchHostDock({
11960
12081
  () => new Set(context.minimizedNodes.map((node) => node.id)),
11961
12082
  [context.minimizedNodes]
11962
12083
  );
11963
- const dockPlateRef = useRef11(null);
11964
- const dockMeasureRef = useRef11(null);
11965
- const dockItemsRef = useRef11(null);
11966
- const hoverPanelRef = useRef11(null);
11967
- const hoverPanelCloseTimerRef = useRef11(
12084
+ const dockPlateRef = useRef12(null);
12085
+ const dockMeasureRef = useRef12(null);
12086
+ const dockItemsRef = useRef12(null);
12087
+ const hoverPanelRef = useRef12(null);
12088
+ const hoverPanelCloseTimerRef = useRef12(
11968
12089
  null
11969
12090
  );
11970
- const hoverPanelOpenTimerRef = useRef11(
12091
+ const hoverPanelOpenTimerRef = useRef12(
11971
12092
  null
11972
12093
  );
11973
- const labelTooltipOpenTimerRef = useRef11(
12094
+ const labelTooltipOpenTimerRef = useRef12(
11974
12095
  null
11975
12096
  );
11976
- const hoverPanelScheduledPointRef = useRef11(null);
11977
- const labelTooltipScheduledPointRef = useRef11(null);
11978
- const hoverPanelRestTargetRef = useRef11(null);
11979
- const activeHoverPanelRef = useRef11(
12097
+ const hoverPanelScheduledPointRef = useRef12(null);
12098
+ const labelTooltipScheduledPointRef = useRef12(null);
12099
+ const hoverPanelRestTargetRef = useRef12(null);
12100
+ const activeHoverPanelRef = useRef12(
11980
12101
  null
11981
12102
  );
11982
- const activeLabelTooltipRef = useRef11(null);
11983
- const pendingDockStateRefreshRef = useRef11(false);
11984
- const slotRefs = useRef11(/* @__PURE__ */ new Map());
11985
- const wallpaperToneElementRefs = useRef11(/* @__PURE__ */ new Map());
11986
- const dockSlotRefCallbacksRef = useRef11(
12103
+ const activeLabelTooltipRef = useRef12(null);
12104
+ const pendingDockStateRefreshRef = useRef12(false);
12105
+ const slotRefs = useRef12(/* @__PURE__ */ new Map());
12106
+ const wallpaperToneElementRefs = useRef12(/* @__PURE__ */ new Map());
12107
+ const dockSlotRefCallbacksRef = useRef12(
11987
12108
  /* @__PURE__ */ new Map()
11988
12109
  );
11989
- const previousAttentionTokenByEntryId = useRef11(/* @__PURE__ */ new Map());
11990
- const dockEntryClickThrottleUntilRef = useRef11(/* @__PURE__ */ new Map());
11991
- const attentionTimeouts = useRef11(
12110
+ const previousAttentionTokenByEntryId = useRef12(/* @__PURE__ */ new Map());
12111
+ const dockEntryClickThrottleUntilRef = useRef12(/* @__PURE__ */ new Map());
12112
+ const attentionTimeouts = useRef12(
11992
12113
  /* @__PURE__ */ new Map()
11993
12114
  );
11994
- const [activeAttentionEntryIds, setActiveAttentionEntryIds] = useState11(/* @__PURE__ */ new Set());
11995
- const [activePopup, setActivePopup] = useState11(null);
11996
- const [activeHoverPanel, setActiveHoverPanel] = useState11(null);
11997
- const [activeLabelTooltip, setActiveLabelTooltip] = useState11(null);
11998
- const [activeMinimizedStackPopup, setActiveMinimizedStackPopup] = useState11(null);
11999
- const [pendingActionKeys, setPendingActionKeys] = useState11(
12115
+ const [activeAttentionEntryIds, setActiveAttentionEntryIds] = useState12(/* @__PURE__ */ new Set());
12116
+ const [activePopup, setActivePopup] = useState12(null);
12117
+ const [activeHoverPanel, setActiveHoverPanel] = useState12(null);
12118
+ const [activeLabelTooltip, setActiveLabelTooltip] = useState12(null);
12119
+ const [activeMinimizedStackPopup, setActiveMinimizedStackPopup] = useState12(null);
12120
+ const [pendingActionKeys, setPendingActionKeys] = useState12(
12000
12121
  () => /* @__PURE__ */ new Set()
12001
12122
  );
12002
- const [dockFrameSize, setDockFrameSize] = useState11(null);
12123
+ const [dockFrameSize, setDockFrameSize] = useState12(null);
12003
12124
  const { triggerDockBounce } = useDockBounce(slotRefs);
12004
- const [dockScrollState, setDockScrollState] = useState11(() => ({
12125
+ const [dockScrollState, setDockScrollState] = useState12(() => ({
12005
12126
  canScrollBackward: false,
12006
12127
  canScrollForward: false,
12007
12128
  hasOverflow: false
12008
12129
  }));
12009
- const [dockStateRevision, setDockStateRevision] = useState11(0);
12010
- const [externalStateRevision, setExternalStateRevision] = useState11(0);
12130
+ const [dockStateRevision, setDockStateRevision] = useState12(0);
12131
+ const [externalStateRevision, setExternalStateRevision] = useState12(0);
12011
12132
  const [
12012
12133
  collapsingMinimizedLaunchAnchorKeys,
12013
12134
  setCollapsingMinimizedLaunchAnchorKeys
12014
- ] = useState11(() => /* @__PURE__ */ new Set());
12015
- const collapsingMinimizedLaunchTimerRef = useRef11(
12135
+ ] = useState12(() => /* @__PURE__ */ new Set());
12136
+ const collapsingMinimizedLaunchTimerRef = useRef12(
12016
12137
  /* @__PURE__ */ new Map()
12017
12138
  );
12018
12139
  const clearHoverPanelCloseTimer = useCallback13(() => {
@@ -12088,7 +12209,7 @@ function WorkbenchHostDock({
12088
12209
  },
12089
12210
  [clearCollapsingMinimizedLaunch]
12090
12211
  );
12091
- useLayoutEffect7(() => {
12212
+ useLayoutEffect8(() => {
12092
12213
  const element = dockMeasureRef.current;
12093
12214
  if (!element || typeof window === "undefined") {
12094
12215
  return void 0;
@@ -12204,10 +12325,10 @@ function WorkbenchHostDock({
12204
12325
  dockViewportRef: dockItemsRef,
12205
12326
  slotRefs
12206
12327
  });
12207
- const clearSlotMagnificationRef = useRef11(() => {
12328
+ const clearSlotMagnificationRef = useRef12(() => {
12208
12329
  return;
12209
12330
  });
12210
- const registerDockAnchorRef = useRef11(
12331
+ const registerDockAnchorRef = useRef12(
12211
12332
  (anchorKey, element) => {
12212
12333
  context.genie.registerDockAnchor(anchorKey, element);
12213
12334
  }
@@ -12670,7 +12791,7 @@ function WorkbenchHostDock({
12670
12791
  (current) => current.canScrollBackward === nextState.canScrollBackward && current.canScrollForward === nextState.canScrollForward && current.hasOverflow === nextState.hasOverflow ? current : nextState
12671
12792
  );
12672
12793
  }, [dockPlacement, dockWidth]);
12673
- useLayoutEffect7(() => {
12794
+ useLayoutEffect8(() => {
12674
12795
  const element = dockItemsRef.current;
12675
12796
  if (!element || typeof window === "undefined") {
12676
12797
  return void 0;
@@ -12961,13 +13082,13 @@ function WorkbenchHostDock({
12961
13082
  instanceMode: dockContextMenuInstanceMode,
12962
13083
  matchedNodes: popupEntry.matchedNodes
12963
13084
  }).kind === "launch";
12964
- return /* @__PURE__ */ jsxs10(
13085
+ return /* @__PURE__ */ jsxs11(
12965
13086
  "div",
12966
13087
  {
12967
13088
  className: "flex justify-center pointer-events-none",
12968
13089
  "data-dock-placement": dockPlacement,
12969
13090
  children: [
12970
- /* @__PURE__ */ jsx13(
13091
+ /* @__PURE__ */ jsx14(
12971
13092
  "div",
12972
13093
  {
12973
13094
  ref: dockPlateRef,
@@ -12976,7 +13097,7 @@ function WorkbenchHostDock({
12976
13097
  style: dockFrameSize === null ? void 0 : {
12977
13098
  "--desktop-dock-frame-size": `${dockFrameSize}px`
12978
13099
  },
12979
- children: /* @__PURE__ */ jsxs10(
13100
+ children: /* @__PURE__ */ jsxs11(
12980
13101
  "div",
12981
13102
  {
12982
13103
  ref: dockMeasureRef,
@@ -13002,7 +13123,7 @@ function WorkbenchHostDock({
13002
13123
  role: "toolbar",
13003
13124
  style: dockPlacement === "left" ? { height: dockWidth } : { width: dockWidth },
13004
13125
  children: [
13005
- /* @__PURE__ */ jsx13(
13126
+ /* @__PURE__ */ jsx14(
13006
13127
  "span",
13007
13128
  {
13008
13129
  className: "desktop-dock__pointer-rail",
@@ -13010,7 +13131,7 @@ function WorkbenchHostDock({
13010
13131
  "aria-hidden": true
13011
13132
  }
13012
13133
  ),
13013
- /* @__PURE__ */ jsx13(
13134
+ /* @__PURE__ */ jsx14(
13014
13135
  "button",
13015
13136
  {
13016
13137
  "aria-label": i18n.t(
@@ -13021,12 +13142,12 @@ function WorkbenchHostDock({
13021
13142
  disabled: !dockScrollState.canScrollBackward,
13022
13143
  onClick: () => scrollDockItems("backward"),
13023
13144
  type: "button",
13024
- children: dockPlacement === "left" ? /* @__PURE__ */ jsx13(ChevronUpIcon, { size: 16 }) : /* @__PURE__ */ jsx13(ArrowLeftIcon, { size: 16 })
13145
+ children: dockPlacement === "left" ? /* @__PURE__ */ jsx14(ChevronUpIcon, { size: 16 }) : /* @__PURE__ */ jsx14(ArrowLeftIcon, { size: 16 })
13025
13146
  }
13026
13147
  ),
13027
- /* @__PURE__ */ jsx13("div", { ref: dockItemsRef, className: "desktop-dock__items", children: presentDockItems.map((dockItem) => {
13148
+ /* @__PURE__ */ jsx14("div", { ref: dockItemsRef, className: "desktop-dock__items", children: presentDockItems.map((dockItem) => {
13028
13149
  if (dockItem.item.kind === "separator") {
13029
- return /* @__PURE__ */ jsx13(
13150
+ return /* @__PURE__ */ jsx14(
13030
13151
  "span",
13031
13152
  {
13032
13153
  ref: registerWallpaperToneElement(dockItem.key),
@@ -13053,7 +13174,7 @@ function WorkbenchHostDock({
13053
13174
  });
13054
13175
  const hasHoverPanel = dockEntryHasHoverPanel(entry);
13055
13176
  const labelTooltipTarget2 = hasHoverPanel ? null : dockLabelTooltipTarget(`entry:${entry.id}`, entry.label);
13056
- const dockButton2 = /* @__PURE__ */ jsx13(
13177
+ const dockButton2 = /* @__PURE__ */ jsx14(
13057
13178
  "button",
13058
13179
  {
13059
13180
  "aria-expanded": currentPopup ? true : void 0,
@@ -13212,7 +13333,7 @@ function WorkbenchHostDock({
13212
13333
  entryId: entry.id
13213
13334
  });
13214
13335
  },
13215
- children: /* @__PURE__ */ jsxs10(
13336
+ children: /* @__PURE__ */ jsxs11(
13216
13337
  "span",
13217
13338
  {
13218
13339
  className: "desktop-dock__icon-shell",
@@ -13220,7 +13341,7 @@ function WorkbenchHostDock({
13220
13341
  "data-entry-state": entry.state?.kind ?? "enabled",
13221
13342
  "aria-hidden": true,
13222
13343
  children: [
13223
- /* @__PURE__ */ jsx13("span", { className: "desktop-dock__icon-content", children: entry.icon }),
13344
+ /* @__PURE__ */ jsx14("span", { className: "desktop-dock__icon-content", children: entry.icon }),
13224
13345
  renderDockBadge(
13225
13346
  entry,
13226
13347
  resolvedEntry.matchedNodes.length
@@ -13230,7 +13351,7 @@ function WorkbenchHostDock({
13230
13351
  )
13231
13352
  }
13232
13353
  );
13233
- return /* @__PURE__ */ jsx13(
13354
+ return /* @__PURE__ */ jsx14(
13234
13355
  "span",
13235
13356
  {
13236
13357
  ref: registerDockSlot(anchorKey),
@@ -13331,7 +13452,7 @@ function WorkbenchHostDock({
13331
13452
  `minimized-stack:${slot.anchorKey}`,
13332
13453
  stackLabel
13333
13454
  );
13334
- const stackButton = /* @__PURE__ */ jsx13(
13455
+ const stackButton = /* @__PURE__ */ jsx14(
13335
13456
  "span",
13336
13457
  {
13337
13458
  "aria-expanded": stackPopupActive,
@@ -13365,7 +13486,7 @@ function WorkbenchHostDock({
13365
13486
  }
13366
13487
  );
13367
13488
  },
13368
- children: /* @__PURE__ */ jsxs10(
13489
+ children: /* @__PURE__ */ jsxs11(
13369
13490
  "span",
13370
13491
  {
13371
13492
  className: "desktop-dock__minimized-stack-icon",
@@ -13380,7 +13501,7 @@ function WorkbenchHostDock({
13380
13501
  (_, index) => {
13381
13502
  const node2 = slot.nodes[index];
13382
13503
  if (index === 0 && node2) {
13383
- return /* @__PURE__ */ jsx13(
13504
+ return /* @__PURE__ */ jsx14(
13384
13505
  WorkbenchHostDockMinimizedNodePreview,
13385
13506
  {
13386
13507
  capturePreview: captureMinimizedNodePreview,
@@ -13395,7 +13516,7 @@ function WorkbenchHostDock({
13395
13516
  minimizedDockPreviewFreezeKey(node2)
13396
13517
  );
13397
13518
  }
13398
- return /* @__PURE__ */ jsx13(
13519
+ return /* @__PURE__ */ jsx14(
13399
13520
  "span",
13400
13521
  {
13401
13522
  "aria-hidden": "true",
@@ -13405,13 +13526,13 @@ function WorkbenchHostDock({
13405
13526
  );
13406
13527
  }
13407
13528
  ),
13408
- /* @__PURE__ */ jsx13("span", { className: "desktop-dock__count-badge", children: slot.nodes.length })
13529
+ /* @__PURE__ */ jsx14("span", { className: "desktop-dock__count-badge", children: slot.nodes.length })
13409
13530
  ]
13410
13531
  }
13411
13532
  )
13412
13533
  }
13413
13534
  );
13414
- return /* @__PURE__ */ jsx13(
13535
+ return /* @__PURE__ */ jsx14(
13415
13536
  "span",
13416
13537
  {
13417
13538
  ref: registerDockSlot(slot.anchorKey),
@@ -13466,7 +13587,7 @@ function WorkbenchHostDock({
13466
13587
  `minimized-node:${node.id}`,
13467
13588
  node.title
13468
13589
  );
13469
- const dockButton = /* @__PURE__ */ jsx13(
13590
+ const dockButton = /* @__PURE__ */ jsx14(
13470
13591
  "span",
13471
13592
  {
13472
13593
  "aria-label": i18n.t("launch", { title: node.title }),
@@ -13527,7 +13648,7 @@ function WorkbenchHostDock({
13527
13648
  }
13528
13649
  );
13529
13650
  },
13530
- children: /* @__PURE__ */ jsx13(
13651
+ children: /* @__PURE__ */ jsx14(
13531
13652
  WorkbenchHostDockMinimizedNodePreview,
13532
13653
  {
13533
13654
  capturePreview: isPendingMinimizedNode ? void 0 : captureMinimizedNodePreview,
@@ -13541,7 +13662,7 @@ function WorkbenchHostDock({
13541
13662
  )
13542
13663
  }
13543
13664
  );
13544
- return /* @__PURE__ */ jsx13(
13665
+ return /* @__PURE__ */ jsx14(
13545
13666
  "span",
13546
13667
  {
13547
13668
  ref: registerDockSlot(slot.anchorKey),
@@ -13591,7 +13712,7 @@ function WorkbenchHostDock({
13591
13712
  dockItem.key
13592
13713
  );
13593
13714
  }) }),
13594
- /* @__PURE__ */ jsx13(
13715
+ /* @__PURE__ */ jsx14(
13595
13716
  "button",
13596
13717
  {
13597
13718
  "aria-label": i18n.t(
@@ -13602,10 +13723,10 @@ function WorkbenchHostDock({
13602
13723
  disabled: !dockScrollState.canScrollForward,
13603
13724
  onClick: () => scrollDockItems("forward"),
13604
13725
  type: "button",
13605
- children: dockPlacement === "left" ? /* @__PURE__ */ jsx13(ChevronDownIcon, { size: 16 }) : /* @__PURE__ */ jsx13(ArrowRightIcon, { size: 16 })
13726
+ children: dockPlacement === "left" ? /* @__PURE__ */ jsx14(ChevronDownIcon, { size: 16 }) : /* @__PURE__ */ jsx14(ArrowRightIcon, { size: 16 })
13606
13727
  }
13607
13728
  ),
13608
- activeHoverPanel ? /* @__PURE__ */ jsx13(
13729
+ activeHoverPanel ? /* @__PURE__ */ jsx14(
13609
13730
  WorkbenchHostDockHoverPanel,
13610
13731
  {
13611
13732
  entry: resolvedEntries.find(
@@ -13638,7 +13759,7 @@ function WorkbenchHostDock({
13638
13759
  }
13639
13760
  }
13640
13761
  ) : null,
13641
- activeLabelTooltip ? /* @__PURE__ */ jsx13(
13762
+ activeLabelTooltip ? /* @__PURE__ */ jsx14(
13642
13763
  WorkbenchHostDockLabelTooltip,
13643
13764
  {
13644
13765
  placement: dockPlacement,
@@ -13650,7 +13771,7 @@ function WorkbenchHostDock({
13650
13771
  )
13651
13772
  }
13652
13773
  ),
13653
- popupEntry && activePopup ? /* @__PURE__ */ jsx13(
13774
+ popupEntry && activePopup ? /* @__PURE__ */ jsx14(
13654
13775
  WorkbenchHostDockPopup,
13655
13776
  {
13656
13777
  anchorRect: activePopup.anchorRect,
@@ -13841,7 +13962,7 @@ function WorkbenchHostDock({
13841
13962
  variant: activePopup.kind === "context-menu" ? "context-menu" : "default"
13842
13963
  }
13843
13964
  ) : null,
13844
- activeMinimizedStackSlot && activeMinimizedStackPopup ? /* @__PURE__ */ jsx13(
13965
+ activeMinimizedStackSlot && activeMinimizedStackPopup ? /* @__PURE__ */ jsx14(
13845
13966
  WorkbenchHostDockPopup,
13846
13967
  {
13847
13968
  anchorRect: activeMinimizedStackPopup,
@@ -13937,139 +14058,6 @@ function WorkbenchHostDock({
13937
14058
  }
13938
14059
  );
13939
14060
  }
13940
- function WorkbenchHostDockMinimizedNodePreview({
13941
- capturePreview,
13942
- className,
13943
- deferPreview = false,
13944
- dockPreviewCache,
13945
- node,
13946
- providePreview,
13947
- workspaceId
13948
- }) {
13949
- const { componentPreview, previewImageUrl } = useWorkbenchMinimizedDockPreview({
13950
- capturePreview,
13951
- deferPreview,
13952
- dockPreviewCache,
13953
- node,
13954
- providePreview,
13955
- workspaceId
13956
- });
13957
- if (deferPreview) {
13958
- return renderMinimizedDockPreviewPlaceholder(className);
13959
- }
13960
- if (previewImageUrl) {
13961
- return /* @__PURE__ */ jsx13(
13962
- "span",
13963
- {
13964
- className: [
13965
- "desktop-dock__minimized-preview",
13966
- "desktop-dock__minimized-preview--snapshot",
13967
- className
13968
- ].filter(Boolean).join(" "),
13969
- "aria-hidden": "true",
13970
- children: /* @__PURE__ */ jsx13(
13971
- "img",
13972
- {
13973
- alt: "",
13974
- className: "desktop-dock__minimized-preview-image",
13975
- draggable: false,
13976
- src: previewImageUrl
13977
- }
13978
- )
13979
- }
13980
- );
13981
- }
13982
- if (componentPreview) {
13983
- return renderMinimizedDockPreviewContent(componentPreview, className);
13984
- }
13985
- return renderMinimizedDockPreviewPlaceholder(className);
13986
- }
13987
- function renderMinimizedDockPreviewPlaceholder(className) {
13988
- return /* @__PURE__ */ jsxs10(
13989
- "span",
13990
- {
13991
- className: ["desktop-dock__minimized-preview", className].filter(Boolean).join(" "),
13992
- "aria-hidden": "true",
13993
- children: [
13994
- /* @__PURE__ */ jsx13("span", { className: "desktop-dock__minimized-preview-line" }),
13995
- /* @__PURE__ */ jsx13("span", { className: "desktop-dock__minimized-preview-line desktop-dock__minimized-preview-line--short" }),
13996
- /* @__PURE__ */ jsx13("span", { className: "desktop-dock__minimized-preview-line desktop-dock__minimized-preview-line--accent" })
13997
- ]
13998
- }
13999
- );
14000
- }
14001
- function renderMinimizedDockPreviewContent(preview, className) {
14002
- if (preview.kind === "image") {
14003
- return /* @__PURE__ */ jsx13(
14004
- "span",
14005
- {
14006
- className: [
14007
- "desktop-dock__minimized-preview",
14008
- "desktop-dock__minimized-preview--snapshot",
14009
- className
14010
- ].filter(Boolean).join(" "),
14011
- "aria-hidden": "true",
14012
- children: /* @__PURE__ */ jsx13(
14013
- "img",
14014
- {
14015
- alt: "",
14016
- className: "desktop-dock__minimized-preview-image",
14017
- draggable: false,
14018
- src: preview.src
14019
- }
14020
- )
14021
- }
14022
- );
14023
- }
14024
- return /* @__PURE__ */ jsx13(
14025
- WorkbenchHostDockFrozenComponentPreview,
14026
- {
14027
- className,
14028
- preview
14029
- }
14030
- );
14031
- }
14032
- function WorkbenchHostDockFrozenComponentPreview({
14033
- className,
14034
- preview
14035
- }) {
14036
- const sourceRef = useRef11(null);
14037
- const [frozenMarkup, setFrozenMarkup] = useState11(null);
14038
- useLayoutEffect7(() => {
14039
- if (frozenMarkup !== null) {
14040
- return;
14041
- }
14042
- setFrozenMarkup(sourceRef.current?.innerHTML ?? "");
14043
- }, [frozenMarkup]);
14044
- return /* @__PURE__ */ jsx13(
14045
- "span",
14046
- {
14047
- className: [
14048
- "desktop-dock__minimized-preview",
14049
- "desktop-dock__minimized-preview--component",
14050
- className
14051
- ].filter(Boolean).join(" "),
14052
- "aria-hidden": "true",
14053
- children: frozenMarkup === null ? /* @__PURE__ */ jsx13(
14054
- "span",
14055
- {
14056
- ref: sourceRef,
14057
- className: "desktop-dock__minimized-preview-freeze-source",
14058
- children: preview.element
14059
- }
14060
- ) : /* @__PURE__ */ jsx13(
14061
- "span",
14062
- {
14063
- className: "desktop-dock__minimized-preview-frozen-content",
14064
- dangerouslySetInnerHTML: { __html: frozenMarkup }
14065
- }
14066
- )
14067
- }
14068
- );
14069
- }
14070
- function minimizedDockPreviewFreezeKey(node) {
14071
- return `${node.id}:${node.minimizedAtUnixMs ?? "pending"}`;
14072
- }
14073
14061
  function dockEntryHasHoverPanel(entry) {
14074
14062
  return Boolean(entry.state?.reason?.trim()) || (entry.hoverActions?.length ?? 0) > 0;
14075
14063
  }
@@ -14105,18 +14093,18 @@ function renderDockBadge(entry, matchedNodeCount) {
14105
14093
  return null;
14106
14094
  }
14107
14095
  if (badge.kind === "count") {
14108
- return /* @__PURE__ */ jsx13("span", { className: "desktop-dock__count-badge", children: badge.value });
14096
+ return /* @__PURE__ */ jsx14("span", { className: "desktop-dock__count-badge", children: badge.value });
14109
14097
  }
14110
14098
  if (badge.kind === "custom") {
14111
- return /* @__PURE__ */ jsx13("span", { className: "desktop-dock__custom-badge", children: badge.content });
14099
+ return /* @__PURE__ */ jsx14("span", { className: "desktop-dock__custom-badge", children: badge.content });
14112
14100
  }
14113
- return /* @__PURE__ */ jsx13("span", { className: "desktop-dock__status-badge", "data-status": badge.status });
14101
+ return /* @__PURE__ */ jsx14("span", { className: "desktop-dock__status-badge", "data-status": badge.status });
14114
14102
  }
14115
14103
  function WorkbenchHostDockLabelTooltip({
14116
14104
  placement,
14117
14105
  state
14118
14106
  }) {
14119
- return /* @__PURE__ */ jsx13(
14107
+ return /* @__PURE__ */ jsx14(
14120
14108
  "div",
14121
14109
  {
14122
14110
  className: "desktop-dock__label-tooltip",
@@ -14146,7 +14134,7 @@ function WorkbenchHostDockHoverPanel({
14146
14134
  setPendingActionKeys,
14147
14135
  state
14148
14136
  }) {
14149
- const lastPointerActionAtRef = useRef11(/* @__PURE__ */ new Map());
14137
+ const lastPointerActionAtRef = useRef12(/* @__PURE__ */ new Map());
14150
14138
  if (!entry) {
14151
14139
  return null;
14152
14140
  }
@@ -14180,7 +14168,7 @@ function WorkbenchHostDockHoverPanel({
14180
14168
  }
14181
14169
  })();
14182
14170
  };
14183
- return /* @__PURE__ */ jsxs10(
14171
+ return /* @__PURE__ */ jsxs11(
14184
14172
  "div",
14185
14173
  {
14186
14174
  ref: hoverPanelRef,
@@ -14199,13 +14187,13 @@ function WorkbenchHostDockHoverPanel({
14199
14187
  "--desktop-dock-hover-panel-anchor-width": `${state.anchorRect.width}px`
14200
14188
  },
14201
14189
  children: [
14202
- /* @__PURE__ */ jsx13("div", { className: "desktop-dock__hover-panel-title", children: entry.label }),
14203
- entry.state?.reason ? /* @__PURE__ */ jsx13("div", { className: "desktop-dock__hover-panel-description", children: stripDockDescriptionTerminalPunctuation(entry.state.reason) }) : null,
14204
- entry.hoverActions?.length ? /* @__PURE__ */ jsx13("div", { className: "desktop-dock__hover-actions", children: entry.hoverActions.map((action) => {
14190
+ /* @__PURE__ */ jsx14("div", { className: "desktop-dock__hover-panel-title", children: entry.label }),
14191
+ entry.state?.reason ? /* @__PURE__ */ jsx14("div", { className: "desktop-dock__hover-panel-description", children: stripDockDescriptionTerminalPunctuation(entry.state.reason) }) : null,
14192
+ entry.hoverActions?.length ? /* @__PURE__ */ jsx14("div", { className: "desktop-dock__hover-actions", children: entry.hoverActions.map((action) => {
14205
14193
  const actionKey = dockActionKey(entry.id, action.id);
14206
14194
  const isLocallyPending = pendingActionKeys.has(actionKey);
14207
14195
  const isPending = isLocallyPending || action.disabled === true && action.pendingLabel !== void 0;
14208
- return /* @__PURE__ */ jsx13(
14196
+ return /* @__PURE__ */ jsx14(
14209
14197
  Button3,
14210
14198
  {
14211
14199
  "aria-busy": isPending ? true : void 0,
@@ -14427,21 +14415,21 @@ function resolveDockPresenceSettleMs(items) {
14427
14415
  return dockPresenceAnimationMs;
14428
14416
  }
14429
14417
  function useDockPresenceItems(items, shouldAnimateMinimizedDockEnter) {
14430
- const latestItemsByKey = useRef11(/* @__PURE__ */ new Map());
14431
- const shouldAnimateMinimizedDockEnterRef = useRef11(
14418
+ const latestItemsByKey = useRef12(/* @__PURE__ */ new Map());
14419
+ const shouldAnimateMinimizedDockEnterRef = useRef12(
14432
14420
  shouldAnimateMinimizedDockEnter
14433
14421
  );
14434
14422
  latestItemsByKey.current = new Map(items.map((item) => [item.key, item]));
14435
14423
  shouldAnimateMinimizedDockEnterRef.current = shouldAnimateMinimizedDockEnter;
14436
14424
  const itemKeys = items.map((item) => item.key).join("\0");
14437
- const [presentItems, setPresentItems] = useState11(
14425
+ const [presentItems, setPresentItems] = useState12(
14438
14426
  () => items.map((item) => ({
14439
14427
  item,
14440
14428
  key: item.key,
14441
14429
  presence: "present"
14442
14430
  }))
14443
14431
  );
14444
- const initialized = useRef11(false);
14432
+ const initialized = useRef12(false);
14445
14433
  useEffect13(() => {
14446
14434
  let nextSettleMs = dockPresenceAnimationMs;
14447
14435
  setPresentItems((current) => {
@@ -14480,10 +14468,10 @@ function useDockWallpaperTones({
14480
14468
  elementRefs,
14481
14469
  itemKeys
14482
14470
  }) {
14483
- const [tones, setTones] = useState11(
14471
+ const [tones, setTones] = useState12(
14484
14472
  () => /* @__PURE__ */ new Map()
14485
14473
  );
14486
- useLayoutEffect7(() => {
14474
+ useLayoutEffect8(() => {
14487
14475
  if (typeof window === "undefined") {
14488
14476
  return void 0;
14489
14477
  }
@@ -14670,7 +14658,7 @@ function dockWallpaperToneMapsEqual(left, right) {
14670
14658
  var DOCK_BOUNCE_MS = 600;
14671
14659
  var DOCK_ENTRY_CLICK_THROTTLE_MS = DOCK_BOUNCE_MS;
14672
14660
  function useDockBounce(slotRefs) {
14673
- const timeoutsRef = useRef11(/* @__PURE__ */ new Map());
14661
+ const timeoutsRef = useRef12(/* @__PURE__ */ new Map());
14674
14662
  const clearDockBounce = useCallback13(
14675
14663
  (anchorKey) => {
14676
14664
  const timeout = timeoutsRef.current.get(anchorKey);
@@ -14904,7 +14892,7 @@ function createWorkbenchHostNodeHeaderContext({
14904
14892
  }
14905
14893
 
14906
14894
  // src/host/WorkbenchHostWindowActions.tsx
14907
- import { jsx as jsx14 } from "react/jsx-runtime";
14895
+ import { jsx as jsx15 } from "react/jsx-runtime";
14908
14896
  function WorkbenchHostWindowActions({
14909
14897
  context,
14910
14898
  host,
@@ -14917,7 +14905,7 @@ function WorkbenchHostWindowActions({
14917
14905
  }
14918
14906
  const minimizable = definition.window?.minimizable !== false;
14919
14907
  const closable = definition.window?.closable !== false;
14920
- return /* @__PURE__ */ jsx14(
14908
+ return /* @__PURE__ */ jsx15(
14921
14909
  WorkbenchWindowTrafficLights,
14922
14910
  {
14923
14911
  close: closable ? {
@@ -14940,11 +14928,11 @@ function WorkbenchHostWindowActions({
14940
14928
  }
14941
14929
 
14942
14930
  // src/host/useWorkbenchHostSurfaceRenderers.tsx
14943
- import { jsx as jsx15, jsxs as jsxs11 } from "react/jsx-runtime";
14931
+ import { jsx as jsx16, jsxs as jsxs12 } from "react/jsx-runtime";
14944
14932
  function useWorkbenchHostSurfaceRenderers(input) {
14945
14933
  const renderBottomChrome = useMemo11(() => {
14946
14934
  const renderChrome = input.renderBottomChrome;
14947
- return renderChrome ? () => /* @__PURE__ */ jsx15(
14935
+ return renderChrome ? () => /* @__PURE__ */ jsx16(
14948
14936
  WorkbenchHostSurfaceRenderErrorBoundary,
14949
14937
  {
14950
14938
  debugDiagnostics: input.debugDiagnostics,
@@ -14955,7 +14943,7 @@ function useWorkbenchHostSurfaceRenderers(input) {
14955
14943
  fallbackKind: "bottom-chrome",
14956
14944
  resetKey: `${input.workspaceId}:bottom-chrome`,
14957
14945
  workspaceId: input.workspaceId,
14958
- children: /* @__PURE__ */ jsx15(
14946
+ children: /* @__PURE__ */ jsx16(
14959
14947
  WorkbenchHostChromeRenderer,
14960
14948
  {
14961
14949
  context: input.chromeContext,
@@ -14972,7 +14960,7 @@ function useWorkbenchHostSurfaceRenderers(input) {
14972
14960
  ]);
14973
14961
  const renderTopChrome = useMemo11(() => {
14974
14962
  const renderChrome = input.renderTopChrome;
14975
- return renderChrome ? () => /* @__PURE__ */ jsx15(
14963
+ return renderChrome ? () => /* @__PURE__ */ jsx16(
14976
14964
  WorkbenchHostSurfaceRenderErrorBoundary,
14977
14965
  {
14978
14966
  debugDiagnostics: input.debugDiagnostics,
@@ -14983,7 +14971,7 @@ function useWorkbenchHostSurfaceRenderers(input) {
14983
14971
  fallbackKind: "top-chrome",
14984
14972
  resetKey: `${input.workspaceId}:top-chrome`,
14985
14973
  workspaceId: input.workspaceId,
14986
- children: /* @__PURE__ */ jsx15(
14974
+ children: /* @__PURE__ */ jsx16(
14987
14975
  WorkbenchHostChromeRenderer,
14988
14976
  {
14989
14977
  context: input.chromeContext,
@@ -15078,7 +15066,7 @@ function useWorkbenchHostSurfaceRenderers(input) {
15078
15066
  ]
15079
15067
  );
15080
15068
  const renderDock = useCallback14(
15081
- (context) => /* @__PURE__ */ jsx15(
15069
+ (context) => /* @__PURE__ */ jsx16(
15082
15070
  WorkbenchHostSurfaceRenderErrorBoundary,
15083
15071
  {
15084
15072
  debugDiagnostics: input.debugDiagnostics,
@@ -15090,7 +15078,7 @@ function useWorkbenchHostSurfaceRenderers(input) {
15090
15078
  fallbackKind: "dock",
15091
15079
  resetKey: `${input.workspaceId}:dock`,
15092
15080
  workspaceId: input.workspaceId,
15093
- children: /* @__PURE__ */ jsx15(
15081
+ children: /* @__PURE__ */ jsx16(
15094
15082
  WorkbenchHostDock,
15095
15083
  {
15096
15084
  captureNodePreviewImage,
@@ -15137,7 +15125,7 @@ function useWorkbenchHostSurfaceRenderers(input) {
15137
15125
  if (!definition) {
15138
15126
  return null;
15139
15127
  }
15140
- return /* @__PURE__ */ jsx15(
15128
+ return /* @__PURE__ */ jsx16(
15141
15129
  WorkbenchHostNodeRenderer,
15142
15130
  {
15143
15131
  debugDiagnostics: input.debugDiagnostics,
@@ -15158,7 +15146,7 @@ function useWorkbenchHostSurfaceRenderers(input) {
15158
15146
  ]
15159
15147
  );
15160
15148
  const renderWindowActions = useCallback14(
15161
- (context) => /* @__PURE__ */ jsx15(
15149
+ (context) => /* @__PURE__ */ jsx16(
15162
15150
  WorkbenchHostWindowActions,
15163
15151
  {
15164
15152
  context,
@@ -15177,7 +15165,7 @@ function useWorkbenchHostSurfaceRenderers(input) {
15177
15165
  if (!definition?.renderHeader) {
15178
15166
  return null;
15179
15167
  }
15180
- return /* @__PURE__ */ jsx15(
15168
+ return /* @__PURE__ */ jsx16(
15181
15169
  MemoizedWorkbenchHostNodeHeaderStateBridge,
15182
15170
  {
15183
15171
  context,
@@ -15351,7 +15339,7 @@ function WorkbenchHostNodeRenderer(input) {
15351
15339
  input.context.node.id
15352
15340
  ]
15353
15341
  );
15354
- return /* @__PURE__ */ jsx15(
15342
+ return /* @__PURE__ */ jsx16(
15355
15343
  WorkbenchHostNodeRenderErrorBoundary,
15356
15344
  {
15357
15345
  debugDiagnostics: input.debugDiagnostics,
@@ -15362,7 +15350,7 @@ function WorkbenchHostNodeRenderer(input) {
15362
15350
  }),
15363
15351
  resetKey,
15364
15352
  workspaceId: input.workspaceId,
15365
- children: /* @__PURE__ */ jsx15(
15353
+ children: /* @__PURE__ */ jsx16(
15366
15354
  MemoizedWorkbenchHostNodeBodyRenderer,
15367
15355
  {
15368
15356
  context: bodyContext,
@@ -15387,7 +15375,7 @@ function WorkbenchHostNodeHeaderStateBridge(input) {
15387
15375
  workspaceId: input.workspaceId
15388
15376
  });
15389
15377
  const getFrameRenderKey = input.definition.getHeaderFrameRenderKey;
15390
- return /* @__PURE__ */ jsx15(
15378
+ return /* @__PURE__ */ jsx16(
15391
15379
  MemoizedWorkbenchHostNodeHeaderRenderer,
15392
15380
  {
15393
15381
  context,
@@ -15464,7 +15452,7 @@ var WorkbenchHostSurfaceRenderErrorBoundary = class extends Component {
15464
15452
  }
15465
15453
  render() {
15466
15454
  if (this.state.hasError) {
15467
- return /* @__PURE__ */ jsx15(
15455
+ return /* @__PURE__ */ jsx16(
15468
15456
  "div",
15469
15457
  {
15470
15458
  "data-workbench-surface-render-error": this.props.fallbackKind,
@@ -15523,7 +15511,7 @@ var WorkbenchHostNodeRenderErrorBoundary = class extends Component {
15523
15511
  }
15524
15512
  render() {
15525
15513
  if (this.state.hasError) {
15526
- return /* @__PURE__ */ jsxs11(
15514
+ return /* @__PURE__ */ jsxs12(
15527
15515
  "div",
15528
15516
  {
15529
15517
  "data-workbench-node-render-error": "true",
@@ -15541,7 +15529,7 @@ var WorkbenchHostNodeRenderErrorBoundary = class extends Component {
15541
15529
  width: "100%"
15542
15530
  },
15543
15531
  children: [
15544
- /* @__PURE__ */ jsx15(
15532
+ /* @__PURE__ */ jsx16(
15545
15533
  "div",
15546
15534
  {
15547
15535
  "data-workbench-node-render-error-message": "true",
@@ -15553,8 +15541,8 @@ var WorkbenchHostNodeRenderErrorBoundary = class extends Component {
15553
15541
  children: "This workspace view failed to render."
15554
15542
  }
15555
15543
  ),
15556
- /* @__PURE__ */ jsx15("div", { style: { fontSize: 12 }, children: "Try selecting another conversation or reopen the window." }),
15557
- /* @__PURE__ */ jsx15(
15544
+ /* @__PURE__ */ jsx16("div", { style: { fontSize: 12 }, children: "Try selecting another conversation or reopen the window." }),
15545
+ /* @__PURE__ */ jsx16(
15558
15546
  "button",
15559
15547
  {
15560
15548
  type: "button",
@@ -15591,7 +15579,7 @@ function WorkbenchHostChromeRenderer({
15591
15579
  }
15592
15580
 
15593
15581
  // src/host/WorkbenchHost.tsx
15594
- import { jsx as jsx16 } from "react/jsx-runtime";
15582
+ import { jsx as jsx17 } from "react/jsx-runtime";
15595
15583
  var noop3 = () => {
15596
15584
  };
15597
15585
  function WorkbenchHost({
@@ -15706,7 +15694,7 @@ function WorkbenchHost({
15706
15694
  });
15707
15695
  const missionControlPresence = useWorkbenchMissionControlPresence(missionControlState);
15708
15696
  const missionControlRenderedState = missionControlPresence.state;
15709
- return /* @__PURE__ */ jsx16(
15697
+ return /* @__PURE__ */ jsx17(
15710
15698
  WorkbenchSurface,
15711
15699
  {
15712
15700
  className,
@@ -15721,7 +15709,7 @@ function WorkbenchHost({
15721
15709
  missionControlPhase: missionControlPresence.phase,
15722
15710
  minimizeAnimation,
15723
15711
  presentation: missionControlState?.presentation ?? null,
15724
- renderBackdrop: missionControlRenderedState ? () => /* @__PURE__ */ jsx16(
15712
+ renderBackdrop: missionControlRenderedState ? () => /* @__PURE__ */ jsx17(
15725
15713
  WorkbenchMissionControlBackdrop,
15726
15714
  {
15727
15715
  onExitTransitionComplete: () => missionControlPresence.completeExitTransition(),
@@ -15732,7 +15720,7 @@ function WorkbenchHost({
15732
15720
  renderDock: surfaceRenderers.renderDock,
15733
15721
  renderNode: surfaceRenderers.renderNode,
15734
15722
  renderNodeGeniePreview: surfaceRenderers.renderNodeGeniePreview,
15735
- renderOverlay: missionControlRenderedState ? () => /* @__PURE__ */ jsx16(
15723
+ renderOverlay: missionControlRenderedState ? () => /* @__PURE__ */ jsx17(
15736
15724
  WorkbenchMissionControlOverlay,
15737
15725
  {
15738
15726
  i18n: missionControlI18n,
@@ -15944,7 +15932,7 @@ function serializeError(error) {
15944
15932
  }
15945
15933
 
15946
15934
  // src/react/WorkbenchDockComponentPreviewFrame.tsx
15947
- import { jsx as jsx17 } from "react/jsx-runtime";
15935
+ import { jsx as jsx18 } from "react/jsx-runtime";
15948
15936
  function WorkbenchDockComponentPreviewFrame({
15949
15937
  children,
15950
15938
  sourceSize,
@@ -15980,13 +15968,13 @@ function WorkbenchDockComponentPreviewFrame({
15980
15968
  transformOrigin: "center",
15981
15969
  width: `${sourceWidth}px`
15982
15970
  };
15983
- return /* @__PURE__ */ jsx17(
15971
+ return /* @__PURE__ */ jsx18(
15984
15972
  "span",
15985
15973
  {
15986
15974
  "aria-hidden": "true",
15987
15975
  "data-workbench-dock-component-preview-frame": "true",
15988
15976
  style: frameStyle,
15989
- children: /* @__PURE__ */ jsx17(
15977
+ children: /* @__PURE__ */ jsx18(
15990
15978
  "span",
15991
15979
  {
15992
15980
  "data-workbench-dock-component-preview-content": "true",