goblin-desktop 2.0.0 → 2.0.2
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/README.md +108 -108
- package/builders/wizard.js +478 -478
- package/contexts.js +13 -13
- package/desktop-manager.js +10 -10
- package/desktop-window.js +13 -13
- package/desktop.js +13 -13
- package/lib/service.js +135 -135
- package/package.json +36 -36
- package/password-wizard.js +13 -13
- package/quest-run-wizard.js +13 -13
- package/taskbar.js +13 -13
- package/widgets/audio/sfx.js +177 -177
- package/widgets/board/view.js +37 -37
- package/widgets/board/widget.js +65 -65
- package/widgets/contexts/logic-handlers.js +36 -36
- package/widgets/contexts/service.js +40 -40
- package/widgets/contexts/view.js +22 -22
- package/widgets/contexts/widget.js +147 -147
- package/widgets/datagrid/datagrid-entity.js +82 -82
- package/widgets/datagrid/datagrid-headers.js +272 -272
- package/widgets/datagrid/datagrid-item.js +82 -82
- package/widgets/datagrid/styles.js +13 -13
- package/widgets/datagrid/widget.js +191 -191
- package/widgets/datagrid-cell/styles.js +52 -52
- package/widgets/datagrid-cell/widget.js +41 -41
- package/widgets/default/view.js +91 -91
- package/widgets/desktop/compensator.js +9 -9
- package/widgets/desktop/logic-handlers.js +237 -237
- package/widgets/desktop/service.js +816 -816
- package/widgets/desktop/styles.js +28 -28
- package/widgets/desktop/widget.js +175 -175
- package/widgets/desktop-clock/styles.js +69 -69
- package/widgets/desktop-clock/widget.js +387 -387
- package/widgets/desktop-clock-clock/styles.js +56 -56
- package/widgets/desktop-clock-clock/widget.js +96 -96
- package/widgets/desktop-clock-menu/styles.js +129 -129
- package/widgets/desktop-clock-menu/widget.js +63 -63
- package/widgets/desktop-connection-status/reducer.js +15 -15
- package/widgets/desktop-connection-status/styles.js +44 -44
- package/widgets/desktop-connection-status/widget.js +129 -129
- package/widgets/desktop-content/widget.js +68 -68
- package/widgets/desktop-footer/reducer.js +31 -31
- package/widgets/desktop-footer/styles.js +36 -36
- package/widgets/desktop-footer/widget.js +52 -52
- package/widgets/desktop-monitors/styles.js +155 -155
- package/widgets/desktop-monitors/widget.js +273 -273
- package/widgets/desktop-notebook/styles.js +155 -155
- package/widgets/desktop-notebook/widget.js +253 -253
- package/widgets/desktop-notifications/styles.js +147 -147
- package/widgets/desktop-notifications/widget.js +231 -231
- package/widgets/desktop-scale/reducer.js +15 -15
- package/widgets/desktop-scale/styles.js +48 -48
- package/widgets/desktop-scale/widget.js +172 -172
- package/widgets/desktop-state-monitor/styles.js +72 -72
- package/widgets/desktop-state-monitor/widget.js +123 -123
- package/widgets/desktop-taskbar/widget.js +57 -57
- package/widgets/desktop-themes-menu/widget.js +121 -121
- package/widgets/desktop-topbar/widget.js +201 -201
- package/widgets/desktop-window/service.js +56 -56
- package/widgets/desktop-window/styles.js +22 -22
- package/widgets/desktop-window/widget.js +70 -70
- package/widgets/detail/view.js +40 -40
- package/widgets/detail/widget.js +125 -125
- package/widgets/editor/widget.js +80 -80
- package/widgets/entity-alerts/styles.js +77 -77
- package/widgets/entity-alerts/widget.js +328 -328
- package/widgets/entity-list/view.js +36 -36
- package/widgets/entity-list/widget.js +209 -209
- package/widgets/entity-list-item/widget.js +68 -68
- package/widgets/entity-row/styles.js +104 -104
- package/widgets/entity-row/widget.js +523 -523
- package/widgets/entity-row-button/styles.js +46 -46
- package/widgets/entity-row-button/widget.js +57 -57
- package/widgets/entity-view/reducer.js +20 -20
- package/widgets/entity-view/styles.js +90 -90
- package/widgets/entity-view/widget.js +516 -516
- package/widgets/facet-checkbox/styles.js +17 -17
- package/widgets/facet-checkbox/widget.js +43 -43
- package/widgets/facet-filter/widget.js +94 -94
- package/widgets/facet-filter-add/styles.js +30 -30
- package/widgets/facet-filter-add/widget.js +105 -105
- package/widgets/facet-filter-button/styles.js +74 -74
- package/widgets/facet-filter-button/widget.js +214 -214
- package/widgets/facet-filter-list-dialog/styles.js +59 -59
- package/widgets/facet-filter-list-dialog/widget.js +253 -253
- package/widgets/facet-filter-list-dialog-footer/styles.js +22 -22
- package/widgets/facet-filter-list-dialog-footer/widget.js +105 -105
- package/widgets/facet-filter-range-dialog/styles.js +82 -82
- package/widgets/facet-filter-range-dialog/widget.js +398 -398
- package/widgets/facet-filter-range-dialog-footer/styles.js +22 -22
- package/widgets/facet-filter-range-dialog-footer/widget.js +182 -182
- package/widgets/gamepad/widget.js +75 -75
- package/widgets/helpers/facet-helpers.js +105 -105
- package/widgets/hinter/reducer.js +35 -35
- package/widgets/hinter/styles.js +79 -79
- package/widgets/hinter/view.js +31 -31
- package/widgets/hinter/widget.js +292 -292
- package/widgets/junction/styles.js +22 -22
- package/widgets/junction/widget.js +50 -50
- package/widgets/main-tab-menu/widget.js +136 -136
- package/widgets/map/view.js +49 -49
- package/widgets/map/widget.js +65 -65
- package/widgets/monitor/widget.js +66 -66
- package/widgets/navigating-layer/widget.js +25 -25
- package/widgets/notifications-button/widget.js +44 -44
- package/widgets/password-wizard/service.js +53 -53
- package/widgets/password-wizard/ui.js +66 -66
- package/widgets/plugin/styles.js +294 -294
- package/widgets/plugin/widget.js +636 -636
- package/widgets/quest-run-wizard/service.js +49 -49
- package/widgets/quest-run-wizard/ui.js +25 -25
- package/widgets/search/styles.js +80 -80
- package/widgets/search/widget.js +286 -284
- package/widgets/simple/view.js +29 -29
- package/widgets/status-filters/widget.js +121 -121
- package/widgets/tab/styles.js +16 -16
- package/widgets/tab/widget.js +88 -88
- package/widgets/tab-content/widget.js +35 -35
- package/widgets/tabs/widget.js +48 -48
- package/widgets/taskbar/service.js +99 -99
- package/widgets/taskbar/view.js +24 -24
- package/widgets/taskbar/widget.js +169 -169
- package/widgets/widget-doc-caller/widget.js +55 -55
- package/widgets/wizard/widget.js +299 -299
- package/widgets/wizard-buttons/widget.js +107 -107
- package/widgets/workitem/styles.js +281 -281
- package/widgets/workitem/view.js +62 -62
- package/widgets/workitem/widget.js +967 -940
- package/widgets/workitem-dialog/widget.js +86 -86
- package/widgets/workitem-fields/widget.js +63 -63
|
@@ -1,123 +1,123 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import Widget from 'goblin-laboratory/widgets/widget';
|
|
3
|
-
const T = require('goblin-nabu');
|
|
4
|
-
import * as styles from './styles';
|
|
5
|
-
import Button from 'goblin-gadgets/widgets/button/widget';
|
|
6
|
-
import Checkbox from 'goblin-gadgets/widgets/checkbox/widget';
|
|
7
|
-
import DialogResizable from 'goblin-gadgets/widgets/dialog-resizable/widget';
|
|
8
|
-
import StateMonitor from 'goblin-gadgets/widgets/state-monitor/widget';
|
|
9
|
-
import RetroPanel from 'goblin-gadgets/widgets/retro-panel/widget';
|
|
10
|
-
import Frame from 'goblin-laboratory/widgets/frame/widget';
|
|
11
|
-
import {ColorManipulator} from 'goblin-theme';
|
|
12
|
-
|
|
13
|
-
/******************************************************************************/
|
|
14
|
-
|
|
15
|
-
class DesktopStateMonitor extends Widget {
|
|
16
|
-
constructor() {
|
|
17
|
-
super(...arguments);
|
|
18
|
-
this.styles = styles;
|
|
19
|
-
|
|
20
|
-
this.onToggleStateMonitor = this.onToggleStateMonitor.bind(this);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
onToggleStateMonitor() {
|
|
24
|
-
this.doAs('desktop', 'show-state-monitor', {show: !this.props.showed});
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/******************************************************************************/
|
|
28
|
-
|
|
29
|
-
renderStateMonitor() {
|
|
30
|
-
if (!this.props.showed) {
|
|
31
|
-
return null;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
return (
|
|
35
|
-
<Frame
|
|
36
|
-
labId={this.context.labId}
|
|
37
|
-
store={this.context.store}
|
|
38
|
-
currentTheme="matrix"
|
|
39
|
-
themeContext={this.props.themeContext}
|
|
40
|
-
>
|
|
41
|
-
<DialogResizable
|
|
42
|
-
id="goblin-desktop/state-monitor"
|
|
43
|
-
zIndex="20"
|
|
44
|
-
titleBarText="Radar ― Backend State Monitor"
|
|
45
|
-
minWidth="500px"
|
|
46
|
-
minHeight="300px"
|
|
47
|
-
width="1000px"
|
|
48
|
-
height="600px"
|
|
49
|
-
horizontal="0px"
|
|
50
|
-
vertical="0px"
|
|
51
|
-
drawChildrenWhileResizing={true}
|
|
52
|
-
onCloseDialog={this.onToggleStateMonitor}
|
|
53
|
-
>
|
|
54
|
-
<StateMonitor
|
|
55
|
-
id={this.props.id}
|
|
56
|
-
onClose={this.onToggleStateMonitor}
|
|
57
|
-
/>
|
|
58
|
-
</DialogResizable>
|
|
59
|
-
</Frame>
|
|
60
|
-
);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
renderButton() {
|
|
64
|
-
if (this.context.theme.look.name === 'retro') {
|
|
65
|
-
return (
|
|
66
|
-
<RetroPanel
|
|
67
|
-
position="relative"
|
|
68
|
-
height="54px"
|
|
69
|
-
kind="metal-plate"
|
|
70
|
-
margin="3px"
|
|
71
|
-
padding="0px 40px"
|
|
72
|
-
radius="12px"
|
|
73
|
-
flexDirection="row"
|
|
74
|
-
justifyContent="center"
|
|
75
|
-
alignItems="center"
|
|
76
|
-
fillColor={ColorManipulator.darken(
|
|
77
|
-
this.context.theme.palette.base,
|
|
78
|
-
0.5
|
|
79
|
-
)}
|
|
80
|
-
>
|
|
81
|
-
<Checkbox
|
|
82
|
-
backgroundBrigtness="dark"
|
|
83
|
-
checked={this.props.showed}
|
|
84
|
-
onChange={this.onToggleStateMonitor}
|
|
85
|
-
/>
|
|
86
|
-
</RetroPanel>
|
|
87
|
-
);
|
|
88
|
-
} else {
|
|
89
|
-
return (
|
|
90
|
-
<Button
|
|
91
|
-
kind="button-footer"
|
|
92
|
-
width="120px"
|
|
93
|
-
glyph="light/radar"
|
|
94
|
-
glyphColor={this.props.showed ? '#0f0' : null}
|
|
95
|
-
text={T('State')}
|
|
96
|
-
onClick={this.onToggleStateMonitor}
|
|
97
|
-
/>
|
|
98
|
-
);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
render() {
|
|
103
|
-
return (
|
|
104
|
-
<div className={this.styles.classNames.desktopState}>
|
|
105
|
-
{this.renderButton()}
|
|
106
|
-
{this.renderStateMonitor()}
|
|
107
|
-
</div>
|
|
108
|
-
);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
/******************************************************************************/
|
|
113
|
-
|
|
114
|
-
export default Widget.connect((state, props) => {
|
|
115
|
-
const desktopState = state.get(`backend.${props.id}`);
|
|
116
|
-
const themeContext = state.get(`backend.${window.labId}.themeContext`);
|
|
117
|
-
|
|
118
|
-
return {
|
|
119
|
-
showed: desktopState.get('showStateMonitor'),
|
|
120
|
-
history: desktopState.get('stateMonitorHistory'),
|
|
121
|
-
themeContext,
|
|
122
|
-
};
|
|
123
|
-
})(DesktopStateMonitor);
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Widget from 'goblin-laboratory/widgets/widget';
|
|
3
|
+
const T = require('goblin-nabu');
|
|
4
|
+
import * as styles from './styles';
|
|
5
|
+
import Button from 'goblin-gadgets/widgets/button/widget';
|
|
6
|
+
import Checkbox from 'goblin-gadgets/widgets/checkbox/widget';
|
|
7
|
+
import DialogResizable from 'goblin-gadgets/widgets/dialog-resizable/widget';
|
|
8
|
+
import StateMonitor from 'goblin-gadgets/widgets/state-monitor/widget';
|
|
9
|
+
import RetroPanel from 'goblin-gadgets/widgets/retro-panel/widget';
|
|
10
|
+
import Frame from 'goblin-laboratory/widgets/frame/widget';
|
|
11
|
+
import {ColorManipulator} from 'goblin-theme';
|
|
12
|
+
|
|
13
|
+
/******************************************************************************/
|
|
14
|
+
|
|
15
|
+
class DesktopStateMonitor extends Widget {
|
|
16
|
+
constructor() {
|
|
17
|
+
super(...arguments);
|
|
18
|
+
this.styles = styles;
|
|
19
|
+
|
|
20
|
+
this.onToggleStateMonitor = this.onToggleStateMonitor.bind(this);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
onToggleStateMonitor() {
|
|
24
|
+
this.doAs('desktop', 'show-state-monitor', {show: !this.props.showed});
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/******************************************************************************/
|
|
28
|
+
|
|
29
|
+
renderStateMonitor() {
|
|
30
|
+
if (!this.props.showed) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return (
|
|
35
|
+
<Frame
|
|
36
|
+
labId={this.context.labId}
|
|
37
|
+
store={this.context.store}
|
|
38
|
+
currentTheme="matrix"
|
|
39
|
+
themeContext={this.props.themeContext}
|
|
40
|
+
>
|
|
41
|
+
<DialogResizable
|
|
42
|
+
id="goblin-desktop/state-monitor"
|
|
43
|
+
zIndex="20"
|
|
44
|
+
titleBarText="Radar ― Backend State Monitor"
|
|
45
|
+
minWidth="500px"
|
|
46
|
+
minHeight="300px"
|
|
47
|
+
width="1000px"
|
|
48
|
+
height="600px"
|
|
49
|
+
horizontal="0px"
|
|
50
|
+
vertical="0px"
|
|
51
|
+
drawChildrenWhileResizing={true}
|
|
52
|
+
onCloseDialog={this.onToggleStateMonitor}
|
|
53
|
+
>
|
|
54
|
+
<StateMonitor
|
|
55
|
+
id={this.props.id}
|
|
56
|
+
onClose={this.onToggleStateMonitor}
|
|
57
|
+
/>
|
|
58
|
+
</DialogResizable>
|
|
59
|
+
</Frame>
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
renderButton() {
|
|
64
|
+
if (this.context.theme.look.name === 'retro') {
|
|
65
|
+
return (
|
|
66
|
+
<RetroPanel
|
|
67
|
+
position="relative"
|
|
68
|
+
height="54px"
|
|
69
|
+
kind="metal-plate"
|
|
70
|
+
margin="3px"
|
|
71
|
+
padding="0px 40px"
|
|
72
|
+
radius="12px"
|
|
73
|
+
flexDirection="row"
|
|
74
|
+
justifyContent="center"
|
|
75
|
+
alignItems="center"
|
|
76
|
+
fillColor={ColorManipulator.darken(
|
|
77
|
+
this.context.theme.palette.base,
|
|
78
|
+
0.5
|
|
79
|
+
)}
|
|
80
|
+
>
|
|
81
|
+
<Checkbox
|
|
82
|
+
backgroundBrigtness="dark"
|
|
83
|
+
checked={this.props.showed}
|
|
84
|
+
onChange={this.onToggleStateMonitor}
|
|
85
|
+
/>
|
|
86
|
+
</RetroPanel>
|
|
87
|
+
);
|
|
88
|
+
} else {
|
|
89
|
+
return (
|
|
90
|
+
<Button
|
|
91
|
+
kind="button-footer"
|
|
92
|
+
width="120px"
|
|
93
|
+
glyph="light/radar"
|
|
94
|
+
glyphColor={this.props.showed ? '#0f0' : null}
|
|
95
|
+
text={T('State')}
|
|
96
|
+
onClick={this.onToggleStateMonitor}
|
|
97
|
+
/>
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
render() {
|
|
103
|
+
return (
|
|
104
|
+
<div className={this.styles.classNames.desktopState}>
|
|
105
|
+
{this.renderButton()}
|
|
106
|
+
{this.renderStateMonitor()}
|
|
107
|
+
</div>
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/******************************************************************************/
|
|
113
|
+
|
|
114
|
+
export default Widget.connect((state, props) => {
|
|
115
|
+
const desktopState = state.get(`backend.${props.id}`);
|
|
116
|
+
const themeContext = state.get(`backend.${window.labId}.themeContext`);
|
|
117
|
+
|
|
118
|
+
return {
|
|
119
|
+
showed: desktopState.get('showStateMonitor'),
|
|
120
|
+
history: desktopState.get('stateMonitorHistory'),
|
|
121
|
+
themeContext,
|
|
122
|
+
};
|
|
123
|
+
})(DesktopStateMonitor);
|
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import Widget from 'goblin-laboratory/widgets/widget';
|
|
3
|
-
import T from 't';
|
|
4
|
-
import Container from 'goblin-gadgets/widgets/container/widget';
|
|
5
|
-
import Button from 'goblin-gadgets/widgets/button/widget';
|
|
6
|
-
import Separator from 'goblin-gadgets/widgets/separator/widget';
|
|
7
|
-
import Taskbar from 'goblin-desktop/widgets/taskbar/widget.js';
|
|
8
|
-
/******************************************************************************/
|
|
9
|
-
|
|
10
|
-
class DesktopTaskbar extends Widget {
|
|
11
|
-
constructor() {
|
|
12
|
-
super(...arguments);
|
|
13
|
-
|
|
14
|
-
this.onChangeMandate = this.onChangeMandate.bind(this);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
onChangeMandate() {
|
|
18
|
-
this.doAs('taskbar', 'change-mandate');
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
render() {
|
|
22
|
-
return (
|
|
23
|
-
<Container kind="left-bar">
|
|
24
|
-
<Button
|
|
25
|
-
textTransform="none"
|
|
26
|
-
text={this.props.id.split('@')[1]}
|
|
27
|
-
glyph={this.props.loading ? 'solid/spinner' : 'light/cube'}
|
|
28
|
-
kind="task-logo"
|
|
29
|
-
busy={this.props.working}
|
|
30
|
-
/>
|
|
31
|
-
<Container kind="task-bar">
|
|
32
|
-
<Taskbar id={`taskbar@${this.props.id}`} desktopId={this.props.id} />
|
|
33
|
-
<Separator kind="sajex" />
|
|
34
|
-
</Container>
|
|
35
|
-
<Button
|
|
36
|
-
kind="task-show-footer"
|
|
37
|
-
glyph="solid/chevron-right"
|
|
38
|
-
tooltip={T('Montre ou cache la barre de pied de page')}
|
|
39
|
-
onClick={this.props.onToggleFooter}
|
|
40
|
-
/>
|
|
41
|
-
</Container>
|
|
42
|
-
);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
export default Widget.connect((state, props) => {
|
|
46
|
-
const working = state.get(`backend.${props.id}.working`);
|
|
47
|
-
const content = state.get(`backend.${props.id}.note`);
|
|
48
|
-
const userSession = Widget.getUserSession(state);
|
|
49
|
-
const prototypeMode = userSession.get('prototypeMode');
|
|
50
|
-
if (prototypeMode && content === 'sfx=on') {
|
|
51
|
-
window.mainGain.connect(window.mainAudioCtx.destination);
|
|
52
|
-
} else {
|
|
53
|
-
window.mainGain.disconnect();
|
|
54
|
-
}
|
|
55
|
-
return {working};
|
|
56
|
-
})(DesktopTaskbar);
|
|
57
|
-
/******************************************************************************/
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Widget from 'goblin-laboratory/widgets/widget';
|
|
3
|
+
import T from 't';
|
|
4
|
+
import Container from 'goblin-gadgets/widgets/container/widget';
|
|
5
|
+
import Button from 'goblin-gadgets/widgets/button/widget';
|
|
6
|
+
import Separator from 'goblin-gadgets/widgets/separator/widget';
|
|
7
|
+
import Taskbar from 'goblin-desktop/widgets/taskbar/widget.js';
|
|
8
|
+
/******************************************************************************/
|
|
9
|
+
|
|
10
|
+
class DesktopTaskbar extends Widget {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
|
+
|
|
14
|
+
this.onChangeMandate = this.onChangeMandate.bind(this);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
onChangeMandate() {
|
|
18
|
+
this.doAs('taskbar', 'change-mandate');
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
render() {
|
|
22
|
+
return (
|
|
23
|
+
<Container kind="left-bar">
|
|
24
|
+
<Button
|
|
25
|
+
textTransform="none"
|
|
26
|
+
text={this.props.id.split('@')[1]}
|
|
27
|
+
glyph={this.props.loading ? 'solid/spinner' : 'light/cube'}
|
|
28
|
+
kind="task-logo"
|
|
29
|
+
busy={this.props.working}
|
|
30
|
+
/>
|
|
31
|
+
<Container kind="task-bar">
|
|
32
|
+
<Taskbar id={`taskbar@${this.props.id}`} desktopId={this.props.id} />
|
|
33
|
+
<Separator kind="sajex" />
|
|
34
|
+
</Container>
|
|
35
|
+
<Button
|
|
36
|
+
kind="task-show-footer"
|
|
37
|
+
glyph="solid/chevron-right"
|
|
38
|
+
tooltip={T('Montre ou cache la barre de pied de page')}
|
|
39
|
+
onClick={this.props.onToggleFooter}
|
|
40
|
+
/>
|
|
41
|
+
</Container>
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export default Widget.connect((state, props) => {
|
|
46
|
+
const working = state.get(`backend.${props.id}.working`);
|
|
47
|
+
const content = state.get(`backend.${props.id}.note`);
|
|
48
|
+
const userSession = Widget.getUserSession(state);
|
|
49
|
+
const prototypeMode = userSession.get('prototypeMode');
|
|
50
|
+
if (prototypeMode && content === 'sfx=on') {
|
|
51
|
+
window.mainGain.connect(window.mainAudioCtx.destination);
|
|
52
|
+
} else {
|
|
53
|
+
window.mainGain.disconnect();
|
|
54
|
+
}
|
|
55
|
+
return {working};
|
|
56
|
+
})(DesktopTaskbar);
|
|
57
|
+
/******************************************************************************/
|
|
@@ -1,121 +1,121 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import Widget from 'goblin-laboratory/widgets/widget';
|
|
3
|
-
import T from 't';
|
|
4
|
-
import MainTabMenu from 'goblin-desktop/widgets/main-tab-menu/widget';
|
|
5
|
-
|
|
6
|
-
/******************************************************************************/
|
|
7
|
-
|
|
8
|
-
function compareThemes(t1, t2) {
|
|
9
|
-
const s1 = t1.text;
|
|
10
|
-
const s2 = t2.text;
|
|
11
|
-
|
|
12
|
-
if (s1 < s2) {
|
|
13
|
-
return -1;
|
|
14
|
-
}
|
|
15
|
-
if (s1 > s2) {
|
|
16
|
-
return 1;
|
|
17
|
-
}
|
|
18
|
-
return 0;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
function pushThemes(result, state, isEggs) {
|
|
22
|
-
const a = [];
|
|
23
|
-
|
|
24
|
-
for (const key of Array.from(state.keys())) {
|
|
25
|
-
const additionalInfo = {
|
|
26
|
-
glyph: 'solid/tint',
|
|
27
|
-
};
|
|
28
|
-
const meta = state.get(`${key}.meta`, null);
|
|
29
|
-
let egg = false;
|
|
30
|
-
let glyph = null;
|
|
31
|
-
let glyphColor = null;
|
|
32
|
-
if (meta) {
|
|
33
|
-
egg = meta.get('egg', false);
|
|
34
|
-
glyph = meta.get('glyph', null);
|
|
35
|
-
glyphColor = meta.get('glyphColor', null);
|
|
36
|
-
}
|
|
37
|
-
if (egg === isEggs) {
|
|
38
|
-
if (glyph) {
|
|
39
|
-
additionalInfo.glyph = glyph;
|
|
40
|
-
}
|
|
41
|
-
if (glyphColor) {
|
|
42
|
-
additionalInfo.glyphColor = glyphColor;
|
|
43
|
-
}
|
|
44
|
-
const displayName = state.get(`${key}.displayName`) || key;
|
|
45
|
-
a.push({text: displayName, value: key, ...additionalInfo});
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
a.sort((t1, t2) => compareThemes(t1, t2));
|
|
50
|
-
|
|
51
|
-
for (const item of a) {
|
|
52
|
-
result.push(item);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
function getThemes(state, accessToEggsThemes) {
|
|
57
|
-
const result = [];
|
|
58
|
-
|
|
59
|
-
// Push standards themes.
|
|
60
|
-
pushThemes(result, state, false);
|
|
61
|
-
|
|
62
|
-
if (accessToEggsThemes) {
|
|
63
|
-
// Push horizontal separator...
|
|
64
|
-
result.push({separator: true, kind: 'menu-line'});
|
|
65
|
-
// ...then eggs themes.
|
|
66
|
-
pushThemes(result, state, true);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
return result;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/******************************************************************************/
|
|
73
|
-
|
|
74
|
-
class DesktopThemesMenuNC extends Widget {
|
|
75
|
-
constructor() {
|
|
76
|
-
super(...arguments);
|
|
77
|
-
|
|
78
|
-
this.onChangeTheme = this.onChangeTheme.bind(this);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
onChangeTheme(name) {
|
|
82
|
-
this.doAs('desktop', 'change-theme', {name});
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
render() {
|
|
86
|
-
const {currentTheme, themes, accessToEggsThemes} = this.props;
|
|
87
|
-
|
|
88
|
-
const glyph = accessToEggsThemes ? 'regular/tint' : 'solid/tint';
|
|
89
|
-
|
|
90
|
-
return (
|
|
91
|
-
<MainTabMenu
|
|
92
|
-
glyph={glyph}
|
|
93
|
-
kind="main-tab-right"
|
|
94
|
-
horizontalShift="-10px"
|
|
95
|
-
tooltip={T('Choix du thème')}
|
|
96
|
-
items={themes}
|
|
97
|
-
currentItemValue={currentTheme}
|
|
98
|
-
onChange={this.onChangeTheme}
|
|
99
|
-
/>
|
|
100
|
-
);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/******************************************************************************/
|
|
105
|
-
|
|
106
|
-
const DesktopThemesMenu = Widget.connect((state) => {
|
|
107
|
-
const themeContext = state.get(`backend.${window.labId}.themeContext`);
|
|
108
|
-
const currentTheme = state.get(`backend.${window.labId}.theme`);
|
|
109
|
-
|
|
110
|
-
const userSession = Widget.getUserSession(state);
|
|
111
|
-
const accessToEggsThemes = userSession.get('accessToEggsThemes') || false;
|
|
112
|
-
|
|
113
|
-
const themes = getThemes(
|
|
114
|
-
state.get(`backend.theme-composer@${themeContext}.themes`),
|
|
115
|
-
accessToEggsThemes
|
|
116
|
-
);
|
|
117
|
-
|
|
118
|
-
return {themeContext, currentTheme, themes, accessToEggsThemes};
|
|
119
|
-
})(DesktopThemesMenuNC);
|
|
120
|
-
|
|
121
|
-
export default DesktopThemesMenu;
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Widget from 'goblin-laboratory/widgets/widget';
|
|
3
|
+
import T from 't';
|
|
4
|
+
import MainTabMenu from 'goblin-desktop/widgets/main-tab-menu/widget';
|
|
5
|
+
|
|
6
|
+
/******************************************************************************/
|
|
7
|
+
|
|
8
|
+
function compareThemes(t1, t2) {
|
|
9
|
+
const s1 = t1.text;
|
|
10
|
+
const s2 = t2.text;
|
|
11
|
+
|
|
12
|
+
if (s1 < s2) {
|
|
13
|
+
return -1;
|
|
14
|
+
}
|
|
15
|
+
if (s1 > s2) {
|
|
16
|
+
return 1;
|
|
17
|
+
}
|
|
18
|
+
return 0;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function pushThemes(result, state, isEggs) {
|
|
22
|
+
const a = [];
|
|
23
|
+
|
|
24
|
+
for (const key of Array.from(state.keys())) {
|
|
25
|
+
const additionalInfo = {
|
|
26
|
+
glyph: 'solid/tint',
|
|
27
|
+
};
|
|
28
|
+
const meta = state.get(`${key}.meta`, null);
|
|
29
|
+
let egg = false;
|
|
30
|
+
let glyph = null;
|
|
31
|
+
let glyphColor = null;
|
|
32
|
+
if (meta) {
|
|
33
|
+
egg = meta.get('egg', false);
|
|
34
|
+
glyph = meta.get('glyph', null);
|
|
35
|
+
glyphColor = meta.get('glyphColor', null);
|
|
36
|
+
}
|
|
37
|
+
if (egg === isEggs) {
|
|
38
|
+
if (glyph) {
|
|
39
|
+
additionalInfo.glyph = glyph;
|
|
40
|
+
}
|
|
41
|
+
if (glyphColor) {
|
|
42
|
+
additionalInfo.glyphColor = glyphColor;
|
|
43
|
+
}
|
|
44
|
+
const displayName = state.get(`${key}.displayName`) || key;
|
|
45
|
+
a.push({text: displayName, value: key, ...additionalInfo});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
a.sort((t1, t2) => compareThemes(t1, t2));
|
|
50
|
+
|
|
51
|
+
for (const item of a) {
|
|
52
|
+
result.push(item);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function getThemes(state, accessToEggsThemes) {
|
|
57
|
+
const result = [];
|
|
58
|
+
|
|
59
|
+
// Push standards themes.
|
|
60
|
+
pushThemes(result, state, false);
|
|
61
|
+
|
|
62
|
+
if (accessToEggsThemes) {
|
|
63
|
+
// Push horizontal separator...
|
|
64
|
+
result.push({separator: true, kind: 'menu-line'});
|
|
65
|
+
// ...then eggs themes.
|
|
66
|
+
pushThemes(result, state, true);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return result;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/******************************************************************************/
|
|
73
|
+
|
|
74
|
+
class DesktopThemesMenuNC extends Widget {
|
|
75
|
+
constructor() {
|
|
76
|
+
super(...arguments);
|
|
77
|
+
|
|
78
|
+
this.onChangeTheme = this.onChangeTheme.bind(this);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
onChangeTheme(name) {
|
|
82
|
+
this.doAs('desktop', 'change-theme', {name});
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
render() {
|
|
86
|
+
const {currentTheme, themes, accessToEggsThemes} = this.props;
|
|
87
|
+
|
|
88
|
+
const glyph = accessToEggsThemes ? 'regular/tint' : 'solid/tint';
|
|
89
|
+
|
|
90
|
+
return (
|
|
91
|
+
<MainTabMenu
|
|
92
|
+
glyph={glyph}
|
|
93
|
+
kind="main-tab-right"
|
|
94
|
+
horizontalShift="-10px"
|
|
95
|
+
tooltip={T('Choix du thème')}
|
|
96
|
+
items={themes}
|
|
97
|
+
currentItemValue={currentTheme}
|
|
98
|
+
onChange={this.onChangeTheme}
|
|
99
|
+
/>
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/******************************************************************************/
|
|
105
|
+
|
|
106
|
+
const DesktopThemesMenu = Widget.connect((state) => {
|
|
107
|
+
const themeContext = state.get(`backend.${window.labId}.themeContext`);
|
|
108
|
+
const currentTheme = state.get(`backend.${window.labId}.theme`);
|
|
109
|
+
|
|
110
|
+
const userSession = Widget.getUserSession(state);
|
|
111
|
+
const accessToEggsThemes = userSession.get('accessToEggsThemes') || false;
|
|
112
|
+
|
|
113
|
+
const themes = getThemes(
|
|
114
|
+
state.get(`backend.theme-composer@${themeContext}.themes`),
|
|
115
|
+
accessToEggsThemes
|
|
116
|
+
);
|
|
117
|
+
|
|
118
|
+
return {themeContext, currentTheme, themes, accessToEggsThemes};
|
|
119
|
+
})(DesktopThemesMenuNC);
|
|
120
|
+
|
|
121
|
+
export default DesktopThemesMenu;
|