dockview-angular 0.0.0-beta-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.
@@ -0,0 +1 @@
1
+ export * from 'dockview-core';
@@ -0,0 +1 @@
1
+ export * from 'dockview-core';
@@ -0,0 +1,49 @@
1
+ import type { DockviewGroupPanel, GroupPanelPartInitParameters, IContentRenderer, ITabRenderer, IWatermarkRenderer, PanelUpdateEvent, Parameters, WatermarkRendererInitParameters } from 'dockview-core';
2
+ import { type ComponentOptionsBase } from 'vue';
3
+ export type ComponentInterface = ComponentOptionsBase<any, any, any, any, any, any, any, any>;
4
+ /**
5
+ * TODO List
6
+ *
7
+ * 1. handle vue context-ish stuff (appContext? provides?)
8
+ *
9
+ *
10
+ *
11
+ * @see https://vuejs.org/api/render-function.html#clonevnode
12
+ * @see https://vuejs.org/api/render-function.html#mergeprops
13
+ */
14
+ export declare function mountVueComponent(component: ComponentInterface, props: any, element: HTMLElement): {
15
+ update: (newProps: any) => void;
16
+ dispose: () => void;
17
+ };
18
+ export declare class VueContentRenderer implements IContentRenderer {
19
+ private readonly component;
20
+ private _element;
21
+ private _renderDisposable;
22
+ get element(): HTMLElement;
23
+ constructor(component: ComponentInterface);
24
+ init(parameters: GroupPanelPartInitParameters): void;
25
+ update(event: PanelUpdateEvent<Parameters>): void;
26
+ focus(): void;
27
+ dispose(): void;
28
+ }
29
+ export declare class VueTabRenderer implements ITabRenderer {
30
+ private readonly component;
31
+ private _element;
32
+ private _renderDisposable;
33
+ get element(): HTMLElement;
34
+ constructor(component: ComponentInterface);
35
+ init(parameters: GroupPanelPartInitParameters): void;
36
+ update(event: PanelUpdateEvent<Parameters>): void;
37
+ dispose(): void;
38
+ }
39
+ export declare class VueWatermarkRenderer implements IWatermarkRenderer {
40
+ private readonly component;
41
+ private _element;
42
+ private _renderDisposable;
43
+ get element(): HTMLElement;
44
+ constructor(component: ComponentInterface);
45
+ init(parameters: WatermarkRendererInitParameters): void;
46
+ updateParentGroup(group: DockviewGroupPanel, visible: boolean): void;
47
+ update(event: PanelUpdateEvent<Parameters>): void;
48
+ dispose(): void;
49
+ }
@@ -0,0 +1,119 @@
1
+ import { createVNode, render, cloneVNode, mergeProps } from 'vue';
2
+ /**
3
+ * TODO List
4
+ *
5
+ * 1. handle vue context-ish stuff (appContext? provides?)
6
+ *
7
+ *
8
+ *
9
+ * @see https://vuejs.org/api/render-function.html#clonevnode
10
+ * @see https://vuejs.org/api/render-function.html#mergeprops
11
+ */
12
+ export function mountVueComponent(component, props, element) {
13
+ let vNode = createVNode(component, props);
14
+ render(vNode, element);
15
+ return {
16
+ update: (newProps) => {
17
+ vNode = cloneVNode(vNode, mergeProps(props, newProps));
18
+ render(vNode, element);
19
+ },
20
+ dispose: () => {
21
+ render(null, element);
22
+ }
23
+ };
24
+ }
25
+ export class VueContentRenderer {
26
+ get element() {
27
+ return this._element;
28
+ }
29
+ constructor(component) {
30
+ this.component = component;
31
+ this._element = document.createElement('div');
32
+ this.element.className = 'dv-vue-part';
33
+ }
34
+ init(parameters) {
35
+ var _a;
36
+ const props = {
37
+ params: parameters.params,
38
+ api: parameters.api,
39
+ containerApi: parameters.containerApi
40
+ };
41
+ (_a = this._renderDisposable) === null || _a === void 0 ? void 0 : _a.dispose();
42
+ this._renderDisposable = mountVueComponent(this.component, props, this.element);
43
+ }
44
+ update(event) {
45
+ var _a;
46
+ const params = event.params;
47
+ // TODO: handle prop updates somehow?
48
+ (_a = this._renderDisposable) === null || _a === void 0 ? void 0 : _a.update(params);
49
+ }
50
+ focus() {
51
+ // TODO: make optional on interface
52
+ }
53
+ dispose() {
54
+ var _a;
55
+ (_a = this._renderDisposable) === null || _a === void 0 ? void 0 : _a.dispose();
56
+ }
57
+ }
58
+ export class VueTabRenderer {
59
+ get element() {
60
+ return this._element;
61
+ }
62
+ constructor(component) {
63
+ this.component = component;
64
+ this._element = document.createElement('div');
65
+ this.element.className = 'dv-vue-part';
66
+ }
67
+ init(parameters) {
68
+ var _a;
69
+ const props = {
70
+ params: parameters.params,
71
+ api: parameters.api,
72
+ containerApi: parameters.containerApi
73
+ };
74
+ (_a = this._renderDisposable) === null || _a === void 0 ? void 0 : _a.dispose();
75
+ this._renderDisposable = mountVueComponent(this.component, props, this.element);
76
+ }
77
+ update(event) {
78
+ var _a;
79
+ const params = event.params;
80
+ // TODO: handle prop updates somehow?
81
+ (_a = this._renderDisposable) === null || _a === void 0 ? void 0 : _a.update(params);
82
+ }
83
+ dispose() {
84
+ var _a;
85
+ (_a = this._renderDisposable) === null || _a === void 0 ? void 0 : _a.dispose();
86
+ }
87
+ }
88
+ export class VueWatermarkRenderer {
89
+ get element() {
90
+ return this._element;
91
+ }
92
+ constructor(component) {
93
+ this.component = component;
94
+ this._element = document.createElement('div');
95
+ this.element.className = 'dv-vue-part';
96
+ }
97
+ init(parameters) {
98
+ var _a;
99
+ const props = {
100
+ group: parameters.group,
101
+ containerApi: parameters.containerApi
102
+ };
103
+ (_a = this._renderDisposable) === null || _a === void 0 ? void 0 : _a.dispose();
104
+ this._renderDisposable = mountVueComponent(this.component, props, this.element);
105
+ }
106
+ updateParentGroup(group, visible) {
107
+ // TODO: make optional on interface
108
+ }
109
+ update(event) {
110
+ var _a;
111
+ const params = event.params;
112
+ // TODO: handle prop updates somehow?
113
+ (_a = this._renderDisposable) === null || _a === void 0 ? void 0 : _a.update(params);
114
+ }
115
+ dispose() {
116
+ var _a;
117
+ (_a = this._renderDisposable) === null || _a === void 0 ? void 0 : _a.dispose();
118
+ }
119
+ }
File without changes
package/package.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "dockview-angular",
3
+ "version": "0.0.0-beta-0",
4
+ "description": "Zero dependency layout manager supporting tabs, grids and splitviews with ReactJS support",
5
+ "keywords": [
6
+ "splitview",
7
+ "split-view",
8
+ "gridview",
9
+ "grid-view",
10
+ "dockview",
11
+ "dock-view",
12
+ "grid",
13
+ "tabs",
14
+ "layout",
15
+ "layout manager",
16
+ "dock layout",
17
+ "dock",
18
+ "docking",
19
+ "splitter",
20
+ "drag-and-drop",
21
+ "drag",
22
+ "drop",
23
+ "react",
24
+ "react-component"
25
+ ],
26
+ "homepage": "https://github.com/mathuo/dockview",
27
+ "bugs": {
28
+ "url": "https://github.com/mathuo/dockview/issues"
29
+ },
30
+ "repository": {
31
+ "type": "git",
32
+ "url": "https://github.com/mathuo/dockview.git"
33
+ },
34
+ "license": "MIT",
35
+ "author": "https://github.com/mathuo",
36
+ "main": "./dist/cjs/index.js",
37
+ "module": "./dist/esm/index.js",
38
+ "types": "./dist/cjs/index.d.ts",
39
+ "files": [
40
+ "dist",
41
+ "README.md"
42
+ ],
43
+ "scripts": {
44
+ "build": "npm run build:package && npm run build:bundles",
45
+ "build:bundles": "rollup -c",
46
+ "build:cjs": "cross-env ../../node_modules/.bin/tsc --build ./tsconfig.json --verbose --extendedDiagnostics",
47
+ "build:css": "gulp sass",
48
+ "build:esm": "cross-env ../../node_modules/.bin/tsc --build ./tsconfig.esm.json --verbose --extendedDiagnostics",
49
+ "build:package": "npm run build:cjs && npm run build:esm && npm run build:css",
50
+ "clean": "rimraf dist/ .build/ .rollup.cache/",
51
+ "prepublishOnly": "npm run rebuild && npm run test",
52
+ "rebuild": "npm run clean && npm run build",
53
+ "test": "cross-env ../../node_modules/.bin/jest --selectProjects dockview",
54
+ "test:cov": "cross-env ../../node_modules/.bin/jest --selectProjects dockview --coverage"
55
+ },
56
+ "dependencies": {
57
+ "dockview-core": "^1.10.1"
58
+ }
59
+ }