react-os-shell 3.12.0 → 3.14.2

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.
Files changed (53) hide show
  1. package/dist/Browser-XFQRBIF2.js +7 -0
  2. package/dist/{Browser-2FY74OL6.js.map → Browser-XFQRBIF2.js.map} +1 -1
  3. package/dist/{Calculator-47JKICCY.js → Calculator-V7OU5TSD.js} +4 -4
  4. package/dist/{Calculator-47JKICCY.js.map → Calculator-V7OU5TSD.js.map} +1 -1
  5. package/dist/{CurrencyConverter-V6MDJF34.js → CurrencyConverter-SUSY6HRW.js} +4 -4
  6. package/dist/{CurrencyConverter-V6MDJF34.js.map → CurrencyConverter-SUSY6HRW.js.map} +1 -1
  7. package/dist/{Documents-IHK2JMWI.js → Documents-GEBFR23U.js} +4 -4
  8. package/dist/{Documents-IHK2JMWI.js.map → Documents-GEBFR23U.js.map} +1 -1
  9. package/dist/Files-PZ3XY3QV.js +12 -0
  10. package/dist/{Files-JK45SHMI.js.map → Files-PZ3XY3QV.js.map} +1 -1
  11. package/dist/{Notepad-2WJML7F3.js → Notepad-QLWMRFXJ.js} +4 -4
  12. package/dist/{Notepad-2WJML7F3.js.map → Notepad-QLWMRFXJ.js.map} +1 -1
  13. package/dist/{PomodoroTimer-GH2L545O.js → PomodoroTimer-KCKA254T.js} +5 -5
  14. package/dist/{PomodoroTimer-GH2L545O.js.map → PomodoroTimer-KCKA254T.js.map} +1 -1
  15. package/dist/Preview-XSENQ2JX.js +8 -0
  16. package/dist/{Preview-EH5SPVRS.js.map → Preview-XSENQ2JX.js.map} +1 -1
  17. package/dist/Spreadsheet-VE2FEXFK.js +7 -0
  18. package/dist/{Spreadsheet-ZYL35FIB.js.map → Spreadsheet-VE2FEXFK.js.map} +1 -1
  19. package/dist/{Stock-D2GVQNCO.js → Stock-YRQMQXTG.js} +4 -4
  20. package/dist/{Stock-D2GVQNCO.js.map → Stock-YRQMQXTG.js.map} +1 -1
  21. package/dist/{Weather-LMBR67BX.js → Weather-RWEAJS36.js} +4 -4
  22. package/dist/{Weather-LMBR67BX.js.map → Weather-RWEAJS36.js.map} +1 -1
  23. package/dist/{WorldClock-HWHH52IB.js → WorldClock-E6MSOW5A.js} +4 -4
  24. package/dist/{WorldClock-HWHH52IB.js.map → WorldClock-E6MSOW5A.js.map} +1 -1
  25. package/dist/apps/index.d.ts +1 -1
  26. package/dist/apps/index.js +19 -19
  27. package/dist/{chunk-HT74MVNF.js → chunk-6GVIP3TJ.js} +4 -4
  28. package/dist/{chunk-HT74MVNF.js.map → chunk-6GVIP3TJ.js.map} +1 -1
  29. package/dist/{chunk-5GXZVC32.js → chunk-7E7UQYFL.js} +4 -4
  30. package/dist/{chunk-5GXZVC32.js.map → chunk-7E7UQYFL.js.map} +1 -1
  31. package/dist/{chunk-JSBH5CKG.js → chunk-7GSHFSWI.js} +4 -4
  32. package/dist/{chunk-JSBH5CKG.js.map → chunk-7GSHFSWI.js.map} +1 -1
  33. package/dist/{chunk-PXJWC5FZ.js → chunk-ATLWPGXH.js} +5 -5
  34. package/dist/{chunk-PXJWC5FZ.js.map → chunk-ATLWPGXH.js.map} +1 -1
  35. package/dist/{chunk-EOHB7ETC.js → chunk-FKZTCOOQ.js} +4 -4
  36. package/dist/{chunk-EOHB7ETC.js.map → chunk-FKZTCOOQ.js.map} +1 -1
  37. package/dist/{chunk-UY2ZQNVM.js → chunk-GYAP4IBA.js} +4 -4
  38. package/dist/{chunk-UY2ZQNVM.js.map → chunk-GYAP4IBA.js.map} +1 -1
  39. package/dist/{chunk-HDXKSJDT.js → chunk-H564CUGN.js} +3 -3
  40. package/dist/{chunk-HDXKSJDT.js.map → chunk-H564CUGN.js.map} +1 -1
  41. package/dist/{chunk-55MDWJQ2.js → chunk-KHKPAF5R.js} +3 -3
  42. package/dist/{chunk-55MDWJQ2.js.map → chunk-KHKPAF5R.js.map} +1 -1
  43. package/dist/{chunk-PQFF4IXI.js → chunk-ZGLERMDX.js} +32 -17
  44. package/dist/chunk-ZGLERMDX.js.map +1 -0
  45. package/dist/index.d.ts +2 -2
  46. package/dist/index.js +12 -12
  47. package/dist/{types-DqonitKD.d.ts → types-BHVq95fp.d.ts} +11 -0
  48. package/package.json +1 -1
  49. package/dist/Browser-2FY74OL6.js +0 -7
  50. package/dist/Files-JK45SHMI.js +0 -12
  51. package/dist/Preview-EH5SPVRS.js +0 -8
  52. package/dist/Spreadsheet-ZYL35FIB.js +0 -7
  53. package/dist/chunk-PQFF4IXI.js.map +0 -1
