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 { import {
DockviewDidDropEvent, DockviewDidDropEvent,
DockviewWillDropEvent, DockviewWillDropEvent,
WillShowOverlayLocationEvent,
} from '../dockview/dockviewGroupPanelModel'; } from '../dockview/dockviewGroupPanelModel';
import { WillShowOverlayLocationEvent } from '../dockview/events';
import { import {
PaneviewComponentOptions, PaneviewComponentOptions,
PaneviewDndOverlayEvent, PaneviewDndOverlayEvent,

View File

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

View File

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

View File

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

View File

@ -1,6 +1,6 @@
import { DockviewApi } from '../api/component.api'; import { DockviewApi } from '../api/component.api';
import { getPanelData, PanelTransfer } from '../dnd/dataTransfer'; import { getPanelData, PanelTransfer } from '../dnd/dataTransfer';
import { Position, WillShowOverlayEvent } from '../dnd/droptarget'; import { Position } from '../dnd/droptarget';
import { DockviewComponent } from './dockviewComponent'; import { DockviewComponent } from './dockviewComponent';
import { isAncestor, toggleClass } from '../dom'; import { isAncestor, toggleClass } from '../dom';
import { import {
@ -10,6 +10,7 @@ import {
Event, Event,
IDockviewEvent, IDockviewEvent,
} from '../events'; } from '../events';
import { DockviewGroupDropLocation, WillShowOverlayLocationEvent, WillShowOverlayLocationEventOptions } from './events';
import { IViewSize } from '../gridview/gridview'; import { IViewSize } from '../gridview/gridview';
import { CompositeDisposable, IDisposable } from '../lifecycle'; import { CompositeDisposable, IDisposable } from '../lifecycle';
import { import {
@ -140,11 +141,6 @@ export interface IHeader {
export type DockviewGroupPanelLocked = boolean | 'no-drop-target'; export type DockviewGroupPanelLocked = boolean | 'no-drop-target';
export type DockviewGroupDropLocation =
| 'tab'
| 'header_space'
| 'content'
| 'edge';
export interface IDockviewGroupPanelModel extends IPanel { export interface IDockviewGroupPanelModel extends IPanel {
readonly isActive: boolean; readonly isActive: boolean;
@ -199,56 +195,6 @@ export type DockviewGroupLocation =
| { type: 'floating' } | { type: 'floating' }
| { type: 'popout'; getWindow: () => Window; popoutUrl?: string }; | { 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 export class DockviewGroupPanelModel
extends CompositeDisposable 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 { PanelTransfer } from '../dnd/dataTransfer';
import { IDisposable } from '../lifecycle'; import { IDisposable } from '../lifecycle';
import { DroptargetOverlayModel, Position } from '../dnd/droptarget'; import { DroptargetOverlayModel, Position } from '../dnd/droptarget';
import { import { GroupOptions } from './dockviewGroupPanelModel';
DockviewGroupDropLocation, import { DockviewGroupDropLocation } from './events';
GroupOptions,
} from './dockviewGroupPanelModel';
import { IDockviewPanel } from './dockviewPanel'; import { IDockviewPanel } from './dockviewPanel';
import { DockviewPanelRenderer } from '../overlay/overlayRenderContainer'; import { DockviewPanelRenderer } from '../overlay/overlayRenderContainer';
import { IGroupHeaderProps } from './framework'; import { IGroupHeaderProps } from './framework';