@instructure/quiz-taking
Version:
46 lines • 2.32 kB
JavaScript
import { bindActionCreators } from 'redux';
import { List, Map } from 'immutable';
import { connect, getBacktrackingIsAllowed, isOneQuestionAtATime, getActiveQuizSession, toggleSidebar as toggleSidebarAction, scrollToItem as scrollToItemAction, screenreaderNotification as screenreaderNotificationAction, setCurrentSessionItemPosition, setFocusTitleAndInstructions as setFocusTitleAndInstructionsAction } from '@instructure/quiz-core';
import { TakingSidebar as Sidebar } from './presenter';
export var getPinnedItems = function getPinnedItems(state, quizSession) {
if (state.getIn(['sessionItems'], Map()).size === 0) {
return List();
}
return quizSession.getIn(['takingData', 'pins'], List()).map(function (pinPosition) {
var si = state.get('sessionItems').find(function (sessionItem) {
return sessionItem.get('position') === pinPosition;
});
return {
position: pinPosition,
sessionItemId: si.get('id')
};
});
};
export var mapStateToProps = function mapStateToProps(state, props) {
var quizSession = getActiveQuizSession(state);
var pinnedItems = getPinnedItems(state, quizSession);
return {
allowBacktracking: getBacktrackingIsAllowed(state),
isOneQuestionAtATime: isOneQuestionAtATime(state),
pinnedItems: pinnedItems,
quizTitle: quizSession.getQuiz().title,
sessionItems: quizSession.getSessionItems(),
sessionNotLoaded: quizSession.id === '0',
sidebarOpen: props.sidebarOpen || state.getIn(['sidebar', 'isOpen'])
};
};
export var mapDispatchToProps = function mapDispatchToProps(dispatch, props) {
return {
scrollToItem: props.scrollToItem || bindActionCreators(scrollToItemAction, dispatch),
toggleSidebar: props.toggleSidebar || bindActionCreators(toggleSidebarAction, dispatch),
screenreaderNotification: bindActionCreators(screenreaderNotificationAction, dispatch),
goToItem: function goToItem(sessionItemPosition) {
return bindActionCreators(setCurrentSessionItemPosition, dispatch)(sessionItemPosition);
},
setFocusTitleAndInstructions: function setFocusTitleAndInstructions(bool) {
return bindActionCreators(setFocusTitleAndInstructionsAction, dispatch)(bool);
}
};
};
export var TakingSidebar = connect(mapStateToProps, mapDispatchToProps)(Sidebar);
export default TakingSidebar;