@forgeax/app-shell 0.57.0 → 0.59.0

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/react.d.ts CHANGED
@@ -269,10 +269,23 @@ interface DragPresenceLifecycleOptions {
269
269
  readonly target?: DragPresenceEventTarget;
270
270
  readonly isStartTarget: (target: EventTarget | null) => boolean;
271
271
  readonly onActiveChange: (active: boolean) => void;
272
+ /** Observes every dragover, including drags that were not admitted as active. */
273
+ readonly onDragOver?: (target: EventTarget | null) => void;
272
274
  }
273
275
  /** Own one HTML5 drag-presence lease without owning target or presentation policy. */
274
276
  declare function installDragPresenceLifecycle(options: DragPresenceLifecycleOptions): () => void;
275
277
 
278
+ interface ViewportResizeEventTarget {
279
+ addEventListener(type: 'resize', listener: EventListener): void;
280
+ removeEventListener(type: 'resize', listener: EventListener): void;
281
+ }
282
+ interface ViewportResizeObservationOptions {
283
+ readonly target?: ViewportResizeEventTarget;
284
+ readonly onResize: () => void;
285
+ }
286
+ /** Observe viewport resize without owning the caller's geometry policy. */
287
+ declare function installViewportResizeObservation(options: ViewportResizeObservationOptions): () => void;
288
+
276
289
  type PanelContentPadding = 'none' | 'sm' | 'md';
277
290
  type PanelContentScroll = 'none' | 'auto';
278
291
  type PanelContentTone = 'default' | 'surface' | 'tool';
