-
-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathDockViewV2.razor.js
More file actions
80 lines (70 loc) · 2.26 KB
/
DockViewV2.razor.js
File metadata and controls
80 lines (70 loc) · 2.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import { addLink, getTheme } from '../../BootstrapBlazor/modules/utility.js'
import { cerateDockview } from '../js/dockview-utils.js'
import Data from '../../BootstrapBlazor/modules/data.js'
import EventHandler from "../../BootstrapBlazor/modules/event-handler.js"
export async function init(id, invoke, options) {
await addLink("./_content/BootstrapBlazor.DockView/css/dockview-bb.css")
const el = document.getElementById(id);
if (!el) {
return;
}
if (options.theme === 'dockview-theme-light') {
let theme = getTheme();
if (theme === 'dark') {
options.theme = `dockview-theme-dark`;
}
}
const dockview = cerateDockview(el, options);
const updateTheme = e => dockview.switchTheme(e.theme);
Data.set(id, { el, dockview, updateTheme });
dockview.on('initialized', () => {
invoke.invokeMethodAsync(options.initializedCallback);
});
dockview.on('lockChanged', ({ title, isLock }) => {
invoke.invokeMethodAsync(options.lockChangedCallback, title, isLock);
});
dockview.on('panelVisibleChanged', ({ title, status }) => {
invoke.invokeMethodAsync(options.panelVisibleChangedCallback, title, status);
});
dockview.on('groupSizeChanged', () => {
invoke.invokeMethodAsync(options.splitterCallback);
});
dockview.on('loadTabs', tabs => {
invoke.invokeMethodAsync(options.loadTabs, tabs);
});
EventHandler.on(document, 'changed.bb.theme', updateTheme);
}
export function update(id, options) {
const dock = Data.get(id)
if (dock) {
const { dockview } = dock;
dockview.update(options);
}
}
export function reset(id, options) {
const dock = Data.get(id)
if (dock) {
const { dockview } = dock;
dockview.reset(options);
}
}
export function save(id) {
let ret = '';
const dock = Data.get(id)
if (dock) {
const { dockview } = dock;
ret = JSON.stringify(dockview.toJSON());
}
return ret;
}
export function dispose(id) {
const dock = Data.get(id)
Data.remove(id);
if (dock) {
EventHandler.off(document, 'changed.bb.theme', dock.updateTheme);
const { dockview } = dock;
if (dockview) {
dockview.dispose();
}
}
}