mirror of
https://github.com/mathuo/dockview
synced 2025-02-15 12:55:44 +00:00
refactor: moving files
This commit is contained in:
parent
c3e2ed1a87
commit
7d50eb5453
@ -1,11 +1,11 @@
|
|||||||
import { IDockviewPanelModel } from '../../dockview/dockviewPanelModel';
|
import { IDockviewPanelModel } from '../../dockview/dockviewPanelModel';
|
||||||
import { DockviewGroupPanel } from '../../groupview/dockviewGroupPanel';
|
import { DockviewGroupPanel } from '../../dockview/dockviewGroupPanel';
|
||||||
import {
|
import {
|
||||||
GroupPanelPartInitParameters,
|
GroupPanelPartInitParameters,
|
||||||
GroupPanelUpdateEvent,
|
GroupPanelUpdateEvent,
|
||||||
IContentRenderer,
|
IContentRenderer,
|
||||||
ITabRenderer,
|
ITabRenderer,
|
||||||
} from '../../groupview/types';
|
} from '../../dockview/types';
|
||||||
|
|
||||||
export class DockviewPanelModelMock implements IDockviewPanelModel {
|
export class DockviewPanelModelMock implements IDockviewPanelModel {
|
||||||
constructor(
|
constructor(
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { DockviewPanelApiImpl, TitleEvent } from '../../api/dockviewPanelApi';
|
import { DockviewPanelApiImpl, TitleEvent } from '../../api/dockviewPanelApi';
|
||||||
import { DockviewComponent } from '../../dockview/dockviewComponent';
|
import { DockviewComponent } from '../../dockview/dockviewComponent';
|
||||||
import { DockviewPanel, IDockviewPanel } from '../../dockview/dockviewPanel';
|
import { DockviewPanel, IDockviewPanel } from '../../dockview/dockviewPanel';
|
||||||
import { DockviewGroupPanel } from '../../groupview/dockviewGroupPanel';
|
import { DockviewGroupPanel } from '../../dockview/dockviewGroupPanel';
|
||||||
|
|
||||||
describe('groupPanelApi', () => {
|
describe('groupPanelApi', () => {
|
||||||
test('title', () => {
|
test('title', () => {
|
||||||
|
@ -3,15 +3,13 @@ import {
|
|||||||
GroupPanelPartInitParameters,
|
GroupPanelPartInitParameters,
|
||||||
IContentRenderer,
|
IContentRenderer,
|
||||||
ITabRenderer,
|
ITabRenderer,
|
||||||
} from '../../groupview/types';
|
|
||||||
import { PanelUpdateEvent } from '../../panel/types';
|
|
||||||
import { Orientation } from '../../splitview/core/splitview';
|
|
||||||
import { CompositeDisposable } from '../../lifecycle';
|
|
||||||
import {
|
|
||||||
GroupPanelUpdateEvent,
|
GroupPanelUpdateEvent,
|
||||||
GroupviewPanelState,
|
GroupviewPanelState,
|
||||||
IGroupPanelInitParameters,
|
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 { Emitter } from '../../events';
|
||||||
import { IDockviewPanel } from '../../dockview/dockviewPanel';
|
import { IDockviewPanel } from '../../dockview/dockviewPanel';
|
||||||
import {
|
import {
|
||||||
@ -22,7 +20,7 @@ import { DefaultDockviewDeserialzier } from '../../dockview/deserializer';
|
|||||||
import { IDockviewPanelModel } from '../../dockview/dockviewPanelModel';
|
import { IDockviewPanelModel } from '../../dockview/dockviewPanelModel';
|
||||||
import { DockviewPanelModelMock } from '../__mocks__/mockDockviewPanelMode';
|
import { DockviewPanelModelMock } from '../__mocks__/mockDockviewPanelMode';
|
||||||
import { DefaultTab } from '../../dockview/components/tab/defaultTab';
|
import { DefaultTab } from '../../dockview/components/tab/defaultTab';
|
||||||
import { DockviewGroupPanel } from '../../groupview/dockviewGroupPanel';
|
import { DockviewGroupPanel } from '../../dockview/dockviewGroupPanel';
|
||||||
|
|
||||||
class PanelContentPartTest implements IContentRenderer {
|
class PanelContentPartTest implements IContentRenderer {
|
||||||
element: HTMLElement = document.createElement('div');
|
element: HTMLElement = document.createElement('div');
|
||||||
|
@ -2,7 +2,7 @@ import { DockviewComponent } from '../../dockview/dockviewComponent';
|
|||||||
import { DockviewApi } from '../../api/component.api';
|
import { DockviewApi } from '../../api/component.api';
|
||||||
import { DockviewPanel } from '../../dockview/dockviewPanel';
|
import { DockviewPanel } from '../../dockview/dockviewPanel';
|
||||||
import { IDockviewPanelModel } from '../../dockview/dockviewPanelModel';
|
import { IDockviewPanelModel } from '../../dockview/dockviewPanelModel';
|
||||||
import { DockviewGroupPanel } from '../../groupview/dockviewGroupPanel';
|
import { DockviewGroupPanel } from '../../dockview/dockviewGroupPanel';
|
||||||
|
|
||||||
describe('dockviewPanel', () => {
|
describe('dockviewPanel', () => {
|
||||||
test('update title', () => {
|
test('update title', () => {
|
||||||
|
@ -3,7 +3,7 @@ import {
|
|||||||
IDockviewComponent,
|
IDockviewComponent,
|
||||||
} from '../../dockview/dockviewComponent';
|
} from '../../dockview/dockviewComponent';
|
||||||
import { DockviewPanelModel } from '../../dockview/dockviewPanelModel';
|
import { DockviewPanelModel } from '../../dockview/dockviewPanelModel';
|
||||||
import { IContentRenderer, ITabRenderer } from '../../groupview/types';
|
import { IContentRenderer, ITabRenderer } from '../../dockview/types';
|
||||||
|
|
||||||
describe('dockviewGroupPanel', () => {
|
describe('dockviewGroupPanel', () => {
|
||||||
test('that dispose is called on content and tab renderers when present', () => {
|
test('that dispose is called on content and tab renderers when present', () => {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { DockviewComponent } from '../../dockview/dockviewComponent';
|
import { DockviewComponent } from '../../dockview/dockviewComponent';
|
||||||
import { DockviewGroupPanel } from '../../groupview/dockviewGroupPanel';
|
import { DockviewGroupPanel } from '../../dockview/dockviewGroupPanel';
|
||||||
|
|
||||||
describe('gridviewPanel', () => {
|
describe('gridviewPanel', () => {
|
||||||
test('get panel', () => {
|
test('get panel', () => {
|
||||||
|
@ -3,18 +3,16 @@ import {
|
|||||||
GroupPanelUpdateEvent,
|
GroupPanelUpdateEvent,
|
||||||
GroupviewPanelState,
|
GroupviewPanelState,
|
||||||
IGroupPanelInitParameters,
|
IGroupPanelInitParameters,
|
||||||
} from '../../groupview/types';
|
|
||||||
import {
|
|
||||||
GroupPanelPartInitParameters,
|
GroupPanelPartInitParameters,
|
||||||
IContentRenderer,
|
IContentRenderer,
|
||||||
ITabRenderer,
|
ITabRenderer,
|
||||||
IWatermarkRenderer,
|
IWatermarkRenderer,
|
||||||
} from '../../groupview/types';
|
} from '../../dockview/types';
|
||||||
import { PanelUpdateEvent } from '../../panel/types';
|
import { PanelUpdateEvent } from '../../panel/types';
|
||||||
import {
|
import {
|
||||||
DockviewGroupPanelModel,
|
DockviewGroupPanelModel,
|
||||||
GroupOptions,
|
GroupOptions,
|
||||||
} from '../../groupview/dockviewGroupPanelModel';
|
} from '../../dockview/dockviewGroupPanelModel';
|
||||||
import { fireEvent } from '@testing-library/dom';
|
import { fireEvent } from '@testing-library/dom';
|
||||||
import { LocalSelectionTransfer, PanelTransfer } from '../../dnd/dataTransfer';
|
import { LocalSelectionTransfer, PanelTransfer } from '../../dnd/dataTransfer';
|
||||||
import { CompositeDisposable } from '../../lifecycle';
|
import { CompositeDisposable } from '../../lifecycle';
|
||||||
@ -24,7 +22,7 @@ import {
|
|||||||
IDockviewPanelModel,
|
IDockviewPanelModel,
|
||||||
DockviewPanelModel,
|
DockviewPanelModel,
|
||||||
} from '../../dockview/dockviewPanelModel';
|
} from '../../dockview/dockviewPanelModel';
|
||||||
import { DockviewGroupPanel } from '../../groupview/dockviewGroupPanel';
|
import { DockviewGroupPanel } from '../../dockview/dockviewGroupPanel';
|
||||||
|
|
||||||
enum GroupChangeKind2 {
|
enum GroupChangeKind2 {
|
||||||
ADD_PANEL,
|
ADD_PANEL,
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
import { fireEvent } from '@testing-library/dom';
|
import { fireEvent } from '@testing-library/dom';
|
||||||
import { Emitter, Event } from '../../../events';
|
import { Emitter, Event } from '../../../events';
|
||||||
import { ContentContainer } from '../../../groupview/panel/content';
|
import { ContentContainer } from '../../../dockview/components/panel/content';
|
||||||
import {
|
import {
|
||||||
GroupPanelContentPartInitParameters,
|
GroupPanelContentPartInitParameters,
|
||||||
IContentRenderer,
|
IContentRenderer,
|
||||||
} from '../../../groupview/types';
|
} from '../../../dockview/types';
|
||||||
import { CompositeDisposable } from '../../../lifecycle';
|
import { CompositeDisposable } from '../../../lifecycle';
|
||||||
import { PanelUpdateEvent } from '../../../panel/types';
|
import { PanelUpdateEvent } from '../../../panel/types';
|
||||||
import { IDockviewPanel } from '../../../dockview/dockviewPanel';
|
import { IDockviewPanel } from '../../../dockview/dockviewPanel';
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
import { fireEvent } from '@testing-library/dom';
|
import { fireEvent } from '@testing-library/dom';
|
||||||
import { LocalSelectionTransfer, PanelTransfer } from '../../dnd/dataTransfer';
|
import { LocalSelectionTransfer, PanelTransfer } from '../../dnd/dataTransfer';
|
||||||
import { DockviewComponent } from '../../dockview/dockviewComponent';
|
import { DockviewComponent } from '../../dockview/dockviewComponent';
|
||||||
import { DockviewGroupPanel } from '../../groupview/dockviewGroupPanel';
|
import { DockviewGroupPanel } from '../../dockview/dockviewGroupPanel';
|
||||||
import { DockviewGroupPanelModel } from '../../groupview/dockviewGroupPanelModel';
|
import { DockviewGroupPanelModel } from '../../dockview/dockviewGroupPanelModel';
|
||||||
import { Tab } from '../../groupview/tab';
|
import { Tab } from '../../dockview/components/tab/tab';
|
||||||
|
|
||||||
describe('tab', () => {
|
describe('tab', () => {
|
||||||
test('that empty tab has inactive-tab class', () => {
|
test('that empty tab has inactive-tab class', () => {
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
import { DockviewComponent } from '../../../dockview/dockviewComponent';
|
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 { fireEvent } from '@testing-library/dom';
|
||||||
import {
|
import {
|
||||||
LocalSelectionTransfer,
|
LocalSelectionTransfer,
|
||||||
PanelTransfer,
|
PanelTransfer,
|
||||||
} from '../../../dnd/dataTransfer';
|
} from '../../../dnd/dataTransfer';
|
||||||
import { TestPanel } from '../dockviewGroupPanelModel.spec';
|
import { TestPanel } from '../dockviewGroupPanelModel.spec';
|
||||||
import { DockviewGroupPanelModel } from '../../../groupview/dockviewGroupPanelModel';
|
import { DockviewGroupPanelModel } from '../../../dockview/dockviewGroupPanelModel';
|
||||||
import { DockviewGroupPanel } from '../../../groupview/dockviewGroupPanel';
|
import { DockviewGroupPanel } from '../../../dockview/dockviewGroupPanel';
|
||||||
|
|
||||||
describe('tabsContainer', () => {
|
describe('tabsContainer', () => {
|
||||||
test('that an external event does not render a drop target and calls through to the group mode', () => {
|
test('that an external event does not render a drop target and calls through to the group mode', () => {
|
||||||
|
@ -2,7 +2,7 @@ export class ActionContainer {
|
|||||||
private _element: HTMLElement;
|
private _element: HTMLElement;
|
||||||
private _list: HTMLElement;
|
private _list: HTMLElement;
|
||||||
|
|
||||||
get element() {
|
get element(): HTMLElement {
|
||||||
return this._element;
|
return this._element;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -16,7 +16,7 @@ export class ActionContainer {
|
|||||||
this._element.appendChild(this._list);
|
this._element.appendChild(this._list);
|
||||||
}
|
}
|
||||||
|
|
||||||
public add(element: HTMLElement) {
|
public add(element: HTMLElement): void {
|
||||||
const listItem = document.createElement('li');
|
const listItem = document.createElement('li');
|
||||||
listItem.className = 'action-item';
|
listItem.className = 'action-item';
|
||||||
this._list.appendChild(element);
|
this._list.appendChild(element);
|
||||||
|
@ -12,7 +12,7 @@ import { Direction } from '../gridview/baseComponentGridview';
|
|||||||
import {
|
import {
|
||||||
AddComponentOptions,
|
AddComponentOptions,
|
||||||
IGridviewComponent,
|
IGridviewComponent,
|
||||||
SerializedGridview,
|
SerializedGridviewComponent,
|
||||||
} from '../gridview/gridviewComponent';
|
} from '../gridview/gridviewComponent';
|
||||||
import { IGridviewPanel } from '../gridview/gridviewPanel';
|
import { IGridviewPanel } from '../gridview/gridviewPanel';
|
||||||
|
|
||||||
@ -33,7 +33,7 @@ import { ISplitviewPanel } from '../splitview/splitviewPanel';
|
|||||||
import {
|
import {
|
||||||
DockviewGroupPanel,
|
DockviewGroupPanel,
|
||||||
IDockviewGroupPanel,
|
IDockviewGroupPanel,
|
||||||
} from '../groupview/dockviewGroupPanel';
|
} from '../dockview/dockviewGroupPanel';
|
||||||
import { Emitter, Event } from '../events';
|
import { Emitter, Event } from '../events';
|
||||||
import { IDockviewPanel } from '../dockview/dockviewPanel';
|
import { IDockviewPanel } from '../dockview/dockviewPanel';
|
||||||
import { PaneviewDropEvent } from '../paneview/draggablePaneviewPanel';
|
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 {
|
get minimumHeight(): number {
|
||||||
return this.component.minimumHeight;
|
return this.component.minimumHeight;
|
||||||
}
|
}
|
||||||
@ -315,11 +315,11 @@ export class GridviewApi implements CommonApi<SerializedGridview> {
|
|||||||
return this.component.getPanel(id);
|
return this.component.getPanel(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
fromJSON(data: SerializedGridview): void {
|
fromJSON(data: SerializedGridviewComponent): void {
|
||||||
return this.component.fromJSON(data);
|
return this.component.fromJSON(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
toJSON(): SerializedGridview {
|
toJSON(): SerializedGridviewComponent {
|
||||||
return this.component.toJSON();
|
return this.component.toJSON();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { Emitter, Event } from '../events';
|
import { Emitter, Event } from '../events';
|
||||||
import { GridviewPanelApiImpl, GridviewPanelApi } from './gridviewPanelApi';
|
import { GridviewPanelApiImpl, GridviewPanelApi } from './gridviewPanelApi';
|
||||||
import { DockviewGroupPanel } from '../groupview/dockviewGroupPanel';
|
import { DockviewGroupPanel } from '../dockview/dockviewGroupPanel';
|
||||||
import { MutableDisposable } from '../lifecycle';
|
import { MutableDisposable } from '../lifecycle';
|
||||||
import { IDockviewPanel } from '../dockview/dockviewPanel';
|
import { IDockviewPanel } from '../dockview/dockviewPanel';
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ export abstract class DragHandler extends CompositeDisposable {
|
|||||||
|
|
||||||
abstract getData(dataTransfer?: DataTransfer | null): IDisposable;
|
abstract getData(dataTransfer?: DataTransfer | null): IDisposable;
|
||||||
|
|
||||||
private configure() {
|
private configure(): void {
|
||||||
this.addDisposables(
|
this.addDisposables(
|
||||||
this._onDragStart,
|
this._onDragStart,
|
||||||
addDisposableListener(this.el, 'dragstart', (event) => {
|
addDisposableListener(this.el, 'dragstart', (event) => {
|
||||||
|
@ -3,7 +3,7 @@ import { addClasses } from '../dom';
|
|||||||
export function addGhostImage(
|
export function addGhostImage(
|
||||||
dataTransfer: DataTransfer,
|
dataTransfer: DataTransfer,
|
||||||
ghostElement: HTMLElement
|
ghostElement: HTMLElement
|
||||||
) {
|
): void {
|
||||||
// class dockview provides to force ghost image to be drawn on a different layer and prevent weird rendering issues
|
// class dockview provides to force ghost image to be drawn on a different layer and prevent weird rendering issues
|
||||||
addClasses(ghostElement, 'dv-dragged');
|
addClasses(ghostElement, 'dv-dragged');
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { DockviewGroupPanel } from '../groupview/dockviewGroupPanel';
|
import { DockviewGroupPanel } from '../dockview/dockviewGroupPanel';
|
||||||
import { IDisposable } from '../lifecycle';
|
import { IDisposable } from '../lifecycle';
|
||||||
import { DragHandler } from './abstractDragHandler';
|
import { DragHandler } from './abstractDragHandler';
|
||||||
import { LocalSelectionTransfer, PanelTransfer } from './dataTransfer';
|
import { LocalSelectionTransfer, PanelTransfer } from './dataTransfer';
|
||||||
|
@ -2,10 +2,10 @@ import {
|
|||||||
CompositeDisposable,
|
CompositeDisposable,
|
||||||
IDisposable,
|
IDisposable,
|
||||||
MutableDisposable,
|
MutableDisposable,
|
||||||
} from '../../lifecycle';
|
} from '../../../lifecycle';
|
||||||
import { Emitter, Event } from '../../events';
|
import { Emitter, Event } from '../../../events';
|
||||||
import { trackFocus } from '../../dom';
|
import { trackFocus } from '../../../dom';
|
||||||
import { IDockviewPanel } from '../../dockview/dockviewPanel';
|
import { IDockviewPanel } from '../../dockviewPanel';
|
||||||
|
|
||||||
export interface IContentContainer extends IDisposable {
|
export interface IContentContainer extends IDisposable {
|
||||||
onDidFocus: Event<void>;
|
onDidFocus: Event<void>;
|
@ -1,11 +1,8 @@
|
|||||||
import { CompositeDisposable } from '../../../lifecycle';
|
import { CompositeDisposable } from '../../../lifecycle';
|
||||||
import {
|
import { ITabRenderer, GroupPanelPartInitParameters } from '../../types';
|
||||||
ITabRenderer,
|
|
||||||
GroupPanelPartInitParameters,
|
|
||||||
} from '../../../groupview/types';
|
|
||||||
import { addDisposableListener } from '../../../events';
|
import { addDisposableListener } from '../../../events';
|
||||||
import { PanelUpdateEvent } from '../../../panel/types';
|
import { PanelUpdateEvent } from '../../../panel/types';
|
||||||
import { DockviewGroupPanel } from '../../../groupview/dockviewGroupPanel';
|
import { DockviewGroupPanel } from '../../dockviewGroupPanel';
|
||||||
import { createCloseButton } from '../../../svg';
|
import { createCloseButton } from '../../../svg';
|
||||||
|
|
||||||
export class DefaultTab extends CompositeDisposable implements ITabRenderer {
|
export class DefaultTab extends CompositeDisposable implements ITabRenderer {
|
||||||
|
@ -1,17 +1,16 @@
|
|||||||
import { addDisposableListener, Emitter, Event } from '../events';
|
import { addDisposableListener, Emitter, Event } from '../../../events';
|
||||||
import { CompositeDisposable, IDisposable } from '../lifecycle';
|
import { CompositeDisposable, IDisposable } from '../../../lifecycle';
|
||||||
import {
|
import {
|
||||||
getPanelData,
|
getPanelData,
|
||||||
LocalSelectionTransfer,
|
LocalSelectionTransfer,
|
||||||
PanelTransfer,
|
PanelTransfer,
|
||||||
} from '../dnd/dataTransfer';
|
} from '../../../dnd/dataTransfer';
|
||||||
import { toggleClass } from '../dom';
|
import { toggleClass } from '../../../dom';
|
||||||
import { IDockviewComponent } from '../dockview/dockviewComponent';
|
import { IDockviewComponent } from '../../dockviewComponent';
|
||||||
import { ITabRenderer } from './types';
|
import { DockviewDropTargets, ITabRenderer } from '../../types';
|
||||||
import { DockviewGroupPanel } from './dockviewGroupPanel';
|
import { DockviewGroupPanel } from '../../dockviewGroupPanel';
|
||||||
import { DroptargetEvent, Droptarget } from '../dnd/droptarget';
|
import { DroptargetEvent, Droptarget } from '../../../dnd/droptarget';
|
||||||
import { DockviewDropTargets } from './dnd';
|
import { DragHandler } from '../../../dnd/abstractDragHandler';
|
||||||
import { DragHandler } from '../dnd/abstractDragHandler';
|
|
||||||
|
|
||||||
export interface ITab {
|
export interface ITab {
|
||||||
readonly panelId: string;
|
readonly panelId: string;
|
@ -2,14 +2,14 @@ import {
|
|||||||
IDisposable,
|
IDisposable,
|
||||||
CompositeDisposable,
|
CompositeDisposable,
|
||||||
IValueDisposable,
|
IValueDisposable,
|
||||||
} from '../../lifecycle';
|
} from '../../../lifecycle';
|
||||||
import { addDisposableListener, Emitter, Event } from '../../events';
|
import { addDisposableListener, Emitter, Event } from '../../../events';
|
||||||
import { ITab, Tab } from '../tab';
|
import { ITab, Tab } from '../tab/tab';
|
||||||
import { DockviewComponent } from '../../dockview/dockviewComponent';
|
import { DockviewComponent } from '../../dockviewComponent';
|
||||||
import { DockviewGroupPanel } from '../dockviewGroupPanel';
|
import { DockviewGroupPanel } from '../../dockviewGroupPanel';
|
||||||
import { VoidContainer } from './voidContainer';
|
import { VoidContainer } from './voidContainer';
|
||||||
import { toggleClass } from '../../dom';
|
import { toggleClass } from '../../../dom';
|
||||||
import { IDockviewPanel } from '../../dockview/dockviewPanel';
|
import { IDockviewPanel } from '../../dockviewPanel';
|
||||||
|
|
||||||
export interface TabDropIndexEvent {
|
export interface TabDropIndexEvent {
|
||||||
event: DragEvent;
|
event: DragEvent;
|
@ -1,12 +1,12 @@
|
|||||||
import { last } from '../../array';
|
import { last } from '../../../array';
|
||||||
import { getPanelData } from '../../dnd/dataTransfer';
|
import { getPanelData } from '../../../dnd/dataTransfer';
|
||||||
import { Droptarget, DroptargetEvent } from '../../dnd/droptarget';
|
import { Droptarget, DroptargetEvent } from '../../../dnd/droptarget';
|
||||||
import { GroupDragHandler } from '../../dnd/groupDragHandler';
|
import { GroupDragHandler } from '../../../dnd/groupDragHandler';
|
||||||
import { DockviewComponent } from '../../dockview/dockviewComponent';
|
import { DockviewComponent } from '../../dockviewComponent';
|
||||||
import { addDisposableListener, Emitter, Event } from '../../events';
|
import { addDisposableListener, Emitter, Event } from '../../../events';
|
||||||
import { CompositeDisposable } from '../../lifecycle';
|
import { CompositeDisposable } from '../../../lifecycle';
|
||||||
import { DockviewDropTargets } from '../dnd';
|
import { DockviewGroupPanel } from '../../dockviewGroupPanel';
|
||||||
import { DockviewGroupPanel } from '../dockviewGroupPanel';
|
import { DockviewDropTargets } from '../../types';
|
||||||
|
|
||||||
export class VoidContainer extends CompositeDisposable {
|
export class VoidContainer extends CompositeDisposable {
|
||||||
private readonly _element: HTMLElement;
|
private readonly _element: HTMLElement;
|
@ -1,12 +1,9 @@
|
|||||||
import {
|
import { GroupPanelPartInitParameters, IWatermarkRenderer } from '../../types';
|
||||||
GroupPanelPartInitParameters,
|
|
||||||
IWatermarkRenderer,
|
|
||||||
} from '../../../groupview/types';
|
|
||||||
import { ActionContainer } from '../../../actionbar/actionsContainer';
|
import { ActionContainer } from '../../../actionbar/actionsContainer';
|
||||||
import { addDisposableListener } from '../../../events';
|
import { addDisposableListener } from '../../../events';
|
||||||
import { toggleClass } from '../../../dom';
|
import { toggleClass } from '../../../dom';
|
||||||
import { CompositeDisposable } from '../../../lifecycle';
|
import { CompositeDisposable } from '../../../lifecycle';
|
||||||
import { DockviewGroupPanel } from '../../../groupview/dockviewGroupPanel';
|
import { DockviewGroupPanel } from '../../dockviewGroupPanel';
|
||||||
import { PanelUpdateEvent } from '../../../panel/types';
|
import { PanelUpdateEvent } from '../../../panel/types';
|
||||||
import { createCloseButton } from '../../../svg';
|
import { createCloseButton } from '../../../svg';
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { GroupviewPanelState, ITabRenderer } from '../groupview/types';
|
import { GroupviewPanelState, ITabRenderer } from './types';
|
||||||
import { DockviewGroupPanel } from '../groupview/dockviewGroupPanel';
|
import { DockviewGroupPanel } from './dockviewGroupPanel';
|
||||||
import { DockviewPanel, IDockviewPanel } from './dockviewPanel';
|
import { DockviewPanel, IDockviewPanel } from './dockviewPanel';
|
||||||
import { IDockviewComponent } from './dockviewComponent';
|
import { IDockviewComponent } from './dockviewComponent';
|
||||||
import { createComponent } from '../panel/componentFactory';
|
import { createComponent } from '../panel/componentFactory';
|
||||||
@ -14,6 +14,14 @@ export interface IPanelDeserializer {
|
|||||||
): IDockviewPanel;
|
): IDockviewPanel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// depreciated
|
||||||
|
interface LegacyState extends GroupviewPanelState {
|
||||||
|
view?: {
|
||||||
|
tab?: { id: string };
|
||||||
|
content: { id: string };
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
export class DefaultDockviewDeserialzier implements IPanelDeserializer {
|
export class DefaultDockviewDeserialzier implements IPanelDeserializer {
|
||||||
constructor(private readonly layout: IDockviewComponent) {}
|
constructor(private readonly layout: IDockviewComponent) {}
|
||||||
|
|
||||||
@ -24,9 +32,8 @@ export class DefaultDockviewDeserialzier implements IPanelDeserializer {
|
|||||||
const panelId = panelData.id;
|
const panelId = panelData.id;
|
||||||
const params = panelData.params;
|
const params = panelData.params;
|
||||||
const title = panelData.title;
|
const title = panelData.title;
|
||||||
const viewData = panelData.view!;
|
|
||||||
|
|
||||||
let tab: ITabRenderer;
|
const viewData = (panelData as LegacyState).view!;
|
||||||
|
|
||||||
const contentComponent = viewData
|
const contentComponent = viewData
|
||||||
? viewData.content.id
|
? viewData.content.id
|
||||||
@ -35,6 +42,8 @@ export class DefaultDockviewDeserialzier implements IPanelDeserializer {
|
|||||||
? viewData.tab?.id
|
? viewData.tab?.id
|
||||||
: panelData.tabComponent;
|
: panelData.tabComponent;
|
||||||
|
|
||||||
|
let tab: ITabRenderer;
|
||||||
|
|
||||||
if (tabComponent) {
|
if (tabComponent) {
|
||||||
tab = createComponent(
|
tab = createComponent(
|
||||||
panelId,
|
panelId,
|
||||||
|
@ -11,11 +11,10 @@ import { CompositeDisposable } from '../lifecycle';
|
|||||||
import { Event, Emitter } from '../events';
|
import { Event, Emitter } from '../events';
|
||||||
import { Watermark } from './components/watermark/watermark';
|
import { Watermark } from './components/watermark/watermark';
|
||||||
import {
|
import {
|
||||||
IContentRenderer,
|
|
||||||
ITabRenderer,
|
|
||||||
IWatermarkRenderer,
|
IWatermarkRenderer,
|
||||||
GroupviewPanelState,
|
GroupviewPanelState,
|
||||||
} from '../groupview/types';
|
DockviewDropTargets,
|
||||||
|
} from './types';
|
||||||
import { sequentialNumberGenerator } from '../math';
|
import { sequentialNumberGenerator } from '../math';
|
||||||
import { IPanelDeserializer } from './deserializer';
|
import { IPanelDeserializer } from './deserializer';
|
||||||
import { createComponent } from '../panel/componentFactory';
|
import { createComponent } from '../panel/componentFactory';
|
||||||
@ -37,19 +36,14 @@ import {
|
|||||||
} from '../gridview/baseComponentGridview';
|
} from '../gridview/baseComponentGridview';
|
||||||
import { DockviewApi } from '../api/component.api';
|
import { DockviewApi } from '../api/component.api';
|
||||||
import { Orientation, Sizing } from '../splitview/core/splitview';
|
import { Orientation, Sizing } from '../splitview/core/splitview';
|
||||||
import { DefaultTab } from './components/tab/defaultTab';
|
|
||||||
import {
|
import {
|
||||||
GroupOptions,
|
GroupOptions,
|
||||||
GroupPanelViewState,
|
GroupPanelViewState,
|
||||||
GroupviewDropEvent,
|
GroupviewDropEvent,
|
||||||
} from '../groupview/dockviewGroupPanelModel';
|
} from './dockviewGroupPanelModel';
|
||||||
import {
|
import { DockviewGroupPanel, IDockviewGroupPanel } from './dockviewGroupPanel';
|
||||||
DockviewGroupPanel,
|
|
||||||
IDockviewGroupPanel,
|
|
||||||
} from '../groupview/dockviewGroupPanel';
|
|
||||||
import { DockviewPanelModel } from './dockviewPanelModel';
|
import { DockviewPanelModel } from './dockviewPanelModel';
|
||||||
import { getPanelData } from '../dnd/dataTransfer';
|
import { getPanelData } from '../dnd/dataTransfer';
|
||||||
import { DockviewDropTargets } from '../groupview/dnd';
|
|
||||||
|
|
||||||
export interface PanelReference {
|
export interface PanelReference {
|
||||||
update: (event: { params: { [key: string]: any } }) => void;
|
update: (event: { params: { [key: string]: any } }) => void;
|
||||||
|
@ -1,20 +1,25 @@
|
|||||||
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 { Droptarget, Position } from '../dnd/droptarget';
|
import { Droptarget, Position } from '../dnd/droptarget';
|
||||||
import { DockviewComponent } from '../dockview/dockviewComponent';
|
import { DockviewComponent } from './dockviewComponent';
|
||||||
import { isAncestor, toggleClass } from '../dom';
|
import { isAncestor, toggleClass } from '../dom';
|
||||||
import { addDisposableListener, Emitter, Event } from '../events';
|
import { addDisposableListener, Emitter, Event } from '../events';
|
||||||
import { IGridPanelView } from '../gridview/baseComponentGridview';
|
import { IGridPanelView } from '../gridview/baseComponentGridview';
|
||||||
import { IViewSize } from '../gridview/gridview';
|
import { IViewSize } from '../gridview/gridview';
|
||||||
import { CompositeDisposable, IDisposable } from '../lifecycle';
|
import { CompositeDisposable } from '../lifecycle';
|
||||||
import { PanelInitParameters, PanelUpdateEvent } from '../panel/types';
|
import { PanelInitParameters, PanelUpdateEvent } from '../panel/types';
|
||||||
import { ContentContainer, IContentContainer } from './panel/content';
|
import {
|
||||||
import { ITabsContainer, TabsContainer } from './titlebar/tabsContainer';
|
ContentContainer,
|
||||||
import { IWatermarkRenderer } from './types';
|
IContentContainer,
|
||||||
|
} from './components/panel/content';
|
||||||
|
import {
|
||||||
|
ITabsContainer,
|
||||||
|
TabsContainer,
|
||||||
|
} from './components/titlebar/tabsContainer';
|
||||||
|
import { DockviewDropTargets, IWatermarkRenderer } from './types';
|
||||||
import { DockviewGroupPanel } from './dockviewGroupPanel';
|
import { DockviewGroupPanel } from './dockviewGroupPanel';
|
||||||
import { DockviewDropTargets } from './dnd';
|
import { IDockviewPanel } from './dockviewPanel';
|
||||||
import { IDockviewPanel } from '../dockview/dockviewPanel';
|
import { IGroupControlRenderer } from './options';
|
||||||
import { IGroupControlRenderer } from '../dockview/options';
|
|
||||||
|
|
||||||
export interface DndService {
|
export interface DndService {
|
||||||
canDisplayOverlay(
|
canDisplayOverlay(
|
@ -7,8 +7,8 @@ import {
|
|||||||
GroupPanelUpdateEvent,
|
GroupPanelUpdateEvent,
|
||||||
GroupviewPanelState,
|
GroupviewPanelState,
|
||||||
IGroupPanelInitParameters,
|
IGroupPanelInitParameters,
|
||||||
} from '../groupview/types';
|
} from './types';
|
||||||
import { DockviewGroupPanel } from '../groupview/dockviewGroupPanel';
|
import { DockviewGroupPanel } from './dockviewGroupPanel';
|
||||||
import { CompositeDisposable, IDisposable } from '../lifecycle';
|
import { CompositeDisposable, IDisposable } from '../lifecycle';
|
||||||
import { IPanel, Parameters } from '../panel/types';
|
import { IPanel, Parameters } from '../panel/types';
|
||||||
import { IDockviewPanelModel } from './dockviewPanelModel';
|
import { IDockviewPanelModel } from './dockviewPanelModel';
|
||||||
|
@ -4,17 +4,12 @@ import {
|
|||||||
IContentRenderer,
|
IContentRenderer,
|
||||||
ITabRenderer,
|
ITabRenderer,
|
||||||
GroupPanelUpdateEvent,
|
GroupPanelUpdateEvent,
|
||||||
} from '../groupview/types';
|
} from './types';
|
||||||
import { DockviewGroupPanel } from '../groupview/dockviewGroupPanel';
|
import { DockviewGroupPanel } from './dockviewGroupPanel';
|
||||||
import { IDisposable } from '../lifecycle';
|
import { IDisposable } from '../lifecycle';
|
||||||
import { createComponent } from '../panel/componentFactory';
|
import { createComponent } from '../panel/componentFactory';
|
||||||
import { IDockviewComponent } from './dockviewComponent';
|
import { IDockviewComponent } from './dockviewComponent';
|
||||||
|
|
||||||
export interface SerializedGroupPanelView {
|
|
||||||
tab?: { id: string };
|
|
||||||
content: { id: string };
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface IDockviewPanelModel extends IDisposable {
|
export interface IDockviewPanelModel extends IDisposable {
|
||||||
readonly contentComponent: string;
|
readonly contentComponent: string;
|
||||||
readonly tabComponent?: string;
|
readonly tabComponent?: string;
|
||||||
|
@ -6,14 +6,14 @@ import {
|
|||||||
ITabRenderer,
|
ITabRenderer,
|
||||||
WatermarkConstructor,
|
WatermarkConstructor,
|
||||||
IWatermarkRenderer,
|
IWatermarkRenderer,
|
||||||
} from '../groupview/types';
|
DockviewDropTargets,
|
||||||
|
} from './types';
|
||||||
import {
|
import {
|
||||||
DockviewGroupPanel,
|
DockviewGroupPanel,
|
||||||
DockviewGroupPanelApi,
|
DockviewGroupPanelApi,
|
||||||
} from '../groupview/dockviewGroupPanel';
|
} from './dockviewGroupPanel';
|
||||||
import { ISplitviewStyles, Orientation } from '../splitview/core/splitview';
|
import { ISplitviewStyles, Orientation } from '../splitview/core/splitview';
|
||||||
import { FrameworkFactory } from '../types';
|
import { FrameworkFactory } from '../types';
|
||||||
import { DockviewDropTargets } from '../groupview/dnd';
|
|
||||||
import { PanelTransfer } from '../dnd/dataTransfer';
|
import { PanelTransfer } from '../dnd/dataTransfer';
|
||||||
import { IDisposable } from '../lifecycle';
|
import { IDisposable } from '../lifecycle';
|
||||||
import { Position } from '../dnd/droptarget';
|
import { Position } from '../dnd/droptarget';
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { IDockviewComponent } from '../dockview/dockviewComponent';
|
import { IDockviewComponent } from './dockviewComponent';
|
||||||
import { DockviewPanelApi } from '../api/dockviewPanelApi';
|
import { DockviewPanelApi } from '../api/dockviewPanelApi';
|
||||||
import {
|
import {
|
||||||
PanelInitParameters,
|
PanelInitParameters,
|
||||||
@ -7,13 +7,16 @@ import {
|
|||||||
Parameters,
|
Parameters,
|
||||||
} from '../panel/types';
|
} from '../panel/types';
|
||||||
import { DockviewApi } from '../api/component.api';
|
import { DockviewApi } from '../api/component.api';
|
||||||
import { DockviewGroupPanel } from './dockviewGroupPanel';
|
|
||||||
import { Event } from '../events';
|
import { Event } from '../events';
|
||||||
import {
|
|
||||||
IDockviewPanelModel,
|
|
||||||
SerializedGroupPanelView,
|
|
||||||
} from '../dockview/dockviewPanelModel';
|
|
||||||
import { Optional } from '../types';
|
import { Optional } from '../types';
|
||||||
|
import { DockviewGroupPanel } from './dockviewGroupPanel';
|
||||||
|
|
||||||
|
export enum DockviewDropTargets {
|
||||||
|
Tab,
|
||||||
|
Panel,
|
||||||
|
TabContainer,
|
||||||
|
Edge,
|
||||||
|
}
|
||||||
|
|
||||||
export interface HeaderPartInitParameters {
|
export interface HeaderPartInitParameters {
|
||||||
title: string;
|
title: string;
|
||||||
@ -94,5 +97,4 @@ export interface GroupviewPanelState {
|
|||||||
tabComponent?: string;
|
tabComponent?: string;
|
||||||
title?: string;
|
title?: string;
|
||||||
params?: { [key: string]: any };
|
params?: { [key: string]: any };
|
||||||
view?: SerializedGroupPanelView; // depreciated
|
|
||||||
}
|
}
|
@ -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) {
|
for (const classname of classes) {
|
||||||
if (element.classList.contains(classname)) {
|
if (element.classList.contains(classname)) {
|
||||||
element.classList.remove(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) {
|
for (const classname of classes) {
|
||||||
if (!element.classList.contains(classname)) {
|
if (!element.classList.contains(classname)) {
|
||||||
element.classList.add(classname);
|
element.classList.add(classname);
|
||||||
@ -45,7 +51,7 @@ export const toggleClass = (
|
|||||||
element: HTMLElement,
|
element: HTMLElement,
|
||||||
className: string,
|
className: string,
|
||||||
isToggled: boolean
|
isToggled: boolean
|
||||||
) => {
|
): void => {
|
||||||
const hasClass = element.classList.contains(className);
|
const hasClass = element.classList.contains(className);
|
||||||
if (isToggled && !hasClass) {
|
if (isToggled && !hasClass) {
|
||||||
element.classList.add(className);
|
element.classList.add(className);
|
||||||
@ -74,8 +80,8 @@ export function getElementsByTagName(tag: string): HTMLElement[] {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface IFocusTracker extends IDisposable {
|
export interface IFocusTracker extends IDisposable {
|
||||||
onDidFocus: Event<void>;
|
readonly onDidFocus: Event<void>;
|
||||||
onDidBlur: Event<void>;
|
readonly onDidBlur: Event<void>;
|
||||||
refreshState?(): void;
|
refreshState?(): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -153,11 +159,11 @@ class FocusTracker extends CompositeDisposable implements IFocusTracker {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
refreshState() {
|
refreshState(): void {
|
||||||
this._refreshStateHandler();
|
this._refreshStateHandler();
|
||||||
}
|
}
|
||||||
|
|
||||||
public dispose() {
|
public dispose(): void {
|
||||||
super.dispose();
|
super.dispose();
|
||||||
|
|
||||||
this._onDidBlur.dispose();
|
this._onDidBlur.dispose();
|
||||||
|
@ -5,7 +5,7 @@ export interface Event<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface EmitterOptions {
|
export interface EmitterOptions {
|
||||||
replay?: boolean;
|
readonly replay?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export namespace Event {
|
export namespace Event {
|
||||||
@ -35,7 +35,7 @@ export class Emitter<T> implements IDisposable {
|
|||||||
|
|
||||||
constructor(private readonly options?: EmitterOptions) {}
|
constructor(private readonly options?: EmitterOptions) {}
|
||||||
|
|
||||||
get event() {
|
get event(): Event<T> {
|
||||||
if (!this._event) {
|
if (!this._event) {
|
||||||
this._event = (listener: (e: T) => void): IDisposable => {
|
this._event = (listener: (e: T) => void): IDisposable => {
|
||||||
if (this.options?.replay && this._last !== undefined) {
|
if (this.options?.replay && this._last !== undefined) {
|
||||||
@ -57,14 +57,14 @@ export class Emitter<T> implements IDisposable {
|
|||||||
return this._event;
|
return this._event;
|
||||||
}
|
}
|
||||||
|
|
||||||
public fire(e: T) {
|
public fire(e: T): void {
|
||||||
this._last = e;
|
this._last = e;
|
||||||
for (const listener of this._listeners) {
|
for (const listener of this._listeners) {
|
||||||
listener(e);
|
listener(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public dispose() {
|
public dispose(): void {
|
||||||
this._listeners = [];
|
this._listeners = [];
|
||||||
this._disposed = true;
|
this._disposed = true;
|
||||||
}
|
}
|
||||||
|
@ -92,40 +92,40 @@ export abstract class BaseGrid<T extends IGridPanelView>
|
|||||||
|
|
||||||
protected readonly _bufferOnDidLayoutChange = new TickDelayedEvent();
|
protected readonly _bufferOnDidLayoutChange = new TickDelayedEvent();
|
||||||
|
|
||||||
get id() {
|
get id(): string {
|
||||||
return this._id;
|
return this._id;
|
||||||
}
|
}
|
||||||
|
|
||||||
get element() {
|
get element(): HTMLElement {
|
||||||
return this._element;
|
return this._element;
|
||||||
}
|
}
|
||||||
|
|
||||||
get size() {
|
get size(): number {
|
||||||
return this._groups.size;
|
return this._groups.size;
|
||||||
}
|
}
|
||||||
|
|
||||||
get groups() {
|
get groups(): T[] {
|
||||||
return Array.from(this._groups.values()).map((_) => _.value);
|
return Array.from(this._groups.values()).map((_) => _.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
get width() {
|
get width(): number {
|
||||||
return this.gridview.width;
|
return this.gridview.width;
|
||||||
}
|
}
|
||||||
|
|
||||||
get height() {
|
get height(): number {
|
||||||
return this.gridview.height;
|
return this.gridview.height;
|
||||||
}
|
}
|
||||||
|
|
||||||
get minimumHeight() {
|
get minimumHeight(): number {
|
||||||
return this.gridview.minimumHeight;
|
return this.gridview.minimumHeight;
|
||||||
}
|
}
|
||||||
get maximumHeight() {
|
get maximumHeight(): number {
|
||||||
return this.gridview.maximumHeight;
|
return this.gridview.maximumHeight;
|
||||||
}
|
}
|
||||||
get minimumWidth() {
|
get minimumWidth(): number {
|
||||||
return this.gridview.minimumWidth;
|
return this.gridview.minimumWidth;
|
||||||
}
|
}
|
||||||
get maximumWidth() {
|
get maximumWidth(): number {
|
||||||
return this.gridview.maximumWidth;
|
return this.gridview.maximumWidth;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -176,16 +176,20 @@ export abstract class BaseGrid<T extends IGridPanelView>
|
|||||||
|
|
||||||
public abstract clear(): void;
|
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.gridview.setViewVisible(getGridLocation(panel.element), visible);
|
||||||
this._onDidLayoutChange.fire();
|
this._onDidLayoutChange.fire();
|
||||||
}
|
}
|
||||||
|
|
||||||
public isVisible(panel: T) {
|
public isVisible(panel: T): boolean {
|
||||||
return this.gridview.isViewVisible(getGridLocation(panel.element));
|
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.gridview.addView(group, size ?? Sizing.Distribute, location);
|
||||||
|
|
||||||
this._onDidAddGroup.fire(group);
|
this._onDidAddGroup.fire(group);
|
||||||
@ -196,7 +200,7 @@ export abstract class BaseGrid<T extends IGridPanelView>
|
|||||||
protected doRemoveGroup(
|
protected doRemoveGroup(
|
||||||
group: T,
|
group: T,
|
||||||
options?: { skipActive?: boolean; skipDispose?: boolean }
|
options?: { skipActive?: boolean; skipDispose?: boolean }
|
||||||
) {
|
): T {
|
||||||
if (!this._groups.has(group.id)) {
|
if (!this._groups.has(group.id)) {
|
||||||
throw new Error('invalid operation');
|
throw new Error('invalid operation');
|
||||||
}
|
}
|
||||||
@ -228,7 +232,7 @@ export abstract class BaseGrid<T extends IGridPanelView>
|
|||||||
return this._groups.get(id)?.value;
|
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) {
|
if (this._activeGroup === group) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -251,11 +255,11 @@ export abstract class BaseGrid<T extends IGridPanelView>
|
|||||||
this._onDidActiveGroupChange.fire(group);
|
this._onDidActiveGroupChange.fire(group);
|
||||||
}
|
}
|
||||||
|
|
||||||
public removeGroup(group: T) {
|
public removeGroup(group: T): void {
|
||||||
this.doRemoveGroup(group);
|
this.doRemoveGroup(group);
|
||||||
}
|
}
|
||||||
|
|
||||||
public moveToNext(options?: MovementOptions2) {
|
public moveToNext(options?: MovementOptions2): void {
|
||||||
if (!options) {
|
if (!options) {
|
||||||
options = {};
|
options = {};
|
||||||
}
|
}
|
||||||
@ -271,7 +275,7 @@ export abstract class BaseGrid<T extends IGridPanelView>
|
|||||||
this.doSetGroupActive(next as T);
|
this.doSetGroupActive(next as T);
|
||||||
}
|
}
|
||||||
|
|
||||||
public moveToPrevious(options?: MovementOptions2) {
|
public moveToPrevious(options?: MovementOptions2): void {
|
||||||
if (!options) {
|
if (!options) {
|
||||||
options = {};
|
options = {};
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,8 @@ export class BranchNode extends CompositeDisposable implements IView {
|
|||||||
private splitview: Splitview;
|
private splitview: Splitview;
|
||||||
private _orthogonalSize: number;
|
private _orthogonalSize: number;
|
||||||
private _size: number;
|
private _size: number;
|
||||||
|
private _childrenDisposable: IDisposable = Disposable.NONE;
|
||||||
|
|
||||||
public readonly children: Node[] = [];
|
public readonly children: Node[] = [];
|
||||||
|
|
||||||
private readonly _onDidChange = new Emitter<{
|
private readonly _onDidChange = new Emitter<{
|
||||||
@ -61,11 +63,11 @@ export class BranchNode extends CompositeDisposable implements IView {
|
|||||||
return this.splitview.maximumSize;
|
return this.splitview.maximumSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
get orthogonalSize() {
|
get orthogonalSize(): number {
|
||||||
return this._orthogonalSize;
|
return this._orthogonalSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
get size() {
|
get size(): number {
|
||||||
return this._size;
|
return this._size;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -168,7 +170,7 @@ export class BranchNode extends CompositeDisposable implements IView {
|
|||||||
this.setupChildrenEvents();
|
this.setupChildrenEvents();
|
||||||
}
|
}
|
||||||
|
|
||||||
setVisible(visible: boolean) {
|
setVisible(visible: boolean): void {
|
||||||
for (const child of this.children) {
|
for (const child of this.children) {
|
||||||
child.setVisible(visible);
|
child.setVisible(visible);
|
||||||
}
|
}
|
||||||
@ -258,7 +260,7 @@ export class BranchNode extends CompositeDisposable implements IView {
|
|||||||
return this.splitview.getViewCachedVisibleSize(index);
|
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) {
|
if (index < 0 || index >= this.children.length) {
|
||||||
throw new Error('Invalid index');
|
throw new Error('Invalid index');
|
||||||
}
|
}
|
||||||
@ -279,9 +281,7 @@ export class BranchNode extends CompositeDisposable implements IView {
|
|||||||
return child;
|
return child;
|
||||||
}
|
}
|
||||||
|
|
||||||
private _childrenDisposable: IDisposable = Disposable.NONE;
|
private setupChildrenEvents(): void {
|
||||||
|
|
||||||
private setupChildrenEvents() {
|
|
||||||
this._childrenDisposable.dispose();
|
this._childrenDisposable.dispose();
|
||||||
|
|
||||||
this._childrenDisposable = Event.any(
|
this._childrenDisposable = Event.any(
|
||||||
@ -295,7 +295,7 @@ export class BranchNode extends CompositeDisposable implements IView {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public dispose() {
|
public dispose(): void {
|
||||||
super.dispose();
|
super.dispose();
|
||||||
this._childrenDisposable.dispose();
|
this._childrenDisposable.dispose();
|
||||||
this.children.forEach((child) => child.dispose());
|
this.children.forEach((child) => child.dispose());
|
||||||
|
@ -261,6 +261,14 @@ export interface INodeDescriptor {
|
|||||||
export interface IViewDeserializer {
|
export interface IViewDeserializer {
|
||||||
fromJSON: (data: ISerializedLeafNode) => IGridView;
|
fromJSON: (data: ISerializedLeafNode) => IGridView;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface SerializedGridview<T> {
|
||||||
|
root: SerializedGridObject<T>;
|
||||||
|
width: number;
|
||||||
|
height: number;
|
||||||
|
orientation: Orientation;
|
||||||
|
}
|
||||||
|
|
||||||
export class Gridview implements IDisposable {
|
export class Gridview implements IDisposable {
|
||||||
private _root: BranchNode | undefined;
|
private _root: BranchNode | undefined;
|
||||||
public readonly element: HTMLElement;
|
public readonly element: HTMLElement;
|
||||||
@ -277,7 +285,41 @@ export class Gridview implements IDisposable {
|
|||||||
return this._root ? this._root.children.length : 0;
|
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);
|
const root = serializeBranchNode(this.getView(), this.orientation);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -288,7 +330,7 @@ export class Gridview implements IDisposable {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public dispose() {
|
public dispose(): void {
|
||||||
this.disposable.dispose();
|
this.disposable.dispose();
|
||||||
this._onDidChange.dispose();
|
this._onDidChange.dispose();
|
||||||
this.root.dispose();
|
this.root.dispose();
|
||||||
@ -296,7 +338,7 @@ export class Gridview implements IDisposable {
|
|||||||
this.element.remove();
|
this.element.remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
public clear() {
|
public clear(): void {
|
||||||
const orientation = this.root.orientation;
|
const orientation = this.root.orientation;
|
||||||
this.root = new BranchNode(
|
this.root = new BranchNode(
|
||||||
orientation,
|
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 orientation = json.orientation;
|
||||||
const height =
|
const height =
|
||||||
orientation === Orientation.VERTICAL ? json.height : json.width;
|
orientation === Orientation.VERTICAL ? json.height : json.width;
|
||||||
@ -378,20 +420,6 @@ export class Gridview implements IDisposable {
|
|||||||
return result;
|
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 {
|
private get root(): BranchNode {
|
||||||
return this._root!;
|
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);
|
return this.progmaticSelect(location);
|
||||||
}
|
}
|
||||||
|
|
||||||
public previous(location: number[]) {
|
public previous(location: number[]): LeafNode {
|
||||||
return this.progmaticSelect(location, true);
|
return this.progmaticSelect(location, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -492,7 +520,7 @@ export class Gridview implements IDisposable {
|
|||||||
return { box, children };
|
return { box, children };
|
||||||
}
|
}
|
||||||
|
|
||||||
private progmaticSelect(location: number[], reverse = false) {
|
private progmaticSelect(location: number[], reverse = false): LeafNode {
|
||||||
const [path, node] = this.getNode(location);
|
const [path, node] = this.getNode(location);
|
||||||
|
|
||||||
if (!(node instanceof LeafNode)) {
|
if (!(node instanceof LeafNode)) {
|
||||||
@ -513,26 +541,6 @@ export class Gridview implements IDisposable {
|
|||||||
return findLeaf(this.root, reverse);
|
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(
|
constructor(
|
||||||
readonly proportionalLayout: boolean,
|
readonly proportionalLayout: boolean,
|
||||||
readonly styles: ISplitviewStyles | undefined,
|
readonly styles: ISplitviewStyles | undefined,
|
||||||
@ -581,7 +589,11 @@ export class Gridview implements IDisposable {
|
|||||||
parent.moveChild(from, to);
|
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 [rest, index] = tail(location);
|
||||||
|
|
||||||
const [pathToParent, parent] = this.getNode(rest);
|
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);
|
const location = getGridLocation(view.element);
|
||||||
return this.removeView(location, sizing);
|
return this.removeView(location, sizing);
|
||||||
}
|
}
|
||||||
@ -721,7 +733,7 @@ export class Gridview implements IDisposable {
|
|||||||
return node.view;
|
return node.view;
|
||||||
}
|
}
|
||||||
|
|
||||||
public layout(width: number, height: number) {
|
public layout(width: number, height: number): void {
|
||||||
const [size, orthogonalSize] =
|
const [size, orthogonalSize] =
|
||||||
this.root.orientation === Orientation.HORIZONTAL
|
this.root.orientation === Orientation.HORIZONTAL
|
||||||
? [height, width]
|
? [height, width]
|
||||||
|
@ -2,6 +2,7 @@ import {
|
|||||||
getRelativeLocation,
|
getRelativeLocation,
|
||||||
SerializedGridObject,
|
SerializedGridObject,
|
||||||
getGridLocation,
|
getGridLocation,
|
||||||
|
SerializedGridview,
|
||||||
} from './gridview';
|
} from './gridview';
|
||||||
import { tail, sequenceEquals } from '../array';
|
import { tail, sequenceEquals } from '../array';
|
||||||
import { CompositeDisposable } from '../lifecycle';
|
import { CompositeDisposable } from '../lifecycle';
|
||||||
@ -26,13 +27,8 @@ import { createComponent } from '../panel/componentFactory';
|
|||||||
import { Emitter, Event } from '../events';
|
import { Emitter, Event } from '../events';
|
||||||
import { Position } from '../dnd/droptarget';
|
import { Position } from '../dnd/droptarget';
|
||||||
|
|
||||||
export interface SerializedGridview {
|
export interface SerializedGridviewComponent {
|
||||||
grid: {
|
grid: SerializedGridview<GridPanelViewState>;
|
||||||
height: number;
|
|
||||||
width: number;
|
|
||||||
orientation: Orientation;
|
|
||||||
root: SerializedGridObject<GridPanelViewState>;
|
|
||||||
};
|
|
||||||
activePanel?: string;
|
activePanel?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,8 +60,8 @@ export interface IGridviewComponent extends IBaseGrid<GridviewPanel> {
|
|||||||
addPanel(options: AddComponentOptions): IGridviewPanel;
|
addPanel(options: AddComponentOptions): IGridviewPanel;
|
||||||
removePanel(panel: IGridviewPanel, sizing?: Sizing): void;
|
removePanel(panel: IGridviewPanel, sizing?: Sizing): void;
|
||||||
focus(): void;
|
focus(): void;
|
||||||
fromJSON(serializedGridview: SerializedGridview): void;
|
fromJSON(serializedGridview: SerializedGridviewComponent): void;
|
||||||
toJSON(): SerializedGridview;
|
toJSON(): SerializedGridviewComponent;
|
||||||
movePanel(
|
movePanel(
|
||||||
panel: IGridviewPanel,
|
panel: IGridviewPanel,
|
||||||
options: { direction: Direction; reference: string; size?: number }
|
options: { direction: Direction; reference: string; size?: number }
|
||||||
@ -84,7 +80,7 @@ export class GridviewComponent
|
|||||||
private readonly _onDidLayoutfromJSON = new Emitter<void>();
|
private readonly _onDidLayoutfromJSON = new Emitter<void>();
|
||||||
readonly onDidLayoutFromJSON: Event<void> = this._onDidLayoutfromJSON.event;
|
readonly onDidLayoutFromJSON: Event<void> = this._onDidLayoutfromJSON.event;
|
||||||
|
|
||||||
get orientation() {
|
get orientation(): Orientation {
|
||||||
return this.gridview.orientation;
|
return this.gridview.orientation;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,7 +88,7 @@ export class GridviewComponent
|
|||||||
this.gridview.orientation = value;
|
this.gridview.orientation = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
get options() {
|
get options(): GridviewComponentOptions {
|
||||||
return this._options;
|
return this._options;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -135,7 +131,7 @@ export class GridviewComponent
|
|||||||
this.layout(this.gridview.width, this.gridview.height, true);
|
this.layout(this.gridview.width, this.gridview.height, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
removePanel(panel: GridviewPanel) {
|
removePanel(panel: GridviewPanel): void {
|
||||||
this.removeGroup(panel);
|
this.removeGroup(panel);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -144,7 +140,7 @@ export class GridviewComponent
|
|||||||
*
|
*
|
||||||
* @returns A JSON respresentation of the layout
|
* @returns A JSON respresentation of the layout
|
||||||
*/
|
*/
|
||||||
public toJSON(): SerializedGridview {
|
public toJSON(): SerializedGridviewComponent {
|
||||||
const data = this.gridview.serialize() as {
|
const data = this.gridview.serialize() as {
|
||||||
height: number;
|
height: number;
|
||||||
width: number;
|
width: number;
|
||||||
@ -168,11 +164,11 @@ export class GridviewComponent
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
focus() {
|
focus(): void {
|
||||||
this.activeGroup?.focus();
|
this.activeGroup?.focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
public fromJSON(serializedGridview: SerializedGridview) {
|
public fromJSON(serializedGridview: SerializedGridviewComponent): void {
|
||||||
this.clear();
|
this.clear();
|
||||||
|
|
||||||
const { grid, activePanel } = serializedGridview;
|
const { grid, activePanel } = serializedGridview;
|
||||||
@ -339,7 +335,7 @@ export class GridviewComponent
|
|||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
private registerPanel(panel: GridviewPanel) {
|
private registerPanel(panel: GridviewPanel): void {
|
||||||
const disposable = new CompositeDisposable(
|
const disposable = new CompositeDisposable(
|
||||||
panel.api.onDidFocusChange((event) => {
|
panel.api.onDidFocusChange((event) => {
|
||||||
if (!event.isFocused) {
|
if (!event.isFocused) {
|
||||||
@ -366,7 +362,7 @@ export class GridviewComponent
|
|||||||
referenceGroup: IGridPanelComponentView,
|
referenceGroup: IGridPanelComponentView,
|
||||||
groupId: string,
|
groupId: string,
|
||||||
target: Position
|
target: Position
|
||||||
) {
|
): void {
|
||||||
const sourceGroup = this.getPanel(groupId);
|
const sourceGroup = this.getPanel(groupId);
|
||||||
|
|
||||||
if (!sourceGroup) {
|
if (!sourceGroup) {
|
||||||
@ -411,11 +407,11 @@ export class GridviewComponent
|
|||||||
this.doAddGroup(targetGroup, location);
|
this.doAddGroup(targetGroup, location);
|
||||||
}
|
}
|
||||||
|
|
||||||
removeGroup(group: GridviewPanel) {
|
removeGroup(group: GridviewPanel): void {
|
||||||
super.removeGroup(group);
|
super.removeGroup(group);
|
||||||
}
|
}
|
||||||
|
|
||||||
public dispose() {
|
public dispose(): void {
|
||||||
super.dispose();
|
super.dispose();
|
||||||
|
|
||||||
this._onDidLayoutfromJSON.dispose();
|
this._onDidLayoutfromJSON.dispose();
|
||||||
|
@ -62,11 +62,11 @@ export abstract class GridviewPanel
|
|||||||
return this._priority;
|
return this._priority;
|
||||||
}
|
}
|
||||||
|
|
||||||
get snap() {
|
get snap(): boolean {
|
||||||
return this._snap;
|
return this._snap;
|
||||||
}
|
}
|
||||||
|
|
||||||
get minimumWidth() {
|
get minimumWidth(): number {
|
||||||
const width =
|
const width =
|
||||||
typeof this._minimumWidth === 'function'
|
typeof this._minimumWidth === 'function'
|
||||||
? this._minimumWidth()
|
? this._minimumWidth()
|
||||||
@ -80,7 +80,7 @@ export abstract class GridviewPanel
|
|||||||
return width;
|
return width;
|
||||||
}
|
}
|
||||||
|
|
||||||
get minimumHeight() {
|
get minimumHeight(): number {
|
||||||
const height =
|
const height =
|
||||||
typeof this._minimumHeight === 'function'
|
typeof this._minimumHeight === 'function'
|
||||||
? this._minimumHeight()
|
? this._minimumHeight()
|
||||||
@ -94,7 +94,7 @@ export abstract class GridviewPanel
|
|||||||
return height;
|
return height;
|
||||||
}
|
}
|
||||||
|
|
||||||
get maximumHeight() {
|
get maximumHeight(): number {
|
||||||
const height =
|
const height =
|
||||||
typeof this._maximumHeight === 'function'
|
typeof this._maximumHeight === 'function'
|
||||||
? this._maximumHeight()
|
? this._maximumHeight()
|
||||||
@ -108,7 +108,7 @@ export abstract class GridviewPanel
|
|||||||
return height;
|
return height;
|
||||||
}
|
}
|
||||||
|
|
||||||
get maximumWidth() {
|
get maximumWidth(): number {
|
||||||
const width =
|
const width =
|
||||||
typeof this._maximumWidth === 'function'
|
typeof this._maximumWidth === 'function'
|
||||||
? this._maximumWidth()
|
? this._maximumWidth()
|
||||||
@ -122,7 +122,7 @@ export abstract class GridviewPanel
|
|||||||
return width;
|
return width;
|
||||||
}
|
}
|
||||||
|
|
||||||
get isActive() {
|
get isActive(): boolean {
|
||||||
return this.api.isActive;
|
return this.api.isActive;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -177,11 +177,11 @@ export abstract class GridviewPanel
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
setVisible(isVisible: boolean) {
|
setVisible(isVisible: boolean): void {
|
||||||
this.api._onDidVisibilityChange.fire({ isVisible });
|
this.api._onDidVisibilityChange.fire({ isVisible });
|
||||||
}
|
}
|
||||||
|
|
||||||
setActive(isActive: boolean) {
|
setActive(isActive: boolean): void {
|
||||||
this.api._onDidActiveChange.fire({ isActive });
|
this.api._onDidActiveChange.fire({ isActive });
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -209,7 +209,7 @@ export abstract class GridviewPanel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private updateConstraints() {
|
private updateConstraints(): void {
|
||||||
this.api._onDidConstraintsChange.fire({
|
this.api._onDidConstraintsChange.fire({
|
||||||
minimumWidth: this._evaluatedMinimumWidth,
|
minimumWidth: this._evaluatedMinimumWidth,
|
||||||
maximumWidth: this._evaluatedMaximumWidth,
|
maximumWidth: this._evaluatedMaximumWidth,
|
||||||
|
@ -43,7 +43,7 @@ export class LeafNode implements IView {
|
|||||||
return this.view.priority;
|
return this.view.priority;
|
||||||
}
|
}
|
||||||
|
|
||||||
get snap() {
|
get snap(): boolean | undefined {
|
||||||
return this.view.snap;
|
return this.view.snap;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -71,25 +71,25 @@ export class LeafNode implements IView {
|
|||||||
: this.maximumHeight;
|
: this.maximumHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
get orthogonalSize() {
|
get orthogonalSize(): number {
|
||||||
return this._orthogonalSize;
|
return this._orthogonalSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
get size() {
|
get size(): number {
|
||||||
return this._size;
|
return this._size;
|
||||||
}
|
}
|
||||||
|
|
||||||
get element() {
|
get element(): HTMLElement {
|
||||||
return this.view.element;
|
return this.view.element;
|
||||||
}
|
}
|
||||||
|
|
||||||
get width() {
|
get width(): number {
|
||||||
return this.orientation === Orientation.HORIZONTAL
|
return this.orientation === Orientation.HORIZONTAL
|
||||||
? this.orthogonalSize
|
? this.orthogonalSize
|
||||||
: this.size;
|
: this.size;
|
||||||
}
|
}
|
||||||
|
|
||||||
get height() {
|
get height(): number {
|
||||||
return this.orientation === Orientation.HORIZONTAL
|
return this.orientation === Orientation.HORIZONTAL
|
||||||
? this.size
|
? this.size
|
||||||
: this.orthogonalSize;
|
: this.orthogonalSize;
|
||||||
@ -122,21 +122,21 @@ export class LeafNode implements IView {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public setVisible(visible: boolean) {
|
public setVisible(visible: boolean): void {
|
||||||
if (this.view.setVisible) {
|
if (this.view.setVisible) {
|
||||||
this.view.setVisible(visible);
|
this.view.setVisible(visible);
|
||||||
this._onDidChange.fire({});
|
this._onDidChange.fire({});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public layout(size: number, orthogonalSize: number) {
|
public layout(size: number, orthogonalSize: number): void {
|
||||||
this._size = size;
|
this._size = size;
|
||||||
this._orthogonalSize = orthogonalSize;
|
this._orthogonalSize = orthogonalSize;
|
||||||
|
|
||||||
this.view.layout(this.width, this.height);
|
this.view.layout(this.width, this.height);
|
||||||
}
|
}
|
||||||
|
|
||||||
public dispose() {
|
public dispose(): void {
|
||||||
this._onDidChange.dispose();
|
this._onDidChange.dispose();
|
||||||
this._disposable.dispose();
|
this._disposable.dispose();
|
||||||
}
|
}
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
export enum DockviewDropTargets {
|
|
||||||
Tab,
|
|
||||||
Panel,
|
|
||||||
TabContainer,
|
|
||||||
Edge,
|
|
||||||
}
|
|
@ -23,16 +23,15 @@ export * from './splitview/core/options';
|
|||||||
|
|
||||||
export * from './paneview/paneview';
|
export * from './paneview/paneview';
|
||||||
export * from './gridview/gridview';
|
export * from './gridview/gridview';
|
||||||
export * from './groupview/dockviewGroupPanelModel';
|
export * from './dockview/dockviewGroupPanelModel';
|
||||||
export * from './gridview/baseComponentGridview';
|
export * from './gridview/baseComponentGridview';
|
||||||
|
|
||||||
export * from './paneview/draggablePaneviewPanel';
|
export * from './paneview/draggablePaneviewPanel';
|
||||||
|
|
||||||
export * from './groupview/panel/content';
|
export * from './dockview/components/panel/content';
|
||||||
export * from './groupview/tab';
|
export * from './dockview/components/tab/tab';
|
||||||
export * from './groupview/dnd';
|
export * from './dockview/types';
|
||||||
export * from './groupview/types';
|
export * from './dockview/dockviewGroupPanel';
|
||||||
export * from './groupview/dockviewGroupPanel';
|
|
||||||
|
|
||||||
export * from './dockview/options';
|
export * from './dockview/options';
|
||||||
export * from './dockview/dockviewPanel';
|
export * from './dockview/dockviewPanel';
|
||||||
@ -48,7 +47,7 @@ export { PaneviewComponentOptions } from './paneview/options';
|
|||||||
export * from './gridview/gridviewPanel';
|
export * from './gridview/gridviewPanel';
|
||||||
export * from './splitview/splitviewPanel';
|
export * from './splitview/splitviewPanel';
|
||||||
export * from './paneview/paneviewPanel';
|
export * from './paneview/paneviewPanel';
|
||||||
export * from './groupview/types';
|
export * from './dockview/types';
|
||||||
|
|
||||||
export {
|
export {
|
||||||
Position,
|
Position,
|
||||||
|
@ -3,8 +3,8 @@ export interface IDisposable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface IValueDisposable<T> {
|
export interface IValueDisposable<T> {
|
||||||
value: T;
|
readonly value: T;
|
||||||
disposable: IDisposable;
|
readonly disposable: IDisposable;
|
||||||
}
|
}
|
||||||
|
|
||||||
export namespace Disposable {
|
export namespace Disposable {
|
||||||
@ -26,11 +26,11 @@ export class CompositeDisposable {
|
|||||||
this.disposables = args;
|
this.disposables = args;
|
||||||
}
|
}
|
||||||
|
|
||||||
public addDisposables(...args: IDisposable[]) {
|
public addDisposables(...args: IDisposable[]): void {
|
||||||
args.forEach((arg) => this.disposables.push(arg));
|
args.forEach((arg) => this.disposables.push(arg));
|
||||||
}
|
}
|
||||||
|
|
||||||
public dispose() {
|
public dispose(): void {
|
||||||
this.disposables.forEach((arg) => arg.dispose());
|
this.disposables.forEach((arg) => arg.dispose());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -45,7 +45,7 @@ export class MutableDisposable implements IDisposable {
|
|||||||
this._disposable = disposable;
|
this._disposable = disposable;
|
||||||
}
|
}
|
||||||
|
|
||||||
public dispose() {
|
public dispose(): void {
|
||||||
if (this._disposable) {
|
if (this._disposable) {
|
||||||
this._disposable.dispose();
|
this._disposable.dispose();
|
||||||
this._disposable = Disposable.NONE;
|
this._disposable = Disposable.NONE;
|
||||||
|
@ -1,15 +1,11 @@
|
|||||||
export interface Constructor<T> {
|
|
||||||
new (): T;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface FrameworkFactory<T> {
|
export interface FrameworkFactory<T> {
|
||||||
createComponent: (id: string, componentId: string, component: any) => T;
|
createComponent: (id: string, componentId: string, component: any) => T;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type FunctionOrValue<T> = (() => T) | T;
|
|
||||||
|
|
||||||
export function isBooleanValue(value: any): value is boolean {
|
export function isBooleanValue(value: any): value is boolean {
|
||||||
return typeof value === '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>;
|
export type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;
|
||||||
|
@ -1,26 +1,32 @@
|
|||||||
import { GroupPanel, GroupviewPanelApi, Groupview } from 'dockview-core';
|
import {
|
||||||
|
DockviewGroupPanel,
|
||||||
|
DockviewGroupPanelApi,
|
||||||
|
DockviewGroupPanelModel,
|
||||||
|
} from 'dockview-core';
|
||||||
import { ReactGroupControlsRendererPart } from '../../../dockview/groupControlsRenderer';
|
import { ReactGroupControlsRendererPart } from '../../../dockview/groupControlsRenderer';
|
||||||
|
|
||||||
describe('groupControlsRenderer', () => {
|
describe('groupControlsRenderer', () => {
|
||||||
test('#1', () => {
|
test('#1', () => {
|
||||||
const groupviewMock = jest.fn<Partial<Groupview>, []>(() => {
|
const groupviewMock = jest.fn<Partial<DockviewGroupPanelModel>, []>(
|
||||||
return {
|
() => {
|
||||||
onDidAddPanel: jest.fn(),
|
return {
|
||||||
onDidRemovePanel: jest.fn(),
|
onDidAddPanel: jest.fn(),
|
||||||
onDidActivePanelChange: 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 {
|
return {
|
||||||
api: {} as GroupviewPanelApi as any,
|
api: {} as DockviewGroupPanelApi as any,
|
||||||
model: groupview,
|
model: groupview,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
const groupPanel = new groupPanelMock() as GroupPanel;
|
const groupPanel = new groupPanelMock() as DockviewGroupPanel;
|
||||||
|
|
||||||
const cut = new ReactGroupControlsRendererPart(
|
const cut = new ReactGroupControlsRendererPart(
|
||||||
jest.fn(),
|
jest.fn(),
|
||||||
|
@ -10,7 +10,7 @@ import {
|
|||||||
IContentRenderer,
|
IContentRenderer,
|
||||||
ITabRenderer,
|
ITabRenderer,
|
||||||
watchElementResize,
|
watchElementResize,
|
||||||
GroupPanel,
|
DockviewGroupPanel,
|
||||||
DefaultDockviewDeserialzier,
|
DefaultDockviewDeserialzier,
|
||||||
} from 'dockview-core';
|
} from 'dockview-core';
|
||||||
import { ReactPanelContentPart } from './reactContentPart';
|
import { ReactPanelContentPart } from './reactContentPart';
|
||||||
@ -27,9 +27,9 @@ import {
|
|||||||
function createGroupControlElement(
|
function createGroupControlElement(
|
||||||
component: React.FunctionComponent<IDockviewGroupControlProps> | undefined,
|
component: React.FunctionComponent<IDockviewGroupControlProps> | undefined,
|
||||||
store: ReactPortalStore
|
store: ReactPortalStore
|
||||||
): ((groupPanel: GroupPanel) => IGroupControlRenderer) | undefined {
|
): ((groupPanel: DockviewGroupPanel) => IGroupControlRenderer) | undefined {
|
||||||
return component
|
return component
|
||||||
? (groupPanel: GroupPanel) => {
|
? (groupPanel: DockviewGroupPanel) => {
|
||||||
return new ReactGroupControlsRendererPart(
|
return new ReactGroupControlsRendererPart(
|
||||||
component,
|
component,
|
||||||
store,
|
store,
|
||||||
|
@ -5,13 +5,13 @@ import {
|
|||||||
DockviewCompositeDisposable,
|
DockviewCompositeDisposable,
|
||||||
DockviewMutableDisposable,
|
DockviewMutableDisposable,
|
||||||
DockviewApi,
|
DockviewApi,
|
||||||
GroupPanel,
|
DockviewGroupPanel,
|
||||||
GroupviewPanelApi,
|
DockviewGroupPanelApi,
|
||||||
PanelUpdateEvent,
|
PanelUpdateEvent,
|
||||||
} from 'dockview-core';
|
} from 'dockview-core';
|
||||||
|
|
||||||
export interface IDockviewGroupControlProps {
|
export interface IDockviewGroupControlProps {
|
||||||
api: GroupviewPanelApi;
|
api: DockviewGroupPanelApi;
|
||||||
containerApi: DockviewApi;
|
containerApi: DockviewApi;
|
||||||
panels: IDockviewPanel[];
|
panels: IDockviewPanel[];
|
||||||
activePanel: IDockviewPanel | undefined;
|
activePanel: IDockviewPanel | undefined;
|
||||||
@ -31,26 +31,26 @@ export class ReactGroupControlsRendererPart {
|
|||||||
return this._part;
|
return this._part;
|
||||||
}
|
}
|
||||||
|
|
||||||
get group(): GroupPanel {
|
get group(): DockviewGroupPanel {
|
||||||
return this._group;
|
return this._group;
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private readonly component: React.FunctionComponent<IDockviewGroupControlProps>,
|
private readonly component: React.FunctionComponent<IDockviewGroupControlProps>,
|
||||||
private readonly reactPortalStore: ReactPortalStore,
|
private readonly reactPortalStore: ReactPortalStore,
|
||||||
private readonly _group: GroupPanel
|
private readonly _group: DockviewGroupPanel
|
||||||
) {
|
) {
|
||||||
this._element = document.createElement('div');
|
this._element = document.createElement('div');
|
||||||
this._element.className = 'dockview-react-part';
|
this._element.className = 'dockview-react-part';
|
||||||
}
|
}
|
||||||
|
|
||||||
focus() {
|
focus(): void {
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
public init(parameters: {
|
public init(parameters: {
|
||||||
containerApi: DockviewApi;
|
containerApi: DockviewApi;
|
||||||
api: GroupviewPanelApi;
|
api: DockviewGroupPanelApi;
|
||||||
}): void {
|
}): void {
|
||||||
this.mutableDisposable.value = new DockviewCompositeDisposable(
|
this.mutableDisposable.value = new DockviewCompositeDisposable(
|
||||||
this._group.model.onDidAddPanel(() => {
|
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);
|
this._part?.update(event.params);
|
||||||
}
|
}
|
||||||
|
|
||||||
public dispose() {
|
public dispose(): void {
|
||||||
this.mutableDisposable.dispose();
|
this.mutableDisposable.dispose();
|
||||||
this._part?.dispose();
|
this._part?.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
private updatePanels() {
|
private updatePanels(): void {
|
||||||
this.update({ params: { panels: this._group.model.panels } });
|
this.update({ params: { panels: this._group.model.panels } });
|
||||||
}
|
}
|
||||||
|
|
||||||
private updateActivePanel() {
|
private updateActivePanel(): void {
|
||||||
this.update({
|
this.update({
|
||||||
params: {
|
params: {
|
||||||
activePanel: this._group.model.activePanel,
|
activePanel: this._group.model.activePanel,
|
||||||
@ -102,7 +102,7 @@ export class ReactGroupControlsRendererPart {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private updateGroupActive() {
|
private updateGroupActive(): void {
|
||||||
this.update({
|
this.update({
|
||||||
params: {
|
params: {
|
||||||
isGroupActive: this._group.api.isActive,
|
isGroupActive: this._group.api.isActive,
|
||||||
|
@ -4,7 +4,7 @@ import { IDockviewPanelProps } from '../dockview/dockview';
|
|||||||
import {
|
import {
|
||||||
DockviewEmitter,
|
DockviewEmitter,
|
||||||
DockviewEvent,
|
DockviewEvent,
|
||||||
GroupPanel,
|
DockviewGroupPanel,
|
||||||
PanelUpdateEvent,
|
PanelUpdateEvent,
|
||||||
IContentRenderer,
|
IContentRenderer,
|
||||||
GroupPanelContentPartInitParameters,
|
GroupPanelContentPartInitParameters,
|
||||||
@ -14,7 +14,7 @@ export class ReactPanelContentPart implements IContentRenderer {
|
|||||||
private _element: HTMLElement;
|
private _element: HTMLElement;
|
||||||
private part?: ReactPart<IDockviewPanelProps>;
|
private part?: ReactPart<IDockviewPanelProps>;
|
||||||
//
|
//
|
||||||
private _group: GroupPanel | undefined;
|
private _group: DockviewGroupPanel | undefined;
|
||||||
|
|
||||||
private readonly _onDidFocus = new DockviewEmitter<void>();
|
private readonly _onDidFocus = new DockviewEmitter<void>();
|
||||||
readonly onDidFocus: DockviewEvent<void> = this._onDidFocus.event;
|
readonly onDidFocus: DockviewEvent<void> = this._onDidFocus.event;
|
||||||
@ -35,7 +35,7 @@ export class ReactPanelContentPart implements IContentRenderer {
|
|||||||
this._element.className = 'dockview-react-part';
|
this._element.className = 'dockview-react-part';
|
||||||
}
|
}
|
||||||
|
|
||||||
focus() {
|
focus(): void {
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -57,7 +57,7 @@ export class ReactPanelContentPart implements IContentRenderer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public updateParentGroup(
|
public updateParentGroup(
|
||||||
group: GroupPanel,
|
group: DockviewGroupPanel,
|
||||||
_isPanelVisible: boolean
|
_isPanelVisible: boolean
|
||||||
): void {
|
): void {
|
||||||
this._group = group;
|
this._group = group;
|
||||||
@ -67,7 +67,7 @@ export class ReactPanelContentPart implements IContentRenderer {
|
|||||||
// noop
|
// noop
|
||||||
}
|
}
|
||||||
|
|
||||||
public dispose() {
|
public dispose(): void {
|
||||||
this._onDidFocus.dispose();
|
this._onDidFocus.dispose();
|
||||||
this._onDidBlur.dispose();
|
this._onDidBlur.dispose();
|
||||||
this.part?.dispose();
|
this.part?.dispose();
|
||||||
|
@ -3,7 +3,7 @@ import { ReactPart, ReactPortalStore } from '../react';
|
|||||||
import { IGroupPanelBaseProps } from './dockview';
|
import { IGroupPanelBaseProps } from './dockview';
|
||||||
import {
|
import {
|
||||||
PanelUpdateEvent,
|
PanelUpdateEvent,
|
||||||
GroupPanel,
|
DockviewGroupPanel,
|
||||||
ITabRenderer,
|
ITabRenderer,
|
||||||
GroupPanelPartInitParameters,
|
GroupPanelPartInitParameters,
|
||||||
} from 'dockview-core';
|
} from 'dockview-core';
|
||||||
@ -12,7 +12,7 @@ export class ReactPanelHeaderPart implements ITabRenderer {
|
|||||||
private _element: HTMLElement;
|
private _element: HTMLElement;
|
||||||
private part?: ReactPart<IGroupPanelBaseProps>;
|
private part?: ReactPart<IGroupPanelBaseProps>;
|
||||||
|
|
||||||
get element() {
|
get element(): HTMLElement {
|
||||||
return this._element;
|
return this._element;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -25,7 +25,7 @@ export class ReactPanelHeaderPart implements ITabRenderer {
|
|||||||
this._element.className = 'dockview-react-part';
|
this._element.className = 'dockview-react-part';
|
||||||
}
|
}
|
||||||
|
|
||||||
focus() {
|
focus(): void {
|
||||||
//noop
|
//noop
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,22 +42,22 @@ export class ReactPanelHeaderPart implements ITabRenderer {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public update(event: PanelUpdateEvent) {
|
public update(event: PanelUpdateEvent): void {
|
||||||
this.part?.update(event.params);
|
this.part?.update(event.params);
|
||||||
}
|
}
|
||||||
|
|
||||||
public layout(_width: number, _height: number) {
|
public layout(_width: number, _height: number): void {
|
||||||
// noop - retrieval from api
|
// noop - retrieval from api
|
||||||
}
|
}
|
||||||
|
|
||||||
public updateParentGroup(
|
public updateParentGroup(
|
||||||
_group: GroupPanel,
|
_group: DockviewGroupPanel,
|
||||||
_isPanelVisible: boolean
|
_isPanelVisible: boolean
|
||||||
): void {
|
): void {
|
||||||
// noop - retrieval from api
|
// noop - retrieval from api
|
||||||
}
|
}
|
||||||
|
|
||||||
public dispose() {
|
public dispose(): void {
|
||||||
this.part?.dispose();
|
this.part?.dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@ import { ReactPart, ReactPortalStore } from '../react';
|
|||||||
import { IGroupPanelBaseProps } from './dockview';
|
import { IGroupPanelBaseProps } from './dockview';
|
||||||
import {
|
import {
|
||||||
PanelUpdateEvent,
|
PanelUpdateEvent,
|
||||||
GroupPanel,
|
DockviewGroupPanel,
|
||||||
GroupPanelPartInitParameters,
|
GroupPanelPartInitParameters,
|
||||||
IWatermarkRenderer,
|
IWatermarkRenderer,
|
||||||
} from 'dockview-core';
|
} from 'dockview-core';
|
||||||
@ -15,12 +15,12 @@ export interface IWatermarkPanelProps extends IGroupPanelBaseProps {
|
|||||||
export class ReactWatermarkPart implements IWatermarkRenderer {
|
export class ReactWatermarkPart implements IWatermarkRenderer {
|
||||||
private _element: HTMLElement;
|
private _element: HTMLElement;
|
||||||
private part?: ReactPart<IWatermarkPanelProps>;
|
private part?: ReactPart<IWatermarkPanelProps>;
|
||||||
private _groupRef: { value: GroupPanel | undefined } = {
|
private _groupRef: { value: DockviewGroupPanel | undefined } = {
|
||||||
value: undefined,
|
value: undefined,
|
||||||
};
|
};
|
||||||
private parameters: GroupPanelPartInitParameters | undefined;
|
private parameters: GroupPanelPartInitParameters | undefined;
|
||||||
|
|
||||||
get element() {
|
get element(): HTMLElement {
|
||||||
return this._element;
|
return this._element;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,11 +55,11 @@ export class ReactWatermarkPart implements IWatermarkRenderer {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
focus() {
|
focus(): void {
|
||||||
// noop
|
// noop
|
||||||
}
|
}
|
||||||
|
|
||||||
update(params: PanelUpdateEvent) {
|
update(params: PanelUpdateEvent): void {
|
||||||
if (this.parameters) {
|
if (this.parameters) {
|
||||||
this.parameters.params = params.params;
|
this.parameters.params = params.params;
|
||||||
}
|
}
|
||||||
@ -67,22 +67,19 @@ export class ReactWatermarkPart implements IWatermarkRenderer {
|
|||||||
this.part?.update({ params: this.parameters?.params || {} });
|
this.part?.update({ params: this.parameters?.params || {} });
|
||||||
}
|
}
|
||||||
|
|
||||||
toJSON() {
|
layout(_width: number, _height: number): void {
|
||||||
return {
|
|
||||||
id: this.id,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
layout(_width: number, _height: number) {
|
|
||||||
// noop - retrieval from api
|
// noop - retrieval from api
|
||||||
}
|
}
|
||||||
|
|
||||||
updateParentGroup(group: GroupPanel, _isPanelVisible: boolean): void {
|
updateParentGroup(
|
||||||
|
group: DockviewGroupPanel,
|
||||||
|
_isPanelVisible: boolean
|
||||||
|
): void {
|
||||||
// noop - retrieval from api
|
// noop - retrieval from api
|
||||||
this._groupRef.value = group;
|
this._groupRef.value = group;
|
||||||
}
|
}
|
||||||
|
|
||||||
dispose() {
|
dispose(): void {
|
||||||
this.part?.dispose();
|
this.part?.dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
import {
|
import {
|
||||||
GroupPanelPartInitParameters,
|
GroupPanelPartInitParameters,
|
||||||
IContentRenderer,
|
IContentRenderer,
|
||||||
GroupPanel,
|
DockviewGroupPanel,
|
||||||
HostedContainer,
|
HostedContainer,
|
||||||
PanelUpdateEvent,
|
PanelUpdateEvent,
|
||||||
|
DockviewEvent,
|
||||||
} from 'dockview-core';
|
} from 'dockview-core';
|
||||||
import { ReactPart, ReactPortalStore } from '../../react';
|
import { ReactPart, ReactPortalStore } from '../../react';
|
||||||
import { IDockviewPanelProps } from '../dockview';
|
import { IDockviewPanelProps } from '../dockview';
|
||||||
@ -13,7 +14,7 @@ export class ReactContentRenderer implements IContentRenderer {
|
|||||||
|
|
||||||
private _element: HTMLElement;
|
private _element: HTMLElement;
|
||||||
private part?: ReactPart<IDockviewPanelProps>;
|
private part?: ReactPart<IDockviewPanelProps>;
|
||||||
private _group: GroupPanel | undefined;
|
private _group: DockviewGroupPanel | undefined;
|
||||||
|
|
||||||
private parameters: GroupPanelPartInitParameters | undefined;
|
private parameters: GroupPanelPartInitParameters | undefined;
|
||||||
|
|
||||||
@ -21,11 +22,11 @@ export class ReactContentRenderer implements IContentRenderer {
|
|||||||
return this._element;
|
return this._element;
|
||||||
}
|
}
|
||||||
|
|
||||||
get onDidBlur() {
|
get onDidBlur(): DockviewEvent<void> {
|
||||||
return this._hostedContainer.onDidBlur;
|
return this._hostedContainer.onDidBlur;
|
||||||
}
|
}
|
||||||
|
|
||||||
get onDidFocus() {
|
get onDidFocus(): DockviewEvent<void> {
|
||||||
return this._hostedContainer.onDidFocus;
|
return this._hostedContainer.onDidFocus;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,7 +47,7 @@ export class ReactContentRenderer implements IContentRenderer {
|
|||||||
this._element.style.width = '100%';
|
this._element.style.width = '100%';
|
||||||
}
|
}
|
||||||
|
|
||||||
focus() {
|
focus(): void {
|
||||||
// noop
|
// noop
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -74,13 +75,7 @@ export class ReactContentRenderer implements IContentRenderer {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public toJSON() {
|
public update(params: PanelUpdateEvent): void {
|
||||||
return {
|
|
||||||
id: this.id,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public update(params: PanelUpdateEvent) {
|
|
||||||
if (this.parameters) {
|
if (this.parameters) {
|
||||||
this.parameters.params = params.params;
|
this.parameters.params = params.params;
|
||||||
}
|
}
|
||||||
@ -89,7 +84,7 @@ export class ReactContentRenderer implements IContentRenderer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public updateParentGroup(
|
public updateParentGroup(
|
||||||
group: GroupPanel,
|
group: DockviewGroupPanel,
|
||||||
_isPanelVisible: boolean
|
_isPanelVisible: boolean
|
||||||
): void {
|
): void {
|
||||||
this._group = group;
|
this._group = group;
|
||||||
@ -99,7 +94,7 @@ export class ReactContentRenderer implements IContentRenderer {
|
|||||||
this._hostedContainer.layout(this.element);
|
this._hostedContainer.layout(this.element);
|
||||||
}
|
}
|
||||||
|
|
||||||
public dispose() {
|
public dispose(): void {
|
||||||
this.part?.dispose();
|
this.part?.dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import {
|
import {
|
||||||
GroupPanelPartInitParameters,
|
GroupPanelPartInitParameters,
|
||||||
IContentRenderer,
|
IContentRenderer,
|
||||||
GroupPanel,
|
DockviewGroupPanel,
|
||||||
HostedContainer,
|
HostedContainer,
|
||||||
PanelUpdateEvent,
|
PanelUpdateEvent,
|
||||||
} from 'dockview-core';
|
} from 'dockview-core';
|
||||||
@ -24,7 +24,7 @@ export class WebviewContentRenderer implements IContentRenderer {
|
|||||||
this._element.style.width = '100%';
|
this._element.style.width = '100%';
|
||||||
}
|
}
|
||||||
|
|
||||||
focus() {
|
focus(): void {
|
||||||
// noop
|
// noop
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -32,14 +32,14 @@ export class WebviewContentRenderer implements IContentRenderer {
|
|||||||
this.parameters = parameters;
|
this.parameters = parameters;
|
||||||
}
|
}
|
||||||
|
|
||||||
public update(params: PanelUpdateEvent) {
|
public update(params: PanelUpdateEvent): void {
|
||||||
if (this.parameters) {
|
if (this.parameters) {
|
||||||
this.parameters.params = params.params;
|
this.parameters.params = params.params;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public updateParentGroup(
|
public updateParentGroup(
|
||||||
_group: GroupPanel,
|
_group: DockviewGroupPanel,
|
||||||
_isPanelVisible: boolean
|
_isPanelVisible: boolean
|
||||||
): void {
|
): void {
|
||||||
//
|
//
|
||||||
@ -49,7 +49,7 @@ export class WebviewContentRenderer implements IContentRenderer {
|
|||||||
this._hostedContainer.layout(this._element);
|
this._hostedContainer.layout(this._element);
|
||||||
}
|
}
|
||||||
|
|
||||||
public dispose() {
|
public dispose(): void {
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user