@hpcc-js/phosphor 3.4.7 → 3.5.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/src/PDockPanel.ts CHANGED
@@ -1,117 +1,117 @@
1
- // import { Persist } from "@hpcc-js/other";
2
- import { DockLayout, DockPanel, TabBar, Widget } from "./phosphor-shim.ts";
3
- import { WidgetAdapter, WidgetAdapterArray } from "./WidgetAdapter.ts";
4
-
5
- export class PRenderer extends DockPanel.Renderer {
6
- _owner: PDockPanel;
7
-
8
- constructor() {
9
- super();
10
- }
11
-
12
- createTabBar(): TabBar<Widget> {
13
- const bar = super.createTabBar();
14
- bar.tabsMovable = this._owner.tabsMovable;
15
- return bar;
16
- }
17
- }
18
-
19
- export class PDockPanel extends DockPanel {
20
-
21
- private _content: WidgetAdapterArray;
22
- private _contentMap: { [key: string]: WidgetAdapter };
23
-
24
- constructor(options: DockPanel.IOptions = {}) {
25
- options.renderer = options.renderer || new PRenderer();
26
- super(options);
27
- if (this["_renderer"] instanceof PRenderer) {
28
- this["_renderer"]._owner = this;
29
- }
30
- this._content = WidgetAdapterArray.create();
31
- this._contentMap = {};
32
- }
33
-
34
- appendContent(wa: WidgetAdapter) {
35
- this._content.push(wa);
36
- this._contentMap[wa.widget.id()] = wa;
37
- }
38
-
39
- removeContent(wa: WidgetAdapter) {
40
- const idx = this._content.indexOf(wa);
41
- if (idx >= 0) {
42
- this._content.splice(idx, 1);
43
- }
44
- delete this._contentMap[wa.widget.id()];
45
- wa.dispose();
46
- }
47
-
48
- content(): WidgetAdapterArray {
49
- return this._content;
50
- }
51
-
52
- serializeWidget(widget: Widget): object {
53
- if (widget instanceof WidgetAdapter) {
54
- try {
55
- return {
56
- __id: widget.widget.id()
57
- };
58
- } catch (e: any) {
59
- return {
60
- exception: {
61
- message: e.message ?? "",
62
- stack: e.stack ?? []
63
- }
64
- };
65
- }
66
- }
67
- return null;
68
- }
69
-
70
- deserializeWidget(layout: any): WidgetAdapter {
71
- let wa: WidgetAdapter = this._contentMap[layout.__id];
72
- if (wa) {
73
- // Persist.deserializeFromObject(wa.widget, layout);
74
- } else {
75
- wa = new WidgetAdapter(undefined, layout);
76
- }
77
- return wa;
78
- }
79
-
80
- serializeITabAreaConfig(config: DockLayout.ITabAreaConfig, deserialize: boolean): DockLayout.ITabAreaConfig {
81
- return {
82
- ...config,
83
- widgets: config.widgets.map(widget => deserialize ? this.deserializeWidget(widget) : this.serializeWidget(widget) as any)
84
- };
85
- }
86
-
87
- serializeISplitAreaConfig(config: DockLayout.ISplitAreaConfig, deserialize: boolean): DockLayout.ISplitAreaConfig {
88
- return {
89
- ...config,
90
- children: config.children.map(child => this.serializeAreaConfig(child, deserialize))
91
- };
92
- }
93
-
94
- serializeAreaConfig(config: DockLayout.AreaConfig, deserialize: boolean): DockLayout.AreaConfig {
95
- if (config) {
96
- switch (config.type) {
97
- case "tab-area":
98
- return this.serializeITabAreaConfig(config, deserialize);
99
- case "split-area":
100
- return this.serializeISplitAreaConfig(config, deserialize);
101
- }
102
- }
103
- return undefined;
104
- }
105
-
106
- saveLayout(): DockLayout.ILayoutConfig {
107
- return {
108
- main: this.serializeAreaConfig(super.saveLayout().main, false)
109
- };
110
- }
111
-
112
- restoreLayout(config: DockLayout.ILayoutConfig) {
113
- return super.restoreLayout({
114
- main: this.serializeAreaConfig(config.main, true)
115
- });
116
- }
117
- }
1
+ // import { Persist } from "@hpcc-js/other";
2
+ import { DockLayout, DockPanel, TabBar, Widget } from "./phosphor-shim.ts";
3
+ import { WidgetAdapter, WidgetAdapterArray } from "./WidgetAdapter.ts";
4
+
5
+ export class PRenderer extends DockPanel.Renderer {
6
+ _owner: PDockPanel;
7
+
8
+ constructor() {
9
+ super();
10
+ }
11
+
12
+ createTabBar(): TabBar<Widget> {
13
+ const bar = super.createTabBar();
14
+ bar.tabsMovable = this._owner.tabsMovable;
15
+ return bar;
16
+ }
17
+ }
18
+
19
+ export class PDockPanel extends DockPanel {
20
+
21
+ private _content: WidgetAdapterArray;
22
+ private _contentMap: { [key: string]: WidgetAdapter };
23
+
24
+ constructor(options: DockPanel.IOptions = {}) {
25
+ options.renderer = options.renderer || new PRenderer();
26
+ super(options);
27
+ if (this["_renderer"] instanceof PRenderer) {
28
+ this["_renderer"]._owner = this;
29
+ }
30
+ this._content = WidgetAdapterArray.create();
31
+ this._contentMap = {};
32
+ }
33
+
34
+ appendContent(wa: WidgetAdapter) {
35
+ this._content.push(wa);
36
+ this._contentMap[wa.widget.id()] = wa;
37
+ }
38
+
39
+ removeContent(wa: WidgetAdapter) {
40
+ const idx = this._content.indexOf(wa);
41
+ if (idx >= 0) {
42
+ this._content.splice(idx, 1);
43
+ }
44
+ delete this._contentMap[wa.widget.id()];
45
+ wa.dispose();
46
+ }
47
+
48
+ content(): WidgetAdapterArray {
49
+ return this._content;
50
+ }
51
+
52
+ serializeWidget(widget: Widget): object {
53
+ if (widget instanceof WidgetAdapter) {
54
+ try {
55
+ return {
56
+ __id: widget.widget.id()
57
+ };
58
+ } catch (e: any) {
59
+ return {
60
+ exception: {
61
+ message: e.message ?? "",
62
+ stack: e.stack ?? []
63
+ }
64
+ };
65
+ }
66
+ }
67
+ return null;
68
+ }
69
+
70
+ deserializeWidget(layout: any): WidgetAdapter {
71
+ let wa: WidgetAdapter = this._contentMap[layout.__id];
72
+ if (wa) {
73
+ // Persist.deserializeFromObject(wa.widget, layout);
74
+ } else {
75
+ wa = new WidgetAdapter(undefined, layout);
76
+ }
77
+ return wa;
78
+ }
79
+
80
+ serializeITabAreaConfig(config: DockLayout.ITabAreaConfig, deserialize: boolean): DockLayout.ITabAreaConfig {
81
+ return {
82
+ ...config,
83
+ widgets: config.widgets.map(widget => deserialize ? this.deserializeWidget(widget) : this.serializeWidget(widget) as any)
84
+ };
85
+ }
86
+
87
+ serializeISplitAreaConfig(config: DockLayout.ISplitAreaConfig, deserialize: boolean): DockLayout.ISplitAreaConfig {
88
+ return {
89
+ ...config,
90
+ children: config.children.map(child => this.serializeAreaConfig(child, deserialize))
91
+ };
92
+ }
93
+
94
+ serializeAreaConfig(config: DockLayout.AreaConfig, deserialize: boolean): DockLayout.AreaConfig {
95
+ if (config) {
96
+ switch (config.type) {
97
+ case "tab-area":
98
+ return this.serializeITabAreaConfig(config, deserialize);
99
+ case "split-area":
100
+ return this.serializeISplitAreaConfig(config, deserialize);
101
+ }
102
+ }
103
+ return undefined;
104
+ }
105
+
106
+ saveLayout(): DockLayout.ILayoutConfig {
107
+ return {
108
+ main: this.serializeAreaConfig(super.saveLayout().main, false)
109
+ };
110
+ }
111
+
112
+ restoreLayout(config: DockLayout.ILayoutConfig) {
113
+ return super.restoreLayout({
114
+ main: this.serializeAreaConfig(config.main, true)
115
+ });
116
+ }
117
+ }
package/src/SplitPanel.ts CHANGED
@@ -1,70 +1,70 @@
1
- import { HTMLWidget, SVGWidget, Widget } from "@hpcc-js/common";
2
- import { SplitPanel as PSplitPanel, Widget as PWidget } from "./phosphor-shim.ts";
3
- import { WidgetAdapter, WidgetAdapterArray } from "./WidgetAdapter.ts";
4
-
5
- import "../src/DockPanel.css";
6
-
7
- export class SplitPanel extends HTMLWidget {
8
- private _split: PSplitPanel;
9
- private content = WidgetAdapterArray.create();
10
-
11
- constructor(orientation: "horizontal" | "vertical" = "vertical") {
12
- super();
13
- this._split = new PSplitPanel({ orientation });
14
- this._tag = "div";
15
- this._split.id = "p" + this.id();
16
- }
17
-
18
- protected getWidgetAdapter(widget: Widget): WidgetAdapter | null {
19
- let retVal = null;
20
- this.content.some(wa => {
21
- if (wa.widget === widget) {
22
- retVal = wa;
23
- return true;
24
- }
25
- return false;
26
- });
27
- return retVal;
28
- }
29
-
30
- addWidget(widget: SVGWidget | HTMLWidget) {
31
- const wa = new WidgetAdapter(this, widget);
32
- this._split.addWidget(wa);
33
- this.content.push(wa);
34
- return this;
35
- }
36
-
37
- relativeSizes(): number[];
38
- relativeSizes(_: number[]): this;
39
- relativeSizes(_?: number[]): number[] | this {
40
- if (!arguments.length) return this._split.relativeSizes();
41
- this._split.setRelativeSizes(_);
42
- return this;
43
- }
44
-
45
- enter(domNode, element) {
46
- super.enter(domNode, element);
47
- PWidget.attach(this._split, domNode);
48
- }
49
-
50
- update(domNode, element) {
51
- super.update(domNode, element);
52
- element.select(".lm-Widget")
53
- .style("width", this.width() + "px")
54
- .style("height", this.height() + "px")
55
- ;
56
- }
57
-
58
- exit(domNode, element) {
59
- PWidget.detach(this._split);
60
- super.exit(domNode, element);
61
- }
62
-
63
- render(callback?: (w: Widget) => void): this {
64
- return super.render(w => {
65
- this.content.watchRendered(this, callback);
66
- this._split.update();
67
- });
68
- }
69
- }
70
- SplitPanel.prototype._class += " phosphor_SplitPanel";
1
+ import { HTMLWidget, SVGWidget, Widget } from "@hpcc-js/common";
2
+ import { SplitPanel as PSplitPanel, Widget as PWidget } from "./phosphor-shim.ts";
3
+ import { WidgetAdapter, WidgetAdapterArray } from "./WidgetAdapter.ts";
4
+
5
+ import "../src/DockPanel.css";
6
+
7
+ export class SplitPanel extends HTMLWidget {
8
+ private _split: PSplitPanel;
9
+ private content = WidgetAdapterArray.create();
10
+
11
+ constructor(orientation: "horizontal" | "vertical" = "vertical") {
12
+ super();
13
+ this._split = new PSplitPanel({ orientation });
14
+ this._tag = "div";
15
+ this._split.id = "p" + this.id();
16
+ }
17
+
18
+ protected getWidgetAdapter(widget: Widget): WidgetAdapter | null {
19
+ let retVal = null;
20
+ this.content.some(wa => {
21
+ if (wa.widget === widget) {
22
+ retVal = wa;
23
+ return true;
24
+ }
25
+ return false;
26
+ });
27
+ return retVal;
28
+ }
29
+
30
+ addWidget(widget: SVGWidget | HTMLWidget) {
31
+ const wa = new WidgetAdapter(this, widget);
32
+ this._split.addWidget(wa);
33
+ this.content.push(wa);
34
+ return this;
35
+ }
36
+
37
+ relativeSizes(): number[];
38
+ relativeSizes(_: number[]): this;
39
+ relativeSizes(_?: number[]): number[] | this {
40
+ if (!arguments.length) return this._split.relativeSizes();
41
+ this._split.setRelativeSizes(_);
42
+ return this;
43
+ }
44
+
45
+ enter(domNode, element) {
46
+ super.enter(domNode, element);
47
+ PWidget.attach(this._split, domNode);
48
+ }
49
+
50
+ update(domNode, element) {
51
+ super.update(domNode, element);
52
+ element.select(".lm-Widget")
53
+ .style("width", this.width() + "px")
54
+ .style("height", this.height() + "px")
55
+ ;
56
+ }
57
+
58
+ exit(domNode, element) {
59
+ PWidget.detach(this._split);
60
+ super.exit(domNode, element);
61
+ }
62
+
63
+ render(callback?: (w: Widget) => void): this {
64
+ return super.render(w => {
65
+ this.content.watchRendered(this, callback);
66
+ this._split.update();
67
+ });
68
+ }
69
+ }
70
+ SplitPanel.prototype._class += " phosphor_SplitPanel";
package/src/TabPanel.ts CHANGED
@@ -1,117 +1,117 @@
1
- import { HTMLWidget, SVGWidget, Widget } from "@hpcc-js/common";
2
- import { IMessageHandler, Message, TabPanel as PTabPanel, Widget as PWidget } from "./phosphor-shim.ts";
3
- import { Msg, WidgetAdapter, WidgetAdapterArray, WidgetAdapterExt } from "./WidgetAdapter.ts";
4
-
5
- import "../src/DockPanel.css";
6
-
7
- export class TabPanel extends HTMLWidget {
8
- private _tab = new PTabPanel({ tabPlacement: "top" });
9
- protected content = WidgetAdapterArray.create();
10
-
11
- constructor() {
12
- super();
13
- this._tag = "div";
14
- this._tab.id = "p" + this.id();
15
- }
16
-
17
- protected getWidget(wa: PWidget): Widget | undefined {
18
- if (wa instanceof WidgetAdapter) {
19
- return wa.widget;
20
- }
21
- }
22
-
23
- protected getWidgetAdapter(widget: Widget): WidgetAdapter | null {
24
- let retVal = null;
25
- this.content.some(wa => {
26
- if (wa.widget === widget) {
27
- retVal = wa;
28
- return true;
29
- }
30
- return false;
31
- });
32
- return retVal;
33
- }
34
-
35
- addWidget(widget: SVGWidget | HTMLWidget, title: string, ext: WidgetAdapterExt = {}) {
36
- if (!this._prevActive) {
37
- this._prevActive = widget;
38
- }
39
- const wa = new WidgetAdapter(this, widget, undefined, undefined, ext);
40
- wa.title.label = title;
41
- wa.padding = 8;
42
- this._tab.addWidget(wa);
43
- this.content.push(wa);
44
- return this;
45
- }
46
-
47
- removeWidget(widget: SVGWidget | HTMLWidget) {
48
- const wa = this.getWidgetAdapter(widget);
49
- if (wa) {
50
- const found = this.content.indexOf(wa);
51
- if (found >= 0) {
52
- this.content.splice(found, 1);
53
- }
54
- widget.target(null);
55
- wa.dispose();
56
- }
57
- return this;
58
- }
59
-
60
- enter(domNode, element) {
61
- super.enter(domNode, element);
62
- PWidget.attach(this._tab, domNode);
63
- }
64
-
65
- update(domNode, element) {
66
- super.update(domNode, element);
67
- element.select(".lm-Widget")
68
- .style("width", this.width() + "px")
69
- .style("height", this.height() + "px")
70
- ;
71
- }
72
-
73
- exit(domNode, element) {
74
- PWidget.detach(this._tab);
75
- super.exit(domNode, element);
76
- }
77
-
78
- render(callback?: (w: Widget) => void): this {
79
- return super.render(w => {
80
- this.content.watchRendered(this, callback);
81
- this._tab.update();
82
- });
83
- }
84
-
85
- // Phosphor Messaging ---
86
- messageHook(handler: IMessageHandler, msg: Message): boolean {
87
- if (handler === this) {
88
- this.processMessage(msg);
89
- }
90
- return true;
91
- }
92
-
93
- private _prevActive: Widget;
94
- processMessage(msg: Message): void {
95
- switch (msg.type) {
96
- case "wa-activate-request":
97
- const widget = (msg as Msg.WAActivateRequest).wa.widget;
98
- if (this._prevActive !== widget) {
99
- this._prevActive = widget;
100
- this.childActivation(widget);
101
- }
102
- break;
103
- }
104
- }
105
-
106
- childActivation(w: Widget) {
107
- }
108
-
109
- active(): Widget;
110
- active(_: Widget);
111
- active(_?: Widget): Widget | this {
112
- if (!arguments.length) return this.getWidget(this._tab.currentWidget);
113
- this._tab.currentWidget = this.getWidgetAdapter(_);
114
- return this;
115
- }
116
- }
117
- TabPanel.prototype._class += " phosphor_TabPanel";
1
+ import { HTMLWidget, SVGWidget, Widget } from "@hpcc-js/common";
2
+ import { IMessageHandler, Message, TabPanel as PTabPanel, Widget as PWidget } from "./phosphor-shim.ts";
3
+ import { Msg, WidgetAdapter, WidgetAdapterArray, WidgetAdapterExt } from "./WidgetAdapter.ts";
4
+
5
+ import "../src/DockPanel.css";
6
+
7
+ export class TabPanel extends HTMLWidget {
8
+ private _tab = new PTabPanel({ tabPlacement: "top" });
9
+ protected content = WidgetAdapterArray.create();
10
+
11
+ constructor() {
12
+ super();
13
+ this._tag = "div";
14
+ this._tab.id = "p" + this.id();
15
+ }
16
+
17
+ protected getWidget(wa: PWidget): Widget | undefined {
18
+ if (wa instanceof WidgetAdapter) {
19
+ return wa.widget;
20
+ }
21
+ }
22
+
23
+ protected getWidgetAdapter(widget: Widget): WidgetAdapter | null {
24
+ let retVal = null;
25
+ this.content.some(wa => {
26
+ if (wa.widget === widget) {
27
+ retVal = wa;
28
+ return true;
29
+ }
30
+ return false;
31
+ });
32
+ return retVal;
33
+ }
34
+
35
+ addWidget(widget: SVGWidget | HTMLWidget, title: string, ext: WidgetAdapterExt = {}) {
36
+ if (!this._prevActive) {
37
+ this._prevActive = widget;
38
+ }
39
+ const wa = new WidgetAdapter(this, widget, undefined, undefined, ext);
40
+ wa.title.label = title;
41
+ wa.padding = 8;
42
+ this._tab.addWidget(wa);
43
+ this.content.push(wa);
44
+ return this;
45
+ }
46
+
47
+ removeWidget(widget: SVGWidget | HTMLWidget) {
48
+ const wa = this.getWidgetAdapter(widget);
49
+ if (wa) {
50
+ const found = this.content.indexOf(wa);
51
+ if (found >= 0) {
52
+ this.content.splice(found, 1);
53
+ }
54
+ widget.target(null);
55
+ wa.dispose();
56
+ }
57
+ return this;
58
+ }
59
+
60
+ enter(domNode, element) {
61
+ super.enter(domNode, element);
62
+ PWidget.attach(this._tab, domNode);
63
+ }
64
+
65
+ update(domNode, element) {
66
+ super.update(domNode, element);
67
+ element.select(".lm-Widget")
68
+ .style("width", this.width() + "px")
69
+ .style("height", this.height() + "px")
70
+ ;
71
+ }
72
+
73
+ exit(domNode, element) {
74
+ PWidget.detach(this._tab);
75
+ super.exit(domNode, element);
76
+ }
77
+
78
+ render(callback?: (w: Widget) => void): this {
79
+ return super.render(w => {
80
+ this.content.watchRendered(this, callback);
81
+ this._tab.update();
82
+ });
83
+ }
84
+
85
+ // Phosphor Messaging ---
86
+ messageHook(handler: IMessageHandler, msg: Message): boolean {
87
+ if (handler === this) {
88
+ this.processMessage(msg);
89
+ }
90
+ return true;
91
+ }
92
+
93
+ private _prevActive: Widget;
94
+ processMessage(msg: Message): void {
95
+ switch (msg.type) {
96
+ case "wa-activate-request":
97
+ const widget = (msg as Msg.WAActivateRequest).wa.widget;
98
+ if (this._prevActive !== widget) {
99
+ this._prevActive = widget;
100
+ this.childActivation(widget);
101
+ }
102
+ break;
103
+ }
104
+ }
105
+
106
+ childActivation(w: Widget) {
107
+ }
108
+
109
+ active(): Widget;
110
+ active(_: Widget);
111
+ active(_?: Widget): Widget | this {
112
+ if (!arguments.length) return this.getWidget(this._tab.currentWidget);
113
+ this._tab.currentWidget = this.getWidgetAdapter(_);
114
+ return this;
115
+ }
116
+ }
117
+ TabPanel.prototype._class += " phosphor_TabPanel";
@@ -1,17 +1,17 @@
1
- .phosphor_WidgetAdapter {
2
- border-left: 1px solid #C0C0C0;
3
- border-right: 1px solid #C0C0C0;
4
- border-bottom: 1px solid #C0C0C0;
5
- background: white;
6
- min-width: 64px;
7
- min-height: 64px;
8
- }
9
-
10
- .phosphor_WidgetAdapter.lm-DockPanel-widget {
11
- border-top: none;
12
- box-shadow: 0px -1px 0px rgba(0, 0, 0, 0.2), 1px 1px 2px rgba(0, 0, 0, 0.2);
13
- }
14
-
15
- .phosphor_WidgetAdapter.lm-SplitPanel-child {
16
- border: none;
1
+ .phosphor_WidgetAdapter {
2
+ border-left: 1px solid #C0C0C0;
3
+ border-right: 1px solid #C0C0C0;
4
+ border-bottom: 1px solid #C0C0C0;
5
+ background: white;
6
+ min-width: 64px;
7
+ min-height: 64px;
8
+ }
9
+
10
+ .phosphor_WidgetAdapter.lm-DockPanel-widget {
11
+ border-top: none;
12
+ box-shadow: 0px -1px 0px rgba(0, 0, 0, 0.2), 1px 1px 2px rgba(0, 0, 0, 0.2);
13
+ }
14
+
15
+ .phosphor_WidgetAdapter.lm-SplitPanel-child {
16
+ border: none;
17
17
  }