chore: remove circular dependencies

This commit is contained in:
mathuo 2025-07-29 22:19:21 +01:00
parent ea62570b9a
commit 8bbe482d74
No known key found for this signature in database
GPG Key ID: C6EEDEFD6CA07281
7 changed files with 71 additions and 64 deletions

View File

@ -51,8 +51,8 @@ import { Box } from '../types';
import {
DockviewDidDropEvent,
DockviewWillDropEvent,
WillShowOverlayLocationEvent,
} from '../dockview/dockviewGroupPanelModel';
import { WillShowOverlayLocationEvent } from '../dockview/events';
import {
PaneviewComponentOptions,
PaneviewDndOverlayEvent,

View File

@ -13,7 +13,7 @@ import {
import { Scrollbar } from '../../../scrollbar';
import { DockviewComponent } from '../../dockviewComponent';
import { DockviewGroupPanel } from '../../dockviewGroupPanel';
import { WillShowOverlayLocationEvent } from '../../dockviewGroupPanelModel';
import { WillShowOverlayLocationEvent } from '../../events';
import { DockviewPanel, IDockviewPanel } from '../../dockviewPanel';
import { Tab } from '../tab/tab';
import { TabDragEvent, TabDropIndexEvent } from './tabsContainer';

View File

@ -11,7 +11,7 @@ import { VoidContainer } from './voidContainer';
import { findRelativeZIndexParent, toggleClass } from '../../../dom';
import { IDockviewPanel } from '../../dockviewPanel';
import { DockviewComponent } from '../../dockviewComponent';
import { WillShowOverlayLocationEvent } from '../../dockviewGroupPanelModel';
import { WillShowOverlayLocationEvent } from '../../events';
import { getPanelData } from '../../../dnd/dataTransfer';
import { Tabs } from './tabs';
import {

View File

@ -45,8 +45,8 @@ import {
GroupPanelViewState,
DockviewDidDropEvent,
DockviewWillDropEvent,
WillShowOverlayLocationEvent,
} from './dockviewGroupPanelModel';
import { WillShowOverlayLocationEvent } from './events';
import { DockviewGroupPanel } from './dockviewGroupPanel';
import { DockviewPanelModel } from './dockviewPanelModel';
import { getPanelData } from '../dnd/dataTransfer';

View File

@ -1,6 +1,6 @@
import { DockviewApi } from '../api/component.api';
import { getPanelData, PanelTransfer } from '../dnd/dataTransfer';
import { Position, WillShowOverlayEvent } from '../dnd/droptarget';
import { Position } from '../dnd/droptarget';
import { DockviewComponent } from './dockviewComponent';
import { isAncestor, toggleClass } from '../dom';
import {
@ -10,6 +10,7 @@ import {
Event,
IDockviewEvent,
} from '../events';
import { DockviewGroupDropLocation, WillShowOverlayLocationEvent, WillShowOverlayLocationEventOptions } from './events';
import { IViewSize } from '../gridview/gridview';
import { CompositeDisposable, IDisposable } from '../lifecycle';
import {
@ -140,11 +141,6 @@ export interface IHeader {
export type DockviewGroupPanelLocked = boolean | 'no-drop-target';
export type DockviewGroupDropLocation =
| 'tab'
| 'header_space'
| 'content'
| 'edge';
export interface IDockviewGroupPanelModel extends IPanel {
readonly isActive: boolean;
@ -199,56 +195,6 @@ export type DockviewGroupLocation =
| { type: 'floating' }
| { type: 'popout'; getWindow: () => Window; popoutUrl?: string };
export interface WillShowOverlayLocationEventOptions {
readonly kind: DockviewGroupDropLocation;
readonly panel: IDockviewPanel | undefined;
readonly api: DockviewApi;
readonly group: DockviewGroupPanel | undefined;
getData: () => PanelTransfer | undefined;
}
export class WillShowOverlayLocationEvent implements IDockviewEvent {
get kind(): DockviewGroupDropLocation {
return this.options.kind;
}
get nativeEvent(): DragEvent {
return this.event.nativeEvent;
}
get position(): Position {
return this.event.position;
}
get defaultPrevented(): boolean {
return this.event.defaultPrevented;
}
get panel(): IDockviewPanel | undefined {
return this.options.panel;
}
get api(): DockviewApi {
return this.options.api;
}
get group(): DockviewGroupPanel | undefined {
return this.options.group;
}
preventDefault(): void {
this.event.preventDefault();
}
getData(): PanelTransfer | undefined {
return this.options.getData();
}
constructor(
private readonly event: WillShowOverlayEvent,
readonly options: WillShowOverlayLocationEventOptions
) {}
}
export class DockviewGroupPanelModel
extends CompositeDisposable

View File

@ -0,0 +1,63 @@
import { Position, WillShowOverlayEvent } from '../dnd/droptarget';
import { PanelTransfer } from '../dnd/dataTransfer';
import { DockviewApi } from '../api/component.api';
import { IDockviewPanel } from './dockviewPanel';
import { DockviewGroupPanel } from './dockviewGroupPanel';
import { IDockviewEvent } from '../events';
export type DockviewGroupDropLocation =
| 'tab'
| 'header_space'
| 'content'
| 'edge';
export interface WillShowOverlayLocationEventOptions {
readonly kind: DockviewGroupDropLocation;
readonly panel: IDockviewPanel | undefined;
readonly api: DockviewApi;
readonly group: DockviewGroupPanel | undefined;
getData: () => PanelTransfer | undefined;
}
export class WillShowOverlayLocationEvent implements IDockviewEvent {
get kind(): DockviewGroupDropLocation {
return this.options.kind;
}
get nativeEvent(): DragEvent {
return this.event.nativeEvent;
}
get position(): Position {
return this.event.position;
}
get defaultPrevented(): boolean {
return this.event.defaultPrevented;
}
get panel(): IDockviewPanel | undefined {
return this.options.panel;
}
get api(): DockviewApi {
return this.options.api;
}
get group(): DockviewGroupPanel | undefined {
return this.options.group;
}
preventDefault(): void {
this.event.preventDefault();
}
getData(): PanelTransfer | undefined {
return this.options.getData();
}
constructor(
private readonly event: WillShowOverlayEvent,
readonly options: WillShowOverlayLocationEventOptions
) {}
}

View File

@ -7,10 +7,8 @@ import { DockviewGroupPanel } from './dockviewGroupPanel';
import { PanelTransfer } from '../dnd/dataTransfer';
import { IDisposable } from '../lifecycle';
import { DroptargetOverlayModel, Position } from '../dnd/droptarget';
import {
DockviewGroupDropLocation,
GroupOptions,
} from './dockviewGroupPanelModel';
import { GroupOptions } from './dockviewGroupPanelModel';
import { DockviewGroupDropLocation } from './events';
import { IDockviewPanel } from './dockviewPanel';
import { DockviewPanelRenderer } from '../overlay/overlayRenderContainer';
import { IGroupHeaderProps } from './framework';