dockview-core 2.1.4 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/api/component.api.d.ts +4 -3
- package/dist/cjs/api/component.api.js +8 -22
- package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +2 -1
- package/dist/cjs/dockview/components/titlebar/tabsContainer.js +30 -33
- package/dist/cjs/dockview/options.d.ts +4 -8
- package/dist/cjs/dockview/options.js +28 -20
- package/dist/cjs/events.d.ts +9 -0
- package/dist/cjs/events.js +18 -1
- package/dist/cjs/gridview/gridviewComponent.js +15 -24
- package/dist/cjs/gridview/options.d.ts +10 -12
- package/dist/cjs/gridview/options.js +15 -0
- package/dist/cjs/index.d.ts +4 -4
- package/dist/cjs/index.js +8 -1
- package/dist/cjs/paneview/defaultPaneviewHeader.d.ts +2 -2
- package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +6 -2
- package/dist/cjs/paneview/draggablePaneviewPanel.js +8 -9
- package/dist/cjs/paneview/options.d.ts +25 -21
- package/dist/cjs/paneview/options.js +42 -0
- package/dist/cjs/paneview/paneviewComponent.d.ts +12 -15
- package/dist/cjs/paneview/paneviewComponent.js +30 -40
- package/dist/cjs/paneview/paneviewPanel.d.ts +3 -8
- package/dist/cjs/splitview/options.d.ts +7 -9
- package/dist/cjs/splitview/options.js +17 -0
- package/dist/cjs/splitview/splitview.d.ts +5 -5
- package/dist/cjs/splitview/splitviewComponent.js +10 -21
- package/dist/dockview-core.amd.js +160 -159
- package/dist/dockview-core.amd.js.map +1 -1
- package/dist/dockview-core.amd.min.js +2 -2
- package/dist/dockview-core.amd.min.js.map +1 -1
- package/dist/dockview-core.amd.min.noStyle.js +2 -2
- package/dist/dockview-core.amd.min.noStyle.js.map +1 -1
- package/dist/dockview-core.amd.noStyle.js +160 -159
- package/dist/dockview-core.amd.noStyle.js.map +1 -1
- package/dist/dockview-core.cjs.js +160 -159
- package/dist/dockview-core.cjs.js.map +1 -1
- package/dist/dockview-core.esm.js +156 -159
- package/dist/dockview-core.esm.js.map +1 -1
- package/dist/dockview-core.esm.min.js +2 -2
- package/dist/dockview-core.esm.min.js.map +1 -1
- package/dist/dockview-core.js +160 -159
- package/dist/dockview-core.js.map +1 -1
- package/dist/dockview-core.min.js +2 -2
- package/dist/dockview-core.min.js.map +1 -1
- package/dist/dockview-core.min.noStyle.js +2 -2
- package/dist/dockview-core.min.noStyle.js.map +1 -1
- package/dist/dockview-core.noStyle.js +160 -159
- package/dist/dockview-core.noStyle.js.map +1 -1
- package/dist/esm/api/component.api.d.ts +4 -3
- package/dist/esm/api/component.api.js +4 -10
- package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +2 -1
- package/dist/esm/dockview/components/titlebar/tabsContainer.js +20 -23
- package/dist/esm/dockview/options.d.ts +4 -8
- package/dist/esm/dockview/options.js +4 -9
- package/dist/esm/events.d.ts +9 -0
- package/dist/esm/events.js +11 -0
- package/dist/esm/gridview/gridviewComponent.js +15 -24
- package/dist/esm/gridview/options.d.ts +10 -12
- package/dist/esm/gridview/options.js +14 -1
- package/dist/esm/index.d.ts +4 -4
- package/dist/esm/index.js +3 -0
- package/dist/esm/paneview/defaultPaneviewHeader.d.ts +2 -2
- package/dist/esm/paneview/draggablePaneviewPanel.d.ts +6 -2
- package/dist/esm/paneview/draggablePaneviewPanel.js +8 -9
- package/dist/esm/paneview/options.d.ts +25 -21
- package/dist/esm/paneview/options.js +22 -1
- package/dist/esm/paneview/paneviewComponent.d.ts +12 -15
- package/dist/esm/paneview/paneviewComponent.js +30 -40
- package/dist/esm/paneview/paneviewPanel.d.ts +3 -8
- package/dist/esm/splitview/options.d.ts +7 -9
- package/dist/esm/splitview/options.js +16 -1
- package/dist/esm/splitview/splitview.d.ts +5 -5
- package/dist/esm/splitview/splitviewComponent.js +10 -21
- package/package.json +1 -1
- package/dist/cjs/panel/componentFactory.d.ts +0 -11
- package/dist/cjs/panel/componentFactory.js +0 -30
- package/dist/esm/panel/componentFactory.d.ts +0 -11
- package/dist/esm/panel/componentFactory.js +0 -24
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { PaneviewApi } from '../api/component.api';
|
|
2
|
-
import { createComponent } from '../panel/componentFactory';
|
|
3
2
|
import { Emitter } from '../events';
|
|
4
3
|
import { CompositeDisposable, MutableDisposable, } from '../lifecycle';
|
|
5
4
|
import { Orientation, Sizing } from '../splitview/splitview';
|
|
@@ -73,16 +72,12 @@ export class PaneviewComponent extends Resizable {
|
|
|
73
72
|
this.onDidAddView = this._onDidAddView.event;
|
|
74
73
|
this._onDidRemoveView = new Emitter();
|
|
75
74
|
this.onDidRemoveView = this._onDidRemoveView.event;
|
|
76
|
-
this.
|
|
75
|
+
this._onUnhandledDragOverEvent = new Emitter();
|
|
76
|
+
this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;
|
|
77
|
+
this.addDisposables(this._onDidLayoutChange, this._onDidLayoutfromJSON, this._onDidDrop, this._onDidAddView, this._onDidRemoveView, this._onUnhandledDragOverEvent);
|
|
77
78
|
this._classNames = new Classnames(this.element);
|
|
78
79
|
this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');
|
|
79
80
|
this._options = options;
|
|
80
|
-
if (!options.components) {
|
|
81
|
-
options.components = {};
|
|
82
|
-
}
|
|
83
|
-
if (!options.frameworkComponents) {
|
|
84
|
-
options.frameworkComponents = {};
|
|
85
|
-
}
|
|
86
81
|
this.paneview = new Paneview(this.element, {
|
|
87
82
|
// only allow paneview in the vertical orientation for now
|
|
88
83
|
orientation: Orientation.VERTICAL,
|
|
@@ -107,22 +102,19 @@ export class PaneviewComponent extends Resizable {
|
|
|
107
102
|
this._options = Object.assign(Object.assign({}, this.options), options);
|
|
108
103
|
}
|
|
109
104
|
addPanel(options) {
|
|
110
|
-
var _a
|
|
111
|
-
const body =
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
: undefined);
|
|
105
|
+
var _a;
|
|
106
|
+
const body = this.options.createComponent({
|
|
107
|
+
id: options.id,
|
|
108
|
+
name: options.component,
|
|
109
|
+
});
|
|
116
110
|
let header;
|
|
117
|
-
if (options.headerComponent) {
|
|
118
|
-
header =
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
}
|
|
123
|
-
: undefined);
|
|
111
|
+
if (options.headerComponent && this.options.createHeaderComponent) {
|
|
112
|
+
header = this.options.createHeaderComponent({
|
|
113
|
+
id: options.id,
|
|
114
|
+
name: options.headerComponent,
|
|
115
|
+
});
|
|
124
116
|
}
|
|
125
|
-
|
|
117
|
+
if (!header) {
|
|
126
118
|
header = new DefaultHeader();
|
|
127
119
|
}
|
|
128
120
|
const view = new PaneFramework({
|
|
@@ -140,7 +132,7 @@ export class PaneviewComponent extends Resizable {
|
|
|
140
132
|
const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;
|
|
141
133
|
const index = typeof options.index === 'number' ? options.index : undefined;
|
|
142
134
|
view.init({
|
|
143
|
-
params: (
|
|
135
|
+
params: (_a = options.params) !== null && _a !== void 0 ? _a : {},
|
|
144
136
|
minimumBodySize: options.minimumBodySize,
|
|
145
137
|
maximumBodySize: options.maximumBodySize,
|
|
146
138
|
isExpanded: options.isExpanded,
|
|
@@ -205,24 +197,20 @@ export class PaneviewComponent extends Resizable {
|
|
|
205
197
|
descriptor: {
|
|
206
198
|
size,
|
|
207
199
|
views: views.map((view) => {
|
|
208
|
-
var _a, _b, _c, _d;
|
|
209
200
|
const data = view.data;
|
|
210
|
-
const body =
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
}
|
|
215
|
-
: undefined);
|
|
201
|
+
const body = this.options.createComponent({
|
|
202
|
+
id: data.id,
|
|
203
|
+
name: data.component,
|
|
204
|
+
});
|
|
216
205
|
let header;
|
|
217
|
-
if (data.headerComponent
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
: undefined);
|
|
206
|
+
if (data.headerComponent &&
|
|
207
|
+
this.options.createHeaderComponent) {
|
|
208
|
+
header = this.options.createHeaderComponent({
|
|
209
|
+
id: data.id,
|
|
210
|
+
name: data.headerComponent,
|
|
211
|
+
});
|
|
224
212
|
}
|
|
225
|
-
|
|
213
|
+
if (!header) {
|
|
226
214
|
header = new DefaultHeader();
|
|
227
215
|
}
|
|
228
216
|
const panel = new PaneFramework({
|
|
@@ -270,9 +258,11 @@ export class PaneviewComponent extends Resizable {
|
|
|
270
258
|
this.paneview.dispose();
|
|
271
259
|
}
|
|
272
260
|
doAddPanel(panel) {
|
|
273
|
-
const disposable = panel.onDidDrop((event) => {
|
|
261
|
+
const disposable = new CompositeDisposable(panel.onDidDrop((event) => {
|
|
274
262
|
this._onDidDrop.fire(event);
|
|
275
|
-
})
|
|
263
|
+
}), panel.onUnhandledDragOverEvent((event) => {
|
|
264
|
+
this._onUnhandledDragOverEvent.fire(event);
|
|
265
|
+
}));
|
|
276
266
|
this._viewDisposables.set(panel.id, disposable);
|
|
277
267
|
}
|
|
278
268
|
doRemovePanel(panel) {
|
|
@@ -21,12 +21,7 @@ export interface PanePanelInitParameter extends PanelInitParameters {
|
|
|
21
21
|
export interface PanePanelComponentInitParameter extends PanePanelInitParameter {
|
|
22
22
|
api: PaneviewPanelApiImpl;
|
|
23
23
|
}
|
|
24
|
-
export interface
|
|
25
|
-
readonly element: HTMLElement;
|
|
26
|
-
update(params: PanelUpdateEvent): void;
|
|
27
|
-
init(parameters: PanePanelComponentInitParameter): void;
|
|
28
|
-
}
|
|
29
|
-
export interface IPaneHeaderPart extends IDisposable {
|
|
24
|
+
export interface IPanePart extends IDisposable {
|
|
30
25
|
readonly element: HTMLElement;
|
|
31
26
|
update(params: PanelUpdateEvent): void;
|
|
32
27
|
init(parameters: PanePanelComponentInitParameter): void;
|
|
@@ -89,6 +84,6 @@ export declare abstract class PaneviewPanel extends BasePanelView<PaneviewPanelA
|
|
|
89
84
|
toJSON(): PanePanelViewState;
|
|
90
85
|
private renderOnce;
|
|
91
86
|
getComponent(): IFrameworkPart;
|
|
92
|
-
protected abstract getBodyComponent():
|
|
93
|
-
protected abstract getHeaderComponent():
|
|
87
|
+
protected abstract getBodyComponent(): IPanePart;
|
|
88
|
+
protected abstract getHeaderComponent(): IPanePart;
|
|
94
89
|
}
|
|
@@ -2,7 +2,7 @@ import { PanelInitParameters } from '../panel/types';
|
|
|
2
2
|
import { SplitViewOptions, LayoutPriority } from './splitview';
|
|
3
3
|
import { SplitviewPanel } from './splitviewPanel';
|
|
4
4
|
import { SplitviewComponent } from './splitviewComponent';
|
|
5
|
-
import {
|
|
5
|
+
import { CreateComponentOptions } from '../dockview/options';
|
|
6
6
|
export interface PanelViewInitParameters extends PanelInitParameters {
|
|
7
7
|
minimumSize?: number;
|
|
8
8
|
maximumSize?: number;
|
|
@@ -10,14 +10,12 @@ export interface PanelViewInitParameters extends PanelInitParameters {
|
|
|
10
10
|
priority?: LayoutPriority;
|
|
11
11
|
accessor: SplitviewComponent;
|
|
12
12
|
}
|
|
13
|
-
export interface
|
|
13
|
+
export interface SplitviewOptions extends SplitViewOptions {
|
|
14
14
|
disableAutoResizing?: boolean;
|
|
15
|
-
components?: {
|
|
16
|
-
[componentName: string]: ComponentConstructor<SplitviewPanel>;
|
|
17
|
-
};
|
|
18
|
-
frameworkComponents?: {
|
|
19
|
-
[componentName: string]: any;
|
|
20
|
-
};
|
|
21
|
-
frameworkWrapper?: FrameworkFactory<SplitviewPanel>;
|
|
22
15
|
className?: string;
|
|
23
16
|
}
|
|
17
|
+
export interface SplitviewFrameworkOptions {
|
|
18
|
+
createComponent: (options: CreateComponentOptions) => SplitviewPanel;
|
|
19
|
+
}
|
|
20
|
+
export type SplitviewComponentOptions = SplitviewOptions & SplitviewFrameworkOptions;
|
|
21
|
+
export declare const PROPERTY_KEYS_SPLITVIEW: (keyof SplitviewOptions)[];
|
|
@@ -1 +1,16 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export const PROPERTY_KEYS_SPLITVIEW = (() => {
|
|
2
|
+
/**
|
|
3
|
+
* by readong the keys from an empty value object TypeScript will error
|
|
4
|
+
* when we add or remove new properties to `DockviewOptions`
|
|
5
|
+
*/
|
|
6
|
+
const properties = {
|
|
7
|
+
orientation: undefined,
|
|
8
|
+
descriptor: undefined,
|
|
9
|
+
proportionalLayout: undefined,
|
|
10
|
+
styles: undefined,
|
|
11
|
+
margin: undefined,
|
|
12
|
+
disableAutoResizing: undefined,
|
|
13
|
+
className: undefined,
|
|
14
|
+
};
|
|
15
|
+
return Object.keys(properties);
|
|
16
|
+
})();
|
|
@@ -14,11 +14,11 @@ export interface ISplitviewStyles {
|
|
|
14
14
|
separatorBorder: string;
|
|
15
15
|
}
|
|
16
16
|
export interface SplitViewOptions {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
orientation: Orientation;
|
|
18
|
+
descriptor?: ISplitViewDescriptor;
|
|
19
|
+
proportionalLayout?: boolean;
|
|
20
|
+
styles?: ISplitviewStyles;
|
|
21
|
+
margin?: number;
|
|
22
22
|
}
|
|
23
23
|
export declare enum LayoutPriority {
|
|
24
24
|
Low = "low",// view is offered space last
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { CompositeDisposable, MutableDisposable, } from '../lifecycle';
|
|
2
2
|
import { Orientation, Sizing, Splitview, } from './splitview';
|
|
3
3
|
import { Emitter } from '../events';
|
|
4
|
-
import { createComponent } from '../panel/componentFactory';
|
|
5
4
|
import { Resizable } from '../resizable';
|
|
6
5
|
import { Classnames } from '../dom';
|
|
7
6
|
/**
|
|
@@ -61,12 +60,6 @@ export class SplitviewComponent extends Resizable {
|
|
|
61
60
|
this._classNames = new Classnames(this.element);
|
|
62
61
|
this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');
|
|
63
62
|
this._options = options;
|
|
64
|
-
if (!options.components) {
|
|
65
|
-
options.components = {};
|
|
66
|
-
}
|
|
67
|
-
if (!options.frameworkComponents) {
|
|
68
|
-
options.frameworkComponents = {};
|
|
69
|
-
}
|
|
70
63
|
this.splitview = new Splitview(this.element, options);
|
|
71
64
|
this.addDisposables(this._onDidAddView, this._onDidLayoutfromJSON, this._onDidRemoveView, this._onDidLayoutChange);
|
|
72
65
|
}
|
|
@@ -129,18 +122,17 @@ export class SplitviewComponent extends Resizable {
|
|
|
129
122
|
return this.panels.find((view) => view.id === id);
|
|
130
123
|
}
|
|
131
124
|
addPanel(options) {
|
|
132
|
-
var _a
|
|
125
|
+
var _a;
|
|
133
126
|
if (this._panels.has(options.id)) {
|
|
134
127
|
throw new Error(`panel ${options.id} already exists`);
|
|
135
128
|
}
|
|
136
|
-
const view =
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
: undefined);
|
|
129
|
+
const view = this.options.createComponent({
|
|
130
|
+
id: options.id,
|
|
131
|
+
name: options.component,
|
|
132
|
+
});
|
|
141
133
|
view.orientation = this.splitview.orientation;
|
|
142
134
|
view.init({
|
|
143
|
-
params: (
|
|
135
|
+
params: (_a = options.params) !== null && _a !== void 0 ? _a : {},
|
|
144
136
|
minimumSize: options.minimumSize,
|
|
145
137
|
maximumSize: options.maximumSize,
|
|
146
138
|
snap: options.snap,
|
|
@@ -202,17 +194,14 @@ export class SplitviewComponent extends Resizable {
|
|
|
202
194
|
descriptor: {
|
|
203
195
|
size,
|
|
204
196
|
views: views.map((view) => {
|
|
205
|
-
var _a, _b;
|
|
206
197
|
const data = view.data;
|
|
207
198
|
if (this._panels.has(data.id)) {
|
|
208
199
|
throw new Error(`panel ${data.id} already exists`);
|
|
209
200
|
}
|
|
210
|
-
const panel =
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
}
|
|
215
|
-
: undefined);
|
|
201
|
+
const panel = this.options.createComponent({
|
|
202
|
+
id: data.id,
|
|
203
|
+
name: data.component,
|
|
204
|
+
});
|
|
216
205
|
queue.push(() => {
|
|
217
206
|
var _a;
|
|
218
207
|
panel.init({
|
package/package.json
CHANGED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export interface FrameworkFactory<T> {
|
|
2
|
-
createComponent: (id: string, componentId: string, component: any) => T;
|
|
3
|
-
}
|
|
4
|
-
export type ComponentConstructor<T> = {
|
|
5
|
-
new (id: string, component: string): T;
|
|
6
|
-
};
|
|
7
|
-
export declare function createComponent<T>(id: string, componentName?: string, components?: {
|
|
8
|
-
[componentName: string]: ComponentConstructor<T>;
|
|
9
|
-
}, frameworkComponents?: {
|
|
10
|
-
[componentName: string]: any;
|
|
11
|
-
}, createFrameworkComponent?: FrameworkFactory<T>, fallback?: () => T): T;
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createComponent = void 0;
|
|
4
|
-
function createComponent(id, componentName, components, frameworkComponents, createFrameworkComponent, fallback) {
|
|
5
|
-
if (components === void 0) { components = {}; }
|
|
6
|
-
if (frameworkComponents === void 0) { frameworkComponents = {}; }
|
|
7
|
-
var Component = typeof componentName === 'string'
|
|
8
|
-
? components[componentName]
|
|
9
|
-
: undefined;
|
|
10
|
-
var FrameworkComponent = typeof componentName === 'string'
|
|
11
|
-
? frameworkComponents[componentName]
|
|
12
|
-
: undefined;
|
|
13
|
-
if (Component && FrameworkComponent) {
|
|
14
|
-
throw new Error("Cannot create '".concat(id, "'. component '").concat(componentName, "' registered as both a component and frameworkComponent"));
|
|
15
|
-
}
|
|
16
|
-
if (FrameworkComponent) {
|
|
17
|
-
if (!createFrameworkComponent) {
|
|
18
|
-
throw new Error("Cannot create '".concat(id, "' for framework component '").concat(componentName, "'. you must register a frameworkPanelWrapper to use framework components"));
|
|
19
|
-
}
|
|
20
|
-
return createFrameworkComponent.createComponent(id, componentName, FrameworkComponent);
|
|
21
|
-
}
|
|
22
|
-
if (!Component) {
|
|
23
|
-
if (fallback) {
|
|
24
|
-
return fallback();
|
|
25
|
-
}
|
|
26
|
-
throw new Error("Cannot create '".concat(id, "', no component '").concat(componentName, "' provided"));
|
|
27
|
-
}
|
|
28
|
-
return new Component(id, componentName);
|
|
29
|
-
}
|
|
30
|
-
exports.createComponent = createComponent;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export interface FrameworkFactory<T> {
|
|
2
|
-
createComponent: (id: string, componentId: string, component: any) => T;
|
|
3
|
-
}
|
|
4
|
-
export type ComponentConstructor<T> = {
|
|
5
|
-
new (id: string, component: string): T;
|
|
6
|
-
};
|
|
7
|
-
export declare function createComponent<T>(id: string, componentName?: string, components?: {
|
|
8
|
-
[componentName: string]: ComponentConstructor<T>;
|
|
9
|
-
}, frameworkComponents?: {
|
|
10
|
-
[componentName: string]: any;
|
|
11
|
-
}, createFrameworkComponent?: FrameworkFactory<T>, fallback?: () => T): T;
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
export function createComponent(id, componentName, components = {}, frameworkComponents = {}, createFrameworkComponent, fallback) {
|
|
2
|
-
const Component = typeof componentName === 'string'
|
|
3
|
-
? components[componentName]
|
|
4
|
-
: undefined;
|
|
5
|
-
const FrameworkComponent = typeof componentName === 'string'
|
|
6
|
-
? frameworkComponents[componentName]
|
|
7
|
-
: undefined;
|
|
8
|
-
if (Component && FrameworkComponent) {
|
|
9
|
-
throw new Error(`Cannot create '${id}'. component '${componentName}' registered as both a component and frameworkComponent`);
|
|
10
|
-
}
|
|
11
|
-
if (FrameworkComponent) {
|
|
12
|
-
if (!createFrameworkComponent) {
|
|
13
|
-
throw new Error(`Cannot create '${id}' for framework component '${componentName}'. you must register a frameworkPanelWrapper to use framework components`);
|
|
14
|
-
}
|
|
15
|
-
return createFrameworkComponent.createComponent(id, componentName, FrameworkComponent);
|
|
16
|
-
}
|
|
17
|
-
if (!Component) {
|
|
18
|
-
if (fallback) {
|
|
19
|
-
return fallback();
|
|
20
|
-
}
|
|
21
|
-
throw new Error(`Cannot create '${id}', no component '${componentName}' provided`);
|
|
22
|
-
}
|
|
23
|
-
return new Component(id, componentName);
|
|
24
|
-
}
|