goblin-desktop 2.0.21 → 2.0.24
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/.editorconfig +9 -9
- package/.eslintrc.js +28 -28
- package/.zou-flow +3 -3
- package/README.md +108 -108
- package/builders/builders.js +3 -3
- package/builders/wizard.js +457 -457
- 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 +137 -137
- 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/styles.js +13 -13
- package/widgets/datagrid/widget.js +192 -192
- package/widgets/datagrid-cell/styles.js +52 -52
- package/widgets/datagrid-cell/widget.js +41 -41
- package/widgets/datagrid-item/styles.js +15 -15
- package/widgets/datagrid-item/widget.js +74 -74
- package/widgets/default/view.js +95 -91
- package/widgets/desktop/compensator.js +9 -9
- package/widgets/desktop/logic-handlers.js +237 -237
- package/widgets/desktop/reducer.js +35 -35
- package/widgets/desktop/service.js +828 -828
- 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 +272 -272
- package/widgets/desktop-notebook/styles.js +155 -155
- package/widgets/desktop-notebook/widget.js +252 -252
- 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/compensator.js +17 -17
- package/widgets/detail/view.js +40 -40
- package/widgets/detail/widget.js +125 -125
- package/widgets/editor/widget.js +84 -80
- package/widgets/entity-alerts/styles.js +77 -77
- package/widgets/entity-alerts/widget.js +328 -328
- package/widgets/entity-list/styles.js +66 -66
- 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 +105 -105
- package/widgets/entity-row/widget.js +524 -524
- 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 +399 -399
- 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 +291 -291
- package/widgets/junction/styles.js +22 -22
- package/widgets/junction/widget.js +50 -50
- package/widgets/main-tab-menu/styles.js +17 -17
- 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/reducer.js +15 -15
- 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/reducer.js +19 -19
- package/widgets/plugin/styles.js +294 -294
- package/widgets/plugin/widget.js +637 -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 +285 -285
- 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 +89 -89
- 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 +167 -167
- package/widgets/widget-doc-caller/reducer.js +15 -15
- package/widgets/widget-doc-caller/styles.js +20 -20
- package/widgets/widget-doc-caller/widget.js +55 -55
- package/widgets/wizard/widget.js +299 -299
- package/widgets/wizard-buttons/widget.js +111 -107
- package/widgets/workitem/styles.js +281 -281
- package/widgets/workitem/view.js +62 -62
- package/widgets/workitem/widget.js +971 -971
- 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
|
-
active={this.props.showed}
|
|
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
|
+
active={this.props.showed}
|
|
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;
|