@@ -667,11 +667,11 @@ function ensureGestureStyle() {
667
667
  if (typeof document === "undefined" || document.getElementById(GESTURE_STYLE_ID)) return;
668
668
  const style = document.createElement("style");
669
669
  style.id = GESTURE_STYLE_ID;
670
- style.textContent = // Drop the frosted blur on every glass surface EXCEPT the one inside the
671
- // window currently being dragged/resized (`.rosh-gesture-window`), so the
672
- // grabbed window keeps its glass while the static windows/chrome shed the
673
- // per-frame re-sample.
674
- "body.rosh-gesturing .backdrop-blur-sm:not(.rosh-gesture-window *){backdrop-filter:none!important;-webkit-backdrop-filter:none!important}body.rosh-gesturing [data-modal-panel]{will-change:transform}";
670
+ style.textContent = // Promote every window to its own compositor layer for the gesture so
671
+ // dragging the foreground window doesn't repaint the ones behind it. We do
672
+ // NOT drop backdrop-blur — every window keeps its frosted glass while a
673
+ // drag/resize is in progress (only the grabbed window re-samples, cheaply).
674
+ "body.rosh-gesturing [data-modal-panel]{will-change:transform}";
675
675
  document.head.appendChild(style);
676
676
  }
677
677
  var RESIZE_CURSOR = {
@@ -692,8 +692,6 @@ function beginPointerGesture(handle, pointerId, cursor) {
692
692
  } catch {
693
693
  }
694
694
  document.body.classList.add("rosh-gesturing");
695
- const gestureWindow = handle.closest("[data-modal-panel]");
696
- gestureWindow?.classList.add("rosh-gesture-window");
697
695
  const shield = document.createElement("div");
698
696
  shield.setAttribute("data-drag-shield", "");
699
697
  shield.style.cssText = `position:fixed;inset:0;z-index:2147483647;cursor:${cursor};background:transparent;touch-action:none`;
@@ -707,7 +705,6 @@ function beginPointerGesture(handle, pointerId, cursor) {
707
705
  } catch {
708
706
  }
709
707
  shield.remove();
710
- gestureWindow?.classList.remove("rosh-gesture-window");
711
708
  document.body.classList.remove("rosh-gesturing");
712
709
  };
713
710
  }
