soiz1's picture
Upload 2891 files
6bcb42f verified
import {applyMiddleware, compose, combineReducers} from 'redux';
import alertsReducer, {alertsInitialState} from './alerts';
import assetDragReducer, {assetDragInitialState} from './asset-drag';
import cardsReducer, {cardsInitialState} from './cards';
import colorPickerReducer, {colorPickerInitialState} from './color-picker';
import connectionModalReducer, {connectionModalInitialState} from './connection-modal';
import customProceduresReducer, {customProceduresInitialState} from './custom-procedures';
import blockDragReducer, {blockDragInitialState} from './block-drag';
import editorTabReducer, {editorTabInitialState} from './editor-tab';
import hoveredTargetReducer, {hoveredTargetInitialState} from './hovered-target';
import menuReducer, {menuInitialState} from './menus';
import micIndicatorReducer, {micIndicatorInitialState} from './mic-indicator';
import modalReducer, {modalsInitialState} from './modals';
import modeReducer, {modeInitialState} from './mode';
import monitorReducer, {monitorsInitialState} from './monitors';
import monitorLayoutReducer, {monitorLayoutInitialState} from './monitor-layout';
import projectChangedReducer, {projectChangedInitialState} from './project-changed';
import projectStateReducer, {projectStateInitialState} from './project-state';
import projectTitleReducer, {projectTitleInitialState} from './project-title';
import fontsLoadedReducer, {fontsLoadedInitialState} from './fonts-loaded';
import restoreDeletionReducer, {restoreDeletionInitialState} from './restore-deletion';
import stageSizeReducer, {stageSizeInitialState} from './stage-size';
import targetReducer, {targetsInitialState} from './targets';
import timeoutReducer, {timeoutInitialState} from './timeout';
import toolboxReducer, {toolboxInitialState} from './toolbox';
import twReducer, {twInitialState} from './tw';
import customStageSizeReducer, {customStageSizeInitialState} from './custom-stage-size';
import vmReducer, {vmInitialState} from './vm';
import vmStatusReducer, {vmStatusInitialState} from './vm-status';
import workspaceMetricsReducer, {workspaceMetricsInitialState} from './workspace-metrics';
import throttle from 'redux-throttle';
import decks from '../lib/libraries/decks/index.jsx';
const guiMiddleware = compose(applyMiddleware(throttle(300, {leading: true, trailing: true})));
const guiInitialState = {
alerts: alertsInitialState,
assetDrag: assetDragInitialState,
blockDrag: blockDragInitialState,
cards: cardsInitialState,
colorPicker: colorPickerInitialState,
connectionModal: connectionModalInitialState,
customStageSize: customStageSizeInitialState,
customProcedures: customProceduresInitialState,
editorTab: editorTabInitialState,
mode: modeInitialState,
hoveredTarget: hoveredTargetInitialState,
stageSize: stageSizeInitialState,
menus: menuInitialState,
micIndicator: micIndicatorInitialState,
modals: modalsInitialState,
monitors: monitorsInitialState,
monitorLayout: monitorLayoutInitialState,
projectChanged: projectChangedInitialState,
projectState: projectStateInitialState,
projectTitle: projectTitleInitialState,
fontsLoaded: fontsLoadedInitialState,
restoreDeletion: restoreDeletionInitialState,
targets: targetsInitialState,
timeout: timeoutInitialState,
toolbox: toolboxInitialState,
tw: twInitialState,
vm: vmInitialState,
vmStatus: vmStatusInitialState,
workspaceMetrics: workspaceMetricsInitialState
};
const initPlayer = function (currentState) {
return Object.assign(
{},
currentState,
{mode: {
isEmbedded: false,
isFullScreen: currentState.mode.isFullScreen,
isPlayerOnly: true,
// When initializing in player mode, make sure to reset
// hasEverEnteredEditorMode
hasEverEnteredEditor: false
}}
);
};
const initFullScreen = function (currentState) {
return Object.assign(
{},
currentState,
{mode: {
isEmbedded: false,
isFullScreen: true,
isPlayerOnly: currentState.mode.isPlayerOnly,
hasEverEnteredEditor: currentState.mode.hasEverEnteredEditor
}}
);
};
const initEmbedded = function (currentState) {
return Object.assign(
{},
currentState,
{mode: {
isEmbedded: true,
// tw: embed does not need isFullScreen anymore
isFullScreen: false,
isPlayerOnly: true,
hasEverEnteredEditor: false
}}
);
};
const initTutorialCard = function (currentState, deckId) {
return Object.assign(
{},
currentState,
{
cards: {
visible: true,
content: decks,
activeDeckId: deckId,
expanded: true,
step: 0,
x: 0,
y: 0,
dragging: false
}
}
);
};
const initTelemetryModal = function (currentState) {
return Object.assign(
{},
currentState,
{
modals: {
telemetryModal: true // this key must match `MODAL_TELEMETRY` in modals.js
}
}
);
};
const guiReducer = combineReducers({
alerts: alertsReducer,
assetDrag: assetDragReducer,
blockDrag: blockDragReducer,
cards: cardsReducer,
colorPicker: colorPickerReducer,
connectionModal: connectionModalReducer,
customStageSize: customStageSizeReducer,
customProcedures: customProceduresReducer,
editorTab: editorTabReducer,
mode: modeReducer,
hoveredTarget: hoveredTargetReducer,
stageSize: stageSizeReducer,
menus: menuReducer,
micIndicator: micIndicatorReducer,
modals: modalReducer,
monitors: monitorReducer,
monitorLayout: monitorLayoutReducer,
projectChanged: projectChangedReducer,
projectState: projectStateReducer,
projectTitle: projectTitleReducer,
fontsLoaded: fontsLoadedReducer,
restoreDeletion: restoreDeletionReducer,
targets: targetReducer,
timeout: timeoutReducer,
toolbox: toolboxReducer,
tw: twReducer,
vm: vmReducer,
vmStatus: vmStatusReducer,
workspaceMetrics: workspaceMetricsReducer
});
export {
guiReducer as default,
guiInitialState,
guiMiddleware,
initEmbedded,
initFullScreen,
initPlayer,
initTelemetryModal,
initTutorialCard
};