@@ -414,4 +427,4 @@ interface ShellSlotProps extends HTMLAttributes<HTMLElement> {
414
427
  /** Structural shell marker that preserves the caller's semantic element. */
415
428
  declare function ShellSlot({ as, name, ...props }: ShellSlotProps): ReactElement;
416
429
 
417
- export { type AnchoredResizeDirection, AnchoredResizeHandle, type AnchoredResizeHandleProps, type AnchoredResizeSession, type BoundedFrameRetryLifecycleOptions, type CoalescedFrameTaskLifecycle, type CoalescedFrameTaskLifecycleOptions, DetachedPanelBoundary, type DetachedPanelBoundaryProps, DetachedSurfaceFrame, type DetachedSurfaceFrameProps, DetachedSurfaceStatus, type DetachedSurfaceStatusProps, type DetachedSurfaceStatusTone, type DockLayoutControlBinding, type DockLayoutControlBindingOptions, DockLayoutMenu, type DockLayoutMenuPanel, type DockLayoutMenuProps, DockTabAction, type DockTabActionProps, DockTabFrame, type DockTabFrameProps, DockTabIcon, type DockTabIconProps, DockTabStatusSummary, type DockTabStatusSummaryItem, type DockTabStatusSummaryProps, type DockTabStatusTone, DockTabTitle, type DockTabTitleProps, type DragPresenceEventTarget, type DragPresenceLifecycleOptions, FloatingMenu, type FloatingMenuAnchor, type FloatingMenuPoint, type FloatingMenuProps, type LiveTabPlacement, type LiveTabPlacementSource, type LiveTabTitleSource, OWNED_INTERACTION_SURFACE_SELECTOR, type OutsideDismissEventTarget, type OutsideDismissLifecycleOptions, type OutsideDismissReason, type PanelContentPadding, type PanelContentPolicy, type PanelContentScroll, type PanelContentTone, PanelEmptyState, type PanelEmptyStateProps, PanelSurface, type PanelSurfaceProps, type PersistentSizeStorage, type PersistentSizeStore, type PersistentSizeStoreOptions, type PersistentSizeUpdate, type PointerDragFinishReason, type PointerDragSessionOptions, type PointerReorderFinishReason, type PointerReorderSession, type PointerReorderSessionOptions, ResizeHandle, type ResizeHandleProps, ShellSlot, type ShellSlotElement, type ShellSlotProps, SlotDebugOverlay, SurfacePlaceholder, type SurfacePlaceholderProps, SurfaceRegion, type SurfaceRegionProps, type TabCloseInteractions, type TabCloseInteractionsOptions, type TabPinnedStateSource, type ThresholdPointerDragFinishReason, type ThresholdPointerDragSession, type ThresholdPointerDragSessionOptions, applyAnchoredResizeDelta, beginAnchoredResize, createCoalescedFrameTaskLifecycle, createPersistentSizeStore, hashSlotHue, installBoundedFrameRetryLifecycle, installDragPresenceLifecycle, installOutsideDismissLifecycle, installPointerDragSession, installPointerReorderSession, installThresholdPointerDragSession, isDismissExemptInteractionTarget, isSlotDebugEnabled, useDockLayoutControlBinding, useLiveTabPlacement, useLiveTabTitle, useLocalSize, usePersistentSizeStore, useTabCloseInteractions, useTabPinnedState };
430
+ export { type AnchoredResizeDirection, AnchoredResizeHandle, type AnchoredResizeHandleProps, type AnchoredResizeSession, type BoundedFrameRetryLifecycleOptions, type CoalescedFrameTaskLifecycle, type CoalescedFrameTaskLifecycleOptions, DetachedPanelBoundary, type DetachedPanelBoundaryProps, DetachedSurfaceFrame, type DetachedSurfaceFrameProps, DetachedSurfaceStatus, type DetachedSurfaceStatusProps, type DetachedSurfaceStatusTone, type DockLayoutControlBinding, type DockLayoutControlBindingOptions, DockLayoutMenu, type DockLayoutMenuPanel, type DockLayoutMenuProps, DockTabAction, type DockTabActionProps, DockTabFrame, type DockTabFrameProps, DockTabIcon, type DockTabIconProps, DockTabStatusSummary, type DockTabStatusSummaryItem, type DockTabStatusSummaryProps, type DockTabStatusTone, DockTabTitle, type DockTabTitleProps, type DragPresenceEventTarget, type DragPresenceLifecycleOptions, FloatingMenu, type FloatingMenuAnchor, type FloatingMenuPoint, type FloatingMenuProps, type LiveTabPlacement, type LiveTabPlacementSource, type LiveTabTitleSource, OWNED_INTERACTION_SURFACE_SELECTOR, type OutsideDismissEventTarget, type OutsideDismissLifecycleOptions, type OutsideDismissReason, type PanelContentPadding, type PanelContentPolicy, type PanelContentScroll, type PanelContentTone, PanelEmptyState, type PanelEmptyStateProps, PanelSurface, type PanelSurfaceProps, type PersistentSizeStorage, type PersistentSizeStore, type PersistentSizeStoreOptions, type PersistentSizeUpdate, type PointerDragFinishReason, type PointerDragSessionOptions, type PointerReorderFinishReason, type PointerReorderSession, type PointerReorderSessionOptions, ResizeHandle, type ResizeHandleProps, ShellSlot, type ShellSlotElement, type ShellSlotProps, SlotDebugOverlay, SurfacePlaceholder, type SurfacePlaceholderProps, SurfaceRegion, type SurfaceRegionProps, type TabCloseInteractions, type TabCloseInteractionsOptions, type TabPinnedStateSource, type ThresholdPointerDragFinishReason, type ThresholdPointerDragSession, type ThresholdPointerDragSessionOptions, type ViewportResizeEventTarget, type ViewportResizeObservationOptions, applyAnchoredResizeDelta, beginAnchoredResize, createCoalescedFrameTaskLifecycle, createPersistentSizeStore, hashSlotHue, installBoundedFrameRetryLifecycle, installDragPresenceLifecycle, installOutsideDismissLifecycle, installPointerDragSession, installPointerReorderSession, installThresholdPointerDragSession, installViewportResizeObservation, isDismissExemptInteractionTarget, isSlotDebugEnabled, useDockLayoutControlBinding, useLiveTabPlacement, useLiveTabTitle, useLocalSize, usePersistentSizeStore, useTabCloseInteractions, useTabPinnedState };
package/dist/react.js CHANGED
@@ -1864,6 +1864,7 @@ function installDragPresenceLifecycle(options) {
1864
1864
  let disposed = false;
1865
1865
  let active = false;
1866
1866
  let startRegistered = false;
1867
+ let overRegistered = false;
1867
1868
  let endRegistered = false;
1868
1869
  let dropRegistered = false;
1869
1870
  const publish = (next) => {
@@ -1889,6 +1890,13 @@ function installDragPresenceLifecycle(options) {
1889
1890
  if (disposed) return;
1890
1891
  publish(false);
1891
1892
  };
1893
+ const onOver = (event) => {
1894
+ if (disposed) return;
1895
+ try {
1896
+ options.onDragOver?.(event.target);
1897
+ } catch {
1898
+ }
1899
+ };
1892
1900
  const remove = (type, listener, registered) => {
1893
1901
  if (!registered) return;
1894
1902
  try {
@@ -1899,6 +1907,8 @@ function installDragPresenceLifecycle(options) {
1899
1907
  try {
1900
1908
  startRegistered = true;
1901
1909
  target.addEventListener("dragstart", onStart, true);
1910
+ overRegistered = true;
1911
+ target.addEventListener("dragover", onOver, true);
1902
1912
  endRegistered = true;
1903
1913
  target.addEventListener("dragend", onEnd, true);
1904
1914
  dropRegistered = true;
@@ -1907,6 +1917,7 @@ function installDragPresenceLifecycle(options) {
1907
1917
  disposed = true;
1908
1918
  remove("drop", onEnd, dropRegistered);
1909
1919
  remove("dragend", onEnd, endRegistered);
1920
+ remove("dragover", onOver, overRegistered);
1910
1921
  remove("dragstart", onStart, startRegistered);
1911
1922
  publish(false);
1912
1923
  }
@@ -1915,11 +1926,50 @@ function installDragPresenceLifecycle(options) {
1915
1926
  disposed = true;
1916
1927
  remove("drop", onEnd, dropRegistered);
1917
1928
  remove("dragend", onEnd, endRegistered);
1929
+ remove("dragover", onOver, overRegistered);
1918
1930
  remove("dragstart", onStart, startRegistered);
1919
1931
  publish(false);
1920
1932
  };
1921
1933
  }
1922
1934
 
1935
+ // src/viewport-resize.ts
1936
+ function installViewportResizeObservation(options) {
1937
+ const target = options.target ?? (typeof window === "undefined" ? void 0 : window);
1938
+ if (!target) return () => {
1939
+ };
1940
+ let disposed = false;
1941
+ let registered = false;
1942
+ const onResize = () => {
1943
+ if (disposed) return;
1944
+ try {
1945
+ options.onResize();
1946
+ } catch {
1947
+ }
1948
+ };
1949
+ try {
1950
+ registered = true;
1951
+ target.addEventListener("resize", onResize);
1952
+ } catch {
1953
+ disposed = true;
1954
+ if (registered) {
1955
+ try {
1956
+ target.removeEventListener("resize", onResize);
1957
+ } catch {
1958
+ }
1959
+ }
1960
+ }
1961
+ return () => {
1962
+ if (disposed) return;
1963
+ disposed = true;
1964
+ if (registered) {
1965
+ try {
1966
+ target.removeEventListener("resize", onResize);
1967
+ } catch {
1968
+ }
1969
+ }
1970
+ };
1971
+ }
1972
+
1923
1973
  // src/panel.tsx
1924
1974
  import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
1925
1975
  function PanelEmptyState({
@@ -2300,6 +2350,7 @@ export {
2300
2350
  installPointerDragSession,
2301
2351
  installPointerReorderSession,
2302
2352
  installThresholdPointerDragSession,
2353
+ installViewportResizeObservation,
2303
2354
  isDismissExemptInteractionTarget,
2304
2355
  isSlotDebugEnabled,
2305
2356
  useDockLayoutControlBinding,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forgeax/app-shell",
3
- "version": "0.57.0",
3
+ "version": "0.59.0",
4
4
  "description": "Generic Dock, Panel, Window, and Slot composition primitives",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",