@@ -2099,7 +2096,7 @@ function RestoredRegistryModal({ item, onClose, onMinimize }) {
2099
2096
  icon: entityIcon,
2100
2097
  title: titleContent,
2101
2098
  footer: footerContent,
2102
- copyText: item.id,
2099
+ copyText: item.label,
2103
2100
  windowKey: item.id,
2104
2101
  openedFromKey: item.openedFrom,
2105
2102
  size: entry.size || "2xl",
@@ -2349,14 +2346,16 @@ function TaskbarWindows({ openWindows, onRemove, onCloseAll, onSplitView, onActi
2349
2346
  const groups = [];
2350
2347
  const idx = /* @__PURE__ */ new Map();
2351
2348
  for (const item of tabWindows) {
2352
- const key = item.route ?? `entity:${item.id}`;
2349
+ const entry = item.route ? WINDOW_REGISTRY[item.route] : void 0;
2350
+ const grp = entry?.taskbarGroup;
2351
+ const key = grp?.key ?? item.route ?? `entity:${item.id}`;
2353
2352
  const i = idx.get(key);
2354
2353
  if (i !== void 0) {
2355
2354
  groups[i].items.push(item);
2356
2355
  } else {
2357
2356
  idx.set(key, groups.length);
2358
- const registryLabel = item.route ? WINDOW_REGISTRY[item.route]?.label : void 0;
2359
- groups.push({ key, route: item.route, label: registryLabel ?? item.label, items: [item] });
2357
+ const label = grp?.label ?? entry?.label ?? item.label;
2358
+ groups.push({ key, route: grp?.icon ?? item.route, label, items: [item] });
2360
2359
  }
2361
2360
  }
2362
2361
  return createPortal(
@@ -2487,12 +2486,28 @@ function seedDefaultWidgetPositions(widgets) {
2487
2486
  y += stackH + GAP;
2488
2487
  }
2489
2488
  }
2489
+ function healWindowIds(items) {
2490
+ const counts = /* @__PURE__ */ new Map();
2491
+ for (const it of items) counts.set(it.id, (counts.get(it.id) ?? 0) + 1);
2492
+ const seen = /* @__PURE__ */ new Set();
2493
+ const out = [];
2494
+ for (const it of items) {
2495
+ let id = it.id;
2496
+ if ((counts.get(it.id) ?? 0) > 1 && it.type === "modal" && it.entityType && it.entityId) {
2497
+ id = `${it.entityType}:${it.entityId}`;
2498
+ }
2499
+ if (seen.has(id)) continue;
2500
+ seen.add(id);
2501
+ out.push(id === it.id ? it : { ...it, id });
2502
+ }
2503
+ return out;
2504
+ }
2490
2505
  function restoreWindowState() {
2491
2506
  try {
2492
2507
  if (window.location.pathname === "/login") return [];
2493
2508
  if (!localStorage.getItem("access_token")) return [];
2494
2509
  const stored = localStorage.getItem(SESSION_KEY);
2495
- if (stored) return JSON.parse(stored);
2510
+ if (stored) return healWindowIds(JSON.parse(stored));
2496
2511
  } catch {
2497
2512
  }
2498
2513
  seedDefaultWidgetPositions(DEFAULT_WIDGETS);
@@ -2524,10 +2539,10 @@ function WindowManagerProvider({ children }) {
2524
2539
  };
2525
2540
  const openEntity = useCallback((entityType, entityId, snapshot, label, route) => {
2526
2541
  if (!WINDOW_REGISTRY[entityType] || !isEntityEntry(WINDOW_REGISTRY[entityType])) return;
2527
- const id = label || entityId;
2542
+ const id = `${entityType}:${entityId}`;
2528
2543
  const openedFrom = currentlyActiveWindowKey();
2529
2544
  setOpenWindows((prev) => {
2530
- const existing = prev.find((m) => m.entityId === entityId && m.entityType === entityType);
2545
+ const existing = prev.find((m) => m.entityType === entityType && String(m.entityId) === String(entityId));
2531
2546
  if (existing) {
2532
2547
  activateAfterMount(existing.id);
2533
2548
  return prev;
@@ -2635,5 +2650,5 @@ function WindowManagerProvider({ children }) {
2635
2650
  }
2636
2651
 
2637
2652
  export { CancelButton, CopyButton, DocFavStar, LoadingSpinner, Modal, ModalActions, PopupMenu, PopupMenuDivider, PopupMenuItem, PopupMenuLabel, ShellPrefsProvider, ThumbCard, WINDOW_REGISTRY, WindowCrashedFallback, WindowErrorBoundary, WindowManagerProvider, WindowTitle, activateModal, client_default, commitExposeHighlight, exitExposeMode, getActiveModalId, getActiveWindowRoute, getExposeHighlight, getWindowPosition, isEntityEntry, isPageEntry, registerModalEscapeInterceptor, setExposeHighlight, setShellApiClient, setShellWindowRegistry, setWindowDefaultPosition, setWindowPosition, subscribeExposeHighlight, toggleExposeMode, useIsMobile, useLocalStoragePrefs, useModalActive, useShellPrefs, useWidgetSettings, useWindowManager, useWindowMenuItem, useWindowTitle };
2638
- //# sourceMappingURL=chunk-PQFF4IXI.js.map
2639
- //# sourceMappingURL=chunk-PQFF4IXI.js.map
2653
+ //# sourceMappingURL=chunk-ZGLERMDX.js.map
2654
+ //# sourceMappingURL=chunk-ZGLERMDX.js.map