neo.mjs 6.16.5 → 6.17.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/examples/component/helix/MainContainer.mjs +10 -9
- package/examples/component/multiWindowHelix/Viewport.mjs +41 -0
- package/examples/component/multiWindowHelix/ViewportController.mjs +113 -0
- package/examples/component/multiWindowHelix/app.mjs +6 -0
- package/examples/component/multiWindowHelix/childapp/Viewport.mjs +23 -0
- package/examples/component/multiWindowHelix/childapp/app.mjs +6 -0
- package/examples/component/multiWindowHelix/childapp/index.html +11 -0
- package/examples/component/multiWindowHelix/childapp/neo-config.json +9 -0
- package/examples/component/multiWindowHelix/index.html +11 -0
- package/examples/component/multiWindowHelix/neo-config.json +9 -0
- package/package.json +2 -2
@@ -59,16 +59,22 @@ class MainContainer extends Viewport {
|
|
59
59
|
}
|
60
60
|
}]
|
61
61
|
}, {
|
62
|
-
ntype
|
63
|
-
layout: {ntype: 'vbox',align: 'stretch'},
|
64
|
-
|
65
|
-
|
62
|
+
ntype : 'panel',
|
63
|
+
layout : {ntype: 'vbox', align: 'stretch'},
|
64
|
+
reference: 'controls-panel',
|
65
|
+
style : {backgroundColor: '#2b2b2b'},
|
66
|
+
width : 250,
|
66
67
|
|
67
68
|
containerConfig: {
|
68
69
|
flex : null,
|
69
70
|
style: {overflowY: 'scroll'}
|
70
71
|
},
|
71
72
|
|
73
|
+
headers: [{
|
74
|
+
dock: 'top',
|
75
|
+
text: 'Helix Controls'
|
76
|
+
}],
|
77
|
+
|
72
78
|
itemDefaults: {
|
73
79
|
ntype : 'rangefield',
|
74
80
|
flex : '0 1 auto',
|
@@ -86,11 +92,6 @@ class MainContainer extends Viewport {
|
|
86
92
|
}
|
87
93
|
},
|
88
94
|
|
89
|
-
headers: [{
|
90
|
-
dock: 'top',
|
91
|
-
text: 'Helix Controls'
|
92
|
-
}],
|
93
|
-
|
94
95
|
items: [{
|
95
96
|
labelText: 'Translate X',
|
96
97
|
maxValue : 2000,
|
@@ -0,0 +1,41 @@
|
|
1
|
+
import MainContainer from '../helix/MainContainer.mjs';
|
2
|
+
import ViewportController from './ViewportController.mjs';
|
3
|
+
|
4
|
+
/**
|
5
|
+
* @class Neo.examples.component.multiWindowHelix.Viewport
|
6
|
+
* @extends Neo.examples.component.helix.MainContainer
|
7
|
+
*/
|
8
|
+
class Viewport extends MainContainer {
|
9
|
+
static config = {
|
10
|
+
className: 'Neo.examples.component.multiWindowHelix.Viewport',
|
11
|
+
/**
|
12
|
+
* @member {Neo.controller.Component} controller=ViewportController
|
13
|
+
*/
|
14
|
+
controller: ViewportController
|
15
|
+
}
|
16
|
+
|
17
|
+
/**
|
18
|
+
* @param {Object} config
|
19
|
+
*/
|
20
|
+
construct(config) {
|
21
|
+
super.construct(config);
|
22
|
+
|
23
|
+
this.getItem('controls-panel').headers = [{
|
24
|
+
dock : 'top',
|
25
|
+
reference: 'header-toolbar',
|
26
|
+
|
27
|
+
items: [{
|
28
|
+
ntype: 'label',
|
29
|
+
cls : ['neo-panel-header-text', 'neo-label'],
|
30
|
+
text : 'Helix Controls'
|
31
|
+
}, '->', {
|
32
|
+
handler: 'onMaximiseButtonClick',
|
33
|
+
iconCls: 'far fa-window-maximize'
|
34
|
+
}]
|
35
|
+
}];
|
36
|
+
}
|
37
|
+
}
|
38
|
+
|
39
|
+
Neo.setupClass(Viewport);
|
40
|
+
|
41
|
+
export default Viewport;
|
@@ -0,0 +1,113 @@
|
|
1
|
+
import Component from '../../../src/controller/Component.mjs';
|
2
|
+
|
3
|
+
/**
|
4
|
+
* @class Neo.examples.component.multiWindowHelix.ViewportController
|
5
|
+
* @extends Neo.controller.Component
|
6
|
+
*/
|
7
|
+
class ViewportController extends Component {
|
8
|
+
static config = {
|
9
|
+
/**
|
10
|
+
* @member {String} className='Neo.examples.component.multiWindowHelix.ViewportController'
|
11
|
+
* @protected
|
12
|
+
*/
|
13
|
+
className: 'Neo.examples.component.multiWindowHelix.ViewportController'
|
14
|
+
}
|
15
|
+
|
16
|
+
/**
|
17
|
+
* @member {String[]} connectedApps=[]
|
18
|
+
*/
|
19
|
+
connectedApps = []
|
20
|
+
|
21
|
+
/**
|
22
|
+
*
|
23
|
+
*/
|
24
|
+
async createPopupWindow() {
|
25
|
+
let me = this,
|
26
|
+
widget = me.getReference('controls-panel'),
|
27
|
+
winData = await Neo.Main.getWindowData(),
|
28
|
+
rect = await me.component.getDomRect(widget.id),
|
29
|
+
{height, left, top, width} = rect;
|
30
|
+
|
31
|
+
height -= 62; // popup header in Chrome
|
32
|
+
left += (width + winData.screenLeft);
|
33
|
+
top += (winData.outerHeight - winData.innerHeight + winData.screenTop);
|
34
|
+
|
35
|
+
await Neo.Main.windowOpen({
|
36
|
+
url : './childapp/index.html',
|
37
|
+
windowFeatures: `height=${height},left=${left},top=${top},width=${width}`,
|
38
|
+
windowName : 'HelixControls'
|
39
|
+
})
|
40
|
+
}
|
41
|
+
|
42
|
+
/**
|
43
|
+
* @param {Object} data
|
44
|
+
* @param {String} data.appName
|
45
|
+
* @param {Number} data.windowId
|
46
|
+
*/
|
47
|
+
async onAppConnect(data) {
|
48
|
+
let me = this,
|
49
|
+
{appName} = data;
|
50
|
+
|
51
|
+
if (appName === 'HelixControls') {
|
52
|
+
let controlsPanel = me.getReference('controls-panel'),
|
53
|
+
{mainView} = Neo.apps[appName];
|
54
|
+
|
55
|
+
me.connectedApps.push(appName);
|
56
|
+
|
57
|
+
controlsPanel.parent.remove(controlsPanel, false);
|
58
|
+
|
59
|
+
this.getReference('header-toolbar').hidden = true;
|
60
|
+
|
61
|
+
mainView.add(controlsPanel)
|
62
|
+
}
|
63
|
+
}
|
64
|
+
|
65
|
+
/**
|
66
|
+
* @param {Object} data
|
67
|
+
* @param {String} data.appName
|
68
|
+
* @param {Number} data.windowId
|
69
|
+
*/
|
70
|
+
async onAppDisconnect(data) {
|
71
|
+
let me = this,
|
72
|
+
{appName, windowId} = data;
|
73
|
+
|
74
|
+
if (appName === 'HelixControls') {
|
75
|
+
let controlsPanel = me.getReference('controls-panel');
|
76
|
+
|
77
|
+
controlsPanel.parent.remove(controlsPanel, false);
|
78
|
+
|
79
|
+
me.getReference('header-toolbar').hidden = false;
|
80
|
+
|
81
|
+
me.component.add(controlsPanel)
|
82
|
+
}
|
83
|
+
// Close popup windows when closing or reloading the main window
|
84
|
+
else {
|
85
|
+
Neo.Main.windowClose({names: me.connectedApps, windowId})
|
86
|
+
}
|
87
|
+
}
|
88
|
+
/**
|
89
|
+
*
|
90
|
+
*/
|
91
|
+
onConstructed() {
|
92
|
+
super.onConstructed();
|
93
|
+
|
94
|
+
let me = this;
|
95
|
+
|
96
|
+
Neo.currentWorker.on({
|
97
|
+
connect : me.onAppConnect,
|
98
|
+
disconnect: me.onAppDisconnect,
|
99
|
+
scope : me
|
100
|
+
})
|
101
|
+
}
|
102
|
+
|
103
|
+
/**
|
104
|
+
* @param {Object} data
|
105
|
+
*/
|
106
|
+
async onMaximiseButtonClick(data) {
|
107
|
+
await this.createPopupWindow()
|
108
|
+
}
|
109
|
+
}
|
110
|
+
|
111
|
+
Neo.setupClass(ViewportController);
|
112
|
+
|
113
|
+
export default ViewportController;
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import BaseViewport from '../../../../src/container/Viewport.mjs';
|
2
|
+
|
3
|
+
/**
|
4
|
+
* @class Neo.examples.component.multiWindowHelix.childapp.Viewport
|
5
|
+
* @extends Neo.container.Viewport
|
6
|
+
*/
|
7
|
+
class Viewport extends BaseViewport {
|
8
|
+
static config = {
|
9
|
+
/**
|
10
|
+
* @member {String} className='Neo.examples.component.multiWindowHelix.childapp.Viewport'
|
11
|
+
* @protected
|
12
|
+
*/
|
13
|
+
className: 'Neo.examples.component.multiWindowHelix.childapp.Viewport',
|
14
|
+
/**
|
15
|
+
* @member {Object} layout={ntype:'fit'}
|
16
|
+
*/
|
17
|
+
layout: {ntype: 'fit'}
|
18
|
+
}
|
19
|
+
}
|
20
|
+
|
21
|
+
Neo.setupClass(Viewport);
|
22
|
+
|
23
|
+
export default Viewport;
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<!DOCTYPE HTML>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
5
|
+
<meta charset="UTF-8">
|
6
|
+
<title>Helix Controls</title>
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
<script src="../../../../src/MicroLoader.mjs" type="module"></script>
|
10
|
+
</body>
|
11
|
+
</html>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
{
|
2
|
+
"appPath" : "examples/component/multiWindowHelix/childapp/app.mjs",
|
3
|
+
"basePath" : "../../../../",
|
4
|
+
"environment" : "development",
|
5
|
+
"mainPath" : "./Main.mjs",
|
6
|
+
"mainThreadAddons": ["Stylesheet"],
|
7
|
+
"themes" : ["neo-theme-dark"],
|
8
|
+
"useSharedWorkers": true
|
9
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<!DOCTYPE HTML>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
5
|
+
<meta charset="UTF-8">
|
6
|
+
<title>Neo Multi-Window Helix</title>
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
<script src="../../../src/MicroLoader.mjs" type="module"></script>
|
10
|
+
</body>
|
11
|
+
</html>
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "neo.mjs",
|
3
|
-
"version": "6.
|
3
|
+
"version": "6.17.0",
|
4
4
|
"description": "The webworkers driven UI framework",
|
5
5
|
"type": "module",
|
6
6
|
"repository": {
|
@@ -58,7 +58,7 @@
|
|
58
58
|
"neo-jsdoc": "1.0.1",
|
59
59
|
"neo-jsdoc-x": "1.0.5",
|
60
60
|
"postcss": "^8.4.38",
|
61
|
-
"sass": "^1.77.
|
61
|
+
"sass": "^1.77.6",
|
62
62
|
"siesta-lite": "5.5.2",
|
63
63
|
"url": "^0.11.3",
|
64
64
|
"webpack": "^5.92.0",
|