refactor: moving files

This commit is contained in:
mathuo 2023-03-06 23:39:58 +08:00
parent c3e2ed1a87
commit 7d50eb5453
No known key found for this signature in database
GPG Key ID: C6EEDEFD6CA07281
52 changed files with 331 additions and 332 deletions

View File

@ -1,11 +1,11 @@
import { IDockviewPanelModel } from '../../dockview/dockviewPanelModel';
import { DockviewGroupPanel } from '../../groupview/dockviewGroupPanel';
import { DockviewGroupPanel } from '../../dockview/dockviewGroupPanel';
import {
GroupPanelPartInitParameters,
GroupPanelUpdateEvent,
IContentRenderer,
ITabRenderer,
} from '../../groupview/types';
} from '../../dockview/types';
export class DockviewPanelModelMock implements IDockviewPanelModel {
constructor(

View File

@ -1,7 +1,7 @@
import { DockviewPanelApiImpl, TitleEvent } from '../../api/dockviewPanelApi';
import { DockviewComponent } from '../../dockview/dockviewComponent';
import { DockviewPanel, IDockviewPanel } from '../../dockview/dockviewPanel';
import { DockviewGroupPanel } from '../../groupview/dockviewGroupPanel';
import { DockviewGroupPanel } from '../../dockview/dockviewGroupPanel';
describe('groupPanelApi', () => {
test('title', () => {

View File

@ -3,15 +3,13 @@ import {
GroupPanelPartInitParameters,
IContentRenderer,
ITabRenderer,
} from '../../groupview/types';
import { PanelUpdateEvent } from '../../panel/types';
import { Orientation } from '../../splitview/core/splitview';
import { CompositeDisposable } from '../../lifecycle';
import {
GroupPanelUpdateEvent,
GroupviewPanelState,
IGroupPanelInitParameters,
} from '../../groupview/types';
} from '../../dockview/types';
import { PanelUpdateEvent } from '../../panel/types';
import { Orientation } from '../../splitview/core/splitview';
import { CompositeDisposable } from '../../lifecycle';
import { Emitter } from '../../events';
import { IDockviewPanel } from '../../dockview/dockviewPanel';
import {
@ -22,7 +20,7 @@ import { DefaultDockviewDeserialzier } from '../../dockview/deserializer';
import { IDockviewPanelModel } from '../../dockview/dockviewPanelModel';
import { DockviewPanelModelMock } from '../__mocks__/mockDockviewPanelMode';
import { DefaultTab } from '../../dockview/components/tab/defaultTab';
import { DockviewGroupPanel } from '../../groupview/dockviewGroupPanel';
import { DockviewGroupPanel } from '../../dockview/dockviewGroupPanel';
class PanelContentPartTest implements IContentRenderer {
element: HTMLElement = document.createElement('div');

View File

@ -2,7 +2,7 @@ import { DockviewComponent } from '../../dockview/dockviewComponent';
import { DockviewApi } from '../../api/component.api';
import { DockviewPanel } from '../../dockview/dockviewPanel';
import { IDockviewPanelModel } from '../../dockview/dockviewPanelModel';
import { DockviewGroupPanel } from '../../groupview/dockviewGroupPanel';
import { DockviewGroupPanel } from '../../dockview/dockviewGroupPanel';
describe('dockviewPanel', () => {
test('update title', () => {

View File

@ -3,7 +3,7 @@ import {
IDockviewComponent,
} from '../../dockview/dockviewComponent';
import { DockviewPanelModel } from '../../dockview/dockviewPanelModel';
import { IContentRenderer, ITabRenderer } from '../../groupview/types';
import { IContentRenderer, ITabRenderer } from '../../dockview/types';
describe('dockviewGroupPanel', () => {
test('that dispose is called on content and tab renderers when present', () => {

View File

@ -1,5 +1,5 @@
import { DockviewComponent } from '../../dockview/dockviewComponent';
import { DockviewGroupPanel } from '../../groupview/dockviewGroupPanel';
import { DockviewGroupPanel } from '../../dockview/dockviewGroupPanel';
describe('gridviewPanel', () => {
test('get panel', () => {

View File

@ -3,18 +3,16 @@ import {
GroupPanelUpdateEvent,
GroupviewPanelState,
IGroupPanelInitParameters,
} from '../../groupview/types';
import {
GroupPanelPartInitParameters,
IContentRenderer,
ITabRenderer,
IWatermarkRenderer,
} from '../../groupview/types';
} from '../../dockview/types';
import { PanelUpdateEvent } from '../../panel/types';
import {
DockviewGroupPanelModel,
GroupOptions,
} from '../../groupview/dockviewGroupPanelModel';
} from '../../dockview/dockviewGroupPanelModel';
import { fireEvent } from '@testing-library/dom';
import { LocalSelectionTransfer, PanelTransfer } from '../../dnd/dataTransfer';
import { CompositeDisposable } from '../../lifecycle';
@ -24,7 +22,7 @@ import {
IDockviewPanelModel,
DockviewPanelModel,
} from '../../dockview/dockviewPanelModel';
import { DockviewGroupPanel } from '../../groupview/dockviewGroupPanel';
import { DockviewGroupPanel } from '../../dockview/dockviewGroupPanel';
enum GroupChangeKind2 {
ADD_PANEL,

View File

@ -1,10 +1,10 @@
import { fireEvent } from '@testing-library/dom';
import { Emitter, Event } from '../../../events';
import { ContentContainer } from '../../../groupview/panel/content';
import { ContentContainer } from '../../../dockview/components/panel/content';
import {
GroupPanelContentPartInitParameters,
IContentRenderer,
} from '../../../groupview/types';
} from '../../../dockview/types';
import { CompositeDisposable } from '../../../lifecycle';
import { PanelUpdateEvent } from '../../../panel/types';
import { IDockviewPanel } from '../../../dockview/dockviewPanel';

View File

@ -1,9 +1,9 @@
import { fireEvent } from '@testing-library/dom';
import { LocalSelectionTransfer, PanelTransfer } from '../../dnd/dataTransfer';
import { DockviewComponent } from '../../dockview/dockviewComponent';
import { DockviewGroupPanel } from '../../groupview/dockviewGroupPanel';
import { DockviewGroupPanelModel } from '../../groupview/dockviewGroupPanelModel';
import { Tab } from '../../groupview/tab';
import { DockviewGroupPanel } from '../../dockview/dockviewGroupPanel';
import { DockviewGroupPanelModel } from '../../dockview/dockviewGroupPanelModel';
import { Tab } from '../../dockview/components/tab/tab';
describe('tab', () => {
test('that empty tab has inactive-tab class', () => {

View File

@ -1,13 +1,13 @@
import { DockviewComponent } from '../../../dockview/dockviewComponent';
import { TabsContainer } from '../../../groupview/titlebar/tabsContainer';
import { TabsContainer } from '../../../dockview/components/titlebar/tabsContainer';
import { fireEvent } from '@testing-library/dom';
import {
LocalSelectionTransfer,
PanelTransfer,
} from '../../../dnd/dataTransfer';
import { TestPanel } from '../dockviewGroupPanelModel.spec';
import { DockviewGroupPanelModel } from '../../../groupview/dockviewGroupPanelModel';
import { DockviewGroupPanel } from '../../../groupview/dockviewGroupPanel';
import { DockviewGroupPanelModel } from '../../../dockview/dockviewGroupPanelModel';
import { DockviewGroupPanel } from '../../../dockview/dockviewGroupPanel';
describe('tabsContainer', () => {
test('that an external event does not render a drop target and calls through to the group mode', () => {

View File

@ -2,7 +2,7 @@ export class ActionContainer {
private _element: HTMLElement;
private _list: HTMLElement;
get element() {
get element(): HTMLElement {
return this._element;
}
@ -16,7 +16,7 @@ export class ActionContainer {
this._element.appendChild(this._list);
}
public add(element: HTMLElement) {
public add(element: HTMLElement): void {
const listItem = document.createElement('li');
listItem.className = 'action-item';
this._list.appendChild(element);

View File

@ -12,7 +12,7 @@ import { Direction } from '../gridview/baseComponentGridview';
import {
AddComponentOptions,
IGridviewComponent,
SerializedGridview,
SerializedGridviewComponent,
} from '../gridview/gridviewComponent';
import { IGridviewPanel } from '../gridview/gridviewPanel';
@ -33,7 +33,7 @@ import { ISplitviewPanel } from '../splitview/splitviewPanel';
import {
DockviewGroupPanel,
IDockviewGroupPanel,
} from '../groupview/dockviewGroupPanel';
} from '../dockview/dockviewGroupPanel';
import { Emitter, Event } from '../events';
import { IDockviewPanel } from '../dockview/dockviewPanel';
import { PaneviewDropEvent } from '../paneview/draggablePaneviewPanel';
@ -229,7 +229,7 @@ export class PaneviewApi implements CommonApi<SerializedPaneview> {
}
}
export class GridviewApi implements CommonApi<SerializedGridview> {
export class GridviewApi implements CommonApi<SerializedGridviewComponent> {
get minimumHeight(): number {
return this.component.minimumHeight;
}
@ -315,11 +315,11 @@ export class GridviewApi implements CommonApi<SerializedGridview> {
return this.component.getPanel(id);
}
fromJSON(data: SerializedGridview): void {
fromJSON(data: SerializedGridviewComponent): void {
return this.component.fromJSON(data);
}
toJSON(): SerializedGridview {
toJSON(): SerializedGridviewComponent {
return this.component.toJSON();
}

View File

@ -1,6 +1,6 @@
import { Emitter, Event } from '../events';
import { GridviewPanelApiImpl, GridviewPanelApi } from './gridviewPanelApi';
import { DockviewGroupPanel } from '../groupview/dockviewGroupPanel';
import { DockviewGroupPanel } from '../dockview/dockviewGroupPanel';
import { MutableDisposable } from '../lifecycle';
import { IDockviewPanel } from '../dockview/dockviewPanel';

View File

@ -21,7 +21,7 @@ export abstract class DragHandler extends CompositeDisposable {
abstract getData(dataTransfer?: DataTransfer | null): IDisposable;
private configure() {
private configure(): void {
this.addDisposables(
this._onDragStart,
addDisposableListener(this.el, 'dragstart', (event) => {

View File

@ -3,7 +3,7 @@ import { addClasses } from '../dom';
export function addGhostImage(
dataTransfer: DataTransfer,
ghostElement: HTMLElement
) {
): void {
// class dockview provides to force ghost image to be drawn on a different layer and prevent weird rendering issues
addClasses(ghostElement, 'dv-dragged');

View File

@ -1,4 +1,4 @@
import { DockviewGroupPanel } from '../groupview/dockviewGroupPanel';
import { DockviewGroupPanel } from '../dockview/dockviewGroupPanel';
import { IDisposable } from '../lifecycle';
import { DragHandler } from './abstractDragHandler';
import { LocalSelectionTransfer, PanelTransfer } from './dataTransfer';

View File

@ -2,10 +2,10 @@ import {
CompositeDisposable,
IDisposable,
MutableDisposable,
} from '../../lifecycle';
import { Emitter, Event } from '../../events';
import { trackFocus } from '../../dom';
import { IDockviewPanel } from '../../dockview/dockviewPanel';
} from '../../../lifecycle';
import { Emitter, Event } from '../../../events';
import { trackFocus } from '../../../dom';
import { IDockviewPanel } from '../../dockviewPanel';
export interface IContentContainer extends IDisposable {
onDidFocus: Event<void>;

View File

@ -1,11 +1,8 @@
import { CompositeDisposable } from '../../../lifecycle';
import {
ITabRenderer,
GroupPanelPartInitParameters,
} from '../../../groupview/types';
import { ITabRenderer, GroupPanelPartInitParameters } from '../../types';
import { addDisposableListener } from '../../../events';
import { PanelUpdateEvent } from '../../../panel/types';
import { DockviewGroupPanel } from '../../../groupview/dockviewGroupPanel';
import { DockviewGroupPanel } from '../../dockviewGroupPanel';
import { createCloseButton } from '../../../svg';
export class DefaultTab extends CompositeDisposable implements ITabRenderer {

View File

@ -1,17 +1,16 @@
import { addDisposableListener, Emitter, Event } from '../events';
import { CompositeDisposable, IDisposable } from '../lifecycle';
import { addDisposableListener, Emitter, Event } from '../../../events';
import { CompositeDisposable, IDisposable } from '../../../lifecycle';
import {
getPanelData,
LocalSelectionTransfer,
PanelTransfer,
} from '../dnd/dataTransfer';
import { toggleClass } from '../dom';
import { IDockviewComponent } from '../dockview/dockviewComponent';
import { ITabRenderer } from './types';
import { DockviewGroupPanel } from './dockviewGroupPanel';
import { DroptargetEvent, Droptarget } from '../dnd/droptarget';
import { DockviewDropTargets } from './dnd';
import { DragHandler } from '../dnd/abstractDragHandler';
} from '../../../dnd/dataTransfer';
import { toggleClass } from '../../../dom';
import { IDockviewComponent } from '../../dockviewComponent';
import { DockviewDropTargets, ITabRenderer } from '../../types';
import { DockviewGroupPanel } from '../../dockviewGroupPanel';
import { DroptargetEvent, Droptarget } from '../../../dnd/droptarget';
import { DragHandler } from '../../../dnd/abstractDragHandler';
export interface ITab {
readonly panelId: string;

View File

@ -2,14 +2,14 @@ import {
IDisposable,
CompositeDisposable,
IValueDisposable,
} from '../../lifecycle';
import { addDisposableListener, Emitter, Event } from '../../events';
import { ITab, Tab } from '../tab';
import { DockviewComponent } from '../../dockview/dockviewComponent';
import { DockviewGroupPanel } from '../dockviewGroupPanel';
} from '../../../lifecycle';
import { addDisposableListener, Emitter, Event } from '../../../events';
import { ITab, Tab } from '../tab/tab';
import { DockviewComponent } from '../../dockviewComponent';
import { DockviewGroupPanel } from '../../dockviewGroupPanel';
import { VoidContainer } from './voidContainer';
import { toggleClass } from '../../dom';
import { IDockviewPanel } from '../../dockview/dockviewPanel';
import { toggleClass } from '../../../dom';
import { IDockviewPanel } from '../../dockviewPanel';
export interface TabDropIndexEvent {
event: DragEvent;

View File

@ -1,12 +1,12 @@
import { last } from '../../array';
import { getPanelData } from '../../dnd/dataTransfer';
import { Droptarget, DroptargetEvent } from '../../dnd/droptarget';
import { GroupDragHandler } from '../../dnd/groupDragHandler';
import { DockviewComponent } from '../../dockview/dockviewComponent';
import { addDisposableListener, Emitter, Event } from '../../events';
import { CompositeDisposable } from '../../lifecycle';
import { DockviewDropTargets } from '../dnd';
import { DockviewGroupPanel } from '../dockviewGroupPanel';
import { last } from '../../../array';
import { getPanelData } from '../../../dnd/dataTransfer';
import { Droptarget, DroptargetEvent } from '../../../dnd/droptarget';
import { GroupDragHandler } from '../../../dnd/groupDragHandler';
import { DockviewComponent } from '../../dockviewComponent';
import { addDisposableListener, Emitter, Event } from '../../../events';
import { CompositeDisposable } from '../../../lifecycle';
import { DockviewGroupPanel } from '../../dockviewGroupPanel';
import { DockviewDropTargets } from '../../types';
export class VoidContainer extends CompositeDisposable {
private readonly _element: HTMLElement;

View File

@ -1,12 +1,9 @@
import {
GroupPanelPartInitParameters,
IWatermarkRenderer,
} from '../../../groupview/types';
import { GroupPanelPartInitParameters, IWatermarkRenderer } from '../../types';
import { ActionContainer } from '../../../actionbar/actionsContainer';
import { addDisposableListener } from '../../../events';
import { toggleClass } from '../../../dom';
import { CompositeDisposable } from '../../../lifecycle';
import { DockviewGroupPanel } from '../../../groupview/dockviewGroupPanel';
import { DockviewGroupPanel } from '../../dockviewGroupPanel';
import { PanelUpdateEvent } from '../../../panel/types';
import { createCloseButton } from '../../../svg';

View File

@ -1,5 +1,5 @@
import { GroupviewPanelState, ITabRenderer } from '../groupview/types';
import { DockviewGroupPanel } from '../groupview/dockviewGroupPanel';
import { GroupviewPanelState, ITabRenderer } from './types';
import { DockviewGroupPanel } from './dockviewGroupPanel';
import { DockviewPanel, IDockviewPanel } from './dockviewPanel';
import { IDockviewComponent } from './dockviewComponent';
import { createComponent } from '../panel/componentFactory';
@ -14,6 +14,14 @@ export interface IPanelDeserializer {
): IDockviewPanel;
}
// depreciated
interface LegacyState extends GroupviewPanelState {
view?: {
tab?: { id: string };
content: { id: string };
};
}
export class DefaultDockviewDeserialzier implements IPanelDeserializer {
constructor(private readonly layout: IDockviewComponent) {}
@ -24,9 +32,8 @@ export class DefaultDockviewDeserialzier implements IPanelDeserializer {
const panelId = panelData.id;
const params = panelData.params;
const title = panelData.title;
const viewData = panelData.view!;
let tab: ITabRenderer;
const viewData = (panelData as LegacyState).view!;
const contentComponent = viewData
? viewData.content.id
@ -35,6 +42,8 @@ export class DefaultDockviewDeserialzier implements IPanelDeserializer {
? viewData.tab?.id
: panelData.tabComponent;
let tab: ITabRenderer;
if (tabComponent) {
tab = createComponent(
panelId,

View File

@ -11,11 +11,10 @@ import { CompositeDisposable } from '../lifecycle';
import { Event, Emitter } from '../events';
import { Watermark } from './components/watermark/watermark';
import {
IContentRenderer,
ITabRenderer,
IWatermarkRenderer,
GroupviewPanelState,
} from '../groupview/types';
DockviewDropTargets,
} from './types';
import { sequentialNumberGenerator } from '../math';
import { IPanelDeserializer } from './deserializer';
import { createComponent } from '../panel/componentFactory';
@ -37,19 +36,14 @@ import {
} from '../gridview/baseComponentGridview';
import { DockviewApi } from '../api/component.api';
import { Orientation, Sizing } from '../splitview/core/splitview';
import { DefaultTab } from './components/tab/defaultTab';
import {
GroupOptions,
GroupPanelViewState,
GroupviewDropEvent,
} from '../groupview/dockviewGroupPanelModel';
import {
DockviewGroupPanel,
IDockviewGroupPanel,
} from '../groupview/dockviewGroupPanel';
} from './dockviewGroupPanelModel';
import { DockviewGroupPanel, IDockviewGroupPanel } from './dockviewGroupPanel';
import { DockviewPanelModel } from './dockviewPanelModel';
import { getPanelData } from '../dnd/dataTransfer';
import { DockviewDropTargets } from '../groupview/dnd';
export interface PanelReference {
update: (event: { params: { [key: string]: any } }) => void;

View File

@ -1,20 +1,25 @@
import { DockviewApi } from '../api/component.api';
import { getPanelData, PanelTransfer } from '../dnd/dataTransfer';
import { Droptarget, Position } from '../dnd/droptarget';
import { DockviewComponent } from '../dockview/dockviewComponent';
import { DockviewComponent } from './dockviewComponent';
import { isAncestor, toggleClass } from '../dom';
import { addDisposableListener, Emitter, Event } from '../events';
import { IGridPanelView } from '../gridview/baseComponentGridview';
import { IViewSize } from '../gridview/gridview';
import { CompositeDisposable, IDisposable } from '../lifecycle';
import { CompositeDisposable } from '../lifecycle';
import { PanelInitParameters, PanelUpdateEvent } from '../panel/types';
import { ContentContainer, IContentContainer } from './panel/content';
import { ITabsContainer, TabsContainer } from './titlebar/tabsContainer';
import { IWatermarkRenderer } from './types';
import {
ContentContainer,
IContentContainer,
} from './components/panel/content';
import {
ITabsContainer,
TabsContainer,
} from './components/titlebar/tabsContainer';
import { DockviewDropTargets, IWatermarkRenderer } from './types';
import { DockviewGroupPanel } from './dockviewGroupPanel';
import { DockviewDropTargets } from './dnd';
import { IDockviewPanel } from '../dockview/dockviewPanel';
import { IGroupControlRenderer } from '../dockview/options';
import { IDockviewPanel } from './dockviewPanel';
import { IGroupControlRenderer } from './options';
export interface DndService {
canDisplayOverlay(

View File

@ -7,8 +7,8 @@ import {
GroupPanelUpdateEvent,
GroupviewPanelState,
IGroupPanelInitParameters,
} from '../groupview/types';
import { DockviewGroupPanel } from '../groupview/dockviewGroupPanel';
} from './types';
import { DockviewGroupPanel } from './dockviewGroupPanel';
import { CompositeDisposable, IDisposable } from '../lifecycle';
import { IPanel, Parameters } from '../panel/types';
import { IDockviewPanelModel } from './dockviewPanelModel';

View File

@ -4,17 +4,12 @@ import {
IContentRenderer,
ITabRenderer,
GroupPanelUpdateEvent,
} from '../groupview/types';
import { DockviewGroupPanel } from '../groupview/dockviewGroupPanel';
} from './types';
import { DockviewGroupPanel } from './dockviewGroupPanel';
import { IDisposable } from '../lifecycle';
import { createComponent } from '../panel/componentFactory';
import { IDockviewComponent } from './dockviewComponent';
export interface SerializedGroupPanelView {
tab?: { id: string };
content: { id: string };
}
export interface IDockviewPanelModel extends IDisposable {
readonly contentComponent: string;
readonly tabComponent?: string;

View File

@ -6,14 +6,14 @@ import {
ITabRenderer,
WatermarkConstructor,
IWatermarkRenderer,
} from '../groupview/types';
DockviewDropTargets,
} from './types';
import {
DockviewGroupPanel,
DockviewGroupPanelApi,
} from '../groupview/dockviewGroupPanel';
} from './dockviewGroupPanel';
import { ISplitviewStyles, Orientation } from '../splitview/core/splitview';
import { FrameworkFactory } from '../types';
import { DockviewDropTargets } from '../groupview/dnd';
import { PanelTransfer } from '../dnd/dataTransfer';
import { IDisposable } from '../lifecycle';
import { Position } from '../dnd/droptarget';

View File

@ -1,4 +1,4 @@
import { IDockviewComponent } from '../dockview/dockviewComponent';
import { IDockviewComponent } from './dockviewComponent';
import { DockviewPanelApi } from '../api/dockviewPanelApi';
import {
PanelInitParameters,
@ -7,13 +7,16 @@ import {
Parameters,
} from '../panel/types';
import { DockviewApi } from '../api/component.api';
import { DockviewGroupPanel } from './dockviewGroupPanel';
import { Event } from '../events';
import {
IDockviewPanelModel,
SerializedGroupPanelView,
} from '../dockview/dockviewPanelModel';
import { Optional } from '../types';
import { DockviewGroupPanel } from './dockviewGroupPanel';
export enum DockviewDropTargets {
Tab,
Panel,
TabContainer,
Edge,
}
export interface HeaderPartInitParameters {
title: string;
@ -94,5 +97,4 @@ export interface GroupviewPanelState {
tabComponent?: string;
title?: string;
params?: { [key: string]: any };
view?: SerializedGroupPanelView; // depreciated
}

View File

@ -25,7 +25,10 @@ export function watchElementResize(
};
}
export const removeClasses = (element: HTMLElement, ...classes: string[]) => {
export const removeClasses = (
element: HTMLElement,
...classes: string[]
): void => {
for (const classname of classes) {
if (element.classList.contains(classname)) {
element.classList.remove(classname);
@ -33,7 +36,10 @@ export const removeClasses = (element: HTMLElement, ...classes: string[]) => {
}
};
export const addClasses = (element: HTMLElement, ...classes: string[]) => {
export const addClasses = (
element: HTMLElement,
...classes: string[]
): void => {
for (const classname of classes) {
if (!element.classList.contains(classname)) {
element.classList.add(classname);
@ -45,7 +51,7 @@ export const toggleClass = (
element: HTMLElement,
className: string,
isToggled: boolean
) => {
): void => {
const hasClass = element.classList.contains(className);
if (isToggled && !hasClass) {
element.classList.add(className);
@ -74,8 +80,8 @@ export function getElementsByTagName(tag: string): HTMLElement[] {
}
export interface IFocusTracker extends IDisposable {
onDidFocus: Event<void>;
onDidBlur: Event<void>;
readonly onDidFocus: Event<void>;
readonly onDidBlur: Event<void>;
refreshState?(): void;
}
@ -153,11 +159,11 @@ class FocusTracker extends CompositeDisposable implements IFocusTracker {
}
}
refreshState() {
refreshState(): void {
this._refreshStateHandler();
}
public dispose() {
public dispose(): void {
super.dispose();
this._onDidBlur.dispose();

View File

@ -5,7 +5,7 @@ export interface Event<T> {
}
export interface EmitterOptions {
replay?: boolean;
readonly replay?: boolean;
}
export namespace Event {
@ -35,7 +35,7 @@ export class Emitter<T> implements IDisposable {
constructor(private readonly options?: EmitterOptions) {}
get event() {
get event(): Event<T> {
if (!this._event) {
this._event = (listener: (e: T) => void): IDisposable => {
if (this.options?.replay && this._last !== undefined) {
@ -57,14 +57,14 @@ export class Emitter<T> implements IDisposable {
return this._event;
}
public fire(e: T) {
public fire(e: T): void {
this._last = e;
for (const listener of this._listeners) {
listener(e);
}
}
public dispose() {
public dispose(): void {
this._listeners = [];
this._disposed = true;
}

View File

@ -92,40 +92,40 @@ export abstract class BaseGrid<T extends IGridPanelView>
protected readonly _bufferOnDidLayoutChange = new TickDelayedEvent();
get id() {
get id(): string {
return this._id;
}
get element() {
get element(): HTMLElement {
return this._element;
}
get size() {
get size(): number {
return this._groups.size;
}
get groups() {
get groups(): T[] {
return Array.from(this._groups.values()).map((_) => _.value);
}
get width() {
get width(): number {
return this.gridview.width;
}
get height() {
get height(): number {
return this.gridview.height;
}
get minimumHeight() {
get minimumHeight(): number {
return this.gridview.minimumHeight;
}
get maximumHeight() {
get maximumHeight(): number {
return this.gridview.maximumHeight;
}
get minimumWidth() {
get minimumWidth(): number {
return this.gridview.minimumWidth;
}
get maximumWidth() {
get maximumWidth(): number {
return this.gridview.maximumWidth;
}
@ -176,16 +176,20 @@ export abstract class BaseGrid<T extends IGridPanelView>
public abstract clear(): void;
public setVisible(panel: T, visible: boolean) {
public setVisible(panel: T, visible: boolean): void {
this.gridview.setViewVisible(getGridLocation(panel.element), visible);
this._onDidLayoutChange.fire();
}
public isVisible(panel: T) {
public isVisible(panel: T): boolean {
return this.gridview.isViewVisible(getGridLocation(panel.element));
}
protected doAddGroup(group: T, location: number[] = [0], size?: number) {
protected doAddGroup(
group: T,
location: number[] = [0],
size?: number
): void {
this.gridview.addView(group, size ?? Sizing.Distribute, location);
this._onDidAddGroup.fire(group);
@ -196,7 +200,7 @@ export abstract class BaseGrid<T extends IGridPanelView>
protected doRemoveGroup(
group: T,
options?: { skipActive?: boolean; skipDispose?: boolean }
) {
): T {
if (!this._groups.has(group.id)) {
throw new Error('invalid operation');
}
@ -228,7 +232,7 @@ export abstract class BaseGrid<T extends IGridPanelView>
return this._groups.get(id)?.value;
}
public doSetGroupActive(group: T | undefined, skipFocus?: boolean) {
public doSetGroupActive(group: T | undefined, skipFocus?: boolean): void {
if (this._activeGroup === group) {
return;
}
@ -251,11 +255,11 @@ export abstract class BaseGrid<T extends IGridPanelView>
this._onDidActiveGroupChange.fire(group);
}
public removeGroup(group: T) {
public removeGroup(group: T): void {
this.doRemoveGroup(group);
}
public moveToNext(options?: MovementOptions2) {
public moveToNext(options?: MovementOptions2): void {
if (!options) {
options = {};
}
@ -271,7 +275,7 @@ export abstract class BaseGrid<T extends IGridPanelView>
this.doSetGroupActive(next as T);
}
public moveToPrevious(options?: MovementOptions2) {
public moveToPrevious(options?: MovementOptions2): void {
if (!options) {
options = {};
}

View File

@ -22,6 +22,8 @@ export class BranchNode extends CompositeDisposable implements IView {
private splitview: Splitview;
private _orthogonalSize: number;
private _size: number;
private _childrenDisposable: IDisposable = Disposable.NONE;
public readonly children: Node[] = [];
private readonly _onDidChange = new Emitter<{
@ -61,11 +63,11 @@ export class BranchNode extends CompositeDisposable implements IView {
return this.splitview.maximumSize;
}
get orthogonalSize() {
get orthogonalSize(): number {
return this._orthogonalSize;
}
get size() {
get size(): number {
return this._size;
}
@ -168,7 +170,7 @@ export class BranchNode extends CompositeDisposable implements IView {
this.setupChildrenEvents();
}
setVisible(visible: boolean) {
setVisible(visible: boolean): void {
for (const child of this.children) {
child.setVisible(visible);
}
@ -258,7 +260,7 @@ export class BranchNode extends CompositeDisposable implements IView {
return this.splitview.getViewCachedVisibleSize(index);
}
public removeChild(index: number, sizing?: Sizing) {
public removeChild(index: number, sizing?: Sizing): void {
if (index < 0 || index >= this.children.length) {
throw new Error('Invalid index');
}
@ -279,9 +281,7 @@ export class BranchNode extends CompositeDisposable implements IView {
return child;
}
private _childrenDisposable: IDisposable = Disposable.NONE;
private setupChildrenEvents() {
private setupChildrenEvents(): void {
this._childrenDisposable.dispose();
this._childrenDisposable = Event.any(
@ -295,7 +295,7 @@ export class BranchNode extends CompositeDisposable implements IView {
});
}
public dispose() {
public dispose(): void {
super.dispose();
this._childrenDisposable.dispose();
this.children.forEach((child) => child.dispose());

View File

@ -261,6 +261,14 @@ export interface INodeDescriptor {
export interface IViewDeserializer {
fromJSON: (data: ISerializedLeafNode) => IGridView;
}
export interface SerializedGridview<T> {
root: SerializedGridObject<T>;
width: number;
height: number;
orientation: Orientation;
}
export class Gridview implements IDisposable {
private _root: BranchNode | undefined;
public readonly element: HTMLElement;
@ -277,7 +285,41 @@ export class Gridview implements IDisposable {
return this._root ? this._root.children.length : 0;
}
public serialize() {
public get orientation(): Orientation {
return this.root.orientation;
}
public set orientation(orientation: Orientation) {
if (this.root.orientation === orientation) {
return;
}
const { size, orthogonalSize } = this.root;
this.root = flipNode(this.root, orthogonalSize, size);
this.root.layout(size, orthogonalSize);
}
get width(): number {
return this.root.width;
}
get height(): number {
return this.root.height;
}
get minimumWidth(): number {
return this.root.minimumWidth;
}
get minimumHeight(): number {
return this.root.minimumHeight;
}
get maximumWidth(): number {
return this.root.maximumHeight;
}
get maximumHeight(): number {
return this.root.maximumHeight;
}
public serialize(): SerializedGridview<any> {
const root = serializeBranchNode(this.getView(), this.orientation);
return {
@ -288,7 +330,7 @@ export class Gridview implements IDisposable {
};
}
public dispose() {
public dispose(): void {
this.disposable.dispose();
this._onDidChange.dispose();
this.root.dispose();
@ -296,7 +338,7 @@ export class Gridview implements IDisposable {
this.element.remove();
}
public clear() {
public clear(): void {
const orientation = this.root.orientation;
this.root = new BranchNode(
orientation,
@ -307,7 +349,7 @@ export class Gridview implements IDisposable {
);
}
public deserialize(json: any, deserializer: IViewDeserializer) {
public deserialize(json: any, deserializer: IViewDeserializer): void {
const orientation = json.orientation;
const height =
orientation === Orientation.VERTICAL ? json.height : json.width;
@ -378,20 +420,6 @@ export class Gridview implements IDisposable {
return result;
}
public get orientation() {
return this.root.orientation;
}
public set orientation(orientation: Orientation) {
if (this.root.orientation === orientation) {
return;
}
const { size, orthogonalSize } = this.root;
this.root = flipNode(this.root, orthogonalSize, size);
this.root.layout(size, orthogonalSize);
}
private get root(): BranchNode {
return this._root!;
}
@ -448,11 +476,11 @@ export class Gridview implements IDisposable {
});
}
public next(location: number[]) {
public next(location: number[]): LeafNode {
return this.progmaticSelect(location);
}
public previous(location: number[]) {
public previous(location: number[]): LeafNode {
return this.progmaticSelect(location, true);
}
@ -492,7 +520,7 @@ export class Gridview implements IDisposable {
return { box, children };
}
private progmaticSelect(location: number[], reverse = false) {
private progmaticSelect(location: number[], reverse = false): LeafNode {
const [path, node] = this.getNode(location);
if (!(node instanceof LeafNode)) {
@ -513,26 +541,6 @@ export class Gridview implements IDisposable {
return findLeaf(this.root, reverse);
}
get width(): number {
return this.root.width;
}
get height(): number {
return this.root.height;
}
get minimumWidth(): number {
return this.root.minimumWidth;
}
get minimumHeight(): number {
return this.root.minimumHeight;
}
get maximumWidth(): number {
return this.root.maximumHeight;
}
get maximumHeight(): number {
return this.root.maximumHeight;
}
constructor(
readonly proportionalLayout: boolean,
readonly styles: ISplitviewStyles | undefined,
@ -581,7 +589,11 @@ export class Gridview implements IDisposable {
parent.moveChild(from, to);
}
public addView(view: IGridView, size: number | Sizing, location: number[]) {
public addView(
view: IGridView,
size: number | Sizing,
location: number[]
): void {
const [rest, index] = tail(location);
const [pathToParent, parent] = this.getNode(rest);
@ -636,7 +648,7 @@ export class Gridview implements IDisposable {
}
}
public remove(view: IGridView, sizing?: Sizing) {
public remove(view: IGridView, sizing?: Sizing): IGridView {
const location = getGridLocation(view.element);
return this.removeView(location, sizing);
}
@ -721,7 +733,7 @@ export class Gridview implements IDisposable {
return node.view;
}
public layout(width: number, height: number) {
public layout(width: number, height: number): void {
const [size, orthogonalSize] =
this.root.orientation === Orientation.HORIZONTAL
? [height, width]

View File

@ -2,6 +2,7 @@ import {
getRelativeLocation,
SerializedGridObject,
getGridLocation,
SerializedGridview,
} from './gridview';
import { tail, sequenceEquals } from '../array';
import { CompositeDisposable } from '../lifecycle';
@ -26,13 +27,8 @@ import { createComponent } from '../panel/componentFactory';
import { Emitter, Event } from '../events';
import { Position } from '../dnd/droptarget';
export interface SerializedGridview {
grid: {
height: number;
width: number;
orientation: Orientation;
root: SerializedGridObject<GridPanelViewState>;
};
export interface SerializedGridviewComponent {
grid: SerializedGridview<GridPanelViewState>;
activePanel?: string;
}
@ -64,8 +60,8 @@ export interface IGridviewComponent extends IBaseGrid<GridviewPanel> {
addPanel(options: AddComponentOptions): IGridviewPanel;
removePanel(panel: IGridviewPanel, sizing?: Sizing): void;
focus(): void;
fromJSON(serializedGridview: SerializedGridview): void;
toJSON(): SerializedGridview;
fromJSON(serializedGridview: SerializedGridviewComponent): void;
toJSON(): SerializedGridviewComponent;
movePanel(
panel: IGridviewPanel,
options: { direction: Direction; reference: string; size?: number }
@ -84,7 +80,7 @@ export class GridviewComponent
private readonly _onDidLayoutfromJSON = new Emitter<void>();
readonly onDidLayoutFromJSON: Event<void> = this._onDidLayoutfromJSON.event;
get orientation() {
get orientation(): Orientation {
return this.gridview.orientation;
}
@ -92,7 +88,7 @@ export class GridviewComponent
this.gridview.orientation = value;
}
get options() {
get options(): GridviewComponentOptions {
return this._options;
}
@ -135,7 +131,7 @@ export class GridviewComponent
this.layout(this.gridview.width, this.gridview.height, true);
}
removePanel(panel: GridviewPanel) {
removePanel(panel: GridviewPanel): void {
this.removeGroup(panel);
}
@ -144,7 +140,7 @@ export class GridviewComponent
*
* @returns A JSON respresentation of the layout
*/
public toJSON(): SerializedGridview {
public toJSON(): SerializedGridviewComponent {
const data = this.gridview.serialize() as {
height: number;
width: number;
@ -168,11 +164,11 @@ export class GridviewComponent
});
}
focus() {
focus(): void {
this.activeGroup?.focus();
}
public fromJSON(serializedGridview: SerializedGridview) {
public fromJSON(serializedGridview: SerializedGridviewComponent): void {
this.clear();
const { grid, activePanel } = serializedGridview;
@ -339,7 +335,7 @@ export class GridviewComponent
return view;
}
private registerPanel(panel: GridviewPanel) {
private registerPanel(panel: GridviewPanel): void {
const disposable = new CompositeDisposable(
panel.api.onDidFocusChange((event) => {
if (!event.isFocused) {
@ -366,7 +362,7 @@ export class GridviewComponent
referenceGroup: IGridPanelComponentView,
groupId: string,
target: Position
) {
): void {
const sourceGroup = this.getPanel(groupId);
if (!sourceGroup) {
@ -411,11 +407,11 @@ export class GridviewComponent
this.doAddGroup(targetGroup, location);
}
removeGroup(group: GridviewPanel) {
removeGroup(group: GridviewPanel): void {
super.removeGroup(group);
}
public dispose() {
public dispose(): void {
super.dispose();
this._onDidLayoutfromJSON.dispose();

View File

@ -62,11 +62,11 @@ export abstract class GridviewPanel
return this._priority;
}
get snap() {
get snap(): boolean {
return this._snap;
}
get minimumWidth() {
get minimumWidth(): number {
const width =
typeof this._minimumWidth === 'function'
? this._minimumWidth()
@ -80,7 +80,7 @@ export abstract class GridviewPanel
return width;
}
get minimumHeight() {
get minimumHeight(): number {
const height =
typeof this._minimumHeight === 'function'
? this._minimumHeight()
@ -94,7 +94,7 @@ export abstract class GridviewPanel
return height;
}
get maximumHeight() {
get maximumHeight(): number {
const height =
typeof this._maximumHeight === 'function'
? this._maximumHeight()
@ -108,7 +108,7 @@ export abstract class GridviewPanel
return height;
}
get maximumWidth() {
get maximumWidth(): number {
const width =
typeof this._maximumWidth === 'function'
? this._maximumWidth()
@ -122,7 +122,7 @@ export abstract class GridviewPanel
return width;
}
get isActive() {
get isActive(): boolean {
return this.api.isActive;
}
@ -177,11 +177,11 @@ export abstract class GridviewPanel
);
}
setVisible(isVisible: boolean) {
setVisible(isVisible: boolean): void {
this.api._onDidVisibilityChange.fire({ isVisible });
}
setActive(isActive: boolean) {
setActive(isActive: boolean): void {
this.api._onDidActiveChange.fire({ isActive });
}
@ -209,7 +209,7 @@ export abstract class GridviewPanel
}
}
private updateConstraints() {
private updateConstraints(): void {
this.api._onDidConstraintsChange.fire({
minimumWidth: this._evaluatedMinimumWidth,
maximumWidth: this._evaluatedMaximumWidth,

View File

@ -43,7 +43,7 @@ export class LeafNode implements IView {
return this.view.priority;
}
get snap() {
get snap(): boolean | undefined {
return this.view.snap;
}
@ -71,25 +71,25 @@ export class LeafNode implements IView {
: this.maximumHeight;
}
get orthogonalSize() {
get orthogonalSize(): number {
return this._orthogonalSize;
}
get size() {
get size(): number {
return this._size;
}
get element() {
get element(): HTMLElement {
return this.view.element;
}
get width() {
get width(): number {
return this.orientation === Orientation.HORIZONTAL
? this.orthogonalSize
: this.size;
}
get height() {
get height(): number {
return this.orientation === Orientation.HORIZONTAL
? this.size
: this.orthogonalSize;
@ -122,21 +122,21 @@ export class LeafNode implements IView {
});
}
public setVisible(visible: boolean) {
public setVisible(visible: boolean): void {
if (this.view.setVisible) {
this.view.setVisible(visible);
this._onDidChange.fire({});
}
}
public layout(size: number, orthogonalSize: number) {
public layout(size: number, orthogonalSize: number): void {
this._size = size;
this._orthogonalSize = orthogonalSize;
this.view.layout(this.width, this.height);
}
public dispose() {
public dispose(): void {
this._onDidChange.dispose();
this._disposable.dispose();
}

View File

@ -1,6 +0,0 @@
export enum DockviewDropTargets {
Tab,
Panel,
TabContainer,
Edge,
}

View File

@ -23,16 +23,15 @@ export * from './splitview/core/options';
export * from './paneview/paneview';
export * from './gridview/gridview';
export * from './groupview/dockviewGroupPanelModel';
export * from './dockview/dockviewGroupPanelModel';
export * from './gridview/baseComponentGridview';
export * from './paneview/draggablePaneviewPanel';
export * from './groupview/panel/content';
export * from './groupview/tab';
export * from './groupview/dnd';
export * from './groupview/types';
export * from './groupview/dockviewGroupPanel';
export * from './dockview/components/panel/content';
export * from './dockview/components/tab/tab';
export * from './dockview/types';
export * from './dockview/dockviewGroupPanel';
export * from './dockview/options';
export * from './dockview/dockviewPanel';
@ -48,7 +47,7 @@ export { PaneviewComponentOptions } from './paneview/options';
export * from './gridview/gridviewPanel';
export * from './splitview/splitviewPanel';
export * from './paneview/paneviewPanel';
export * from './groupview/types';
export * from './dockview/types';
export {
Position,

View File

@ -3,8 +3,8 @@ export interface IDisposable {
}
export interface IValueDisposable<T> {
value: T;
disposable: IDisposable;
readonly value: T;
readonly disposable: IDisposable;
}
export namespace Disposable {
@ -26,11 +26,11 @@ export class CompositeDisposable {
this.disposables = args;
}
public addDisposables(...args: IDisposable[]) {
public addDisposables(...args: IDisposable[]): void {
args.forEach((arg) => this.disposables.push(arg));
}
public dispose() {
public dispose(): void {
this.disposables.forEach((arg) => arg.dispose());
}
}
@ -45,7 +45,7 @@ export class MutableDisposable implements IDisposable {
this._disposable = disposable;
}
public dispose() {
public dispose(): void {
if (this._disposable) {
this._disposable.dispose();
this._disposable = Disposable.NONE;

View File

@ -1,15 +1,11 @@
export interface Constructor<T> {
new (): T;
}
export interface FrameworkFactory<T> {
createComponent: (id: string, componentId: string, component: any) => T;
}
export type FunctionOrValue<T> = (() => T) | T;
export function isBooleanValue(value: any): value is boolean {
return typeof value === 'boolean';
}
export type FunctionOrValue<T> = (() => T) | T;
export type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;

View File

@ -1,26 +1,32 @@
import { GroupPanel, GroupviewPanelApi, Groupview } from 'dockview-core';
import {
DockviewGroupPanel,
DockviewGroupPanelApi,
DockviewGroupPanelModel,
} from 'dockview-core';
import { ReactGroupControlsRendererPart } from '../../../dockview/groupControlsRenderer';
describe('groupControlsRenderer', () => {
test('#1', () => {
const groupviewMock = jest.fn<Partial<Groupview>, []>(() => {
const groupviewMock = jest.fn<Partial<DockviewGroupPanelModel>, []>(
() => {
return {
onDidAddPanel: jest.fn(),
onDidRemovePanel: jest.fn(),
onDidActivePanelChange: jest.fn(),
};
});
}
);
const groupview = new groupviewMock() as Groupview;
const groupview = new groupviewMock() as DockviewGroupPanelModel;
const groupPanelMock = jest.fn<Partial<GroupPanel>, []>(() => {
const groupPanelMock = jest.fn<Partial<DockviewGroupPanel>, []>(() => {
return {
api: {} as GroupviewPanelApi as any,
api: {} as DockviewGroupPanelApi as any,
model: groupview,
};
});
const groupPanel = new groupPanelMock() as GroupPanel;
const groupPanel = new groupPanelMock() as DockviewGroupPanel;
const cut = new ReactGroupControlsRendererPart(
jest.fn(),

View File

@ -10,7 +10,7 @@ import {
IContentRenderer,
ITabRenderer,
watchElementResize,
GroupPanel,
DockviewGroupPanel,
DefaultDockviewDeserialzier,
} from 'dockview-core';
import { ReactPanelContentPart } from './reactContentPart';
@ -27,9 +27,9 @@ import {
function createGroupControlElement(
component: React.FunctionComponent<IDockviewGroupControlProps> | undefined,
store: ReactPortalStore
): ((groupPanel: GroupPanel) => IGroupControlRenderer) | undefined {
): ((groupPanel: DockviewGroupPanel) => IGroupControlRenderer) | undefined {
return component
? (groupPanel: GroupPanel) => {
? (groupPanel: DockviewGroupPanel) => {
return new ReactGroupControlsRendererPart(
component,
store,

View File

@ -5,13 +5,13 @@ import {
DockviewCompositeDisposable,
DockviewMutableDisposable,
DockviewApi,
GroupPanel,
GroupviewPanelApi,
DockviewGroupPanel,
DockviewGroupPanelApi,
PanelUpdateEvent,
} from 'dockview-core';
export interface IDockviewGroupControlProps {
api: GroupviewPanelApi;
api: DockviewGroupPanelApi;
containerApi: DockviewApi;
panels: IDockviewPanel[];
activePanel: IDockviewPanel | undefined;
@ -31,26 +31,26 @@ export class ReactGroupControlsRendererPart {
return this._part;
}
get group(): GroupPanel {
get group(): DockviewGroupPanel {
return this._group;
}
constructor(
private readonly component: React.FunctionComponent<IDockviewGroupControlProps>,
private readonly reactPortalStore: ReactPortalStore,
private readonly _group: GroupPanel
private readonly _group: DockviewGroupPanel
) {
this._element = document.createElement('div');
this._element.className = 'dockview-react-part';
}
focus() {
focus(): void {
// TODO
}
public init(parameters: {
containerApi: DockviewApi;
api: GroupviewPanelApi;
api: DockviewGroupPanelApi;
}): void {
this.mutableDisposable.value = new DockviewCompositeDisposable(
this._group.model.onDidAddPanel(() => {
@ -81,20 +81,20 @@ export class ReactGroupControlsRendererPart {
);
}
public update(event: PanelUpdateEvent) {
public update(event: PanelUpdateEvent): void {
this._part?.update(event.params);
}
public dispose() {
public dispose(): void {
this.mutableDisposable.dispose();
this._part?.dispose();
}
private updatePanels() {
private updatePanels(): void {
this.update({ params: { panels: this._group.model.panels } });
}
private updateActivePanel() {
private updateActivePanel(): void {
this.update({
params: {
activePanel: this._group.model.activePanel,
@ -102,7 +102,7 @@ export class ReactGroupControlsRendererPart {
});
}
private updateGroupActive() {
private updateGroupActive(): void {
this.update({
params: {
isGroupActive: this._group.api.isActive,

View File

@ -4,7 +4,7 @@ import { IDockviewPanelProps } from '../dockview/dockview';
import {
DockviewEmitter,
DockviewEvent,
GroupPanel,
DockviewGroupPanel,
PanelUpdateEvent,
IContentRenderer,
GroupPanelContentPartInitParameters,
@ -14,7 +14,7 @@ export class ReactPanelContentPart implements IContentRenderer {
private _element: HTMLElement;
private part?: ReactPart<IDockviewPanelProps>;
//
private _group: GroupPanel | undefined;
private _group: DockviewGroupPanel | undefined;
private readonly _onDidFocus = new DockviewEmitter<void>();
readonly onDidFocus: DockviewEvent<void> = this._onDidFocus.event;
@ -35,7 +35,7 @@ export class ReactPanelContentPart implements IContentRenderer {
this._element.className = 'dockview-react-part';
}
focus() {
focus(): void {
// TODO
}
@ -57,7 +57,7 @@ export class ReactPanelContentPart implements IContentRenderer {
}
public updateParentGroup(
group: GroupPanel,
group: DockviewGroupPanel,
_isPanelVisible: boolean
): void {
this._group = group;
@ -67,7 +67,7 @@ export class ReactPanelContentPart implements IContentRenderer {
// noop
}
public dispose() {
public dispose(): void {
this._onDidFocus.dispose();
this._onDidBlur.dispose();
this.part?.dispose();

View File

@ -3,7 +3,7 @@ import { ReactPart, ReactPortalStore } from '../react';
import { IGroupPanelBaseProps } from './dockview';
import {
PanelUpdateEvent,
GroupPanel,
DockviewGroupPanel,
ITabRenderer,
GroupPanelPartInitParameters,
} from 'dockview-core';
@ -12,7 +12,7 @@ export class ReactPanelHeaderPart implements ITabRenderer {
private _element: HTMLElement;
private part?: ReactPart<IGroupPanelBaseProps>;
get element() {
get element(): HTMLElement {
return this._element;
}
@ -25,7 +25,7 @@ export class ReactPanelHeaderPart implements ITabRenderer {
this._element.className = 'dockview-react-part';
}
focus() {
focus(): void {
//noop
}
@ -42,22 +42,22 @@ export class ReactPanelHeaderPart implements ITabRenderer {
);
}
public update(event: PanelUpdateEvent) {
public update(event: PanelUpdateEvent): void {
this.part?.update(event.params);
}
public layout(_width: number, _height: number) {
public layout(_width: number, _height: number): void {
// noop - retrieval from api
}
public updateParentGroup(
_group: GroupPanel,
_group: DockviewGroupPanel,
_isPanelVisible: boolean
): void {
// noop - retrieval from api
}
public dispose() {
public dispose(): void {
this.part?.dispose();
}
}

View File

@ -3,7 +3,7 @@ import { ReactPart, ReactPortalStore } from '../react';
import { IGroupPanelBaseProps } from './dockview';
import {
PanelUpdateEvent,
GroupPanel,
DockviewGroupPanel,
GroupPanelPartInitParameters,
IWatermarkRenderer,
} from 'dockview-core';
@ -15,12 +15,12 @@ export interface IWatermarkPanelProps extends IGroupPanelBaseProps {
export class ReactWatermarkPart implements IWatermarkRenderer {
private _element: HTMLElement;
private part?: ReactPart<IWatermarkPanelProps>;
private _groupRef: { value: GroupPanel | undefined } = {
private _groupRef: { value: DockviewGroupPanel | undefined } = {
value: undefined,
};
private parameters: GroupPanelPartInitParameters | undefined;
get element() {
get element(): HTMLElement {
return this._element;
}
@ -55,11 +55,11 @@ export class ReactWatermarkPart implements IWatermarkRenderer {
);
}
focus() {
focus(): void {
// noop
}
update(params: PanelUpdateEvent) {
update(params: PanelUpdateEvent): void {
if (this.parameters) {
this.parameters.params = params.params;
}
@ -67,22 +67,19 @@ export class ReactWatermarkPart implements IWatermarkRenderer {
this.part?.update({ params: this.parameters?.params || {} });
}
toJSON() {
return {
id: this.id,
};
}
layout(_width: number, _height: number) {
layout(_width: number, _height: number): void {
// noop - retrieval from api
}
updateParentGroup(group: GroupPanel, _isPanelVisible: boolean): void {
updateParentGroup(
group: DockviewGroupPanel,
_isPanelVisible: boolean
): void {
// noop - retrieval from api
this._groupRef.value = group;
}
dispose() {
dispose(): void {
this.part?.dispose();
}
}

View File

@ -1,9 +1,10 @@
import {
GroupPanelPartInitParameters,
IContentRenderer,
GroupPanel,
DockviewGroupPanel,
HostedContainer,
PanelUpdateEvent,
DockviewEvent,
} from 'dockview-core';
import { ReactPart, ReactPortalStore } from '../../react';
import { IDockviewPanelProps } from '../dockview';
@ -13,7 +14,7 @@ export class ReactContentRenderer implements IContentRenderer {
private _element: HTMLElement;
private part?: ReactPart<IDockviewPanelProps>;
private _group: GroupPanel | undefined;
private _group: DockviewGroupPanel | undefined;
private parameters: GroupPanelPartInitParameters | undefined;
@ -21,11 +22,11 @@ export class ReactContentRenderer implements IContentRenderer {
return this._element;
}
get onDidBlur() {
get onDidBlur(): DockviewEvent<void> {
return this._hostedContainer.onDidBlur;
}
get onDidFocus() {
get onDidFocus(): DockviewEvent<void> {
return this._hostedContainer.onDidFocus;
}
@ -46,7 +47,7 @@ export class ReactContentRenderer implements IContentRenderer {
this._element.style.width = '100%';
}
focus() {
focus(): void {
// noop
}
@ -74,13 +75,7 @@ export class ReactContentRenderer implements IContentRenderer {
);
}
public toJSON() {
return {
id: this.id,
};
}
public update(params: PanelUpdateEvent) {
public update(params: PanelUpdateEvent): void {
if (this.parameters) {
this.parameters.params = params.params;
}
@ -89,7 +84,7 @@ export class ReactContentRenderer implements IContentRenderer {
}
public updateParentGroup(
group: GroupPanel,
group: DockviewGroupPanel,
_isPanelVisible: boolean
): void {
this._group = group;
@ -99,7 +94,7 @@ export class ReactContentRenderer implements IContentRenderer {
this._hostedContainer.layout(this.element);
}
public dispose() {
public dispose(): void {
this.part?.dispose();
}
}

View File

@ -1,7 +1,7 @@
import {
GroupPanelPartInitParameters,
IContentRenderer,
GroupPanel,
DockviewGroupPanel,
HostedContainer,
PanelUpdateEvent,
} from 'dockview-core';
@ -24,7 +24,7 @@ export class WebviewContentRenderer implements IContentRenderer {
this._element.style.width = '100%';
}
focus() {
focus(): void {
// noop
}
@ -32,14 +32,14 @@ export class WebviewContentRenderer implements IContentRenderer {
this.parameters = parameters;
}
public update(params: PanelUpdateEvent) {
public update(params: PanelUpdateEvent): void {
if (this.parameters) {
this.parameters.params = params.params;
}
}
public updateParentGroup(
_group: GroupPanel,
_group: DockviewGroupPanel,
_isPanelVisible: boolean
): void {
//
@ -49,7 +49,7 @@ export class WebviewContentRenderer implements IContentRenderer {
this._hostedContainer.layout(this._element);
}
public dispose() {
public dispose(): void {
//
}
}